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();