mirror of
https://github.com/movie-web/extension.git
synced 2025-09-13 16:53:24 +00:00
Functionality and state for popout
This commit is contained in:
38
src/hooks/useDomainWhitelist.ts
Normal file
38
src/hooks/useDomainWhitelist.ts
Normal 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,
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user