Functionality and state for popout

This commit is contained in:
mrjvs
2024-01-10 19:27:20 +01:00
parent 3a8144ee67
commit 5a3268fd29
13 changed files with 141 additions and 63 deletions

30
src/hooks/useDomain.ts Normal file
View File

@@ -0,0 +1,30 @@
import { useEffect, useState } from 'react';
import { makeUrlIntoDomain } from '~utils/domains';
function queryCurrentDomain(cb: (domain: string | null) => void) {
chrome.tabs.query({ active: true, currentWindow: true }).then((tabs) => {
const url = tabs[0]?.url;
if (!url) cb(null);
else cb(url);
});
}
export function useDomain(): null | string {
const [domain, setDomain] = useState<string | null>(null);
useEffect(() => {
queryCurrentDomain(setDomain);
function listen() {
queryCurrentDomain(setDomain);
}
chrome.tabs.onActivated.addListener(listen);
chrome.tabs.onUpdated.addListener(listen);
return () => {
chrome.tabs.onActivated.removeListener(listen);
chrome.tabs.onUpdated.removeListener(listen);
};
}, []);
return makeUrlIntoDomain(domain);
}