diff --git a/js/TwitterFakeAccount.js b/js/TwitterFakeAccount.js index 368f62d..f42f7db 100644 --- a/js/TwitterFakeAccount.js +++ b/js/TwitterFakeAccount.js @@ -14,6 +14,12 @@ class TwitterFakeAccount */ getTweets() { + if(document.getElementsByClassName("permalink-container").length > 0) { + if(document.getElementsByClassName("permalink-container")[0].getElementsByClassName("tweet").length > 0) { + return document.getElementsByClassName("permalink-container")[0].getElementsByClassName("tweet"); + } + } + if(document.getElementsByClassName("tweet")) { return document.getElementsByClassName("tweet"); } @@ -60,31 +66,57 @@ class TwitterFakeAccount var objAlertDiv = document.createElement("div"); // @todo - Maybe link to the account it's similar to? https://twitter.com/intent/user?user_id=XXX objAlertDiv.innerText = "⚠️This Tweet might be from a fake account! (very similar name to @" + objData.similar_to + ")"; + objAlertDiv.innerHTML += "REPORT"; objAlertDiv.style = "color:white;background:red;text-align:center;margin-bottom:1%;font-weight:600;width:100%;border-top-left-radius:1em;border-top-right-radius:1em;top:-5px;position:relative;left:-5px;padding:5px;"; objNode.insertBefore(objAlertDiv, objNode.firstChild); } } - doWhitelistAlert(objData) - { - var objNodes = document.getElementsByClassName("ext-ethersecuritylookup-tweet-"+objData.tweet_id); - for(var intCounter = 0; intCounter < objNodes.length; intCounter++) { + doWhitelistAlert(objData) { + var objNodes = document.getElementsByClassName("ext-ethersecuritylookup-tweet-" + objData.tweet_id); + for (var intCounter = 0; intCounter < objNodes.length; intCounter++) { var objNode = objNodes[intCounter]; - var objAccountInfo = objNode.getElementsByClassName("account-group")[0]; - if (objNode.getAttribute("ext-ethersecuritylookup-twitterflagged")) { return; } + var objAccountDetails = objNode.getElementsByClassName("account-group")[0]; objNode.setAttribute("ext-ethersecuritylookup-twitterflagged", 1); var objWhitelistedIcon = document.createElement("img"); objWhitelistedIcon.src = chrome.runtime.getURL('/images/esl-green.png'); objWhitelistedIcon.style = "display:inline;height:20px;width:20px;left:15px;"; objWhitelistedIcon.title = "This account is whitelisted by EtherSecurityLookup"; + objAccountDetails.append(objWhitelistedIcon); + } + } - objAccountInfo.append(objWhitelistedIcon); + /** + * https://stackoverflow.com/a/9496574 + * @param attribute + * @return {Array} + */ + getAllElementsWithAttribute(attribute, strValue) + { + var objNode = document; + if(document.getElementsByClassName("permalink-container").length > 0) { + if (document.getElementsByClassName("permalink-container")[0].getElementsByClassName("tweet").length > 0) { + objNode = document.getElementsByClassName("permalink-container")[0]; + } } + var matchingElements = []; + var allElements = objNode.getElementsByTagName('*'); + for (var i = 0, n = allElements.length; i < n; i++) + { + if (allElements[i].getAttribute(attribute) !== null) + { + if(allElements[i].getAttribute(attribute) === strValue) { + // Element exists with attribute. Add to array. + matchingElements.push(allElements[i]); + } + } + } + return matchingElements; } } @@ -119,7 +151,7 @@ var intTweetCounter = 0; chrome.runtime.sendMessage({func: "getTwitterWhitelistStatus"}, function(objResponse) { if(objResponse.resp) { observeDOM( document.getElementsByTagName('body')[0] ,function(){ - if (document.getElementById("permalink-overlay")) { + if (document.getElementsByClassName("tweet")) { var arrTweets = objTwitterFakeAccount.getTweets(); intTweetCounter = arrTweets.length; @@ -143,7 +175,9 @@ chrome.runtime.sendMessage({func: "getTwitterWhitelistStatus"}, function(objResp } } - arrTweets[intCounter].className += "ext-ethersecuritylookup-tweet-"+arrTweets[intCounter].getAttribute("data-tweet-id"); + if("ext-ethersecuritylookup-tweet-"+arrTweets[intCounter].getAttribute("data-tweet-id") in arrTweets[intCounter] === false) { + arrTweets[intCounter].className += " ext-ethersecuritylookup-tweet-" + arrTweets[intCounter].getAttribute("data-tweet-id"); + } arrTweetData.push(arrTmpTweetData); } @@ -164,7 +198,9 @@ chrome.runtime.sendMessage({func: "getTwitterWhitelistStatus"}, function(objResp objWorker.onmessage = function (event) { arrCheckedUsers[event.data.userId] = event.data; var arrData = JSON.parse(event.data); + for(var intCounter=0; intCounter