From 3d9bfb03711e5cd06fc28d445dd723b4b024fe79 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <michael@minelli.me>
Date: Sat, 13 Jan 2024 02:06:02 +0100
Subject: [PATCH] ConfigFiles => Centralize config files instances

---
 NodeApp/src/config/ConfigFiles.ts      |  9 +++++++++
 NodeApp/src/config/LocalConfigFile.ts  |  4 +++-
 NodeApp/src/managers/SessionManager.ts | 18 +++++++-----------
 3 files changed, 19 insertions(+), 12 deletions(-)
 create mode 100644 NodeApp/src/config/ConfigFiles.ts

diff --git a/NodeApp/src/config/ConfigFiles.ts b/NodeApp/src/config/ConfigFiles.ts
new file mode 100644
index 0000000..3bce1b7
--- /dev/null
+++ b/NodeApp/src/config/ConfigFiles.ts
@@ -0,0 +1,9 @@
+import LocalConfigFile from './LocalConfigFile';
+import Config          from './Config';
+
+
+const sessionConfigFile = new LocalConfigFile(Config.localConfig.sessionFile);
+const stateConfigFile = new LocalConfigFile(Config.localConfig.stateFile);
+
+
+export { sessionConfigFile, stateConfigFile };
\ No newline at end of file
diff --git a/NodeApp/src/config/LocalConfigFile.ts b/NodeApp/src/config/LocalConfigFile.ts
index c69c89c..ecc0530 100644
--- a/NodeApp/src/config/LocalConfigFile.ts
+++ b/NodeApp/src/config/LocalConfigFile.ts
@@ -4,7 +4,9 @@ import JSON5   from 'json5';
 
 
 class LocalConfigFile {
-    constructor(private filename: string) {}
+    constructor(private filename: string) {
+        this.loadConfig();
+    }
 
     private get configPath(): string {
         return `${ Config.localConfig.folder }/${ this.filename }`;
diff --git a/NodeApp/src/managers/SessionManager.ts b/NodeApp/src/managers/SessionManager.ts
index 18f9179..4f1d25d 100644
--- a/NodeApp/src/managers/SessionManager.ts
+++ b/NodeApp/src/managers/SessionManager.ts
@@ -1,6 +1,5 @@
 import * as jwt                  from 'jsonwebtoken';
 import User                      from '../sharedByClients/models/User';
-import LocalConfigFile           from '../config/LocalConfigFile';
 import LocalConfigKeys           from '../types/LocalConfigKeys';
 import axios, { HttpStatusCode } from 'axios';
 import HttpManager               from './HttpManager';
@@ -20,6 +19,7 @@ import SharedGitlabManager       from '../shared/managers/SharedGitlabManager';
 import GitlabManager             from './GitlabManager';
 import GitlabToken               from '../shared/types/Gitlab/GitlabToken';
 import open                      from 'open';
+import { sessionConfigFile }     from '../config/ConfigFiles';
 
 
 class LoginServer {
@@ -75,8 +75,6 @@ class LoginServer {
 
 
 class SessionManager {
-    private configFile: LocalConfigFile = new LocalConfigFile(Config.localConfig.sessionFile);
-
     public profile: User | undefined = undefined;
 
     get isLogged(): boolean {
@@ -84,7 +82,7 @@ class SessionManager {
     }
 
     get apiToken(): string {
-        const apisToken = this.configFile.getParam(LocalConfigKeys.APIS_TOKEN) as null | { [key: string]: string };
+        const apisToken = sessionConfigFile.getParam(LocalConfigKeys.APIS_TOKEN) as null | { [key: string]: string };
 
         if ( apisToken !== null && ClientsSharedConfig.apiURL in apisToken ) {
             return apisToken[ClientsSharedConfig.apiURL];
@@ -94,12 +92,12 @@ class SessionManager {
     }
 
     set apiToken(token: string) {
-        let apisToken = this.configFile.getParam(LocalConfigKeys.APIS_TOKEN) as null | { [key: string]: string };
+        let apisToken = sessionConfigFile.getParam(LocalConfigKeys.APIS_TOKEN) as null | { [key: string]: string };
         if ( apisToken === null ) {
             apisToken = {};
         }
         apisToken[ClientsSharedConfig.apiURL] = token;
-        this.configFile.setParam(LocalConfigKeys.APIS_TOKEN, apisToken);
+        sessionConfigFile.setParam(LocalConfigKeys.APIS_TOKEN, apisToken);
 
         try {
             const payload = jwt.decode(token);
@@ -113,16 +111,14 @@ class SessionManager {
     }
 
     get gitlabCredentials(): DojoGitlabCredentials {
-        return this.configFile.getParam(LocalConfigKeys.GITLAB) as DojoGitlabCredentials;
+        return sessionConfigFile.getParam(LocalConfigKeys.GITLAB) as DojoGitlabCredentials;
     }
 
     set gitlabCredentials(credentials: DojoGitlabCredentials) {
-        this.configFile.setParam(LocalConfigKeys.GITLAB, credentials);
+        sessionConfigFile.setParam(LocalConfigKeys.GITLAB, credentials);
     }
 
-    constructor() {
-        this.configFile.loadConfig();
-    }
+    constructor() { }
 
     private async getGitlabCodeFromHeadlessEnvironment(): Promise<string> {
         const indent: string = '    ';
-- 
GitLab