diff --git a/apps/desktop/src/renderer/main/pages/settings/advanced/index.tsx b/apps/desktop/src/renderer/main/pages/settings/advanced/index.tsx index 83163bf..753dd77 100644 --- a/apps/desktop/src/renderer/main/pages/settings/advanced/index.tsx +++ b/apps/desktop/src/renderer/main/pages/settings/advanced/index.tsx @@ -226,12 +226,12 @@ export default function AdvancedSettingsPage() { Cancel - resetAppMutation.mutate()} > Yes, delete everything - + diff --git a/apps/desktop/src/renderer/onboarding/index.tsx b/apps/desktop/src/renderer/onboarding/index.tsx index 0712e4f..900cc5a 100644 --- a/apps/desktop/src/renderer/onboarding/index.tsx +++ b/apps/desktop/src/renderer/onboarding/index.tsx @@ -41,7 +41,7 @@ root.render( - + diff --git a/apps/desktop/src/services/auth-service.ts b/apps/desktop/src/services/auth-service.ts index 4be1f18..dd4456f 100644 --- a/apps/desktop/src/services/auth-service.ts +++ b/apps/desktop/src/services/auth-service.ts @@ -320,8 +320,13 @@ export class AuthService extends EventEmitter { } const authState = await this.getAuthState(); - if (!authState || !authState.refreshToken) { - // No refresh token available - invalid state, logout user + if (!authState) { + // User was never logged in - nothing to refresh + return; + } + + if (!authState.refreshToken) { + // User has auth state but no refresh token - corrupted state, logout await this.logout(); return; } diff --git a/apps/desktop/src/trpc/routers/settings.ts b/apps/desktop/src/trpc/routers/settings.ts index 65e5a76..1c6a66c 100644 --- a/apps/desktop/src/trpc/routers/settings.ts +++ b/apps/desktop/src/trpc/routers/settings.ts @@ -633,17 +633,24 @@ export const settingsRouter = createRouter({ logger.main.info("Resetting app - deleting all data"); } - // Close database connection before deleting the file - if (logger) { - logger.main.info("Closing database connection before reset"); - } + // Close database connection before deleting await closeDatabase(); // Add a small delay to ensure the connection is fully closed on Windows await new Promise((resolve) => setTimeout(resolve, 100)); - // Delete the database file - await fs.unlink(dbPath); + // Delete entire userData directory (includes db, models, cache, etc.) + const userDataPath = app.getPath("userData"); + await fs.rm(userDataPath, { recursive: true, force: true }); + + // In development, also delete the local db file if it exists + if (process.env.NODE_ENV === "development" || !app.isPackaged) { + try { + await fs.unlink(dbPath); + } catch { + // Ignore if file doesn't exist + } + } // Handle restart differently in development vs production if (process.env.NODE_ENV === "development" || !app.isPackaged) {