summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/hooks/useFolderTrust.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src/ui/hooks/useFolderTrust.ts')
-rw-r--r--packages/cli/src/ui/hooks/useFolderTrust.ts26
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,
};
};