Skip to content

Commit 816ed7a

Browse files
author
Akos Kitta
committed
check for updates in own module.
Signed-off-by: Akos Kitta <[email protected]>
1 parent 1da6d7c commit 816ed7a

File tree

8 files changed

+75
-57
lines changed

8 files changed

+75
-57
lines changed

arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ import { FileSystemFrontendContribution } from '@theia/filesystem/lib/browser/fi
4848
import { MonacoMenus } from '@theia/monaco/lib/browser/monaco-menu';
4949
import { FileNavigatorCommands } from '@theia/navigator/lib/browser/navigator-contribution';
5050
import { TerminalMenus } from '@theia/terminal/lib/browser/terminal-frontend-contribution';
51-
import { IDEUpdater } from '../common/protocol/ide-updater';
5251
import {
5352
CurrentSketch,
5453
SketchesServiceClientImpl,
@@ -60,13 +59,11 @@ import { BoardsServiceProvider } from './boards/boards-service-provider';
6059
import { BoardsToolBarItem } from './boards/boards-toolbar-item';
6160
import { OpenSketchFiles } from './contributions/open-sketch-files';
6261
import { SaveAsSketch } from './contributions/save-as-sketch';
63-
import { IDEUpdaterDialog } from './dialogs/ide-updater/ide-updater-dialog';
6462
import { ArduinoMenus } from './menu/arduino-menus';
6563
import { MonitorViewContribution } from './serial/monitor/monitor-view-contribution';
6664
import { ArduinoToolbar } from './toolbar/arduino-toolbar';
6765

6866
const INIT_LIBS_AND_PACKAGES = 'initializedLibsAndPackages';
69-
export const SKIP_IDE_VERSION = 'skipIDEVersion';
7067

7168
@injectable()
7269
export class ArduinoFrontendContribution
@@ -116,12 +113,6 @@ export class ArduinoFrontendContribution
116113
@inject(FileSystemFrontendContribution)
117114
private readonly fileSystemFrontendContribution: FileSystemFrontendContribution;
118115

119-
@inject(IDEUpdater)
120-
private readonly updater: IDEUpdater;
121-
122-
@inject(IDEUpdaterDialog)
123-
private readonly updaterDialog: IDEUpdaterDialog;
124-
125116
protected toDisposeOnStop = new DisposableCollection();
126117

127118
@postConstruct()
@@ -192,30 +183,6 @@ export class ArduinoFrontendContribution
192183
}
193184

194185
async onStart(app: FrontendApplication): Promise<void> {
195-
this.updater
196-
.init(
197-
this.arduinoPreferences.get('arduino.ide.updateChannel'),
198-
this.arduinoPreferences.get('arduino.ide.updateBaseUrl')
199-
)
200-
.then(() => this.updater.checkForUpdates(true))
201-
.then(async (updateInfo) => {
202-
if (!updateInfo) return;
203-
const versionToSkip = await this.localStorageService.getData<string>(
204-
SKIP_IDE_VERSION
205-
);
206-
if (versionToSkip === updateInfo.version) return;
207-
this.updaterDialog.open(updateInfo);
208-
})
209-
.catch((e) => {
210-
this.messageService.error(
211-
nls.localize(
212-
'arduino/ide-updater/errorCheckingForUpdates',
213-
'Error while checking for Arduino IDE updates.\n{0}',
214-
e.message
215-
)
216-
);
217-
});
218-
219186
this.arduinoPreferences.onPreferenceChanged((event) => {
220187
if (event.newValue !== event.oldValue) {
221188
switch (event.preferenceName) {
@@ -225,13 +192,6 @@ export class ArduinoFrontendContribution
225192
webContents.setZoomLevel(event.newValue || 0);
226193
}
227194
break;
228-
case 'arduino.ide.updateChannel':
229-
case 'arduino.ide.updateBaseUrl':
230-
this.updater.init(
231-
this.arduinoPreferences.get('arduino.ide.updateChannel'),
232-
this.arduinoPreferences.get('arduino.ide.updateBaseUrl')
233-
);
234-
break;
235195
}
236196
}
237197
});

arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,7 @@ import { Notifications } from './contributions/notifications';
307307
import { OpenSketchFiles } from './contributions/open-sketch-files';
308308
import { InoLanguage } from './contributions/ino-language';
309309
import { SelectedBoard } from './contributions/selected-board';
310+
import { CheckForUpdates } from './contributions/check-for-updates';
310311

311312
MonacoThemingService.register({
312313
id: 'arduino-theme',
@@ -702,6 +703,7 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
702703
Contribution.configure(bind, OpenSketchFiles);
703704
Contribution.configure(bind, InoLanguage);
704705
Contribution.configure(bind, SelectedBoard);
706+
Contribution.configure(bind, CheckForUpdates);
705707

706708
// Disabled the quick-pick customization from Theia when multiple formatters are available.
707709
// Use the default VS Code behavior, and pick the first one. In the IDE2, clang-format has `exclusive` selectors.
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import { nls } from '@theia/core/lib/common/nls';
2+
import { LocalStorageService } from '@theia/core/lib/browser/storage-service';
3+
import { inject, injectable } from '@theia/core/shared/inversify';
4+
import {
5+
IDEUpdater,
6+
SKIP_IDE_VERSION,
7+
} from '../../common/protocol/ide-updater';
8+
import { IDEUpdaterDialog } from '../dialogs/ide-updater/ide-updater-dialog';
9+
import { Contribution } from './contribution';
10+
11+
@injectable()
12+
export class CheckForUpdates extends Contribution {
13+
@inject(IDEUpdater)
14+
private readonly updater: IDEUpdater;
15+
16+
@inject(IDEUpdaterDialog)
17+
private readonly updaterDialog: IDEUpdaterDialog;
18+
19+
@inject(LocalStorageService)
20+
private readonly localStorage: LocalStorageService;
21+
22+
override onStart(): void {
23+
this.preferences.onPreferenceChanged(
24+
({ preferenceName, newValue, oldValue }) => {
25+
if (newValue !== oldValue) {
26+
switch (preferenceName) {
27+
case 'arduino.ide.updateChannel':
28+
case 'arduino.ide.updateBaseUrl':
29+
this.updater.init(
30+
this.preferences.get('arduino.ide.updateChannel'),
31+
this.preferences.get('arduino.ide.updateBaseUrl')
32+
);
33+
}
34+
}
35+
}
36+
);
37+
}
38+
39+
override onReady(): void {
40+
this.updater
41+
.init(
42+
this.preferences.get('arduino.ide.updateChannel'),
43+
this.preferences.get('arduino.ide.updateBaseUrl')
44+
)
45+
.then(() => this.updater.checkForUpdates(true))
46+
.then(async (updateInfo) => {
47+
if (!updateInfo) return;
48+
const versionToSkip = await this.localStorage.getData<string>(
49+
SKIP_IDE_VERSION
50+
);
51+
if (versionToSkip === updateInfo.version) return;
52+
this.updaterDialog.open(updateInfo);
53+
})
54+
.catch((e) => {
55+
this.messageService.error(
56+
nls.localize(
57+
'arduino/ide-updater/errorCheckingForUpdates',
58+
'Error while checking for Arduino IDE updates.\n{0}',
59+
e.message
60+
)
61+
);
62+
});
63+
}
64+
}

arduino-ide-extension/src/browser/contributions/compiler-errors.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,7 @@ import { MonacoEditor } from '@theia/monaco/lib/browser/monaco-editor';
2929
import { MonacoToProtocolConverter } from '@theia/monaco/lib/browser/monaco-to-protocol-converter';
3030
import { ProtocolToMonacoConverter } from '@theia/monaco/lib/browser/protocol-to-monaco-converter';
3131
import { CoreError } from '../../common/protocol/core-service';
32-
import {
33-
ArduinoPreferences,
34-
ErrorRevealStrategy,
35-
} from '../arduino-preferences';
32+
import { ErrorRevealStrategy } from '../arduino-preferences';
3633
import { InoSelector } from '../ino-selectors';
3734
import { fullRange } from '../utils/monaco';
3835
import { Contribution } from './contribution';
@@ -127,9 +124,6 @@ export class CompilerErrors
127124
@inject(CoreErrorHandler)
128125
private readonly coreErrorHandler: CoreErrorHandler;
129126

130-
@inject(ArduinoPreferences)
131-
private readonly preferences: ArduinoPreferences;
132-
133127
private readonly errors: ErrorDecoration[] = [];
134128
private readonly onDidChangeEmitter = new monaco.Emitter<this>();
135129
private readonly currentErrorDidChangEmitter = new Emitter<ErrorDecoration>();

arduino-ide-extension/src/browser/contributions/contribution.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,9 @@ export abstract class Contribution
9595
@inject(SettingsService)
9696
protected readonly settingsService: SettingsService;
9797

98+
@inject(ArduinoPreferences)
99+
protected readonly preferences: ArduinoPreferences;
100+
98101
@inject(FrontendApplicationStateService)
99102
protected readonly appStateService: FrontendApplicationStateService;
100103

@@ -142,9 +145,6 @@ export abstract class SketchContribution extends Contribution {
142145
@inject(SketchesServiceClientImpl)
143146
protected readonly sketchServiceClient: SketchesServiceClientImpl;
144147

145-
@inject(ArduinoPreferences)
146-
protected readonly preferences: ArduinoPreferences;
147-
148148
@inject(EditorManager)
149149
protected readonly editorManager: EditorManager;
150150

arduino-ide-extension/src/browser/contributions/edit-contributions.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { inject, injectable } from '@theia/core/shared/inversify';
22
import { CommonCommands } from '@theia/core/lib/browser/common-frontend-contribution';
33
import { ClipboardService } from '@theia/core/lib/browser/clipboard-service';
4-
import { PreferenceService } from '@theia/core/lib/browser/preferences/preference-service';
54
import { MonacoEditorService } from '@theia/monaco/lib/browser/monaco-editor-service';
65
import {
76
Contribution,
@@ -20,13 +19,10 @@ import type { StandaloneCodeEditor } from '@theia/monaco-editor-core/esm/vs/edit
2019
@injectable()
2120
export class EditContributions extends Contribution {
2221
@inject(MonacoEditorService)
23-
protected readonly codeEditorService: MonacoEditorService;
22+
private readonly codeEditorService: MonacoEditorService;
2423

2524
@inject(ClipboardService)
26-
protected readonly clipboardService: ClipboardService;
27-
28-
@inject(PreferenceService)
29-
protected readonly preferences: PreferenceService;
25+
private readonly clipboardService: ClipboardService;
3026

3127
override registerCommands(registry: CommandRegistry): void {
3228
registry.registerCommand(EditContributions.Commands.GO_TO_LINE, {

arduino-ide-extension/src/browser/dialogs/ide-updater/ide-updater-dialog.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ import {
1212
IDEUpdater,
1313
IDEUpdaterClient,
1414
ProgressInfo,
15+
SKIP_IDE_VERSION,
1516
UpdateInfo,
1617
} from '../../../common/protocol/ide-updater';
1718
import { LocalStorageService } from '@theia/core/lib/browser';
18-
import { SKIP_IDE_VERSION } from '../../arduino-frontend-contribution';
1919
import { WindowService } from '@theia/core/lib/browser/window/window-service';
2020

2121
@injectable()

arduino-ide-extension/src/common/protocol/ide-updater.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,5 @@ export interface IDEUpdaterClient {
6969
notifyDownloadProgressChanged(message: ProgressInfo): void;
7070
notifyDownloadFinished(message: UpdateInfo): void;
7171
}
72+
73+
export const SKIP_IDE_VERSION = 'skipIDEVersion';

0 commit comments

Comments
 (0)