import { injectable, inject } from 'tsyringe'; import AddonIndicatorClient from '../client/AddonIndicatorClient'; import AddonEnabledRepository from '../repositories/AddonEnabledRepository'; @injectable() export default class AddonEnabledUseCase { constructor( @inject('AddonIndicatorClient') private indicator: AddonIndicatorClient, @inject('AddonEnabledRepository') private repository: AddonEnabledRepository, ) { } async enable(): Promise { await this.setEnabled(true); } async disable(): Promise { await this.setEnabled(false); } async toggle(): Promise { const current = this.repository.get(); await this.setEnabled(!current); } getEnabled(): boolean { return this.repository.get(); } private async setEnabled(on: boolean): Promise { this.repository.set(on); await this.indicator.setEnabled(on); } }