Skip to content

Commit d82c611

Browse files
authored
Merge pull request #60 from DeepCodeAI/mainline_update1
Updated icon, welcome notification, advanced mode.
2 parents 6eea3bf + 2e3cd99 commit d82c611

13 files changed

Lines changed: 93 additions & 17 deletions

images/deepcode-logo.svg

Lines changed: 0 additions & 7 deletions
This file was deleted.

images/deepcode-vscode-icon.svg

Lines changed: 5 additions & 0 deletions
Loading

package.json

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,12 @@
4646
{
4747
"title": "DeepCode",
4848
"properties": {
49+
"deepcode.advancedMode": {
50+
"type": "boolean",
51+
"default": false,
52+
"description": "Toggle advanced tools for expert users",
53+
"scope": "application"
54+
},
4955
"deepcode.url": {
5056
"type": "string",
5157
"default": "",
@@ -77,6 +83,13 @@
7783
"default": true,
7884
"markdownDescription": "Allow extension's telemetry to be sent to `#deepcode.url#`",
7985
"scope": "application"
86+
},
87+
"deepcode.yesWelcomeNotification": {
88+
"//": "Name starts with y to put it at the end, as configs are sorted alphbetically",
89+
"type": "boolean",
90+
"default": true,
91+
"markdownDescription": "Show welcome notification after installation and restart",
92+
"scope": "application"
8093
}
8194
}
8295
}
@@ -86,7 +99,7 @@
8699
{
87100
"id": "deepcode",
88101
"title": "DeepCode",
89-
"icon": "images/deepcode-logo.svg"
102+
"icon": "images/deepcode-vscode-icon.svg"
90103
}
91104
]
92105
},
@@ -120,7 +133,7 @@
120133
{
121134
"id": "deepcode.views.actions",
122135
"name": "Actions",
123-
"when": "!deepcode:error && deepcode:loggedIn && deepcode:uploadApproved && deepcode:workspaceFound"
136+
"when": "deepcode:advanced && !deepcode:error && deepcode:loggedIn && deepcode:uploadApproved && deepcode:workspaceFound"
124137
},
125138
{
126139
"id": "deepcode.views.support",

src/deepcode/DeepCodeExtension.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ import {
1414
DEEPCODE_OPEN_BROWSER,
1515
DEEPCODE_OPEN_LOCAL,
1616
} from "./constants/commands";
17-
import { openDeepcodeSettingsCommand, createDCIgnoreCommand } from "./utils/vscodeCommandsUtils";
17+
import {
18+
openDeepcodeSettingsCommand,
19+
createDCIgnoreCommand,
20+
} from "./utils/vscodeCommandsUtils";
1821
import { errorsLogs } from "./messages/errorsServerLogMessages";
1922

2023
import {
@@ -147,6 +150,9 @@ class DeepCodeExtension extends DeepCodeLib implements DeepCode.ExtensionInterfa
147150
this.startExtension().catch((err) => this.processError(err, {
148151
message: errorsLogs.failedExecution,
149152
}));
153+
this.checkWelcomeNotification().catch((err) => this.processError(err, {
154+
message: errorsLogs.welcomeNotification,
155+
}));
150156
}
151157

152158
}

src/deepcode/constants/commands.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// vscode commands used in extension work
2-
export const VSCODE_GO_TO_SETTINGS_COMMAND = "workbench.action.openSettings";
2+
export const VSCODE_GO_TO_SETTINGS_COMMAND = "workbench.action.openSettings";
3+
export const VSCODE_VIEW_CONTAINER_PREFIX = "workbench.view.extension.";
34
export const VSCODE_ADD_COMMENT_COMMAND = "editor.action.addCommentLine";
45

56
// custom depcode commands

src/deepcode/constants/views.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export const DEEPCODE_CONTEXT = {
1414
ANALYZING: "workspaceFound",
1515
ERROR: "error",
1616
MODE: "mode",
17+
ADVANCED: "advanced",
1718
};
1819

1920
export const DEEPCODE_ERROR_CODES = {

src/deepcode/lib/modules/BaseDeepCodeModule.ts

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ import DeepCodeWorkspaceFoldersWatcher from "../watchers/WorkspaceFoldersWatcher
88
import DeepCodeEditorsWatcher from "../watchers/EditorsWatcher";
99
import DeepCodeSettingsWatcher from "../watchers/DeepCodeSettingsWatcher";
1010
import { IDE_NAME, REFRESH_VIEW_DEBOUNCE_INTERVAL } from "../../constants/general";
11-
import { errorsLogs } from "../../messages/errorsServerLogMessages";
11+
import { setContext } from "../../utils/vscodeCommandsUtils";
12+
import { DEEPCODE_CONTEXT } from "../../constants/views";
13+
import { errorsLogs } from '../../messages/errorsServerLogMessages';
1214

1315
export default abstract class BaseDeepCodeModule implements DeepCode.BaseDeepCodeModuleInterface {
1416
currentWorkspacePath: string;
@@ -92,6 +94,18 @@ export default abstract class BaseDeepCodeModule implements DeepCode.BaseDeepCod
9294
return !!vscode.workspace.getConfiguration('deepcode').get<boolean>('yesTelemetry');
9395
}
9496

97+
get shouldShowWelcomeNotification(): boolean {
98+
return !!vscode.workspace.getConfiguration('deepcode').get<boolean>('yesWelcomeNotification');
99+
}
100+
101+
async hideWelcomeNotification(): Promise<void> {
102+
await vscode.workspace.getConfiguration('deepcode').update('yesWelcomeNotification', false, true);
103+
}
104+
105+
get shouldShowAdvancedView(): boolean {
106+
return !!vscode.workspace.getConfiguration('deepcode').get<boolean>('advancedMode');
107+
}
108+
95109
private getProgressBadgePromise(): Promise<void> {
96110
if (this.progressBadgePromise === undefined) {
97111
// This should not be needed, but we resolve pending Promises
@@ -109,9 +123,16 @@ export default abstract class BaseDeepCodeModule implements DeepCode.BaseDeepCod
109123
// Leave viewId undefined to remove the badge from all views
110124
async setLoadingBadge(viewId?: string): Promise<void> {
111125
if (viewId) {
112-
await vscode.window.withProgress(
126+
// Using closure on this to allow partial binding in arbitrary positions
127+
const self = this;
128+
vscode.window.withProgress(
113129
{ location: { viewId } },
114-
this.getProgressBadgePromise.bind(this)
130+
() => self.getProgressBadgePromise()
131+
).then(
132+
() => {},
133+
(error) => self.processError(error, {
134+
message: errorsLogs.loadingBadge,
135+
})
115136
);
116137
} else {
117138
if (this.progressBadgeResolveFn) this.progressBadgeResolveFn();

src/deepcode/lib/modules/LoginModule.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import * as vscode from "vscode";
12
import ReportModule from "./ReportModule";
23
import DeepCode from "../../../interfaces/DeepCodeInterfaces";
34
import http from "../../http/requests";
@@ -7,7 +8,9 @@ import {
78
DEEPCODE_VIEW_TC,
89
DEEPCODE_CONTEXT
910
} from "../../constants/views";
11+
import { openDeepcodeViewContainer } from "../../utils/vscodeCommandsUtils";
1012
import { errorsLogs } from "../../messages/errorsServerLogMessages";
13+
import { deepCodeMessages } from "../../messages/deepCodeMessages";
1114

1215
const sleep = (duration: number) => new Promise(resolve => setTimeout(resolve, duration));
1316

@@ -80,8 +83,24 @@ abstract class LoginModule extends ReportModule implements DeepCode.LoginModuleI
8083
await this.setUploadApproved(true);
8184
await this.setLoadingBadge();
8285
await this.checkApproval();
83-
}
86+
}
87+
88+
async checkWelcomeNotification(): Promise<void> {
89+
if (this.shouldShowWelcomeNotification) {
90+
let pressedButton = await vscode.window.showInformationMessage(
91+
deepCodeMessages.welcome.msg,
92+
deepCodeMessages.welcome.button
93+
);
94+
if (pressedButton === deepCodeMessages.welcome.button) {
95+
await openDeepcodeViewContainer();
96+
}
97+
await this.hideWelcomeNotification();
98+
}
99+
}
84100

101+
async checkAdvancedMode(): Promise<void> {
102+
await setContext(DEEPCODE_CONTEXT.ADVANCED, this.shouldShowAdvancedView);
103+
}
85104
}
86105

87106
export default LoginModule;

src/deepcode/lib/watchers/DeepCodeSettingsWatcher.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ import { errorsLogs } from "../../messages/errorsServerLogMessages";
55
class DeepCodeSettingsWatcher implements DeepCode.DeepCodeWatcherInterface {
66

77
private async onChangeConfiguration(extension: DeepCode.ExtensionInterface, key: string): Promise<void> {
8+
if (key === 'deepcode.advancedMode') {
9+
return extension.checkAdvancedMode();
10+
}
811
const extensionConfig = vscode.workspace.getConfiguration('deepcode');
912
// @ts-ignore */}
1013
const url: string = extensionConfig.get('url');
@@ -21,7 +24,7 @@ class DeepCodeSettingsWatcher implements DeepCode.DeepCodeWatcherInterface {
2124
vscode.workspace.onDidChangeConfiguration(
2225
async (event: vscode.ConfigurationChangeEvent): Promise<void> => {
2326
const change = [
24-
'deepcode.url', 'deepcode.token', 'deepcode.uploadApproved'
27+
'deepcode.url', 'deepcode.token', 'deepcode.uploadApproved', 'deepcode.advancedMode'
2528
].find(config => event.affectsConfiguration(config));
2629
if (change) {
2730
try {
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export const deepCodeMessages = {
2+
welcome: {
3+
msg: "Welcome to DeepCode! Check out our dashboard to start analyzing your code",
4+
button: "Check it out",
5+
},
6+
};

0 commit comments

Comments
 (0)