diff --git a/packages/vscode-extension/src/project/project.ts b/packages/vscode-extension/src/project/project.ts index 2f8b5a72a..c87732753 100644 --- a/packages/vscode-extension/src/project/project.ts +++ b/packages/vscode-extension/src/project/project.ts @@ -340,6 +340,15 @@ export class Project public async reload(type: ReloadAction): Promise { this.updateProjectState({ status: "starting" }); + + // this action needs to be handled outside of device session as it resets the device session itself + if (type === "reboot") { + const deviceInfo = this.projectState.selectedDevice!; + await this.start(true, false); + await this.selectDevice(deviceInfo); + return true; + } + const success = (await this.deviceSession?.perform(type)) ?? false; if (success) { this.updateProjectState({ status: "running" }); diff --git a/packages/vscode-extension/src/webview/components/UrlBar.tsx b/packages/vscode-extension/src/webview/components/UrlBar.tsx index e1a20d883..213865d3a 100644 --- a/packages/vscode-extension/src/webview/components/UrlBar.tsx +++ b/packages/vscode-extension/src/webview/components/UrlBar.tsx @@ -19,6 +19,7 @@ function ReloadButton({ disabled }: { disabled: boolean }) { "Restart app process": () => project.reload("restartProcess"), "Reinstall app": () => project.reload("reinstall"), "Clear Metro cache": () => project.restart("metro"), + "Reboot IDE": () => project.reload("reboot"), "Clean rebuild": () => project.restart("all"), }}>