29 lines
900 B
JavaScript
29 lines
900 B
JavaScript
import IndicatorPresenter from '../presenters/indicator';
|
|
import TabPresenter from '../presenters/tab';
|
|
import ContentMessageClient from '../infrastructures/content-message-client';
|
|
|
|
export default class AddonEnabledInteractor {
|
|
constructor() {
|
|
this.indicatorPresentor = new IndicatorPresenter();
|
|
|
|
this.indicatorPresentor.onClick(tab => this.onIndicatorClick(tab.id));
|
|
|
|
this.tabPresenter = new TabPresenter();
|
|
this.tabPresenter.onSelected(info => this.onTabSelected(info.tabId));
|
|
|
|
this.contentMessageClient = new ContentMessageClient();
|
|
}
|
|
|
|
indicate(enabled) {
|
|
this.indicatorPresentor.indicate(enabled);
|
|
}
|
|
|
|
onIndicatorClick(tabId) {
|
|
return this.contentMessageClient.toggleAddonEnabled(tabId);
|
|
}
|
|
|
|
async onTabSelected(tabId) {
|
|
let enabled = await this.contentMessageClient.getAddonEnabled(tabId);
|
|
return this.indicatorPresentor.indicate(enabled);
|
|
}
|
|
}
|