chore: additional stylistic fixes

This commit is contained in:
Huey 2022-11-17 09:52:59 +08:00
parent f41edcb756
commit e9c16cad10
No known key found for this signature in database
GPG key ID: 54C82E718C137231

View file

@ -5,63 +5,64 @@
* @param {Event} event * @param {Event} event
*/ */
function onClickFollow(event) { function onClickFollow(event) {
event.stopPropagation(); event.stopPropagation();
event.preventDefault(); event.preventDefault();
const username = window.location.pathname.split(`/`).slice(-1)[0]; const username = window.location.pathname.split(`/`).slice(-1)[0];
// activate AutoRemoteFollow // activate AutoRemoteFollow
window.open(`/users/${username}/remote_follow`, `_blank`); window.open(`/users/${username}/remote_follow`, `_blank`);
} }
/** /**
* wait for element to appear * wait for element to appear
* @param {string} selector * @param {string} selector
* @param {number} timeout * @param {number} timeout
* @see {@link https://github.com/storybookjs/test-runner/blob/6d41927154e8dd1e4c9e7493122e24e2739a7a0f/src/setup-page.ts#L134} from which this was adapted * @see {@link https://github.com/storybookjs/test-runner/blob/6d41927154e8dd1e4c9e7493122e24e2739a7a0f/src/setup-page.ts#L134}
* from which this was adapted
*/ */
function waitForElement(selector, timeout) { function waitForElement(selector, timeout) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
function getElement() { function getElement() {
return document.querySelector(selector); return document.querySelector(selector);
} }
const element = getElement(); const element = getElement();
if(element){ if(element){
return resolve(element); return resolve(element);
} }
const observer = new MutationObserver(() => { const observer = new MutationObserver(() => {
const element = getElement(); const element = getElement();
if(element){ if(element){
resolve(element); resolve(element);
observer.disconnect(); observer.disconnect();
} }
}) });
observer.observe(document.body, { observer.observe(document.body, {
childList: true, childList: true,
subtree: true subtree: true
}); });
window.setTimeout(() => { window.setTimeout(() => {
reject(); reject();
}, timeout); }, timeout);
}) });
} }
/** /**
* Inject replacement onClick handler for Follow button * Inject replacement onClick handler for Follow button
*/ */
async function injectFollowButton() { async function injectFollowButton() {
try { try {
const followButton = await waitForElement(`.account__header__tabs__buttons button.button`, 20000); const followButton = await waitForElement(`.account__header__tabs__buttons button.button`, 20000);
followButton.addEventListener(`click`, onClickFollow); followButton.addEventListener(`click`, onClickFollow);
} catch { } catch {
// Follow button failed to appear // Follow button failed to appear
} }
} }
async function init() { async function init() {
await injectFollowButton(); await injectFollowButton();
} }
init(); init();