From bccd5eb5a020e72bcff0883d794f970f6a56674e Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Sat, 1 Mar 2025 11:55:01 +0100 Subject: [PATCH] Enhance request handling with token refresh and retries --- src/components/repo/authv2.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/components/repo/authv2.ts b/src/components/repo/authv2.ts index e3aa1ec..d660a8f 100644 --- a/src/components/repo/authv2.ts +++ b/src/components/repo/authv2.ts @@ -146,12 +146,12 @@ export class AuthV2Repo { this.setLoginState(response); } - async request(url: string, params: RequestInit = {}) { + async request(url: string, params: RequestInit = {}, retryCount: number = 0) { if (this.accessToken !== undefined && this.accessTokenExpires !== undefined && this.accessTokenExpires.isBefore(dayjs().add(10, "seconds"))) { await this.refresh(); } - return this.requestWithToken(this.accessToken ?? "", url, params); + return this.requestWithToken(this.accessToken ?? "", url, params, retryCount); } private async requestWithToken(token: string, url: string, params: RequestInit = {}, retryCount: number = 0): Promise { @@ -165,11 +165,14 @@ export class AuthV2Repo { "Content-Type": "application/json", ...params.headers, }, }) - .then(value => { + .then(async value => { if (value.status === 401 && url !== "/auth") { - this.refresh(); + try { + await this.refresh(); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + } catch (_e) { /* empty */ } - return this.requestWithToken(token, url, params, retryCount + 1); + return this.request(url, params, retryCount + 1); } return value; });