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.
41 lines
1004 B
41 lines
1004 B
5 years ago
|
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);
|
||
|
}
|
||
|
}
|