chore: additional stylistic fixes
This commit is contained in:
parent
f41edcb756
commit
e9c16cad10
1 changed files with 37 additions and 36 deletions
|
@ -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();
|
Loading…
Add table
Add a link
Reference in a new issue