saveNtut8021xToSystem method

Future<Ntut8021xProvisioningResult> saveNtut8021xToSystem({
  1. String? identity,
  2. String? password,
  3. Ntut8021xPendingPromptReason? pendingPromptReason,
})

Implementation

Future<Ntut8021xProvisioningResult> saveNtut8021xToSystem({
  String? identity,
  String? password,
  Ntut8021xPendingPromptReason? pendingPromptReason,
}) async {
  final data = await getNtut8021xAssistantData();
  final resolvedIdentity = identity ?? data.identity;
  final resolvedPassword = password ?? data.password;
  if (resolvedIdentity == null ||
      resolvedPassword == null ||
      !data.capabilities.canProvisionNtut8021xCompat ||
      !data.capabilities.isAndroid11OrNewer) {
    return const Ntut8021xProvisioningResult.unsupported();
  }

  final provisioning = await _platform.saveNtut8021xToSystem(
    identity: resolvedIdentity,
    password: resolvedPassword,
  );
  final compatResult = _provisioningResultFromDto(
    provisioning,
    defaultMode: Ntut8021xProvisioningMode.compat,
  );

  if (compatResult.status == Ntut8021xProvisioningStatus.compatSuccess) {
    await _autoReprovision.enable();
    await _stateStore.markProvisioned(
      mode: Ntut8021xStoredProvisioningMode.compat,
    );
    return compatResult;
  }

  final nextPendingPromptReason =
      pendingPromptReason ??
      data.pendingPromptReason ??
      Ntut8021xPendingPromptReason.suggestionFallbackRequired;
  await _stateStore.setPendingCompatPrompt(
    reason: _storedPendingPromptReason(nextPendingPromptReason),
    immediate: false,
  );
  return _copyResultWithPendingReason(compatResult, nextPendingPromptReason);
}