// ==UserScript== // @name Nice Reddit // @namespace com.prahladyeri.userscripts.nice_reddit // @creator prahladyeri@yahoo.com // @description Beautify your Reddit! // @homepage http://www.prahladyeri.com // @include http://*.reddit.com/* // @include https://*.reddit.com/* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js // @version 1.2 // @grant GM_getValue // @grant GM_setValue // @grant GM_addStyle // ==/UserScript== var prot = window.location.protocol; //var url = window.location.href.replace("http://","").replace("https://",""); var url = window.location.href.replace(prot + "//",""); if (!url.contains("/comments")) return; var postID = url.split("/")[4]; console.log('==== NICE REDDIT USERSCRIPT ===='); //console.log(GM_getValue('foo')); var redditBag = GM_getValue('redditBag'); if (redditBag==null) { console.log('bag not found, creating one!'); redditBag = {}; /*redditBag.urls = {}; redditBag.urls[url] = {}; redditBag.urls[url].read =[]; //array*/ //New method using posts object redditBag.posts = {}; //redditBag.urls[url].read[0] ='just_a_comment_link'; //GM_setValue('redditBag', redditBag); console.log('Reddit bag created!'); } else { console.log('bag found!'); } //TODO (at the very end): Calculate current UTC and save it to redditBag.posts[postID] //Mark the already read comments in the bag /*if (redditBag.urls[url] != undefined) { console.log('read comments found in bag!'); console.log(redditBag.urls[url].read.length); //mark all comments in redditBag.urls[url] as read $(redditBag.urls[url].read).each(function(index){ console.log('tagging as read: ' + $(this)[index]); } ); } else { console.log('no read comments found in bag!'); redditBag.urls[url] = {}; redditBag.urls[url].read = []; }*/ //New method: Using posts object //var utc = ''; var dt=new Date(); var lastVisit = ''; if (redditBag.posts[postID] != undefined) { console.log('post found in history: ', redditBag.posts[postID]); lastVisit = redditBag.posts[postID]; } else { //var utc = dt.getUTCFullYear() + '-' + dt.getUTCMonth() + '-' + dt.getUTCDate() + ' ' + dt.getUTCHours() + ':' + dt.getUTCMinutes() + ':' + dt.getUTCSeconds(); lastVisit = redditBag.posts[postID]; } redditBag.posts[postID] = dt.toUTCString(); console.log('lastVisit set as: ', dt.toUTCString()); //Store all current comments inside the bag /*if(jQuery==undefined) { console.log('jquery undefined'); } else { console.log('jquery defined'); }*/ //$('.comment').css('background-color','lightgrey'); var cmts = $('.comment'); console.log(cmts.length , ' comments found on page!'); cmts.each(function() { var cmid = $(this).attr('id'); if (cmid!=undefined) { //console.log('checking ' + cmid + ' as read!'); $(this).each(function(){ timeTag = $(this).find('time').attr('title'); //console.log('timeTag: ', timeTag); //console.log('lastVisit:', lastVisit); if (lastVisit==undefined || lastVisit=='') { console.log('first visit, all are unread, so don`t highlight anything'); } else { var seclastVisit = Date.parse(lastVisit)/1000; var seccomment = Date.parse(timeTag)/1000; if (seccomment - seclastVisit > 0) { console.log('now comment found!'); $('#' + cmid).addClass('nr_unread'); } } }); //$('#' + cmdid).css('background-color','lightblue'); //var arr = redditBag.urls[url].read; //console.log(redditBag.urls[url].read); /*if (redditBag.urls[url].read.indexOf(cmid)==-1) { //was unread until now redditBag.urls[url].read.push(cmid); } else { //was already read $(this).addClass('nr_read'); }*/ console.log('marked'); } else { console.log('id attr not found!'); } }); //$('.comment:not(.nr_read)').css('background-color','lightblue','important'); //$('.nr_read').css('background-color','lightblue'); $('.nr_unread').css('background-color','lightblue'); GM_setValue('redditBag', redditBag);