// ==UserScript== // @name Floating Subs List // @namespace http://tampermonkey.net/ // @version 0.8 // @description Adds a floating list of subscribed magazines to the left of the page // @author raltsm4k // @match *://kbin.social/* // @match *://fedia.io/* // @match *://karab.in/* // @icon https://www.google.com/s2/favicons?sz=64&domain=kbin.social // @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js // @license MIT // @downloadURL https://update.greasyfork.icu/scripts/469121/Floating%20Subs%20List.user.js // @updateURL https://update.greasyfork.icu/scripts/469121/Floating%20Subs%20List.meta.js // ==/UserScript== let user; let is_populating = false; let fetch_tries = 3; (function() { 'use strict'; const a_login = document.querySelector("#header a.login"); user = a_login.getAttribute("href"); if (user !== "/login") { const div_head = document.querySelector('#header'); const div_subs = document.createElement('div'); const div_subs_s = document.createElement('section'); const div_subs_c = document.createElement('div'); const button_filter = Object.assign(document.createElement("a"), { className: "icon sort-button", id: "button-filter", title: "Filter by name", }).appendChild(Object.assign(document.createElement("i"), { className: "fa-solid fa-magnifying-glass" })).parentNode; const button_refresh = Object.assign(document.createElement("a"), { className: "icon sort-button", id: "button-refresh", title: "Refresh list", }).appendChild(Object.assign(document.createElement("i"), { className: "fa-solid fa-rotate-right" })).parentNode; const input_filter = Object.assign(document.createElement("input"), { id: "subs-filter", name: "subs-filter", type: "text", title: "Filter by name", style: "display:none;" }); const button_collapse = Object.assign(document.createElement("button"), { id: "subs-sticky-collapse", title: "Collapse/expand", textContent: "<" }); const ul_main = Object.assign(document.createElement("ul"), { id: "subs-sticky-main" }); const ul_pins = Object.assign(document.createElement("ul"), { id: "subs-sticky-pins" }); const preloader = Object.assign(document.createElement("div"), { className: "fa-3x", id: "subs-sticky-preloader" }).appendChild(Object.assign(document.createElement("i"), { className: "fa-solid fa-sync fa-spin" })).parentNode.appendChild(Object.assign(document.createElement("i"), { className: "fa-solid fa-circle-exclamation", style: "display:none;" })).parentNode; button_refresh.addEventListener('click', () => { localStorage.removeItem('cached_subs_' + user); populate(); }); button_filter.addEventListener('click', () => { const search_box = $('#subs-filter'); search_box.toggle(); if (search_box.is(':visible')) { $('#button-filter').addClass('active'); search_box.focus(); } else { $('#button-filter').removeClass('active'); search_box.val(''); filter(); } }); input_filter.addEventListener('input', function() { filter(); }); button_collapse.addEventListener('click', async () => { await localStorage.setItem('subs_collapsed', localStorage.getItem('subs_collapsed') !== 'true'); collapse(); }); const sub_button = document.querySelector('.magazine__subscribe button[data-action="subs#send"]'); if (sub_button !== null) sub_button.addEventListener('click', () => { localStorage.removeItem('cached_subs_' + user); }); $('