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); } }