@@ -98,6 +98,7 @@ class TwitterFakeAccount
9898 var objNodes = document . getElementsByClassName ( "ext-etheraddresslookup-tweet-" + objData . tweet_id ) ;
9999 for ( var intCounter = 0 ; intCounter < objNodes . length ; intCounter ++ ) {
100100 var objNode = objNodes [ intCounter ] ;
101+
101102 if ( objNode . getAttribute ( "ext-etheraddresslookup-twitterflagged" ) ) {
102103 return ;
103104 }
@@ -188,65 +189,100 @@ var observeDOM = (function(){
188189// Observe a specific DOM element:
189190var objTwitterFakeAccount = new TwitterFakeAccount ( ) ;
190191var objWorker = new Worker ( chrome . runtime . getURL ( '/js/workers/TwitterFakeAccount.js' ) ) ;
191- var arrCheckedUsers = [ ] ;
192+
193+ let objCachedBadges = {
194+ "whitelist" : [ ] ,
195+ "blacklist" : [ ] ,
196+ "neutral" : [ ]
197+ } ;
198+
199+ let arrWhitelistedAccountIds = [ ] ;
200+ let arrBlacklistedAccountIds = [ ] ;
201+ let arrNeutralAccountIds = [ ] ;
192202var intTweetCounter = 0 ;
193203
194204chrome . runtime . sendMessage ( { func : "twitter_validation" } , function ( objResponse ) {
195205 if ( objResponse . resp == 1 ) {
196- observeDOM ( document . getElementsByTagName ( 'body' ) [ 0 ] , function ( ) {
197- if ( document . getElementsByClassName ( "tweet" ) ) {
198- var arrTweets = objTwitterFakeAccount . getTweets ( ) ;
199206
200- intTweetCounter = arrTweets . length ;
207+ // If they click on the Home button which draws them to the top of the page
208+ if ( document . getElementById ( "global-nav-home" ) ) {
209+ document . getElementById ( "global-nav-home" ) . addEventListener ( "click" , doTwitterBadges . bind ( objCachedBadges ) ) ;
210+ }
211+ // If anything on the DOM changes
212+ observeDOM ( document . getElementsByTagName ( 'body' ) [ 0 ] , doTwitterBadges . bind ( objCachedBadges ) ) ;
201213
202- var arrTweetData = [ ] ;
203- for ( var intCounter = 0 ; intCounter < arrTweets . length ; intCounter ++ ) {
214+ function doTwitterBadges ( ) {
215+ if ( document . activeElement . classList . contains ( "tweet-box" ) === false ) {
216+ if ( document . getElementsByClassName ( "tweet" ) ) {
217+ var arrTweets = objTwitterFakeAccount . getTweets ( ) ;
204218
205- var arrTmpTweetData = {
206- "userId" : arrTweets [ intCounter ] . getAttribute ( "data-user-id" ) ,
207- "name" : arrTweets [ intCounter ] . getAttribute ( "data-screen-name" ) ,
208- "tweet_id" : arrTweets [ intCounter ] . getAttribute ( "data-tweet-id" ) ,
209- "twitter_verified" : objTwitterFakeAccount . isTwitterVerified ( arrTweets [ intCounter ] )
210- } ;
219+ intTweetCounter = arrTweets . length ;
220+
221+ var arrTweetData = [ ] ;
222+ for ( var intCounter = 0 ; intCounter < arrTweets . length ; intCounter ++ ) {
223+
224+ if ( arrTweets [ intCounter ] . classList . contains ( "ext-etheraddresslookup-tweet-" + arrTweets [ intCounter ] . getAttribute ( "data-tweet-id" ) ) === false ) {
225+
226+ arrTweets [ intCounter ] . classList . add ( "ext-etheraddresslookup-tweet-" + arrTweets [ intCounter ] . getAttribute ( "data-tweet-id" ) ) ;
227+
228+ let blContactBackground = true ;
229+
230+ let arrTmpTweetData = {
231+ "userId" : arrTweets [ intCounter ] . getAttribute ( "data-user-id" ) ,
232+ "name" : arrTweets [ intCounter ] . getAttribute ( "data-screen-name" ) ,
233+ "tweet_id" : arrTweets [ intCounter ] . getAttribute ( "data-tweet-id" ) ,
234+ "twitter_verified" : objTwitterFakeAccount . isTwitterVerified ( arrTweets [ intCounter ] )
235+ } ;
236+
237+ //See if we've already checked the userid (whitelist)
238+ if ( this . whitelist . indexOf ( arrTmpTweetData . userId ) > - 1 ) {
239+ blContactBackground = false ;
240+ objTwitterFakeAccount . doWhitelistAlert ( arrTmpTweetData ) ;
241+ }
211242
212- //See if we've already checked the userid
213- if ( arrCheckedUsers . indexOf ( arrTmpTweetData . userId ) !== - 1 ) {
214- if ( arrCheckedUsers [ arrTmpTweetData . userId ] . is_imposter === false ) {
215- continue ;
216- } else {
217- objTweetData . similar_to = arrCheckedUsers [ arrTmpTweetData . userId ] . similar_to ;
218- objTwitterFakeAccount . doWarningAlert ( objTweetData ) ;
219- continue ;
243+ //See if we've already checked the userid (blacklist)
244+ if ( this . blacklist . indexOf ( arrTmpTweetData . userId ) > - 1 ) {
245+ blContactBackground = false ;
246+ objTwitterFakeAccount . doBlacklistAlert ( arrTmpTweetData ) ;
247+ }
248+
249+ //See if we've already checked the userid (neutral)
250+ if ( this . neutral . indexOf ( arrTmpTweetData . userId ) > - 1 ) {
251+ blContactBackground = false ;
252+ objTwitterFakeAccount . doNeutralAlert ( arrTmpTweetData ) ;
253+ }
254+
255+ if ( blContactBackground ) {
256+ arrTweetData . push ( arrTmpTweetData ) ;
257+ }
220258 }
221259 }
222260
223- if ( "ext-etheraddresslookup-tweet-" + arrTweets [ intCounter ] . getAttribute ( "data-tweet-id" ) in arrTweets [ intCounter ] === false ) {
224- arrTweets [ intCounter ] . className += " ext-etheraddresslookup-tweet-" + arrTweets [ intCounter ] . getAttribute ( "data-tweet-id" ) ;
225- }
226- arrTweetData . push ( arrTmpTweetData ) ;
227- }
261+ var objDataToInspect = {
262+ "whitelist" : { } ,
263+ "blacklist" : { } ,
264+ "tweet_data" : arrTweetData
265+ } ;
228266
229- var objDataToInspect = {
230- "whitelist" : { } ,
231- "blacklist" : { } ,
232- "tweet_data" : arrTweetData
233- } ;
234- chrome . runtime . sendMessage ( { func : "twitter_lists" } , function ( objResponse ) {
267+ if ( arrTweetData . length ) {
268+ chrome . runtime . sendMessage ( { func : "twitter_lists" } , function ( objResponse ) {
235269
236- let twitterlists = JSON . parse ( objResponse . resp ) ;
270+ let twitterlists = JSON . parse ( objResponse . resp ) ;
237271
238- this . whitelist = twitterlists . whitelist ;
239- this . blacklist = twitterlists . blacklist ;
272+ this . whitelist = twitterlists . whitelist ;
273+ this . blacklist = twitterlists . blacklist ;
240274
241- objWorker . postMessage ( JSON . stringify ( this ) ) ;
242- } . bind ( objDataToInspect ) ) ;
275+ objWorker . postMessage ( JSON . stringify ( this ) ) ;
276+ } . bind ( objDataToInspect ) ) ;
277+ }
278+ }
243279 }
244- } ) ;
280+ } ;
245281 }
246282} ) ;
247283
248- objWorker . onmessage = function ( event ) {
249- arrCheckedUsers [ event . data . userId ] = event . data ;
284+ objWorker . onmessage = function ( event )
285+ {
250286 var arrData = JSON . parse ( event . data ) ;
251287
252288 for ( var intCounter = 0 ; intCounter < arrData . length ; intCounter ++ ) {
@@ -258,15 +294,18 @@ objWorker.onmessage = function (event) {
258294 }
259295
260296 if ( arrData [ intCounter ] . is_whitelisted ) {
297+ objCachedBadges [ "whitelist" ] . push ( arrData [ intCounter ] . userId ) ;
261298 objTwitterFakeAccount . doWhitelistAlert ( arrData [ intCounter ] ) ;
262299 continue ;
263300 }
264301
265302 if ( arrData [ intCounter ] . is_blacklisted ) {
303+ objCachedBadges [ "blacklist" ] . push ( arrData [ intCounter ] . userId ) ;
266304 objTwitterFakeAccount . doBlacklistAlert ( arrData [ intCounter ] ) ;
267305 continue ;
268306 }
269307
308+ objCachedBadges [ "neutral" ] . push ( arrData [ intCounter ] . userId ) ;
270309 objTwitterFakeAccount . doNeutralAlert ( arrData [ intCounter ] ) ;
271310 }
272311} ;
0 commit comments