From 909145de943f076d30f5ed9faf6991cbc6785762 Mon Sep 17 00:00:00 2001 From: Ivan Pereira <183991+ivanrvpereira@users.noreply.github.com> Date: Mon, 23 Feb 2026 10:49:39 +0000 Subject: [PATCH] Remove closure cancel flags from login command canceledAtEmailPrompt and canceledAtOtpPrompt were closure booleans set inside prompt callbacks to detect user cancellation after the fact. Fragile if authenticate ever retries prompts or changes order. In the command context both prompt functions are always provided, so AuthError(NO_TOKEN) unambiguously means the user declined to enter required input. Check the error code directly instead. --- src/commands/login.ts | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/src/commands/login.ts b/src/commands/login.ts index 6fcaee4..d1507fb 100644 --- a/src/commands/login.ts +++ b/src/commands/login.ts @@ -67,38 +67,21 @@ export function registerPerplexityCommands(pi: ExtensionAPI): void { await clearToken().catch(() => undefined); } - let canceledAtEmailPrompt = false; - let canceledAtOtpPrompt = false; - const promptForEmail = async (): Promise => { const value = await ctx.ui.input("Perplexity email", "you@example.com"); - if (!value?.trim()) { - canceledAtEmailPrompt = true; - return undefined; - } - - return value; + return value?.trim() || undefined; }; const promptForOtp = async (email: string): Promise => { const value = await ctx.ui.input(`Enter OTP sent to ${email}`, "123456"); - if (!value?.trim()) { - canceledAtOtpPrompt = true; - return undefined; - } - - return value; + return value?.trim() || undefined; }; try { - await authenticate({ - promptForEmail, - promptForOtp, - }); - + await authenticate({ promptForEmail, promptForOtp }); ctx.ui.notify("Perplexity login successful. Token saved.", "info"); } catch (error) { - if (canceledAtEmailPrompt || canceledAtOtpPrompt) { + if (error instanceof AuthError && error.code === "NO_TOKEN") { ctx.ui.notify( "Perplexity login canceled. Re-run /perplexity-login and provide email + OTP, or set PI_PERPLEXITY_EMAIL and PI_PERPLEXITY_OTP.", "warning",