From f8f2c4fe5942193aa2821bca01962ef13a715ab2 Mon Sep 17 00:00:00 2001
From: "@mazikiou" <mazikiou@takima.fr>
Date: Tue, 5 Jul 2022 08:51:30 +0200
Subject: [PATCH] fix: removed '-' from usernames, added new field 'userID'

---
 .../deadlock-extension/src/core/controller.ts | 23 +++++++++++++++----
 .../src/core/mission/missionDevContainer.ts   | 10 ++++----
 .../src/core/mission/model/userMission.ts     |  1 +
 .../src/view/quickSetupView.ts                |  4 ++--
 4 files changed, 28 insertions(+), 10 deletions(-)

diff --git a/deadlock-plugins/deadlock-extension/src/core/controller.ts b/deadlock-plugins/deadlock-extension/src/core/controller.ts
index eb8f402a..6e9c4473 100644
--- a/deadlock-plugins/deadlock-extension/src/core/controller.ts
+++ b/deadlock-plugins/deadlock-extension/src/core/controller.ts
@@ -7,7 +7,7 @@ import KeycloakOAuth2DeviceFlowConnection from './keycloakOAuth2DeviceFlowConnec
 import ApiService from './api.service';
 import { GiteaPublicProperties } from '../model/giteaPublicProperties.model';
 import { MissionDevContainer } from './mission/missionDevContainer';
-import { extensionError, extensionLog as log } from '../recorder/utils/log';
+import { extensionError, extensionLog as log, extensionWarn } from '../recorder/utils/log';
 import { commands, ExtensionContext, Uri, window } from 'vscode';
 import { createSshKeyFiles } from './sshKeyManager';
 import { emptyDirectories, removeFilesOrDirectories } from '../recorder/utils/workdir';
@@ -132,9 +132,24 @@ export default class Controller {
   }
 
   public async disconnect() {
-    await removeFilesOrDirectories(`${userSshKeyFolderPath}/id_rsa`, `${userSshKeyFolderPath}/id_rsa.pub`);
-    await emptyDirectories(missionWorkdir);
-    await this.extensionStore.clear();
+    try {
+      await removeFilesOrDirectories(`${userSshKeyFolderPath}/id_rsa`, `${userSshKeyFolderPath}/id_rsa.pub`);
+    } catch (e) {
+      extensionWarn('Could not remove ssh key files');
+      extensionWarn(e);
+    }
+    try {
+      await emptyDirectories(missionWorkdir);
+    } catch (e) {
+      extensionWarn('Could not empty mission workdir');
+      extensionWarn(e);
+    }
+    try {
+      await this.extensionStore.clear();
+    } catch (e) {
+      extensionWarn('Could not clear extension store');
+      extensionWarn(e);
+    }
     this.quickSetupView.isAlreadyConnected = false;
   }
 
diff --git a/deadlock-plugins/deadlock-extension/src/core/mission/missionDevContainer.ts b/deadlock-plugins/deadlock-extension/src/core/mission/missionDevContainer.ts
index f1959c94..0dddfb60 100644
--- a/deadlock-plugins/deadlock-extension/src/core/mission/missionDevContainer.ts
+++ b/deadlock-plugins/deadlock-extension/src/core/mission/missionDevContainer.ts
@@ -90,18 +90,20 @@ export class MissionDevContainer {
     return this.currentUser.id !== this.user.id;
   }
 
-  private createUserChallengeJsonFile() {
+  private async createUserChallengeJsonFile() {
     return writeFile(
       `${this.dirs.config}/user-challenge.json`,
       (() => {
+        const username = this.user.id.split('-').join('');
         const userChallengeJson: UserMission = {
           giteaHost: this.giteaProperties.sshHost,
+          userId: this.user.id,
           giteaSshPort: this.giteaProperties.sshPort,
-          username: this.user.id.split('-').join(''),
-          email: `${this.user.id.split('-').join('')}@deadlock.io`,
+          username,
+          email: `${username}@deadlock.io`,
           missionId: this.missionId,
           missionVersion: this.missionVersion,
-          remoteGitUsername: this.user.id.split('-').join(''),
+          remoteGitUsername: username,
           currentUserDetails: this.currentUser.details,
           currentUserId: this.currentUser.id,
           remoteUserDetails: this.user.details,
diff --git a/deadlock-plugins/deadlock-extension/src/core/mission/model/userMission.ts b/deadlock-plugins/deadlock-extension/src/core/mission/model/userMission.ts
index ea53d0aa..06322399 100644
--- a/deadlock-plugins/deadlock-extension/src/core/mission/model/userMission.ts
+++ b/deadlock-plugins/deadlock-extension/src/core/mission/model/userMission.ts
@@ -1,6 +1,7 @@
 interface UserMission {
   giteaHost: string;
   giteaSshPort: number;
+  userId: string;
   username: string;
   currentUserId: string;
   email: string;
diff --git a/deadlock-plugins/deadlock-extension/src/view/quickSetupView.ts b/deadlock-plugins/deadlock-extension/src/view/quickSetupView.ts
index c64d69c1..7610ca20 100644
--- a/deadlock-plugins/deadlock-extension/src/view/quickSetupView.ts
+++ b/deadlock-plugins/deadlock-extension/src/view/quickSetupView.ts
@@ -70,7 +70,7 @@ export default class QuickSetupView extends WebviewBase {
   ) {
     return `
             <div class="deadlock-getting-started-card">
-               <vscode-checkbox ${isChecked ? 'checked' : ''} readonly> </vscode-checkbox>
+               <vscode-checkbox ${isChecked ? 'checked ' : ''}readonly></vscode-checkbox>
                <div class="card-body">
                   <div class="card-title">
                      ${title}
@@ -78,7 +78,7 @@ export default class QuickSetupView extends WebviewBase {
                   <div class="card-description">
                      ${description}
                   </div>
-                  <vscode-button ${isDisabled ? 'disabled' : ''} onclick="${
+                  <vscode-button${isDisabled ? ' disabled' : ''} onclick="${
       button.onClickFunctionName
     }(${callbackArgs})">${button.name}</vscode-button>
                </div>
-- 
GitLab