Skip to content

Instantly share code, notes, and snippets.

@poochin
Created June 14, 2012 14:42
Show Gist options
  • Select an option

  • Save poochin/2930761 to your computer and use it in GitHub Desktop.

Select an option

Save poochin/2930761 to your computer and use it in GitHub Desktop.
Dashboard で一度見たポストを覚えて再度表示されないようにします
// ==UserScript==
// @name I've seen it in tumblr.
// @match http://www.tumblr.com/dashboard*
// @version 1.0.0
// @description 一度見たポストを表示しないようにさせます
//
// @author poochin
// @license MIT
// @updated 2012-06-14
// ==/UserScript==
(function IveSeenItInTumblr() {
var reblog_keys,
enable;
function postappended(post) {
var reblog_key;
reblog_key = post.querySelector('a.reblog_button').getAttribute('data-reblog-key');
if (reblog_keys[reblog_key]) {
console.log('Delete:', post.getAttribute('id'));
post.parentNode.removeChild(post);
}
else {
reblog_keys[reblog_key] = 1;
}
}
function appendToPosts(e) {
if (enable == false) {
}
else if (e.target.nodeType == document.ELEMENT_NODE) {
postappended(e.target);
}
}
function init() {
enable = localStorage.getItem('itintumblr_enable');
enable = (enable == null ? false : enable == 'true');
reblog_keys = localStorage.getItem('itintumblr_reblog_keys');
reblog_keys = (reblog_keys == null ? {} : JSON.parse(reblog_keys));
}
function command_field() {
var base, right_column, itintumblr, toggle_messages;
toggle_messages = ['toEnable', 'toDisable'];
base = [
'<fieldset id="itintumblr">',
'<legend>I\'ve seen it in tumblr.</legend>',
'<button class="enable_toggle_button"></button>',
'<button class="save_button">Save</button>',
'<button class="clear_button">Clear</button>',
'</fieldset>'].join('');
right_column = document.querySelector('#right_column');
right_column.innerHTML += base;
itintumblr = right_column.querySelector('#itintumblr');
itintumblr.querySelector('.enable_toggle_button').innerText = toggle_messages[enable + 0];
itintumblr.querySelector('.enable_toggle_button').addEventListener('click', function(e) {
enable = !enable;
localStorage.setItem('itintumblr_enable', enable);
e.target.innerText = toggle_messages[enable + 0];
}, true);
itintumblr.querySelector('.save_button').addEventListener('click', function(e) {
localStorage.setItem('itintumblr_reblog_keys', JSON.stringify(reblog_keys));
}, true);
itintumblr.querySelector('.clear_button').addEventListener('clear', function(e) {
localStorage.removeItem('itintumblr_reblog_keys');
reblog_keys = {};
}, true);
}
function main() {
init();
command_field();
document.querySelector('#posts').addEventListener('DOMNodeInserted', appendToPosts, true);
if (enable) {
Array.prototype.slice.call(document.querySelectorAll('#posts > li.post:not(.new_post)')).map(postappended);
}
}
function isExecPage() {
if (/^https?:\/\/[^\/]+\/.*/.test(location) /* for Opera */) {
return true;
}
}
if (window.document.body) {
if (isExecPage() /* for Opera */) {
main();
}
}
else {
window.document.addEventListener('DOMContentLoaded', main, false);
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment