mirror of
https://github.com/movie-web/extension.git
synced 2025-09-13 12:43:24 +00:00
36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { Storage } from '@plasmohq/storage';
|
|
import { useStorage } from '@plasmohq/storage/hook';
|
|
|
|
import { makeUrlIntoDomain } from '~utils/domains';
|
|
|
|
export const DEFAULT_DOMAIN_WHITELIST = ['movie-web.app', 'dev.movie-web.app'];
|
|
|
|
export const storage = new Storage();
|
|
|
|
const getDomainWhiteList = async () => {
|
|
const whitelist = await storage.get<string[]>('domainWhitelist');
|
|
if (!whitelist) await storage.set('domainWhitelist', DEFAULT_DOMAIN_WHITELIST);
|
|
return whitelist ?? DEFAULT_DOMAIN_WHITELIST;
|
|
};
|
|
|
|
const domainIsInWhitelist = async (domain: string) => {
|
|
const whitelist = await getDomainWhiteList();
|
|
return whitelist?.some((d) => d.includes(domain)) ?? false;
|
|
};
|
|
|
|
export function useDomainStorage() {
|
|
return useStorage<string[]>('domainWhitelist', (v) => v ?? DEFAULT_DOMAIN_WHITELIST);
|
|
}
|
|
|
|
export const isDomainWhitelisted = async (url: string | undefined) => {
|
|
if (!url) return false;
|
|
const domain = makeUrlIntoDomain(url);
|
|
if (!domain) return false;
|
|
return domainIsInWhitelist(domain);
|
|
};
|
|
|
|
export const assertDomainWhitelist = async (url: string) => {
|
|
const isWhiteListed = await isDomainWhitelisted(url);
|
|
if (!isWhiteListed) throw new Error('Domain is not whitelisted');
|
|
};
|