Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit b002fca

Browse files
committedAug 23, 2022
renaming & refactoring
1 parent a414c87 commit b002fca

File tree

2 files changed

+30
-20
lines changed

2 files changed

+30
-20
lines changed
 

‎arduino-ide-extension/src/browser/boards/boards-service-provider.ts

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -130,28 +130,39 @@ export class BoardsServiceProvider implements FrontendApplicationContribution {
130130
this.lastAvailablePortsOnUpload = value;
131131
}
132132

133-
public forcePostUploadReconnect(): void {
133+
private portToAutoSelectCanBeDerived(): boolean {
134+
return Boolean(
135+
this.lastBoardsConfigOnUpload && this.lastAvailablePortsOnUpload
136+
);
137+
}
138+
139+
public attemptPostUploadAutoSelect(): void {
134140
setTimeout(() => {
135-
const newState = {
136-
ports: this._availablePorts,
137-
boards: this._availableBoards,
138-
};
139-
this.deriveBoardConfigToAutoSelect(newState);
140-
if (this.lastBoardsConfigOnUpload) {
141-
this.tryReconnect();
141+
if (this.portToAutoSelectCanBeDerived()) {
142+
this.attemptAutoSelect({
143+
ports: this._availablePorts,
144+
boards: this._availableBoards,
145+
});
142146
}
143147
}, 2000); // 2 second delay same as IDE 1.8
144148
}
145149

150+
private attemptAutoSelect(
151+
newState: AttachedBoardsChangeEvent['newState']
152+
): void {
153+
this.deriveBoardConfigToAutoSelect(newState);
154+
this.tryReconnect();
155+
}
156+
146157
private deriveBoardConfigToAutoSelect(
147158
newState: AttachedBoardsChangeEvent['newState']
148159
): void {
149-
if (!this.lastBoardsConfigOnUpload || !this.lastAvailablePortsOnUpload) {
160+
if (!this.portToAutoSelectCanBeDerived()) {
150161
this.boardConfigToAutoSelect = undefined;
151162
return;
152163
}
153164

154-
const oldPorts = this.lastAvailablePortsOnUpload;
165+
const oldPorts = this.lastAvailablePortsOnUpload!;
155166
const { ports: newPorts, boards: newBoards } = newState;
156167

157168
const appearedPorts =
@@ -167,12 +178,14 @@ export class BoardsServiceProvider implements FrontendApplicationContribution {
167178
Port.sameAs(board.port, port)
168179
);
169180

181+
const lastBoardsConfigOnUpload = this.lastBoardsConfigOnUpload!;
182+
170183
if (
171184
boardOnAppearedPort &&
172-
this.lastBoardsConfigOnUpload.selectedBoard &&
185+
lastBoardsConfigOnUpload.selectedBoard &&
173186
Board.sameAs(
174187
boardOnAppearedPort,
175-
this.lastBoardsConfigOnUpload.selectedBoard
188+
lastBoardsConfigOnUpload.selectedBoard
176189
)
177190
) {
178191
this.setLastBoardsConfigOnUpload(undefined);
@@ -197,18 +210,15 @@ export class BoardsServiceProvider implements FrontendApplicationContribution {
197210
this.logger.info('------------------------------------------');
198211
}
199212

200-
const { uploadInProgress } = event;
201-
202-
if (!uploadInProgress) {
203-
this.deriveBoardConfigToAutoSelect(event.newState);
204-
}
205-
206213
this._attachedBoards = event.newState.boards;
207214
this._availablePorts = event.newState.ports;
208215
this.onAvailablePortsChangedEmitter.fire(this._availablePorts);
209216
this.reconcileAvailableBoards().then(() => {
217+
const { uploadInProgress } = event;
218+
// avoid attempting "auto-selection" while an
219+
// upload is in progress
210220
if (!uploadInProgress) {
211-
this.tryReconnect();
221+
this.attemptAutoSelect(event.newState);
212222
}
213223
});
214224
}

‎arduino-ide-extension/src/browser/contributions/upload-sketch.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ export class UploadSketch extends CoreServiceContribution {
244244
this.handleError(e);
245245
} finally {
246246
this.uploadInProgress = false;
247-
this.boardsServiceProvider.forcePostUploadReconnect();
247+
this.boardsServiceProvider.attemptPostUploadAutoSelect();
248248
this.onDidChangeEmitter.fire();
249249
}
250250
}

0 commit comments

Comments
 (0)
Please sign in to comment.