Skip to content

Commit 04b72ef

Browse files
committed
Fix board options not shown for manually installed platforms
1 parent 69ac1f4 commit 04b72ef

File tree

1 file changed

+11
-64
lines changed

1 file changed

+11
-64
lines changed

Diff for: arduino-ide-extension/src/browser/boards/boards-data-store.ts

+11-64
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { injectable, inject, named } from 'inversify';
22
import { ILogger } from '@theia/core/lib/common/logger';
33
import { deepClone } from '@theia/core/lib/common/objects';
4-
import { MaybePromise } from '@theia/core/lib/common/types';
54
import { Event, Emitter } from '@theia/core/lib/common/event';
65
import {
76
FrontendApplicationContribution,
@@ -11,7 +10,6 @@ import { notEmpty } from '../../common/utils';
1110
import {
1211
BoardsService,
1312
ConfigOption,
14-
Installable,
1513
BoardDetails,
1614
Programmer,
1715
} from '../../common/protocol';
@@ -36,16 +34,12 @@ export class BoardsDataStore implements FrontendApplicationContribution {
3634

3735
onStart(): void {
3836
this.notificationCenter.onPlatformInstalled(async ({ item }) => {
39-
const { installedVersion: version } = item;
40-
if (!version) {
41-
return;
42-
}
4337
let shouldFireChanged = false;
4438
for (const fqbn of item.boards
4539
.map(({ fqbn }) => fqbn)
4640
.filter(notEmpty)
4741
.filter((fqbn) => !!fqbn)) {
48-
const key = this.getStorageKey(fqbn, version);
42+
const key = this.getStorageKey(fqbn);
4943
let data = await this.storageService.getData<
5044
ConfigOption[] | undefined
5145
>(key);
@@ -72,33 +66,20 @@ export class BoardsDataStore implements FrontendApplicationContribution {
7266

7367
async appendConfigToFqbn(
7468
fqbn: string | undefined,
75-
boardsPackageVersion: MaybePromise<
76-
Installable.Version | undefined
77-
> = this.getBoardsPackageVersion(fqbn)
7869
): Promise<string | undefined> {
7970
if (!fqbn) {
8071
return undefined;
8172
}
82-
83-
const { configOptions } = await this.getData(fqbn, boardsPackageVersion);
73+
const { configOptions } = await this.getData(fqbn);
8474
return ConfigOption.decorate(fqbn, configOptions);
8575
}
8676

87-
async getData(
88-
fqbn: string | undefined,
89-
boardsPackageVersion: MaybePromise<
90-
Installable.Version | undefined
91-
> = this.getBoardsPackageVersion(fqbn)
92-
): Promise<BoardsDataStore.Data> {
77+
async getData(fqbn: string | undefined): Promise<BoardsDataStore.Data> {
9378
if (!fqbn) {
9479
return BoardsDataStore.Data.EMPTY;
9580
}
9681

97-
const version = await boardsPackageVersion;
98-
if (!version) {
99-
return BoardsDataStore.Data.EMPTY;
100-
}
101-
const key = this.getStorageKey(fqbn, version);
82+
const key = this.getStorageKey(fqbn);
10283
let data = await this.storageService.getData<
10384
BoardsDataStore.Data | undefined
10485
>(key, undefined);
@@ -124,25 +105,16 @@ export class BoardsDataStore implements FrontendApplicationContribution {
124105
fqbn,
125106
selectedProgrammer,
126107
}: { fqbn: string; selectedProgrammer: Programmer },
127-
boardsPackageVersion: MaybePromise<
128-
Installable.Version | undefined
129-
> = this.getBoardsPackageVersion(fqbn)
130108
): Promise<boolean> {
131-
const data = deepClone(await this.getData(fqbn, boardsPackageVersion));
109+
const data = deepClone(await this.getData(fqbn));
132110
const { programmers } = data;
133111
if (!programmers.find((p) => Programmer.equals(selectedProgrammer, p))) {
134112
return false;
135113
}
136114

137-
const version = await boardsPackageVersion;
138-
if (!version) {
139-
return false;
140-
}
141-
142115
await this.setData({
143116
fqbn,
144117
data: { ...data, selectedProgrammer },
145-
version,
146118
});
147119
this.fireChanged();
148120
return true;
@@ -153,12 +125,9 @@ export class BoardsDataStore implements FrontendApplicationContribution {
153125
fqbn,
154126
option,
155127
selectedValue,
156-
}: { fqbn: string; option: string; selectedValue: string },
157-
boardsPackageVersion: MaybePromise<
158-
Installable.Version | undefined
159-
> = this.getBoardsPackageVersion(fqbn)
128+
}: { fqbn: string; option: string; selectedValue: string }
160129
): Promise<boolean> {
161-
const data = deepClone(await this.getData(fqbn, boardsPackageVersion));
130+
const data = deepClone(await this.getData(fqbn));
162131
const { configOptions } = data;
163132
const configOption = configOptions.find((c) => c.option === option);
164133
if (!configOption) {
@@ -176,31 +145,24 @@ export class BoardsDataStore implements FrontendApplicationContribution {
176145
if (!updated) {
177146
return false;
178147
}
179-
const version = await boardsPackageVersion;
180-
if (!version) {
181-
return false;
182-
}
183-
184-
await this.setData({ fqbn, data, version });
148+
await this.setData({ fqbn, data });
185149
this.fireChanged();
186150
return true;
187151
}
188152

189153
protected async setData({
190154
fqbn,
191155
data,
192-
version,
193156
}: {
194157
fqbn: string;
195158
data: BoardsDataStore.Data;
196-
version: Installable.Version;
197159
}): Promise<void> {
198-
const key = this.getStorageKey(fqbn, version);
160+
const key = this.getStorageKey(fqbn);
199161
return this.storageService.setData(key, data);
200162
}
201163

202-
protected getStorageKey(fqbn: string, version: Installable.Version): string {
203-
return `.arduinoIDE-configOptions-${version}-${fqbn}`;
164+
protected getStorageKey(fqbn: string): string {
165+
return `.arduinoIDE-configOptions-${fqbn}`;
204166
}
205167

206168
protected async getBoardDetailsSafe(
@@ -231,21 +193,6 @@ export class BoardsDataStore implements FrontendApplicationContribution {
231193
protected fireChanged(): void {
232194
this.onChangedEmitter.fire();
233195
}
234-
235-
protected async getBoardsPackageVersion(
236-
fqbn: string | undefined
237-
): Promise<Installable.Version | undefined> {
238-
if (!fqbn) {
239-
return undefined;
240-
}
241-
const boardsPackage = await this.boardsService.getContainerBoardPackage({
242-
fqbn,
243-
});
244-
if (!boardsPackage) {
245-
return undefined;
246-
}
247-
return boardsPackage.installedVersion;
248-
}
249196
}
250197

251198
export namespace BoardsDataStore {

0 commit comments

Comments
 (0)