Skip to content

Commit

Permalink
Handle need to recreate and cancel
Browse files Browse the repository at this point in the history
  • Loading branch information
gbraad committed May 23, 2023
1 parent f975968 commit ffb79ba
Showing 1 changed file with 29 additions and 3 deletions.
32 changes: 29 additions & 3 deletions src/preferences.ts
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ async function configChanged(
telemetryLogger: extensionApi.TelemetryLogger,
): Promise<void> {
const currentConfig = await commander.configGet();
const currentStatus = await commander.status();

const extConfig = extensionApi.configuration.getConfiguration();

Expand Down Expand Up @@ -209,6 +210,16 @@ async function configChanged(
}
}

// check for recreate need based on current status too
if (currentStatus.Preset !== newConfig.preset) {
needRecreateCrc = true;
needRefreshConfig = true;
}
else {
needRecreateCrc = false;
needRefreshConfig = true;
}

try {
if (!isEmpty(newConfig)) {
await commander.configSet(newConfig);
Expand All @@ -218,7 +229,16 @@ async function configChanged(
}
}
if (needRecreateCrc) {
await handleRecreate(provider, telemetryLogger);
let recreateResult = await handleRecreate(provider, telemetryLogger);
if (!recreateResult) {
// User cancelled

const resetConfig = {} as Configuration;
resetConfig.preset = currentConfig.preset;
await commander.configSet(resetConfig);

needRefreshConfig = true;
}
}
if (needRefreshConfig) {
await refreshConfig();
Expand Down Expand Up @@ -282,7 +302,7 @@ function validateRam(newVal: string | number, preset: Preset): string | undefine
async function handleRecreate(
provider: extensionApi.Provider,
telemetryLogger: extensionApi.TelemetryLogger,
): Promise<void> {
): Promise<boolean> {
const needDelete = crcStatus.status.CrcStatus !== 'No Cluster';
const needStop = crcStatus.getProviderStatus() === 'started' || crcStatus.getProviderStatus() === 'starting';

Expand All @@ -306,11 +326,17 @@ async function handleRecreate(
if (result === 'Stop and Delete') {
await stopCrc(telemetryLogger);
await deleteCrc();
return true;
} else if (result === 'Delete and Restart') {
await stopCrc(telemetryLogger);
await deleteCrc();
await startCrc(provider, defaultLogger, telemetryLogger);
return true;
} else if (result === 'Delete') {
await deleteCrc();
return true;
} else if (result === 'Cancel') {
// do nothing
return false;
}
}
}

0 comments on commit ffb79ba

Please sign in to comment.