// ==UserScript==
// @name Pokazywarka wykopo i zakopowiczów +
// @namespace https://github.com/kasper93/
// @author kasper93
// @description Skrypt pokazuje przy komentarzach czy ktoś zakopał / wykopał dane znalezisko
// @include http://*wykop.pl/link/*
// @include https://*wykop.pl/link/*
// @downloadURL https://raw.githubusercontent.com/kasper93/userscripts/master/PokazywarkaWykopoZakopowiczow+.user.js
// @updateURL https://raw.githubusercontent.com/kasper93/userscripts/master/PokazywarkaWykopoZakopowiczow+.user.js
// @version 3.0.0
// @grant none
// @run-at document-end
// ==/UserScript==
(() => {
const reasonMap = {
'duplicate': 'duplikat',
'spam': 'spam',
'fake': 'informacja nieprawdziwa',
'wrong': 'treść nieodpowiednia',
'invalid': 'nie nadaje się',
};
const createMap = (s) => {
const ret = new Map();
s.forEach(entry => ret.set(entry.user.username, reasonMap[entry.reason]));
return ret
};
const createSet = (s) => {
const ret = new Set();
s.forEach(entry => ret.add(entry.user.username));
return ret
};
const getNames = (url, action) => {
return new Promise((resolve, reject) => {
fetch(url, {
headers: {Authorization: `Bearer ${window.localStorage.getItem('token')}`}
}).then(response => {
if (!response.ok) {
reject(response.statusText);
return;
}
return response.json();
}).then(r => {
switch (action) {
case 0:
resolve(createSet(r.data));
break;
case 1:
resolve(createMap(r.data));
break;
}
}).catch((error) => reject(error.message));
});
};
const id = /link\/(\d+)\//.exec(document.location.pathname)[1];
Promise.all([
getNames(`${document.location.origin}/api/v3/links/${id}/upvotes/up`, 0),
getNames(`${document.location.origin}/api/v3/links/${id}/upvotes/down`, 1)
]).then(([upvotes, downvotes]) => {
const comments = document.querySelectorAll('#link-comments .entry .username');
for (const comment of comments) {
const username = comment.textContent.trim();
if (upvotes.has(username))
comment.insertAdjacentHTML('afterend', ' (wykopał)');
else if (downvotes.has(username))
comment.insertAdjacentHTML('afterend', ` (${downvotes.get(username)})`);
}
}, error => console.error(`PokazywarkaWykopoZakopowiczow: ${error}`));
})();