feat(ui): one-tap confirm deeplink screen + client language
Add the /confirm/<token> SPA route and Confirm screen: a prefetch-safe button POSTs the token via a new confirmEmailLink RPC (client/transport/mock/codec + ConfirmLinkResult model). A login adopts the minted session and enters the app; a link shows confirmed / merge-in-the-app; an invalid or expired token asks for a new code. Exempt /confirm from the no-session /login redirect. Forward the client locale on the email request (authEmailRequest gains language → app.locale) so a fresh web login email is localised. Handle the new 'profile' live-event sub-kind by re-fetching the profile, so a link confirmed in another browser reflects in-app at once. i18n en+ru.
This commit is contained in:
@@ -36,6 +36,12 @@ export const en = {
|
||||
'login.sendCode': 'Send code',
|
||||
'login.codePlaceholder': '6-digit code',
|
||||
'login.signIn': 'Sign in',
|
||||
'confirm.prompt': 'Confirm your email to finish.',
|
||||
'confirm.action': 'Confirm',
|
||||
'confirm.linked': 'Email confirmed.',
|
||||
'confirm.merge': 'Almost done — finish the merge in the app.',
|
||||
'confirm.close': 'You can close this window and return to the game.',
|
||||
'confirm.expired': 'This link is invalid or has expired. Request a new code.',
|
||||
'login.codeSent': 'We sent a code to {email}.',
|
||||
|
||||
'lobby.activeGames': 'Active games',
|
||||
|
||||
Reference in New Issue
Block a user