A fork of https://github.com/ueokande/vim-vixen
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1004 B
40 lines
1004 B
import AddonIndicatorClient, { AddonIndicatorClientImpl } |
|
from '../client/AddonIndicatorClient'; |
|
import AddonEnabledRepository, { AddonEnabledRepositoryImpl } |
|
from '../repositories/AddonEnabledRepository'; |
|
|
|
export default class AddonEnabledUseCase { |
|
private indicator: AddonIndicatorClient; |
|
|
|
private repository: AddonEnabledRepository; |
|
|
|
constructor({ |
|
indicator = new AddonIndicatorClientImpl(), |
|
repository = new AddonEnabledRepositoryImpl(), |
|
} = {}) { |
|
this.indicator = indicator; |
|
this.repository = repository; |
|
} |
|
|
|
async enable(): Promise<void> { |
|
await this.setEnabled(true); |
|
} |
|
|
|
async disable(): Promise<void> { |
|
await this.setEnabled(false); |
|
} |
|
|
|
async toggle(): Promise<void> { |
|
let current = this.repository.get(); |
|
await this.setEnabled(!current); |
|
} |
|
|
|
getEnabled(): boolean { |
|
return this.repository.get(); |
|
} |
|
|
|
private async setEnabled(on: boolean): Promise<void> { |
|
this.repository.set(on); |
|
await this.indicator.setEnabled(on); |
|
} |
|
}
|
|
|