downloadAndInstall method

Future<void> downloadAndInstall()

Implementation

Future<void> downloadAndInstall() async {
  final update = _state.update;
  if (!installationEnabled ||
      (_state.installed?.platformVersion ?? 0) < 24 ||
      update == null ||
      _installOperationActive ||
      _preservesInstallerState) {
    return;
  }
  _installOperationActive = true;
  _evaluationGeneration++;
  _setState(
    _state.copyWith(
      status: NAppUpdateStatus.downloading,
      clearProgress: true,
      clearError: true,
    ),
  );
  try {
    final result = await installer.downloadAndInstall(update.asset);
    _setState(
      _state.copyWith(
        status: switch (result) {
          UpdateInstallResult.permissionRequired =>
            NAppUpdateStatus.permissionRequired,
          UpdateInstallResult.awaitingUserAction =>
            NAppUpdateStatus.awaitingUserAction,
          UpdateInstallResult.cancelled => NAppUpdateStatus.cancelled,
        },
        clearProgress: true,
      ),
    );
  } catch (error) {
    _fail(error);
  } finally {
    _installOperationActive = false;
  }
}