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

View File

@@ -0,0 +1,38 @@
import { useCallback } from 'react';
import { useDomainStorage } from '~utils/storage';
export function useDomainWhitelist() {
const [domainWhitelist, setDomainWhitelist] = useDomainStorage();
const removeDomain = useCallback((domain: string | null) => {
if (!domain) return;
setDomainWhitelist((s) => [...s.filter((v) => v !== domain)]);
}, []);
const addDomain = useCallback((domain: string | null) => {
if (!domain) return;
setDomainWhitelist((s) => [...s.filter((v) => v !== domain), domain]);
}, []);
return {
removeDomain,
addDomain,
domainWhitelist,
};
}
export function useToggleWhitelistDomain(domain: string) {
const { domainWhitelist, addDomain, removeDomain } = useDomainWhitelist();
const isWhitelisted = domainWhitelist.includes(domain);
const toggle = useCallback(() => {
if (isWhitelisted) removeDomain(domain);
else addDomain(domain);
}, [isWhitelisted, domain, addDomain, removeDomain]);
return {
toggle,
isWhitelisted,
};
}