diff --git a/frontend/src/components/AccountMenu.tsx b/frontend/src/components/AccountMenu.tsx index 03ffb22e..3c20b881 100644 --- a/frontend/src/components/AccountMenu.tsx +++ b/frontend/src/components/AccountMenu.tsx @@ -264,6 +264,14 @@ export function AccountMenu() { sessionStorage.removeItem("maple_billing_token"); } + // Stop proxy and reset config so it doesn't auto-start on next launch + try { + const { proxyService } = await import("@/services/proxyService"); + await proxyService.stopAndResetProxy(); + } catch (error) { + console.error("Error clearing proxy config:", error); + } + // Sign out from OpenSecret await os.signOut(); diff --git a/frontend/src/components/DeleteAccountDialog.tsx b/frontend/src/components/DeleteAccountDialog.tsx index 63e966f2..2bf1351c 100644 --- a/frontend/src/components/DeleteAccountDialog.tsx +++ b/frontend/src/components/DeleteAccountDialog.tsx @@ -78,6 +78,14 @@ export function DeleteAccountDialog({ open, onOpenChange }: DeleteAccountDialogP sessionStorage.removeItem("maple_billing_token"); } + // Stop proxy and reset config so it doesn't auto-start on next launch + try { + const { proxyService } = await import("@/services/proxyService"); + await proxyService.stopAndResetProxy(); + } catch (error) { + console.error("Error clearing proxy config:", error); + } + // Sign out await os.signOut(); diff --git a/frontend/src/components/GuestPaymentWarningDialog.tsx b/frontend/src/components/GuestPaymentWarningDialog.tsx index bae3767b..ac65ff63 100644 --- a/frontend/src/components/GuestPaymentWarningDialog.tsx +++ b/frontend/src/components/GuestPaymentWarningDialog.tsx @@ -24,6 +24,14 @@ export function GuestPaymentWarningDialog({ open, onOpenChange }: GuestPaymentWa }; const handleLogout = async () => { + // Stop proxy and reset config so it doesn't auto-start on next launch + try { + const { proxyService } = await import("@/services/proxyService"); + await proxyService.stopAndResetProxy(); + } catch (error) { + console.error("Error clearing proxy config:", error); + } + await os.signOut(); }; diff --git a/frontend/src/components/VerificationModal.tsx b/frontend/src/components/VerificationModal.tsx index 247f8c4a..948811d0 100644 --- a/frontend/src/components/VerificationModal.tsx +++ b/frontend/src/components/VerificationModal.tsx @@ -96,6 +96,18 @@ export function VerificationModal() { } }; + const handleSignOut = async () => { + // Stop proxy and reset config so it doesn't auto-start on next launch + try { + const { proxyService } = await import("@/services/proxyService"); + await proxyService.stopAndResetProxy(); + } catch (error) { + console.error("Error clearing proxy config:", error); + } + + await os.signOut(); + }; + return ( @@ -148,7 +160,7 @@ export function VerificationModal() { )} )} - diff --git a/frontend/src/services/proxyService.ts b/frontend/src/services/proxyService.ts index c5777b9b..538c891f 100644 --- a/frontend/src/services/proxyService.ts +++ b/frontend/src/services/proxyService.ts @@ -86,6 +86,33 @@ class ProxyService { } } + // Stop proxy if running and reset saved config (used on logout) + async stopAndResetProxy(): Promise { + try { + // Check if proxy is running and stop it + const status = await this.getProxyStatus(); + if (status.running) { + await this.stopProxy(); + } + } catch { + // Proxy may not be running, that's fine + } + + try { + // Save default config to clear auto_start and API key + await this.saveProxySettings({ + host: "127.0.0.1", + port: 8080, + api_key: "", + enabled: false, + enable_cors: true, + auto_start: false + }); + } catch (error) { + console.error("Failed to reset proxy config:", error); + } + } + // Helper to check if we're in Tauri desktop environment async isTauriDesktop(): Promise { try {