From 0fb954b79ca130d6437e5de2086c7fd9e15bf6d9 Mon Sep 17 00:00:00 2001 From: chrisnojima Date: Wed, 3 Jun 2026 16:30:16 -0400 Subject: [PATCH] Fix signup crash: click event laundered into username route param ReloginContainer wired useRequestAutoInvite()'s raw fn directly as onSignup, so the click event became the `username` arg, flowed through navigateAppend as a route param, and crashed signup's username.trim(). Make the hook param required (username: string) so a bare assignment to a () => void handler prop is now a compile error, preventing the event from being laundered into a string-typed slot. No-username callers pass '' explicitly. --- shared/login/join-or-login.tsx | 2 +- shared/login/relogin/container.tsx | 3 ++- shared/signup/use-request-auto-invite.tsx | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/shared/login/join-or-login.tsx b/shared/login/join-or-login.tsx index 0ff57906eb7f..b5a83ae01629 100644 --- a/shared/login/join-or-login.tsx +++ b/shared/login/join-or-login.tsx @@ -20,7 +20,7 @@ const Intro = () => { const startProvision = useProvisionState(s => s.dispatch.startProvision) const requestAutoInvite = useRequestAutoInvite() const onLogin = () => startProvision() - const onSignup = () => requestAutoInvite() + const onSignup = () => requestAutoInvite('') const showProxySettings = () => { C.Router2.navigateAppend({name: 'proxySettingsModal', params: {}}) } diff --git a/shared/login/relogin/container.tsx b/shared/login/relogin/container.tsx index 4b02227555e5..659f14bbe58f 100644 --- a/shared/login/relogin/container.tsx +++ b/shared/login/relogin/container.tsx @@ -17,7 +17,8 @@ const ReloginContainer = () => { C.Router2.navigateAppend({name: 'signupSendFeedbackLoggedOut', params: {}}) } const onLogin = useConfigState(s => s.dispatch.login) - const onSignup = useRequestAutoInvite() + const requestAutoInvite = useRequestAutoInvite() + const onSignup = () => requestAutoInvite('') const onSomeoneElse = useProvisionState(s => s.dispatch.startProvision) const error = perror?.desc || '' const loggedInMap = new Map(_users.map(account => [account.username, account.hasStoredSecret])) diff --git a/shared/signup/use-request-auto-invite.tsx b/shared/signup/use-request-auto-invite.tsx index 835393e7fefc..8ede8b1d6ae3 100644 --- a/shared/signup/use-request-auto-invite.tsx +++ b/shared/signup/use-request-auto-invite.tsx @@ -7,7 +7,7 @@ const useRequestAutoInvite = () => { const waiting = C.Waiting.useAnyWaiting(C.waitingKeySignup) const {navigateAppend, navigateUp} = C.Router2 - return (username?: string) => { + return (username: string) => { if (waiting) { return }