mirror of
https://github.com/chylex/TweetDuck.git
synced 2025-05-30 05:34:06 +02:00
Split plugins.js into separate browser and notification scripts and refactor notification script execution code
This commit is contained in:
parent
19f9614c74
commit
d9321a9acb
Core
Plugins
Resources/Scripts
@ -12,6 +12,11 @@
|
|||||||
|
|
||||||
namespace TweetDck.Core{
|
namespace TweetDck.Core{
|
||||||
sealed partial class FormNotification : Form{
|
sealed partial class FormNotification : Form{
|
||||||
|
private const string NotificationScriptFile = "notification.js";
|
||||||
|
|
||||||
|
private static readonly string NotificationScriptIdentifier = ScriptLoader.GetRootIdentifier(NotificationScriptFile);
|
||||||
|
private static readonly string PluginScriptIdentifier = ScriptLoader.GetRootIdentifier(PluginManager.PluginNotificationScriptFile);
|
||||||
|
|
||||||
public Func<bool> CanMoveWindow = () => true;
|
public Func<bool> CanMoveWindow = () => true;
|
||||||
|
|
||||||
private readonly Form owner;
|
private readonly Form owner;
|
||||||
@ -24,6 +29,7 @@ sealed partial class FormNotification : Form{
|
|||||||
private int timeLeft, totalTime;
|
private int timeLeft, totalTime;
|
||||||
|
|
||||||
private readonly string notificationJS;
|
private readonly string notificationJS;
|
||||||
|
private readonly string pluginJS;
|
||||||
|
|
||||||
protected override bool ShowWithoutActivation{
|
protected override bool ShowWithoutActivation{
|
||||||
get{
|
get{
|
||||||
@ -61,7 +67,8 @@ public FormNotification(Form owner, TweetDeckBridge bridge, PluginManager plugin
|
|||||||
|
|
||||||
owner.FormClosed += (sender, args) => Close();
|
owner.FormClosed += (sender, args) => Close();
|
||||||
|
|
||||||
notificationJS = ScriptLoader.LoadResource("notification.js");
|
notificationJS = ScriptLoader.LoadResource(NotificationScriptFile);
|
||||||
|
pluginJS = ScriptLoader.LoadResource(PluginManager.PluginNotificationScriptFile);
|
||||||
|
|
||||||
browser = new ChromiumWebBrowser("about:blank"){ MenuHandler = new ContextMenuNotification(this,autoHide) };
|
browser = new ChromiumWebBrowser("about:blank"){ MenuHandler = new ContextMenuNotification(this,autoHide) };
|
||||||
browser.FrameLoadEnd += Browser_FrameLoadEnd;
|
browser.FrameLoadEnd += Browser_FrameLoadEnd;
|
||||||
@ -114,9 +121,12 @@ private void Config_MuteToggled(object sender, EventArgs e){
|
|||||||
|
|
||||||
private void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e){
|
private void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e){
|
||||||
if (e.Frame.IsMain && notificationJS != null && browser.Address != "about:blank"){
|
if (e.Frame.IsMain && notificationJS != null && browser.Address != "about:blank"){
|
||||||
ScriptLoader.ExecuteScript(e.Frame,notificationJS,"root:notification");
|
ScriptLoader.ExecuteScript(e.Frame,notificationJS,NotificationScriptIdentifier);
|
||||||
ScriptLoader.ExecuteFile(e.Frame,PluginManager.PluginScriptFile);
|
|
||||||
plugins.ExecutePlugins(e.Frame,PluginEnvironment.Notification);
|
if (plugins.HasAnyPlugin(PluginEnvironment.Notification)){
|
||||||
|
ScriptLoader.ExecuteScript(e.Frame,pluginJS,PluginScriptIdentifier);
|
||||||
|
plugins.ExecutePlugins(e.Frame,PluginEnvironment.Notification);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,7 +8,8 @@
|
|||||||
|
|
||||||
namespace TweetDck.Plugins{
|
namespace TweetDck.Plugins{
|
||||||
class PluginManager{
|
class PluginManager{
|
||||||
public const string PluginScriptFile = "plugins.js";
|
public const string PluginBrowserScriptFile = "plugins.browser.js";
|
||||||
|
public const string PluginNotificationScriptFile = "plugins.notification.js";
|
||||||
|
|
||||||
public string PathOfficialPlugins { get { return Path.Combine(rootPath,"official"); } }
|
public string PathOfficialPlugins { get { return Path.Combine(rootPath,"official"); } }
|
||||||
public string PathCustomPlugins { get { return Path.Combine(rootPath,"user"); } }
|
public string PathCustomPlugins { get { return Path.Combine(rootPath,"user"); } }
|
||||||
|
@ -116,13 +116,4 @@
|
|||||||
|
|
||||||
$TD.setNotificationTweetEmbedded(account[0].getAttribute("href")+"/status/"+tweetId);
|
$TD.setNotificationTweetEmbedded(account[0].getAttribute("href")+"/status/"+tweetId);
|
||||||
})();
|
})();
|
||||||
|
|
||||||
//
|
|
||||||
// Block: Load plugins.
|
|
||||||
//
|
|
||||||
window.TD_APP_READY = true;
|
|
||||||
|
|
||||||
if (window.TD_PLUGINS){
|
|
||||||
window.TD_PLUGINS.onReady();
|
|
||||||
}
|
|
||||||
})($TD);
|
})($TD);
|
34
Resources/Scripts/plugins.notification.js
Normal file
34
Resources/Scripts/plugins.notification.js
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
(function(){
|
||||||
|
//
|
||||||
|
// Class: Abstract plugin base class.
|
||||||
|
//
|
||||||
|
window.PluginBase = class{
|
||||||
|
constructor(pluginSettings){
|
||||||
|
this.$pluginSettings = pluginSettings || {};
|
||||||
|
}
|
||||||
|
|
||||||
|
run(){}
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// Variable: Main object for containing and managing plugins.
|
||||||
|
//
|
||||||
|
window.TD_PLUGINS = new class{
|
||||||
|
constructor(){
|
||||||
|
this.installed = [];
|
||||||
|
this.disabled = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
isDisabled(plugin){
|
||||||
|
return this.disabled.includes(plugin.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
install(plugin){
|
||||||
|
this.installed.push(plugin);
|
||||||
|
|
||||||
|
if (!this.isDisabled(plugin)){
|
||||||
|
plugin.obj.run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
})();
|
Loading…
Reference in New Issue
Block a user