diff --git a/deadlock-plugins/deadlock-extension/src/core/controller.ts b/deadlock-plugins/deadlock-extension/src/core/controller.ts index 25fe14e32fdce903603a1b7a79bfefd8759ab31d..6c96eaef26bf0c5835733e11543a3549614986df 100644 --- a/deadlock-plugins/deadlock-extension/src/core/controller.ts +++ b/deadlock-plugins/deadlock-extension/src/core/controller.ts @@ -1,12 +1,18 @@ import * as vscode from 'vscode'; -import { KEYCLOAK_DEVICE_AUTH_URL, KEYCLOAK_TOKEN_CREATE_URL, KEYCLOAK_USER_INFO_URL } from '../config'; -import { copyProjectSources, log } from '../recorder/utils'; +import { + KEYCLOAK_DEVICE_AUTH_URL, + KEYCLOAK_TOKEN_CREATE_URL, + KEYCLOAK_USER_INFO_URL, + REGISTRY_MISSION_URL, +} from '../config'; +import { log } from '../recorder/utils'; import { OPEN_GETTING_STARTED_COMMAND } from '../theia/command'; import BriefingView from '../view/briefingView'; import GettingStartedView from '../view/gettingStartedView'; import { CHOOSE_MISSION_WORKDIR_COMMAND, CommandHandler, OPEN_URL_IN_BROWSER_COMMAND } from './commandHandler'; import ExtensionStore from './extensionStore'; import KeycloakOAuth2DeviceFlowConnection from './keycloakOAuth2DeviceFlowConnection'; +import Mission from './mission'; export default class Controller { public connection: KeycloakOAuth2DeviceFlowConnection; @@ -37,7 +43,7 @@ export default class Controller { switch (action) { case 'open-challenge': - that.launchMission(queryParams.get('missionId')); + that.launchMission(queryParams.get('missionId'), queryParams.get('missionVersion')); break; default: @@ -87,8 +93,8 @@ export default class Controller { vscode.commands.executeCommand(OPEN_URL_IN_BROWSER_COMMAND.cmd, vscode.Uri.parse(url)); } - public async launchMission(missionId: string | null) { - if (missionId) { + public async launchMission(missionId: string | null, missionVersion: string | null) { + if (missionId && missionVersion) { vscode.window.showInformationMessage(`vous lancez la mission ${missionId}`); const hadMissionWorkdir = this.extensionStore.getMissionWorkdir() !== undefined; if (!hadMissionWorkdir) { @@ -103,16 +109,19 @@ export default class Controller { } else { vscode.window.showInformationMessage('Déjà connecté: session récupérée'); } - await copyProjectSources( - 'Documents/deadlock-challenges/resources/code_desktop_exemple', - this.extensionStore.getMissionWorkdir()!, - ).catch((e) => { - log(e); + + // TODO Should I fetch GET api/missions/{missionId} one day instead of passing necessary parameters in vscode xdg-open link ? + const mission = new Mission({ + registryBaseURL: REGISTRY_MISSION_URL, + missionId: missionId, + missionVersion: missionVersion, }); - await vscode.commands.executeCommand( - 'remote-containers.openFolder', - vscode.Uri.file(this.extensionStore.getMissionWorkdir()!), + vscode.window.showInformationMessage( + 'opening inside folder ' + this.extensionStore.getMissionWorkdir()! + '/' + missionId, ); + await mission.setup({}); + await mission.openEditorInFolder(); + vscode.commands.executeCommand(OPEN_GETTING_STARTED_COMMAND.cmd); } }