initializeIdeIntegration method

Future<void> initializeIdeIntegration({
  1. required void onIdeDetected(
    1. DetectedIDEInfo?
    ),
  2. IdeType? ideToInstallExtension,
  3. required void onShowIdeOnboarding(),
  4. required void onInstallationComplete(
    1. IDEExtensionInstallationStatus?
    ),
})

Initializes IDE detection and extension installation.

Implementation

Future<void> initializeIdeIntegration({
  required void Function(DetectedIDEInfo?) onIdeDetected,
  IdeType? ideToInstallExtension,
  required void Function() onShowIdeOnboarding,
  required void Function(IDEExtensionInstallationStatus?)
  onInstallationComplete,
}) async {
  // Don't await so we don't block startup
  unawaited(findAvailableIDE().then(onIdeDetected));

  final ideType = ideToInstallExtension;
  if (ideType != null && isVSCodeIde(ideType)) {
    unawaited(
      isIDEExtensionInstalled(ideType).then((isAlreadyInstalled) {
        maybeInstallIDEExtension(ideType).then((status) {
          onInstallationComplete(status);
          if (status?.installed == true) {
            findAvailableIDE().then(onIdeDetected);
          }
        });
      }),
    );
  }
}