diff --git a/Configuration/UserConfig.cs b/Configuration/UserConfig.cs index 2a7da3ab..2b271c7e 100644 --- a/Configuration/UserConfig.cs +++ b/Configuration/UserConfig.cs @@ -39,6 +39,7 @@ static UserConfig(){ public bool FirstRun { get; set; } = true; public bool AllowDataCollection { get; set; } = false; + public bool ShowFollowNotification { get; set; } = true; public WindowState BrowserWindow { get; set; } = new WindowState(); public WindowState PluginsWindow { get; set; } = new WindowState(); diff --git a/Core/FormBrowser.cs b/Core/FormBrowser.cs index 719bcf91..cf4ced2f 100644 --- a/Core/FormBrowser.cs +++ b/Core/FormBrowser.cs @@ -10,7 +10,6 @@ using TweetDuck.Core.Notification.Screenshot; using TweetDuck.Core.Other; using TweetDuck.Core.Other.Analytics; -using TweetDuck.Core.Other.Settings; using TweetDuck.Core.Utils; using TweetDuck.Plugins; using TweetDuck.Plugins.Events; @@ -321,6 +320,7 @@ public void TriggerAnalyticsEvent(AnalyticsFile.Event e){ public void OnIntroductionClosed(bool showGuide, bool allowDataCollection){ if (Config.FirstRun){ Config.FirstRun = false; + Config.ShowFollowNotification = false; Config.AllowDataCollection = allowDataCollection; Config.Save(); @@ -328,6 +328,10 @@ public void OnIntroductionClosed(bool showGuide, bool allowDataCollection){ analytics = new AnalyticsManager(this, plugins, Program.AnalyticsFilePath); } } + else if (Config.ShowFollowNotification){ + Config.ShowFollowNotification = false; + Config.Save(); + } if (showGuide){ FormGuide.Show(); diff --git a/Core/TweetDeckBrowser.cs b/Core/TweetDeckBrowser.cs index 8136754e..cadc5217 100644 --- a/Core/TweetDeckBrowser.cs +++ b/Core/TweetDeckBrowser.cs @@ -142,6 +142,9 @@ private void browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e){ if (Program.UserConfig.FirstRun){ ScriptLoader.ExecuteFile(e.Frame, "introduction.js"); } + else if (Program.UserConfig.ShowFollowNotification){ + ScriptLoader.ExecuteFile(e.Frame, "introduction.follow.js"); + } } } diff --git a/Resources/Scripts/introduction.follow.js b/Resources/Scripts/introduction.follow.js new file mode 100644 index 00000000..5fd38459 --- /dev/null +++ b/Resources/Scripts/introduction.follow.js @@ -0,0 +1,91 @@ +(function($, $TD){ + $(document).one("TD.ready", function(){ + let css = $(` +<style> +#td-introduction-modal { + display: block; +} + +#td-introduction-modal .mdl { + width: 90%; + max-width: 626px; + height: 244px; +} + +#td-introduction-modal .mdl-header-title { + cursor: default; +} + +#td-introduction-modal .mdl-content { + padding: 4px 16px 0; + overflow-y: auto; +} + +#td-introduction-modal p { + margin: 12px 0; + font-size: 1.4rem; +} + +#td-introduction-modal p strong { + font-weight: normal; + text-shadow: 0 0 #000; +} + +#td-introduction-modal footer { + padding: 10px 0; +} +</style>`).appendTo(document.head); + + let ele = $(` +<div id="td-introduction-modal" class="ovl"> + <div class="mdl is-inverted-dark"> + <header class="mdl-header"> + <h3 class="mdl-header-title">Quick message</h3> + <a href="#" class="mdl-dismiss link-normal-dark"><i class="icon icon-close"></i></a> + </header> + <div class="mdl-inner"> + <div class="mdl-content"> + <p>Hi! Unfortunately the old <strong>@TryTweetDuck</strong> account was suspended.</p> + <p>If you were following it before, or if you want to keep up with the latest news and updates about TweetDuck, please <a id="td-introduction-follow" href="#">follow @TryMyAwesomeApp</a>.</p> + <p>Thanks for your support!</p> + </div> + <footer class="txt-right"> + <button class="btn btn-positive"><span class="label">Close</span</button> + </footer> + </div> + </div> +</div>`).appendTo(".js-app"); + + let tdUser = null; + let loadTweetDuckUser = (onSuccess, onError) => { + if (tdUser !== null){ + onSuccess(tdUser); + } + else{ + TD.controller.clients.getPreferredClient().getUsersByIds([ "957608948189880320" ], users => onSuccess(users[0]), onError); + } + }; + + loadTweetDuckUser(user => tdUser = user); + + ele.find("#td-introduction-follow").click(function(){ + loadTweetDuckUser(user => { + $(document).trigger("uiShowFollowFromOptions", { userToFollow: user }); + + $(".js-modals-container").find("header a[rel='user']").each(function(){ + this.outerHTML = "TweetDuck"; + }); + }, () => { + alert("An error occurred when retrieving the account information."); + }); + }); + + ele.find("button, a.mdl-dismiss").click(function(){ + ele.fadeOut(200, function(){ + $TD.onIntroductionClosed(false, false); + ele.remove(); + css.remove(); + }); + }); + }); +})($, $TD); diff --git a/Resources/Scripts/introduction.js b/Resources/Scripts/introduction.js index 5c93ea84..1d29bd69 100644 --- a/Resources/Scripts/introduction.js +++ b/Resources/Scripts/introduction.js @@ -113,7 +113,7 @@ $(document).trigger("uiShowFollowFromOptions", { userToFollow: user }); $(".js-modals-container").find("header a[rel='user']").each(function(){ - this.outerHTML = this.innerText; + this.outerHTML = "TweetDuck"; }); }, () => { alert("An error occurred when retrieving the account information."); diff --git a/TweetDuck.csproj b/TweetDuck.csproj index 5fd8215f..d1381012 100644 --- a/TweetDuck.csproj +++ b/TweetDuck.csproj @@ -361,6 +361,7 @@ <ItemGroup> <Content Include="Resources\avatar.png" /> <Content Include="Resources\Scripts\code.js" /> + <Content Include="Resources\Scripts\introduction.follow.js" /> <Content Include="Resources\Scripts\introduction.js" /> <Content Include="Resources\Scripts\notification.js" /> <Content Include="Resources\Scripts\pages\error.html" />