diff --git a/src/components/ProModeSelector.tsx b/src/components/ProModeSelector.tsx index 05e0f80..000c8f2 100644 --- a/src/components/ProModeSelector.tsx +++ b/src/components/ProModeSelector.tsx @@ -14,6 +14,7 @@ import { Label } from "@/components/ui/label"; import { Sparkles, Info } from "lucide-react"; import { useSettings } from "@/hooks/useSettings"; import { IpcClient } from "@/ipc/ipc_client"; +import { hasDyadProKey } from "@/lib/schemas"; export function ProModeSelector() { const { settings, updateSettings } = useSettings(); @@ -30,7 +31,14 @@ export function ProModeSelector() { }); }; - const proEnabled = Boolean(settings?.enableDyadPro); + const toggleProEnabled = () => { + updateSettings({ + enableDyadPro: !settings?.enableDyadPro, + }); + }; + + const hasProKey = settings ? hasDyadProKey(settings) : false; + const proModeTogglable = hasProKey && Boolean(settings?.enableDyadPro); return ( @@ -58,7 +66,7 @@ export function ProModeSelector() {
- {!proEnabled && ( + {!hasProKey && (
)} - - +
+ + + +
@@ -101,7 +120,7 @@ function SelectorRow({ label, description, tooltip, - proEnabled, + isTogglable, settingEnabled, toggle, }: { @@ -109,16 +128,16 @@ function SelectorRow({ label: string; description: string; tooltip: string; - proEnabled: boolean; + isTogglable: boolean; settingEnabled: boolean; toggle: () => void; }) { return (
-
+
@@ -126,7 +145,7 @@ function SelectorRow({ @@ -134,7 +153,7 @@ function SelectorRow({

{description}

@@ -142,9 +161,9 @@ function SelectorRow({
); diff --git a/src/lib/schemas.ts b/src/lib/schemas.ts index 01957a3..33b46ea 100644 --- a/src/lib/schemas.ts +++ b/src/lib/schemas.ts @@ -170,10 +170,11 @@ export const UserSettingsSchema = z.object({ export type UserSettings = z.infer; export function isDyadProEnabled(settings: UserSettings): boolean { - return ( - settings.enableDyadPro === true && - !!settings.providerSettings?.auto?.apiKey?.value - ); + return settings.enableDyadPro === true && hasDyadProKey(settings); +} + +export function hasDyadProKey(settings: UserSettings): boolean { + return !!settings.providerSettings?.auto?.apiKey?.value; } // Define interfaces for the props