Override Fanfiction.net's default choices for result filters
// ==UserScript==
// @name Fanfiction.net - Customize Default Result Filter
// @namespace ssokolow.com
// @description Override Fanfiction.net's default choices for result filters
// @version 5
// @license MIT
//
// @require https://greasemonkey.github.io/gm4-polyfill/gm4-polyfill.js
//
// @grant GM_getValue
// @grant GM.getValue
// @grant GM_setValue
// @grant GM.setValue
// @grant GM_registerMenuCommand
// @grant GM.registerMenuCommand
//
// @noframes
// @match *://www.fanfiction.net/*
// ==/UserScript==
(async function() {
// Skip everything if this isn't a relevant page since we can't URL-match them.
if (document.getElementById('filters')) {
// Let short-circuit eval only call GM_getValue once on empty query string
let preferred_filter;
if (window.location.search === "" &&
(preferred_filter = await GM.getValue('preferred_filter'))) {
// Make it more clear when the page hasn't yet reloaded
document.querySelector('body').style.opacity = 0.2;
history.replaceState({}, '', preferred_filter);
location.reload();
} else {
// Work around bad interaction between Firefox and replaceState+reload
let filter_form = document.querySelector('#filters #myform')
if (filter_form) { filter_form.reset(); }
GM.registerMenuCommand("Save Current Filters as Default", function() {
GM.setValue('preferred_filter', window.location.search);
}, 'S');
}
}
})();