chore: fix stylistic issues

This commit is contained in:
Huey 2022-11-17 09:29:31 +08:00
parent b61dbc4a57
commit 9a1f476a0b
No known key found for this signature in database
GPG key ID: 54C82E718C137231
2 changed files with 34 additions and 32 deletions

View file

@ -145,12 +145,13 @@ function getInteractionType(url) {
}
/**
* Handles changes to the URL of a tab
* Handles changes to the URL of a tab.
* @returns {void}
*/
function onTabUpdate() {
browser.tabs.executeScript(null, {
file: `/content_script/mastodonInject.js`
})
file: "/content_script/mastodonInject.js"
});
}
/**

View file

@ -10,9 +10,9 @@
* @returns {VersionNumber}
*/
function parseVersionNumber() {
const versionElement = document.querySelector(`.link-footer`).textContent
const versionNumber = versionElement.match(/v?(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)$/)
return versionNumber.groups
const versionElement = document.querySelector(`.link-footer`).textContent;
const versionNumber = versionElement.match(/v?(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)$/);
return versionNumber.groups;
}
@ -20,81 +20,82 @@ function parseVersionNumber() {
* Replacement onClick handler for Follow button
* @param {Event} event
*/
function onClickFollow (event) {
event.stopPropagation()
event.preventDefault()
const username = window.location.pathname.split(`/`).slice(-1)[0]
function onClickFollow(event) {
event.stopPropagation();
event.preventDefault();
const username = window.location.pathname.split(`/`).slice(-1)[0];
// activate AutoRemoteFollow
window.open(`/users/${username}/remote_follow`, `_blank`)
window.open(`/users/${username}/remote_follow`, `_blank`);
}
/**
* wait for element to appear
* @param {string} selector
* @param {number} timeout
* @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) => {
function getElement() {
return document.querySelector(selector)
return document.querySelector(selector);
}
const element = getElement()
const element = getElement();
if(element){
return resolve(element)
return resolve(element);
}
const observer = new MutationObserver(() => {
const element = getElement()
const element = getElement();
if(element){
resolve(element)
observer.disconnect()
resolve(element);
observer.disconnect();
}
})
observer.observe(document.body, {
childList: true,
subtree: true
})
});
window.setTimeout(() => {
reject()
}, timeout)
reject();
}, timeout);
})
}
/**
* Inject replacement onClick handler for Follow button
*/
async function injectFollowButton () {
async function injectFollowButton() {
try {
const followButton = await waitForElement(`.account__header__tabs__buttons button.button`, 20000)
followButton.addEventListener(`click`, onClickFollow)
const followButton = await waitForElement(`.account__header__tabs__buttons button.button`, 20000);
followButton.addEventListener(`click`, onClickFollow);
} catch {
// Follow button failed to appear
}
}
async function init () {
let versionNumber
async function init() {
let versionNumber;
try {
const initialStateObject = JSON.parse(document.getElementById(`initial-state`).innerHTML)
const version = initialStateObject?.meta?.version
const initialStateObject = JSON.parse(document.getElementById(`initial-state`).innerHTML);
const version = initialStateObject?.meta?.version;
if(!initialStateObject || !version){
// not a Mastodon server
return
return;
}
versionNumber = parseVersionNumber(version)
versionNumber = parseVersionNumber(version);
} catch {
return
}
if(Number.parseInt(versionNumber.major) >= 4){
await injectFollowButton()
await injectFollowButton();
}
}
init()
init();