this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Set force_login if already has account from same instance

+33 -14
+12 -12
src/locales/en.po
··· 1490 1490 msgstr "" 1491 1491 1492 1492 #: src/components/nav-menu.jsx:326 1493 - #: src/pages/login.jsx:31 1494 - #: src/pages/login.jsx:191 1493 + #: src/pages/login.jsx:32 1494 + #: src/pages/login.jsx:195 1495 1495 #: src/pages/status.jsx:866 1496 1496 #: src/pages/welcome.jsx:65 1497 1497 msgid "Log in" ··· 1926 1926 #: src/components/shortcuts-settings.jsx:75 1927 1927 #: src/components/shortcuts-settings.jsx:84 1928 1928 #: src/components/shortcuts-settings.jsx:122 1929 - #: src/pages/login.jsx:195 1929 + #: src/pages/login.jsx:199 1930 1930 msgid "Instance" 1931 1931 msgstr "" 1932 1932 ··· 2594 2594 #: src/compose.jsx:91 2595 2595 #: src/pages/annual-report.jsx:164 2596 2596 #: src/pages/http-route.jsx:91 2597 - #: src/pages/login.jsx:272 2597 + #: src/pages/login.jsx:276 2598 2598 msgid "Go home" 2599 2599 msgstr "" 2600 2600 ··· 3307 3307 msgid "No lists yet." 3308 3308 msgstr "" 3309 3309 3310 - #: src/pages/login.jsx:115 3311 - #: src/pages/login.jsx:124 3310 + #: src/pages/login.jsx:118 3311 + #: src/pages/login.jsx:128 3312 3312 msgid "Failed to register application" 3313 3313 msgstr "Failed to register application" 3314 3314 3315 - #: src/pages/login.jsx:210 3315 + #: src/pages/login.jsx:214 3316 3316 msgid "instance domain" 3317 3317 msgstr "instance domain" 3318 3318 3319 - #: src/pages/login.jsx:234 3319 + #: src/pages/login.jsx:238 3320 3320 msgid "e.g. “mastodon.social”" 3321 3321 msgstr "" 3322 3322 3323 - #: src/pages/login.jsx:245 3323 + #: src/pages/login.jsx:249 3324 3324 msgid "Failed to log in. Please try again or try another instance." 3325 3325 msgstr "" 3326 3326 3327 - #: src/pages/login.jsx:257 3327 + #: src/pages/login.jsx:261 3328 3328 msgid "Continue with {selectedInstanceText}" 3329 3329 msgstr "" 3330 3330 3331 - #: src/pages/login.jsx:258 3331 + #: src/pages/login.jsx:262 3332 3332 msgid "Continue" 3333 3333 msgstr "" 3334 3334 3335 - #: src/pages/login.jsx:266 3335 + #: src/pages/login.jsx:270 3336 3336 msgid "Don't have an account? Create one!" 3337 3337 msgstr "" 3338 3338
+4
src/pages/login.jsx
··· 20 20 import store from '../utils/store'; 21 21 import { 22 22 getCredentialApplication, 23 + hasAccountInInstance, 23 24 storeCredentialApplication, 24 25 } from '../utils/store-utils'; 25 26 import useTitle from '../utils/useTitle'; ··· 103 104 104 105 const authPKCE = await supportsPKCE({ instanceURL }); 105 106 console.log({ authPKCE }); 107 + const forceLogin = hasAccountInInstance(instanceURL); 106 108 if (authPKCE) { 107 109 if (client_id && client_secret) { 108 110 const [url, verifier] = await getPKCEAuthorizationURL({ 109 111 instanceURL, 110 112 client_id, 113 + forceLogin, 111 114 }); 112 115 store.sessionCookie.set('codeVerifier', verifier); 113 116 location.href = url; ··· 119 122 location.href = await getAuthorizationURL({ 120 123 instanceURL, 121 124 client_id, 125 + forceLogin, 122 126 }); 123 127 } else { 124 128 alert(t`Failed to register application`);
+12 -2
src/utils/auth.js
··· 45 45 return registrationJSON; 46 46 } 47 47 48 - export async function getPKCEAuthorizationURL({ instanceURL, client_id }) { 48 + export async function getPKCEAuthorizationURL({ 49 + instanceURL, 50 + client_id, 51 + forceLogin = false, 52 + }) { 49 53 const codeVerifier = verifier(); 50 54 const codeChallenge = await generateCodeChallenge(codeVerifier); 51 55 const params = new URLSearchParams({ ··· 56 60 response_type: 'code', 57 61 scope: SCOPES, 58 62 }); 63 + if (forceLogin) params.append('force_login', true); 59 64 const authorizationURL = `https://${instanceURL}/oauth/authorize?${params.toString()}`; 60 65 return [authorizationURL, codeVerifier]; 61 66 } 62 67 63 - export async function getAuthorizationURL({ instanceURL, client_id }) { 68 + export async function getAuthorizationURL({ 69 + instanceURL, 70 + client_id, 71 + forceLogin = false, 72 + }) { 64 73 const authorizationParams = new URLSearchParams({ 65 74 client_id, 66 75 scope: SCOPES, ··· 68 77 // redirect_uri: 'urn:ietf:wg:oauth:2.0:oob', 69 78 response_type: 'code', 70 79 }); 80 + if (forceLogin) authorizationParams.append('force_login', true); 71 81 const authorizationURL = `https://${instanceURL}/oauth/authorize?${authorizationParams.toString()}`; 72 82 return authorizationURL; 73 83 }
+5
src/utils/store-utils.js
··· 16 16 return accounts.find((a) => a.instanceURL === instance); 17 17 } 18 18 19 + export function hasAccountInInstance(instance) { 20 + const accounts = store.local.getJSON('accounts') || []; 21 + return accounts.some((a) => a.instanceURL === instance); 22 + } 23 + 19 24 const standaloneMQ = window.matchMedia('(display-mode: standalone)'); 20 25 21 26 export function getCurrentAccountID() {