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