import { link } from 'fs';
import { url } from 'inspector';
import * as vscode from 'vscode';
import { OPEN_GETTING_STARTED_COMMAND } from '../theia/command';
import { CHOOSE_MISSION_WORKDIR_COMMAND } from './commandHandler';
import ExtensionStore from './extensionStore';
import KeycloakOAuth2DeviceFlowConnection from './keycloakOAuth2DeviceFlowConnection';

export default class Controller {
	private connection: KeycloakOAuth2DeviceFlowConnection;

	constructor() {
		this.connection = new KeycloakOAuth2DeviceFlowConnection(
			'https://auth.dev.deadlock.io/auth/realms/Deadlock/protocol/openid-connect/auth/device',
			'https://auth.dev.deadlock.io/auth/realms/Deadlock/protocol/openid-connect/token',
		);
	}

	openBrowserWithUrl(url: string) {
		vscode.commands.executeCommand('vscode.open', vscode.Uri.parse(url));
	}

	async launchMission(missionId: string | null) {
		if (missionId) {
			vscode.window.showInformationMessage(`vous lancez la mission ${missionId}`);
			const extensionStore = ExtensionStore.getInstance();
			const hadMissionWorkdir = extensionStore.getMissionWorkdir() !== undefined;
			if (!hadMissionWorkdir) {
				await vscode.commands.executeCommand(CHOOSE_MISSION_WORKDIR_COMMAND.cmd);
			}

			const isConnected = (await extensionStore.getAccessToken()) !== undefined;
			console.log('accesToke: ' + extensionStore.getAccessToken());

			//TODO: Connection
			if (!isConnected) {
				const { accessToken, refreshToken } = await this.connection.getToken({ openLink: this.openBrowserWithUrl });
				console.log('VOICI LES TOKENS');
				console.log(accessToken, refreshToken);
			}

			vscode.commands.executeCommand(OPEN_GETTING_STARTED_COMMAND.cmd);
		}
	}
}