ShopAI-Extension/scripts/GUI/entrypoints/manager.js
2024-04-28 22:09:21 +08:00

57 lines
No EOL
1.5 KiB
JavaScript

// Manage all entries.
import Tabs from "/scripts/GUI/tabs.js";
import Window from "/scripts/GUI/window.js";
import MenuEntry from "./menuentry.js";
import ManagedWindow from "./ManagedWindow.js";
import IconIndicator from "./iconindicator.js";
import check from "/scripts/external/check.js";
export default class EntryManager {
constructor () {
// Initialize the entries.
this.instances = {};
this.instances.popup = new ManagedWindow();
this.instances.menu = new MenuEntry();
// Add the action listeners.
this.#listen();
}
/* Add the action listeners. */
#listen() {
Tabs.addActionListener(`onActivated`, (data) => {this.onRefresh()});
Tabs.addActionListener(`onUpdated`, (data) => {this.onRefresh()});
Window.addActionListener(`onFocusChanged`, (data) => {this.onRefresh()});
// Add the context menu event.
IconIndicator.set(() => {this.instances.popup.show()});
this.instances.menu.menu.onclick(() => {this.instances.popup.show()});
}
onRefresh() {
(Tabs.query(null, 0)).then((DATA) => {
if (DATA ? (DATA.url) : false) {
(check.platform(DATA.url)).then((result) => {
(result) ? (this.enable()) : (this.disable())
});
};
})
}
/*
Enable the entries.
*/
enable () {
this.instances.menu.enable();
IconIndicator.enable();
}
/*
Disable the entries and the existing opened side panel.
*/
disable () {
this.instances.menu.disable();
IconIndicator.disable();
}
}