NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name POE Trade Fixes
// @namespace poetradefixes
// @version 2.0.1
// @description Fixes for official POE Trade
// @author iamroose
// @license MIT
// @match https://www.pathofexile.com/trade*
// @grant none
// @require https://raw.githubusercontent.com/tommoor/tinycon/master/tinycon.min.js
// @run-at document-start
// ==/UserScript==
(function(){
install();
var is_focused = true;
// Change the favicon
function updateFavicon() {
//document.querySelector("link[rel='icon']")?.remove();
document.querySelector("link[rel*='icon']")?.remove();
document.querySelector("link[rel='shortcut icon']")?.remove();
document.querySelector("link[rel='mask-icon']")?.remove();
var link = document.querySelector("link[rel='icon']") || document.createElement('link');
link.type = 'image/x-icon';
link.rel = 'icon';
link.sizes = '16x16';
link.href = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAaSURBVDhPY3DTkSMJjWogBo1qIAYNOg06cgC39JABiSgUbwAAAABJRU5ErkJggg==';
document.getElementsByTagName('head')[0].appendChild(link);
}
// Check live trade count and update favicon if necessary.
function updateCount(title) {
if(!is_focused){
var count = title.match(/\d+/)[0];
Tinycon.setBubble(count);
}
}
// Add some styles
function addStyles() {
var css = "#trade {max-width:920px;} .search-advanced-items {display:flex; flex-direction:column; margin-bottom: 20px;} .search-advanced-pane {width:100% !important; margin-bottom:20px;}.results .resultset{margin-bottom:0;}";
var style = document.createElement("style");
style.type = "text/css";
if (style.styleSheet){
style.styleSheet.cssText = css;
} else {
style.appendChild(document.createTextNode(css));
}
document.documentElement.appendChild(style);
}
// Observe any change in the <title> content, checking for the unread notification character.
function install() {
updateFavicon();
document.addEventListener('DOMContentLoaded', function(){
addStyles();
}, false);
var titleNode = document.querySelector('head > title');
this.observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
var newTitle = mutation.target.textContent;
updateCount(newTitle);
});
});
observer.observe(titleNode, { subtree: true, characterData: true, childList: true });
}
window.addEventListener("focus", function(event)
{
is_focused = true;
Tinycon.setBubble(0);
}, false);
window.addEventListener("blur", function(event)
{
is_focused = false;
}, false);
})();