From 92e13a3dc0ca751737d782430f5e902f1ec20c14 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <git@minelli.me>
Date: Fri, 15 Mar 2024 14:46:13 +0100
Subject: [PATCH] Sonar => Resolve issues

---
 helpers/Dojo/SharedAssignmentHelper.ts |  2 +-
 managers/SharedGitlabManager.ts        | 12 ++++--------
 2 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/helpers/Dojo/SharedAssignmentHelper.ts b/helpers/Dojo/SharedAssignmentHelper.ts
index 5b11a38..c729540 100644
--- a/helpers/Dojo/SharedAssignmentHelper.ts
+++ b/helpers/Dojo/SharedAssignmentHelper.ts
@@ -23,7 +23,7 @@ class SharedAssignmentHelper {
         const pipelines = await GlobalHelper.sharedGitlabManager.getRepositoryPipelines(repositoryId, 'main');
         if ( pipelines.length > 0 ) {
             const lastPipeline = pipelines[0];
-            if ( lastPipeline.status != GitlabPipelineStatus.SUCCESS.valueOf() ) {
+            if ( lastPipeline.status !== GitlabPipelineStatus.SUCCESS.valueOf() ) {
                 return {
                     isPublishable: false,
                     lastPipeline : lastPipeline,
diff --git a/managers/SharedGitlabManager.ts b/managers/SharedGitlabManager.ts
index 014ac40..4cea2ee 100644
--- a/managers/SharedGitlabManager.ts
+++ b/managers/SharedGitlabManager.ts
@@ -23,14 +23,14 @@ class SharedGitlabManager {
         this.setToken(token);
     }
 
-    private async executeGitlabRequest<T>(request: () => Promise<T>): Promise<T> {
+    private async executeGitlabRequest<T>(request: () => Promise<T>, refreshTokenIfNeeded: boolean = true): Promise<T> {
         try {
             return await request();
         } catch ( error ) {
-            if ( this.refreshTokenFunction && error instanceof GitbeakerRequestError && error.cause?.response.status === StatusCodes.UNAUTHORIZED ) {
+            if ( this.refreshTokenFunction && refreshTokenIfNeeded && error instanceof GitbeakerRequestError && error.cause?.response.status === StatusCodes.UNAUTHORIZED ) {
                 this.setToken(await this.refreshTokenFunction());
 
-                return await request();
+                return this.executeGitlabRequest(request, false);
             } else {
                 throw error;
             }
@@ -84,11 +84,7 @@ class SharedGitlabManager {
     }
 
     async getRepositoryPipelines(repoId: number, branch: string = 'main'): Promise<Array<PipelineSchema>> {
-        return await this.executeGitlabRequest(async () => {
-            return await this.api.Pipelines.all(repoId, {
-                ref: branch
-            });
-        });
+        return this.executeGitlabRequest(() => this.api.Pipelines.all(repoId, { ref: branch }));
     }
 }
 
-- 
GitLab