Skip to content

Commit 7e90d56

Browse files
authored
fix: suppress error notifications & reload issue (#151)
1 parent 248f1f0 commit 7e90d56

File tree

6 files changed

+21
-13
lines changed

6 files changed

+21
-13
lines changed

src/constants.ts

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export class Constants {
3434
static readonly CLIENT_RETRIES = 5;
3535
static readonly CLIENT_RETRY_WAIT_INTERVAL_MS = 750;
3636
static VSCODE_VERSION: string;
37+
static APPLICATION_OPENED = false;
3738

3839
static initialize(context: vscode.ExtensionContext) {
3940
Constants.VSCODE_VERSION = vscode.version;

src/extension.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export function activate(context: vscode.ExtensionContext) {
1818
configHolder.addListener(() => filesProvider.refresh());
1919
configHolder.addListener(() => progressProvider.refresh());
2020
configHolder.addListener(setConfigExists);
21-
configHolder.load();
21+
configHolder.initialize();
2222

2323
OAuth.initialize(context, () => configHolder.reload());
2424

src/plugin/crowdinConfigHolder.ts

+9-9
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@ export class CrowdinConfigHolder {
1010
private configurationToWorkspace: Map<ConfigModel, vscode.WorkspaceFolder> = new Map();
1111
private sourceStrings: Map<vscode.WorkspaceFolder, crowdin.SourceStringsModel.String[]> = new Map();
1212
private listeners: { (): void }[] = [];
13+
private initializer: Promise<void> = Promise.resolve();
1314

1415
addListener(listener: () => void) {
1516
this.listeners.push(listener);
1617
}
1718

18-
get configurations(): Map<ConfigModel, vscode.WorkspaceFolder> {
19+
async configurations(): Promise<Map<ConfigModel, vscode.WorkspaceFolder>> {
20+
await this.initializer;
1921
return this.configurationToWorkspace;
2022
}
2123

@@ -27,6 +29,10 @@ export class CrowdinConfigHolder {
2729
this.configurationToWorkspace.forEach((workspace, config) => this.loadStrings(config, workspace));
2830
}
2931

32+
initialize() {
33+
this.initializer = this.load();
34+
}
35+
3036
async load() {
3137
const workspaceFolders = vscode.workspace.workspaceFolders || [];
3238
let configFiles: string[] = [];
@@ -79,14 +85,8 @@ export class CrowdinConfigHolder {
7985
});
8086
watchersToAdd.forEach((file) => {
8187
const wather = vscode.workspace.createFileSystemWatcher(file);
82-
wather.onDidChange(async () => {
83-
await this.load();
84-
this.listeners.forEach((l) => l());
85-
});
86-
wather.onDidDelete(async () => {
87-
await this.load();
88-
this.listeners.forEach((l) => l());
89-
});
88+
wather.onDidChange(this.reload);
89+
wather.onDidDelete(this.reload);
9090
this.configWatchers.set(file, wather);
9191
});
9292
}

src/plugin/files/filesProvider.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import * as vscode from 'vscode';
2+
import { Constants } from '../../constants';
23
import { AUTH_TYPE, SCOPES } from '../../oauth/constants';
34
import { CommonUtil } from '../../util/commonUtil';
45
import { ErrorHandler } from '../../util/errorHandler';
@@ -88,6 +89,7 @@ export class FilesProvider implements vscode.TreeDataProvider<FilesTreeItem> {
8889
}
8990

9091
async getChildren(element?: FilesTreeItem): Promise<FilesTreeItem[]> {
92+
Constants.APPLICATION_OPENED = true;
9193
if (!element && this.showWelcomeMessage) {
9294
const session = await vscode.authentication.getSession(AUTH_TYPE, SCOPES, { createIfNone: false });
9395
if (session) {
@@ -109,7 +111,7 @@ export class FilesProvider implements vscode.TreeDataProvider<FilesTreeItem> {
109111
}
110112

111113
private async buildRootTree(): Promise<FilesTreeItem[]> {
112-
const configurations = this.configHolder.configurations;
114+
const configurations = await this.configHolder.configurations();
113115
const promises = Array.from(configurations).map(async ([config, workspace]) => {
114116
try {
115117
const rootTreeFolder = await FilesTreeBuilder.buildRootFolder(

src/plugin/progress/progressTreeProvider.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,10 @@ export class ProgressTreeProvider implements vscode.TreeDataProvider<ProgressTre
2222
return element;
2323
}
2424

25-
getChildren(element?: ProgressTreeItem): Thenable<any[]> {
25+
async getChildren(element?: ProgressTreeItem): Promise<any[]> {
2626
if (!element) {
27-
const promises = Array.from(this.configHolder.configurations).map(async ([config, workspace]) => {
27+
const configurations = await this.configHolder.configurations();
28+
const promises = Array.from(configurations).map(async ([config, workspace]) => {
2829
try {
2930
const client = buildClient(workspace.uri, config);
3031
const { translationStatusApi, projectsGroupsApi, languagesApi } = client.crowdin;

src/util/errorHandler.ts

+4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
import * as vscode from 'vscode';
2+
import { Constants } from '../constants';
23

34
export class ErrorHandler {
45
static handleError(e: any): void {
6+
if (!Constants.APPLICATION_OPENED) {
7+
return;
8+
}
59
let message;
610
if (typeof e === 'string') {
711
message = e;

0 commit comments

Comments
 (0)