diff --git a/src/pages/ContentScripts/features/developer-hovercard-info/index.tsx b/src/pages/ContentScripts/features/developer-hovercard-info/index.tsx index acd5ddc2..b6f5c6cf 100644 --- a/src/pages/ContentScripts/features/developer-hovercard-info/index.tsx +++ b/src/pages/ContentScripts/features/developer-hovercard-info/index.tsx @@ -31,31 +31,11 @@ const renderTo = (container: HTMLElement, developerName: string, openrank: strin ReactDOM.render(, openRankContainer); }; -const elementReadyWithTimeout = async (selector: string, options: { stopOnDomReady: boolean }, timeout: number) => { - return Promise.race([ - elementReady(selector, options), - new Promise((_, reject) => setTimeout(() => reject(new Error(`Timeout waiting for ${selector}`)), timeout)), - ]); -}; - const init = async (): Promise => { let abortController = new AbortController(); - const hovercardSelector = '[data-hovercard-url]'; - - await elementReady(hovercardSelector, { stopOnDomReady: false }); - // The loading time for the element with data-testid=github-avatar is 1500ms. - // If the timeout is not set, OpenRank will not be added normally. - try { - await elementReadyWithTimeout('[data-testid=github-avatar]', { stopOnDomReady: false }, 1500); - } catch (error) { - console.error(error); - } - + const hovercardSelector = '[data-hovercard-type="user"]'; document.querySelectorAll(hovercardSelector).forEach((element) => { - const hovercardUrl = element.getAttribute('data-hovercard-url'); - if (!hovercardUrl || !hovercardUrl.startsWith('/users')) { - return; - } + // isProcessing is used to Prevent OpenRank from adding duplicates element.addEventListener('mouseover', async () => { abortController.abort(); abortController = new AbortController();