diff --git a/src/hooks/usePermission.ts b/src/hooks/usePermission.ts
index a6a4e42..826693c 100644
--- a/src/hooks/usePermission.ts
+++ b/src/hooks/usePermission.ts
@@ -1,4 +1,6 @@
-import { useEffect, useState } from 'react';
+import { useCallback, useEffect, useState } from 'react';
+
+import { useDomainWhitelist } from './useDomainWhitelist';
export async function hasPermission() {
return chrome.permissions.contains({
@@ -7,15 +9,17 @@ export async function hasPermission() {
}
export function usePermission() {
+ const { addDomain } = useDomainWhitelist();
const [permission, setPermission] = useState(false);
- const grantPermission = async () => {
+ const grantPermission = useCallback(async (domain: string) => {
const granted = await chrome.permissions.request({
origins: [''],
});
setPermission(granted);
+ if (granted && domain) addDomain(domain);
return granted;
- };
+ }, []);
useEffect(() => {
hasPermission().then((has) => setPermission(has));
diff --git a/src/tabs/PermissionGrant.tsx b/src/tabs/PermissionGrant.tsx
index c7c2867..44e2643 100644
--- a/src/tabs/PermissionGrant.tsx
+++ b/src/tabs/PermissionGrant.tsx
@@ -1,19 +1,28 @@
+import { useDomainWhitelist } from '~hooks/useDomainWhitelist';
import { usePermission } from '~hooks/usePermission';
+import { makeUrlIntoDomain } from '~utils/domains';
import './PermissionGrant.css';
export default function PermissionGrant() {
+ const { domainWhitelist } = useDomainWhitelist();
const { hasPermission, grantPermission } = usePermission();
const queryParams = new URLSearchParams(window.location.search);
const redirectUrl = queryParams.get('redirectUrl') ?? 'https://movie-web.app';
- const domain = new URL(redirectUrl).hostname;
+ const domain = makeUrlIntoDomain(redirectUrl);
+
+ const permissionsGranted = domainWhitelist.includes(domain) && hasPermission;
+
+ const redirectBack = () => {
+ chrome.tabs.getCurrent((tab) => {
+ chrome.tabs.update(tab.id, { url: queryParams.get('redirectUrl') ?? 'https://movie-web.app' });
+ });
+ };
const handleGrantPermission = () => {
- grantPermission().then(() => {
- chrome.tabs.getCurrent((tab) => {
- chrome.tabs.update(tab.id, { url: queryParams.get('redirectUrl') ?? 'https://movie-web.app' });
- });
+ grantPermission(domain).then(() => {
+ redirectBack();
});
};
@@ -30,7 +39,7 @@ export default function PermissionGrant() {
-