From dcaa3aab192b843f828c403104e5a4670362d265 Mon Sep 17 00:00:00 2001 From: chylex <contact@chylex.com> Date: Thu, 10 Aug 2017 00:51:38 +0200 Subject: [PATCH] Work around duplicate DM notifications and rewrite recent tweet check --- Resources/Scripts/code.js | 41 +++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/Resources/Scripts/code.js b/Resources/Scripts/code.js index a2dfe756..37c08c1d 100644 --- a/Resources/Scripts/code.js +++ b/Resources/Scripts/code.js @@ -97,30 +97,30 @@ // Function: Event callback for a new tweet. // var onNewTweet = (function(){ + let recentMessages = new Set(); let recentTweets = new Set(); let recentTweetTimer = null; - let startRecentTweetTimer = () => { - if (recentTweetTimer){ - window.clearTimeout(recentTweetTimer); - } - - recentTweetTimer = window.setTimeout(() => { - recentTweetTimer = null; - recentTweets.clear(); - }, 20000); + let resetRecentTweets = () => { + recentTweetTimer = null; + recentTweets.clear(); }; - let checkRecentTweet = id => { - if (recentTweets.size > 50){ - recentTweets.clear(); - } - else if (recentTweets.has(id)){ + let startRecentTweetTimer = () => { + recentTweetTimer && window.clearTimeout(recentTweetTimer); + recentTweetTimer = window.setTimeout(resetRecentTweets, 20000); + }; + + let checkTweetCache = (set, id) => { + if (set.has(id)){ return true; } - recentTweets.add(id); - startRecentTweetTimer(); + if (set.size > 50){ + set.clear(); + } + + set.add(id); return false; }; @@ -129,10 +129,17 @@ }; return function(column, tweet){ - if (checkRecentTweet(tweet.id)){ + if (tweet instanceof TD.services.TwitterConversation){ + if (checkTweetCache(recentMessages, tweet.id)){ + return; + } + } + else if (checkTweetCache(recentTweets, tweet.id)){ return; } + startRecentTweetTimer(); + if (column.model.getHasNotification()){ let previews = $TDX.notificationMediaPreviews;