diff --git a/deadlock-plugins/deadlock-extension/.vscode/launch.json b/deadlock-plugins/deadlock-extension/.vscode/launch.json index fd9b761149d6e5972331e8ccec39c32f413c91b4..44ec2a1b7c4c09cb5626d28802fa3272b7862365 100644 --- a/deadlock-plugins/deadlock-extension/.vscode/launch.json +++ b/deadlock-plugins/deadlock-extension/.vscode/launch.json @@ -17,12 +17,25 @@ "name": "Run Extension in test mode", "type": "extensionHost", "request": "launch", + "args": ["--extensionDevelopmentPath=${workspaceFolder}"], + "outFiles": ["${workspaceFolder}/dist/**/*.js"], "env": { "DL_MOUNT_EXTENSION": "true" }, + "preLaunchTask": "${defaultBuildTask}" + }, + { + "name": "Rebuild then run Extension in test mode", + "type": "extensionHost", + "request": "launch", "args": ["--extensionDevelopmentPath=${workspaceFolder}"], "outFiles": ["${workspaceFolder}/dist/**/*.js"], - "preLaunchTask": "${defaultBuildTask}" + "env": { + "DL_MOUNT_EXTENSION": "true", + // TODO: SETTING: replace with your own extension path + "EXTENSION_PATH": "/home/takima/Desktop/d-projects/deadlock-desktop/deadlock-plugins/deadlock-extension/deadlock-coding-0.1.10.vsix" + }, + "preLaunchTask": "tasks: build and watch" }, { "name": "Extension Tests", diff --git a/deadlock-plugins/deadlock-extension/.vscode/tasks.json b/deadlock-plugins/deadlock-extension/.vscode/tasks.json index bb452adff76d8709fcb5cec4e14bf672f4e2fcb5..b33efaf71bef3447a095c4b69c098c90ee51afab 100644 --- a/deadlock-plugins/deadlock-extension/.vscode/tasks.json +++ b/deadlock-plugins/deadlock-extension/.vscode/tasks.json @@ -28,10 +28,23 @@ }, "group": "build" }, + { + "label": "tasks: package-extension", + "type": "shell", + "command": "sh", + "args": ["./build.sh"], + "problemMatcher": [] + }, { "label": "tasks: watch-tests", "dependsOn": ["npm: watch", "npm: watch-tests"], "problemMatcher": [] + }, + { + "label": "tasks: build and watch", + "dependsOn": ["tasks: package-extension", "npm: watch"], + "dependsOrder": "sequence", + "problemMatcher": [] } ] } diff --git a/deadlock-plugins/deadlock-extension/package-lock.json b/deadlock-plugins/deadlock-extension/package-lock.json index f2892bfbc53240cd27ea173e1779d5207e90d3a5..11f9ba5bdc1bef631d567bf5240eeba67a10b17b 100644 --- a/deadlock-plugins/deadlock-extension/package-lock.json +++ b/deadlock-plugins/deadlock-extension/package-lock.json @@ -48,7 +48,7 @@ "ts-loader": "^9.2.8", "ts-node": "^10.8.0", "typescript": "^4.7.2", - "vsce": "^2.7.0", + "vsce": "^2.9.2", "webpack": "^5.70.0", "webpack-cli": "^4.9.2" }, @@ -9443,9 +9443,9 @@ } }, "node_modules/vsce": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.7.0.tgz", - "integrity": "sha512-CKU34wrQlbKDeJCRBkd1a8iwF9EvNxcYMg9hAUH6AxFGR6Wo2IKWwt3cJIcusHxx6XdjDHWlfAS/fJN30uvVnA==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.9.2.tgz", + "integrity": "sha512-xyLqL4U82BilUX1t6Ym2opQEa2tLGWYjbgB7+ETeNVXlIJz5sWBJjQJSYJVFOKJSpiOtQclolu88cj7oY6vvPQ==", "dev": true, "dependencies": { "azure-devops-node-api": "^11.0.1", @@ -17416,9 +17416,9 @@ "dev": true }, "vsce": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.7.0.tgz", - "integrity": "sha512-CKU34wrQlbKDeJCRBkd1a8iwF9EvNxcYMg9hAUH6AxFGR6Wo2IKWwt3cJIcusHxx6XdjDHWlfAS/fJN30uvVnA==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.9.2.tgz", + "integrity": "sha512-xyLqL4U82BilUX1t6Ym2opQEa2tLGWYjbgB7+ETeNVXlIJz5sWBJjQJSYJVFOKJSpiOtQclolu88cj7oY6vvPQ==", "dev": true, "requires": { "azure-devops-node-api": "^11.0.1", diff --git a/deadlock-plugins/deadlock-extension/package.json b/deadlock-plugins/deadlock-extension/package.json index 1f5fe4fe08e36d9ae31843b673c63625d35261a3..badb37739425fa8925e11efa2fb924dbebd86dd6 100644 --- a/deadlock-plugins/deadlock-extension/package.json +++ b/deadlock-plugins/deadlock-extension/package.json @@ -146,7 +146,7 @@ "ts-loader": "^9.2.8", "ts-node": "^10.8.0", "typescript": "^4.7.2", - "vsce": "^2.7.0", + "vsce": "^2.9.2", "webpack": "^5.70.0", "webpack-cli": "^4.9.2" }, diff --git a/deadlock-plugins/deadlock-extension/src/core/controller.ts b/deadlock-plugins/deadlock-extension/src/core/controller.ts index 68c852a62e481a60914a7ec60bfafd1ca5c5bbad..bd342ee76dc9332fda2d60c7df1e049aa5315247 100644 --- a/deadlock-plugins/deadlock-extension/src/core/controller.ts +++ b/deadlock-plugins/deadlock-extension/src/core/controller.ts @@ -12,6 +12,7 @@ import { MissionDevContainer } from './mission/missionDevContainer'; import { extensionLog as log } from '../recorder/utils/log'; import { commands, ExtensionContext, Uri, window } from 'vscode'; import { createSshKeyFiles, isSshKeyPairExist } from './sshKeyManager'; +import { hasStatusNumber } from './utils/typeguards'; export default class Controller { public connection: KeycloakOAuth2DeviceFlowConnection; @@ -134,7 +135,20 @@ export default class Controller { const user: User = await this.apiService.getUser(userId); - const response: any = this.apiService.getAccessToRepository(user.id, mission.id); + if (!!userId && userId !== currentUser.id) { + try { + await this.apiService.getAccessToRepository(user.id, mission.id); + } catch (e) { + if (hasStatusNumber(e)) { + if (e.status === 403) { + window.showErrorMessage(`Vous n'avez pas accès à la mission: ${missionId}`); + return; + } + } else { + throw e; + } + } + } const giteaPublicProperties: GiteaPublicProperties = await this.apiService.getGiteaPublicProperties(); diff --git a/deadlock-plugins/deadlock-extension/src/core/utils/typeguards.ts b/deadlock-plugins/deadlock-extension/src/core/utils/typeguards.ts new file mode 100644 index 0000000000000000000000000000000000000000..5f4b0b0fa33bac0ce4c199642ee9e47d1309761a --- /dev/null +++ b/deadlock-plugins/deadlock-extension/src/core/utils/typeguards.ts @@ -0,0 +1,3 @@ +export function hasStatusNumber(obj: any): obj is { status: number } { + return obj.status !== undefined; +}