From 1e460a77b257fe0a9788fa3e6397e31d12931b90 Mon Sep 17 00:00:00 2001 From: Kerrick Long Date: Thu, 16 Jun 2011 12:43:14 -0500 Subject: [PATCH] initial upload --- alien.png | Bin 0 -> 448 bytes background.html | 114 +++++++++++ gradient-button-hover.png | Bin 0 -> 174 bytes gradient-button.png | Bin 0 -> 138 bytes manifest.json | 14 ++ popup.html | 392 ++++++++++++++++++++++++++++++++++++++ sprite.png | Bin 0 -> 12607 bytes stufftodo.txt | 30 +++ 8 files changed, 550 insertions(+) create mode 100644 alien.png create mode 100644 background.html create mode 100644 gradient-button-hover.png create mode 100644 gradient-button.png create mode 100644 manifest.json create mode 100644 popup.html create mode 100644 sprite.png create mode 100644 stufftodo.txt diff --git a/alien.png b/alien.png new file mode 100644 index 0000000000000000000000000000000000000000..9455ec6e6bb9cdc52a20ee6c07a6ad97f862fec2 GIT binary patch literal 448 zcmV;x0YCnUP)7AX*pEoK+$kgib>LOtk)K^%*Xo=R4Ud$gL3d2E zM?`W*7_Zy%=8&0*)?c~!7AH$7Mc|q|O%r(JyvHmbu{Y#cAp|LbVaeYz5yFSb6R qmOr7QGxo-_h&=aSwyW?{fB^tK?Cp4ng_L;!0000 + var reddit_session = null; + setBadgeDefaults(); + window.localStorage.clear(); + chrome.tabs.onUpdated.addListener(listenToTabs); + chrome.tabs.onRemoved.addListener(cleanCache); + chrome.cookies.get({url: 'http://reddit.com', name: 'reddit_session'}, function(cookie){ + reddit_session = cookie.value; + console.log('cookie.value = ' + cookie.value); + }); + + function setBadgeDefaults(tabId) { + chrome.browserAction.setBadgeBackgroundColor({ + color: [192,192,192,255] //r,g,b,a + }); + chrome.browserAction.onClicked.removeListener(submitToReddit); + if(tabId) { + chrome.browserAction.setBadgeText({ + text: '?', + tabId: tabId + }); + chrome.browserAction.setTitle({ + title: 'Refresh the page to load data.', + tabId: tabId + }); + } else { + chrome.browserAction.setBadgeText({ + text: '?', + }); + chrome.browserAction.setTitle({ + title: 'Refresh the page to load data.' + }); + } + } + function cleanCache() { + // find old caches from localStorage and remove anything older than ___. + } + function listenToTabs(tabId,changeInfo,tab){ + if(changeInfo.status === 'loading') { + grabData(tab.url,tabId); + } + } + function grabData(url,tabId) { + //check if the url has been cached recently + if(window.localStorage.getItem(url) === null || JSON.parse(window.localStorage.getItem(url)).cachetime - new Date < -60000) { + console.log('Loading from reddit api...'); + var reqUrl = 'http://www.reddit.com/api/info.json?url=' + encodeURI(url); + var api = new XMLHttpRequest(); + api.open('GET',reqUrl,false); + api.send(null); + if(api.status !== 200) { + console.error('Error loading API.\nURL: ' + reqUrl + '\nStatus: ' + api.status); + console.log(api); + setBadgeDefaults(tabId); + } + api.onload = prepareButton(JSON.parse(api.responseText),url,tabId); + } else { + console.log('Loading from cache...'); + prepareButton(JSON.parse(window.localStorage.getItem(url)).response,url,tabId); + } + } + function prepareButton(response,pageUrl,tabId) { + // add response to cache to reduce API calls + if(window.localStorage.getItem(pageUrl) === null || JSON.parse(window.localStorage.getItem(pageUrl)).cachetime - new Date < -60000) { + var toCache = new Object(); + toCache.cachetime = new Date(); + toCache.response = response; + window.localStorage.setItem(pageUrl,JSON.stringify(toCache)); + delete toCache; + } + + // counts submissions and prepare the browserAction button appropriately + var numberOfSubmissions = response.data.children.length.toString(); + if(numberOfSubmissions > 0) { + chrome.browserAction.setTitle({ + title: 'This page has been submitted to reddit ' + numberOfSubmissions + ' times.', + tabId: tabId + }); + chrome.browserAction.setBadgeText({ + text: numberOfSubmissions, + tabId: tabId + }); + chrome.browserAction.setPopup({ + popup: 'popup.html', + tabId: tabId + }); + chrome.browserAction.setBadgeBackgroundColor({ + color: [255,69,0,255], //r,g,b,a, + tabId: tabId + }); + chrome.browserAction.onClicked.removeListener(submitToReddit); + } else { + chrome.browserAction.setTitle({ + title: 'Submit this page to reddit', + tabId: tabId + }); + chrome.browserAction.setBadgeText({ + text: '', + tabId: tabId + }); + chrome.browserAction.setPopup({ + popup: '', + tabId: tabId + }); + chrome.browserAction.onClicked.removeListener(submitToReddit); + chrome.browserAction.onClicked.addListener(submitToReddit); + } + } + function submitToReddit(tab){ + chrome.tabs.create({ + url: 'http://www.reddit.com/submit?url=' + encodeURI(tab.url) + }); + } + \ No newline at end of file diff --git a/gradient-button-hover.png b/gradient-button-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..dce6bf45923512275ffab4698c481f09761b098f GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{U!2~2%t~M|QQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JiUK@c978y+=bqfi+u*>%eBea2fqt|BYx0J};ywhaiH8-#w&-eP|> XFXZi&OR{HxW;1xY`njxgN@xNAndCnD literal 0 HcmV?d00001 diff --git a/gradient-button.png b/gradient-button.png new file mode 100644 index 0000000000000000000000000000000000000000..4c8fb113423fc6aca2831ae679d639122096ac93 GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{Q!2~3qBu}&hQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JigY|(978y+m-ZO)F(?Q$bNsL0yyK;%#e_?&VUZFM91(Nl jceJ@5e*eit=*LFJnTaaGt)3Aen;1M@{an^LB{Ts5w+|^} literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..706fa16 --- /dev/null +++ b/manifest.json @@ -0,0 +1,14 @@ +{ + "name": "Best Reddit Check", + "version": "0.1", + "description": "Easily see how many times URL has been posted to reddit, join the discussion, submit or repost it, and more!", + "browser_action": { + "default_icon": "alien.png" + }, + "permissions": [ + "http://*.reddit.com/", + "tabs", + "cookies" + ], + "background_page": "background.html" +} \ No newline at end of file diff --git a/popup.html b/popup.html new file mode 100644 index 0000000..0d8010e --- /dev/null +++ b/popup.html @@ -0,0 +1,392 @@ + + + + TESTING the title + + + + + +
    + +
+ + + \ No newline at end of file diff --git a/sprite.png b/sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..32aca325f73bd77d192cf5bd300515e7b4bb2551 GIT binary patch literal 12607 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