MCPcopy Create free account
hub / github.com/Dart-Code/Dart-Code / deactivate

Function deactivate

src/extension/extension.ts:868–907  ·  view source on GitHub ↗
(isRestart = false, reason: ExtensionRestartReason | undefined)

Source from the content-addressed store, hash-verified

866}
867
868export async function deactivate(isRestart = false, reason: ExtensionRestartReason | undefined): Promise<void> {
869 logger.info(`Extension deactivate was called (isRestart: ${isRestart})`);
870
871 // Record session durations.
872 const sessionEndTimestamp = Date.now();
873 const sessionDurationMs = sessionEndTimestamp - extensionThisSessionStart; // Always record _this_ duration.
874 const totalSessionDurationMs = isRestart ? undefined : sessionEndTimestamp - extensionTotalSessionStart; // Only record totals for non-restarts.
875 if (analytics)
876 analytics.logExtensionDeactivate({ sessionDurationMs, totalSessionDurationMs, reason });
877
878 extensionApiModel.clear();
879
880 const loggersToDispose = [...loggers];
881 loggers.length = 0;
882 await Promise.allSettled([
883 tryCleanup(() => setCommandVisiblity(false)),
884 tryCleanup(() => maybeAnalyzer?.dispose()),
885 tryCleanup(() => flutterDaemon?.shutdown()),
886 tryCleanup(() => vs.commands.executeCommand("setContext", FLUTTER_SUPPORTS_ATTACH, false)),
887 ...loggersToDispose.map((l) => tryCleanup(() => l.dispose())),
888 ]);
889 logger.info(`Extension cleanup done`);
890
891 // Pump for any log events that might need to be written to the loggers.
892 await new Promise((resolve) => setTimeout(resolve, 100));
893
894 if (!isRestart) {
895 logger.info(`Closing all loggers...`);
896 await new Promise((resolve) => setTimeout(resolve, 50));
897 await Promise.allSettled([
898 tryCleanup(() => logger.dispose()),
899 tryCleanup(() => ringLogger?.dispose()),
900 tryCleanup(() => extensionLog?.dispose()),
901 ]);
902 await new Promise((resolve) => setTimeout(resolve, 50));
903 } else {
904 logger.info(`Restarting...`);
905 await new Promise((resolve) => setTimeout(resolve, 300));
906 }
907}
908
909function setCommandVisiblity(enable: boolean, workspaceContext?: WorkspaceContext) {
910 void vs.commands.executeCommand("setContext", PROJECT_LOADED, enable);

Callers 1

activateFunction · 0.85

Calls 8

tryCleanupFunction · 0.85
setCommandVisiblityFunction · 0.85
infoMethod · 0.65
disposeMethod · 0.65
shutdownMethod · 0.65
executeCommandMethod · 0.65
clearMethod · 0.45

Tested by

no test coverage detected