Make addon-enabled as a clean architecture
This commit is contained in:
parent
05ef6a8ca3
commit
e76ca380f7
16 changed files with 218 additions and 96 deletions
40
src/content/usecases/AddonEnabledUseCase.ts
Normal file
40
src/content/usecases/AddonEnabledUseCase.ts
Normal file
|
@ -0,0 +1,40 @@
|
|||
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);
|
||||
}
|
||||
}
|
Reference in a new issue