diff --git a/src/components/AutoFixProblemsSwitch.tsx b/src/components/AutoFixProblemsSwitch.tsx
index 3b68949..1bfbc22 100644
--- a/src/components/AutoFixProblemsSwitch.tsx
+++ b/src/components/AutoFixProblemsSwitch.tsx
@@ -2,7 +2,13 @@ import { useSettings } from "@/hooks/useSettings";
import { Label } from "@/components/ui/label";
import { Switch } from "@/components/ui/switch";
-export function AutoFixProblemsSwitch() {
+import { showInfo } from "@/lib/toast";
+
+export function AutoFixProblemsSwitch({
+ showToast = false,
+}: {
+ showToast?: boolean;
+}) {
const { settings, updateSettings } = useSettings();
return (
@@ -13,6 +19,9 @@ export function AutoFixProblemsSwitch() {
updateSettings({
enableAutoFixProblems: !settings?.enableAutoFixProblems,
});
+ if (!settings?.enableAutoFixProblems && showToast) {
+ showInfo("You can disable Auto-fix problems in the Settings page.");
+ }
}}
/>
diff --git a/src/components/preview_panel/Problems.tsx b/src/components/preview_panel/Problems.tsx
index 4cca7d5..93dfb4e 100644
--- a/src/components/preview_panel/Problems.tsx
+++ b/src/components/preview_panel/Problems.tsx
@@ -15,6 +15,8 @@ import { useStreamChat } from "@/hooks/useStreamChat";
import { useCheckProblems } from "@/hooks/useCheckProblems";
import { createProblemFixPrompt } from "@/shared/problem_prompt";
import { showError } from "@/lib/toast";
+import { useSettings } from "@/hooks/useSettings";
+import { AutoFixProblemsSwitch } from "../AutoFixProblemsSwitch";
interface ProblemItemProps {
problem: Problem;
@@ -62,6 +64,7 @@ const RecheckButton = ({
variant = "outline",
className = "h-7 px-3 text-xs",
}: RecheckButtonProps) => {
+ const { settings } = useSettings();
const { checkProblems, isChecking } = useCheckProblems(appId);
const handleRecheck = async () => {
@@ -71,6 +74,21 @@ const RecheckButton = ({
}
};
+ if (!settings?.enableAutoFixProblems) {
+ return (
+
+
+
+
+
Enable Auto-Fix Problems
+
+ You need to enable autofix problems to use the Problem pane.
+
+
+
+ );
+ }
+
return (
);
diff --git a/src/hooks/useCheckProblems.ts b/src/hooks/useCheckProblems.ts
index 785431a..9829ed6 100644
--- a/src/hooks/useCheckProblems.ts
+++ b/src/hooks/useCheckProblems.ts
@@ -1,8 +1,10 @@
import { useQuery } from "@tanstack/react-query";
import { IpcClient } from "@/ipc/ipc_client";
import type { ProblemReport } from "@/ipc/ipc_types";
+import { useSettings } from "./useSettings";
export function useCheckProblems(appId: number | null) {
+ const { settings } = useSettings();
const {
data: problemReport,
isLoading: isChecking,
@@ -17,7 +19,7 @@ export function useCheckProblems(appId: number | null) {
const ipcClient = IpcClient.getInstance();
return ipcClient.checkProblems({ appId });
},
- enabled: !!appId,
+ enabled: !!appId && settings?.enableAutoFixProblems,
// DO NOT SHOW ERROR TOAST.
});
diff --git a/src/ipc/handlers/problems_handlers.ts b/src/ipc/handlers/problems_handlers.ts
index f535087..e73efdb 100644
--- a/src/ipc/handlers/problems_handlers.ts
+++ b/src/ipc/handlers/problems_handlers.ts
@@ -1,14 +1,18 @@
import { db } from "../../db";
-import { ipcMain } from "electron";
+
import { apps } from "../../db/schema";
import { eq } from "drizzle-orm";
import { generateProblemReport } from "../processors/tsc";
import { getDyadAppPath } from "@/paths/paths";
-import { logger } from "./app_upgrade_handlers";
+import log from "electron-log";
+import { createLoggedHandler } from "./safe_handle";
+
+const logger = log.scope("problems_handlers");
+const handle = createLoggedHandler(logger);
export function registerProblemsHandlers() {
// Handler to check problems using autofix with empty response
- ipcMain.handle("check-problems", async (event, params: { appId: number }) => {
+ handle("check-problems", async (event, params: { appId: number }) => {
try {
// Get the app to find its path
const app = await db.query.apps.findFirst({