@@ -10,6 +10,11 @@ export type ZkApp = {
1010 image : string
1111 url : string
1212}
13+
14+ // https://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url
15+ const URLRegex =
16+ / h t t p s ? : \/ \/ ( w w w \. ) ? [ - a - z A - Z 0 - 9 @ : % . _ \+ ~ # = ] { 1 , 256 } \. [ a - z A - Z 0 - 9 ( ) ] { 1 , 6 } \b ( [ - a - z A - Z 0 - 9 ( ) @ : % _ \+ . ~ # ? & / / = ] * ) /
17+
1318export const AuthorizedZkAppsRoute = ( ) => {
1419 const navigate = useNavigate ( )
1520 const [ connectedApps , setConnectedApps ] = useState ( [ ] as ZkApp [ ] )
@@ -22,16 +27,18 @@ export const AuthorizedZkAppsRoute = () => {
2227 const { permissions } = ( await chrome . storage . local . get ( {
2328 permissions : [ ] ,
2429 } ) ) as Record < string , "ALLOWED" >
25- // https://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url
26- const URLRegex =
27- / h t t p s ? : \/ \/ ( w w w \. ) ? [ - a - z A - Z 0 - 9 @ : % . _ \+ ~ # = ] { 1 , 256 } \. [ a - z A - Z 0 - 9 ( ) ] { 1 , 6 } \b ( [ - a - z A - Z 0 - 9 ( ) @ : % _ \+ . ~ # ? & / / = ] * ) /
2830 const appsWithMetadata = await Promise . all (
2931 Object . keys ( permissions )
3032 . filter ( ( key ) => URLRegex . test ( key ) )
3133 . map ( async ( url ) => {
32- const metadata = ( await fetcher (
33- `https://api.dub.co/metatags?url=${ url } ` ,
34- ) ) as Omit < ZkApp , "url" >
34+ let metadata : Omit < ZkApp , "url" > = {
35+ title : "" ,
36+ description : "" ,
37+ image : "" ,
38+ }
39+ try {
40+ metadata = await fetcher ( `https://api.dub.co/metatags?url=${ url } ` )
41+ } catch ( e ) { }
3542 return { url, ...metadata }
3643 } ) ,
3744 )
@@ -42,7 +49,19 @@ export const AuthorizedZkAppsRoute = () => {
4249 const filteredApps = connectedApps . filter (
4350 ( app ) => app . url !== appToDelete . url ,
4451 )
45- await chrome . storage . local . set ( { permissions : filteredApps } )
52+
53+ const { permissions } = await chrome . storage . local . get ( {
54+ permissions : { } as ZkApp [ ] & Record < string , "ALLOWED" > ,
55+ } )
56+ const newPermissions = Object . assign ( { } , filteredApps ) as ZkApp [ ] &
57+ Record < string , "ALLOWED" >
58+ for ( const k of Object . keys ( permissions ) . filter (
59+ ( key ) => URLRegex . test ( key ) && key !== appToDelete . url ,
60+ ) ) {
61+ newPermissions [ k ] = permissions [ k ]
62+ }
63+ await chrome . storage . local . set ( { permissions : newPermissions } )
64+
4665 setConnectedApps ( filteredApps )
4766 }
4867
0 commit comments