diff --git a/src/app/pages/auth/SSOLogin.tsx b/src/app/pages/auth/SSOLogin.tsx index 3ff1a22..bd6df00 100644 --- a/src/app/pages/auth/SSOLogin.tsx +++ b/src/app/pages/auth/SSOLogin.tsx @@ -14,8 +14,10 @@ export function SSOLogin({ providers, redirectUrl, action, saveScreenSpace }: SS const baseUrl = discovery['m.homeserver'].base_url; const mx = useMemo(() => createClient({ baseUrl }), [baseUrl]); - const getSSOIdUrl = (ssoId?: string): string => - mx.getSsoLoginUrl(redirectUrl, 'sso', ssoId, action); + const getSSOIdUrl = (ssoId?: string): string => { + const existingDeviceId = localStorage.getItem('cinny_device_id') ?? undefined; + return mx.getSsoLoginUrl(redirectUrl, 'sso', ssoId, action, existingDeviceId); + }; const withoutIcon = providers ? providers.find( diff --git a/src/app/pages/auth/login/PasswordLoginForm.tsx b/src/app/pages/auth/login/PasswordLoginForm.tsx index 306e96c..59f93b1 100644 --- a/src/app/pages/auth/login/PasswordLoginForm.tsx +++ b/src/app/pages/auth/login/PasswordLoginForm.tsx @@ -126,6 +126,7 @@ export function PasswordLoginForm({ defaultUsername, defaultEmail }: PasswordLog useLoginComplete(loginState.status === AsyncStatus.Success ? loginState.data : undefined); const handleUsernameLogin = (username: string, password: string) => { + const existingDeviceId = localStorage.getItem('cinny_device_id') ?? undefined; startLogin(baseUrl, { type: 'm.login.password', identifier: { @@ -133,6 +134,7 @@ export function PasswordLoginForm({ defaultUsername, defaultEmail }: PasswordLog user: username, }, password, + device_id: existingDeviceId, initial_device_display_name: 'Paarrot', }); }; @@ -144,6 +146,7 @@ export function PasswordLoginForm({ defaultUsername, defaultEmail }: PasswordLog const getBaseUrl = factoryGetBaseUrl(clientConfig, mxIdServer); + const existingDeviceId = localStorage.getItem('cinny_device_id') ?? undefined; startLogin(getBaseUrl, { type: 'm.login.password', identifier: { @@ -151,10 +154,12 @@ export function PasswordLoginForm({ defaultUsername, defaultEmail }: PasswordLog user: mxIdUsername, }, password, + device_id: existingDeviceId, initial_device_display_name: 'Paarrot', }); }; const handleEmailLogin = (email: string, password: string) => { + const existingDeviceId = localStorage.getItem('cinny_device_id') ?? undefined; startLogin(baseUrl, { type: 'm.login.password', identifier: { @@ -163,6 +168,7 @@ export function PasswordLoginForm({ defaultUsername, defaultEmail }: PasswordLog address: email, }, password, + device_id: existingDeviceId, initial_device_display_name: 'Paarrot', }); }; diff --git a/src/app/pages/auth/login/TokenLogin.tsx b/src/app/pages/auth/login/TokenLogin.tsx index 4c0382d..dc21dcc 100644 --- a/src/app/pages/auth/login/TokenLogin.tsx +++ b/src/app/pages/auth/login/TokenLogin.tsx @@ -54,9 +54,11 @@ export function TokenLogin({ token }: TokenLoginProps) { >(useCallback(login, [])); useEffect(() => { + const existingDeviceId = localStorage.getItem('cinny_device_id') ?? undefined; startLogin(baseUrl, { type: 'm.login.token', token, + device_id: existingDeviceId, initial_device_display_name: 'Paarrot', }); }, [baseUrl, token, startLogin]);