diff options
Diffstat (limited to 'packages/cli/src/ui/hooks/useFolderTrust.ts')
| -rw-r--r-- | packages/cli/src/ui/hooks/useFolderTrust.ts | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/packages/cli/src/ui/hooks/useFolderTrust.ts b/packages/cli/src/ui/hooks/useFolderTrust.ts index 28b82b30..c13d9e6e 100644 --- a/packages/cli/src/ui/hooks/useFolderTrust.ts +++ b/packages/cli/src/ui/hooks/useFolderTrust.ts @@ -20,6 +20,7 @@ export const useFolderTrust = ( ) => { const [isTrusted, setIsTrusted] = useState<boolean | undefined>(undefined); const [isFolderTrustDialogOpen, setIsFolderTrustDialogOpen] = useState(false); + const [isRestarting, setIsRestarting] = useState(false); const { folderTrust, folderTrustFeature } = settings.merged; useEffect(() => { @@ -38,6 +39,8 @@ export const useFolderTrust = ( const cwd = process.cwd(); let trustLevel: TrustLevel; + const wasTrusted = isTrusted ?? true; + switch (choice) { case FolderTrustChoice.TRUST_FOLDER: trustLevel = TrustLevel.TRUST_FOLDER; @@ -53,20 +56,27 @@ export const useFolderTrust = ( } trustedFolders.setValue(cwd, trustLevel); - const trusted = isWorkspaceTrusted({ - folderTrust, - folderTrustFeature, - } as Settings); - setIsTrusted(trusted); - setIsFolderTrustDialogOpen(false); - onTrustChange(trusted); + const newIsTrusted = + trustLevel === TrustLevel.TRUST_FOLDER || + trustLevel === TrustLevel.TRUST_PARENT; + setIsTrusted(newIsTrusted); + onTrustChange(newIsTrusted); + + const needsRestart = wasTrusted !== newIsTrusted; + if (needsRestart) { + setIsRestarting(true); + setIsFolderTrustDialogOpen(true); + } else { + setIsFolderTrustDialogOpen(false); + } }, - [onTrustChange, folderTrust, folderTrustFeature], + [onTrustChange, isTrusted], ); return { isTrusted, isFolderTrustDialogOpen, handleFolderTrustSelect, + isRestarting, }; }; |
