diff --git a/Core/Bridge/PropertyBridge.cs b/Core/Bridge/PropertyBridge.cs
new file mode 100644
index 00000000..31f70bb6
--- /dev/null
+++ b/Core/Bridge/PropertyBridge.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Text;
+
+namespace TweetDck.Core.Bridge{
+ static class PropertyBridge{
+ [Flags]
+ public enum Properties{
+ ExpandLinksOnHover = 1,
+ MuteNotifications = 2,
+ HasCustomNotificationSound = 4, // TODO changes if the file is deleted
+ All = ExpandLinksOnHover | MuteNotifications | HasCustomNotificationSound
+ }
+
+ public static string GenerateScript(Properties properties = Properties.All){
+ StringBuilder build = new StringBuilder();
+ build.Append("(function(c){");
+
+ if (properties.HasFlag(Properties.ExpandLinksOnHover)){
+ build.Append("c.expandLinksOnHover=").Append(Program.UserConfig.ExpandLinksOnHover ? "true;" : "false;");
+ }
+
+ if (properties.HasFlag(Properties.MuteNotifications)){
+ build.Append("c.muteNotifications=").Append(Program.UserConfig.MuteNotifications ? "true;" : "false;");
+ }
+
+ if (properties.HasFlag(Properties.HasCustomNotificationSound)){
+ build.Append("c.hasCustomNotificationSound=").Append(!string.IsNullOrEmpty(Program.UserConfig.NotificationSoundPath) ? "true;" : "false;");
+ }
+
+ build.Append("})(window.$TDX=window.$TDX||{})");
+ return build.ToString();
+ }
+ }
+}
diff --git a/Core/Bridge/TweetDeckBridge.cs b/Core/Bridge/TweetDeckBridge.cs
index b132b5b7..ec1ba5e0 100644
--- a/Core/Bridge/TweetDeckBridge.cs
+++ b/Core/Bridge/TweetDeckBridge.cs
@@ -21,24 +21,6 @@ namespace TweetDck.Core.Bridge{
private readonly FormBrowser form;
private readonly FormNotification notification;
- public bool MuteNotifications{
- get{
- return Program.UserConfig.MuteNotifications;
- }
- }
-
- public bool HasCustomNotificationSound{
- get{
- return !string.IsNullOrEmpty(Program.UserConfig.NotificationSoundPath);
- }
- }
-
- public bool ExpandLinksOnHover{
- get{
- return Program.UserConfig.ExpandLinksOnHover;
- }
- }
-
public TweetDeckBridge(FormBrowser form, FormNotification notification){
this.form = form;
this.notification = notification;
diff --git a/Core/FormBrowser.cs b/Core/FormBrowser.cs
index 0dc81856..ac6e57ea 100644
--- a/Core/FormBrowser.cs
+++ b/Core/FormBrowser.cs
@@ -97,6 +97,8 @@ namespace TweetDck.Core{
UpdateTrayIcon();
+ Config.MuteToggled += Config_MuteToggled;
+
this.updates = new UpdateHandler(browser, this, updaterSettings);
this.updates.UpdateAccepted += updates_UpdateAccepted;
this.updates.UpdateDismissed += updates_UpdateDismissed;
@@ -141,6 +143,7 @@ namespace TweetDck.Core{
private void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e){
if (e.Frame.IsMain && BrowserUtils.IsTweetDeckWebsite(e.Frame)){
+ UpdateProperties();
ScriptLoader.ExecuteFile(e.Frame, "code.js");
ReinjectCustomCSS(Config.CustomBrowserCSS);
@@ -199,6 +202,10 @@ namespace TweetDck.Core{
}
}
+ private void Config_MuteToggled(object sender, EventArgs e){
+ UpdateProperties(PropertyBridge.Properties.MuteNotifications);
+ }
+
private void Config_TrayBehaviorChanged(object sender, EventArgs e){
if (!isLoaded)return;
@@ -287,6 +294,10 @@ namespace TweetDck.Core{
browser.ExecuteScriptAsync("TDGF_reinjectCustomCSS", css == null ? string.Empty : css.Replace(Environment.NewLine, " "));
}
+ public void UpdateProperties(PropertyBridge.Properties properties = PropertyBridge.Properties.All){
+ browser.ExecuteScriptAsync(PropertyBridge.GenerateScript(properties));
+ }
+
// callback handlers
public void OpenSettings(){
@@ -310,6 +321,8 @@ namespace TweetDck.Core{
if (!Config.EnableTrayHighlight){
trayIcon.HasNotifications = false;
}
+
+ UpdateProperties(PropertyBridge.Properties.ExpandLinksOnHover | PropertyBridge.Properties.HasCustomNotificationSound);
};
ShowChildForm(currentFormSettings);
diff --git a/Core/FormNotification.cs b/Core/FormNotification.cs
index 911c74dd..73e855e9 100644
--- a/Core/FormNotification.cs
+++ b/Core/FormNotification.cs
@@ -238,6 +238,7 @@ namespace TweetDck.Core{
private void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e){
if (e.Frame.IsMain && notificationJS != null && browser.Address != "about:blank" && !flags.HasFlag(NotificationFlags.DisableScripts)){
+ e.Frame.ExecuteJavaScriptAsync(PropertyBridge.GenerateScript(PropertyBridge.Properties.ExpandLinksOnHover));
ScriptLoader.ExecuteScript(e.Frame, notificationJS, NotificationScriptIdentifier);
if (plugins != null && plugins.HasAnyPlugin(PluginEnvironment.Notification)){
diff --git a/Resources/Scripts/code.js b/Resources/Scripts/code.js
index a76d5ebf..d9722637 100644
--- a/Resources/Scripts/code.js
+++ b/Resources/Scripts/code.js
@@ -1,4 +1,4 @@
-(function($, $TD, TD){
+(function($, $TD, $TDX, TD){
//
// Variable: Current highlighted column jQuery object.
//
@@ -199,7 +199,7 @@
return;
}
- if ($TD.expandLinksOnHover){
+ if ($TDX.expandLinksOnHover){
tooltipTimer = window.setTimeout(function(){
var expanded = me.attr("data-full-url");
expanded = cutStart(expanded, "https://");
@@ -218,7 +218,7 @@
}
}
else if (e.type === "mouseleave"){
- if ($TD.expandLinksOnHover){
+ if ($TDX.expandLinksOnHover){
var prevText = me.attr("td-prev-text");
if (prevText){
@@ -257,7 +257,7 @@
var soundEle = document.getElementById("update-sound");
soundEle.play = prependToFunction(soundEle.play, function(){
- return $TD.muteNotifications || $TD.hasCustomNotificationSound;
+ return $TDX.muteNotifications || $TDX.hasCustomNotificationSound;
});
})();
@@ -554,4 +554,4 @@
}
};
})();
-})($, $TD, TD);
+})($, $TD, $TDX, TD);
diff --git a/Resources/Scripts/notification.js b/Resources/Scripts/notification.js
index cf98b096..15c15f05 100644
--- a/Resources/Scripts/notification.js
+++ b/Resources/Scripts/notification.js
@@ -1,4 +1,4 @@
-(function($TD){
+(function($TD, $TDX){
//
// Variable: Collection of all <a> tags.
//
@@ -51,7 +51,7 @@
return;
}
- if ($TD.expandLinksOnHover){
+ if ($TDX.expandLinksOnHover){
tooltipTimer = window.setTimeout(function(){
var expanded = url;
expanded = cutStart(expanded, "https://");
@@ -73,7 +73,7 @@
addEventListener(links, "mouseleave", function(e){
if (!e.currentTarget.hasAttribute("data-full-url"))return;
- if ($TD.expandLinksOnHover){
+ if ($TDX.expandLinksOnHover){
var prevText = e.currentTarget.getAttribute("td-prev-text");
if (prevText){
@@ -146,4 +146,4 @@
document.body.addEventListener("mouseleave", function(){
document.body.classList.remove("td-hover");
});
-})($TD);
+})($TD, $TDX);
diff --git a/TweetDck.csproj b/TweetDck.csproj
index 877cb079..0a8a3040 100644
--- a/TweetDck.csproj
+++ b/TweetDck.csproj
@@ -71,6 +71,7 @@
<ItemGroup>
<Compile Include="Configuration\LockManager.cs" />
<Compile Include="Configuration\UserConfig.cs" />
+ <Compile Include="Core\Bridge\PropertyBridge.cs" />
<Compile Include="Core\Controls\ControlExtensions.cs" />
<Compile Include="Core\Controls\FlatButton.cs">
<SubType>Component</SubType>