# HG changeset patch # User nanaya # Date 1674231714 -32400 # Node ID f235b50ebdd23c59bae55ffb1d1a3ca70ce83c61 # Parent f3f646436567e845f98c93fe42f86bf38b5ce66f Add twitter default following tab diff -r f3f646436567 -r f235b50ebdd2 twitter-default-following-tab.user.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/twitter-default-following-tab.user.js Sat Jan 21 01:21:54 2023 +0900 @@ -0,0 +1,47 @@ +// ==UserScript== +// @name twitter default following tab +// @namespace https://nanaya.net +// @match https://twitter.com/home +// @grant none +// @version 1.0.0 +// @author nanaya +// @description Always select Following tab on first load +// @downloadURL https://hg.nanaya.net/ec-userscripts/raw-file/tip/twitter-default-following-tab.user.js +// ==/UserScript== + +'use strict'; + +let selected = false; + +const observer = new window.MutationObserver(selectFollowingTab); +let stopObservingTimeout; + +function selectFollowingTab () { + if (selected) return; + + const followingTab = document.querySelectorAll('[href="/home"][role=tab]')?.[1]; + if (followingTab == null || followingTab.getAttribute('aria-selected') === 'true') return; + + console.log("selecting 'Following' tab"); + selected = true; + followingTab.click(); + observer.disconnect(); + clearTimeout(stopObservingTimeout); +} + +function init () { + selectFollowingTab(); + if (!selected) { + observer.observe(document, { childList: true, subtree: true }); + } + stopObservingTimeout = setTimeout(() => { + console.log("couldn't find 'Following' tab, stop observing page"); + observer.disconnect(); + }, 60000); +} + +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', init); +} else { + init(); +}