1
0
mirror of https://github.com/chylex/TweetDuck.git synced 2025-05-15 14:34:08 +02:00
TweetDuck/Resources/Scripts/plugins.js

76 lines
1.6 KiB
JavaScript

var isReloading = "TD_PLUGINS" in window;
if (isReloading){
window.TD_PLUGINS.installed.forEach(plugin => {
if (!window.TD_PLUGINS.isDisabled(plugin)){
plugin.obj.disabled();
}
});
}
class PluginBase{
constructor(pluginSettings){
this.$pluginSettings = pluginSettings || {};
}
enabled(){}
ready(){}
disabled(){}
}
var PLUGINS = {
installed: [],
disabled: [],
waiting: [],
isDisabled: plugin => PLUGINS.disabled.includes(plugin.id),
findObject: identifier => PLUGINS.installed.find(plugin => plugin.id === identifier),
load: function(){
PLUGINS.installed.forEach(plugin => {
if (!PLUGINS.isDisabled(plugin)){
plugin.obj.enabled();
PLUGINS.runWhenReady(plugin);
}
});
},
onReady: function(){
PLUGINS.waiting.forEach(plugin => plugin.obj.ready());
PLUGINS.waiting = [];
},
runWhenReady: function(plugin){
if (window.TD_APP_READY){
plugin.obj.ready();
}
else{
PLUGINS.waiting.push(plugin);
}
},
setState: function(identifier, enable){
var plugin = PLUGINS.findObject(identifier);
if (enable && PLUGINS.isDisabled(plugin)){
PLUGINS.disabled.splice(PLUGINS.disabled.indexOf(identifier),1);
plugin.obj.enabled();
PLUGINS.runWhenReady(plugin);
}
else if (!enable && !PLUGINS.isDisabled(plugin)){
PLUGINS.disabled.push(identifier);
plugin.obj.disabled();
}
else return;
if (plugin.obj.$pluginSettings.requiresPageReload){
window.location.reload();
}
}
};
window.TD_PLUGINS = PLUGINS;
if (isReloading){
window.location.reload();
}