aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Hassan Abouelela <[email protected]>2021-03-07 18:47:54 +0300
committerGravatar Hassan Abouelela <[email protected]>2021-03-07 18:47:54 +0300
commit71388eb70fe9514c98ff362349fb45c06349bb74 (patch)
treeaf3c8645d78c2e77c627fa1c2517d2171e7b206f /src
parentRevert "Removes Unused OAuth Cleaning" (diff)
Renables OAuth Button On Failure
Allows the Discord OAuth button to be renabled in case the window is closed prematurely. Signed-off-by: Hassan Abouelela <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/api/auth.ts5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/api/auth.ts b/src/api/auth.ts
index 50f9a69..024292c 100644
--- a/src/api/auth.ts
+++ b/src/api/auth.ts
@@ -94,7 +94,7 @@ export function checkScopes(scopes?: OAuthScopes[]): boolean {
* @returns {code, cleanedScopes} The discord authorization code and the scopes the code is granted for.
* @throws {Error} Indicates that an integrity check failed.
*/
-export async function getDiscordCode(scopes: OAuthScopes[]): Promise<{code: string, cleanedScopes: OAuthScopes[]}> {
+export async function getDiscordCode(scopes: OAuthScopes[], disableFunction?: (disable: boolean) => void): Promise<{code: string, cleanedScopes: OAuthScopes[]}> {
const cleanedScopes = ensureMinimumScopes(scopes, OAuthScopes.Identify);
// Generate a new user state
@@ -114,6 +114,7 @@ export async function getDiscordCode(scopes: OAuthScopes[]): Promise<{code: stri
const interval = setInterval(() => {
if (windowRef?.closed) {
clearInterval(interval);
+ if (disableFunction) { disableFunction(false); }
}
}, 500);
@@ -231,7 +232,7 @@ export default async function authorize(scopes: OAuthScopes[] = [], disableFunct
cookies.remove(CookieNames.Scopes);
if (disableFunction) { disableFunction(true); }
- await getDiscordCode(scopes).then(async discord_response =>{
+ await getDiscordCode(scopes, disableFunction).then(async discord_response =>{
await requestBackendJWT(discord_response.code).then(backend_response => {
const options: CookieSetOptions = {sameSite: "strict", secure: PRODUCTION, path: "/", expires: new Date(3000, 1)};
cookies.set(CookieNames.Username, backend_response.username, options);