saveToSystem method

  1. @override
Future<Ntut8021xProvisioningResult> saveToSystem({
  1. required String identity,
  2. required String password,
  3. required CampusWifiCapabilities capabilities,
  4. required Ntut8021xPendingPromptReason? pendingPromptReason,
})
override

Implementation

@override
Future<Ntut8021xProvisioningResult> saveToSystem({
  required String identity,
  required String password,
  required CampusWifiCapabilities capabilities,
  required Ntut8021xPendingPromptReason? pendingPromptReason,
}) async {
  if (!capabilities.isSupported || !capabilities.canSaveToSystem) {
    return const Ntut8021xProvisioningResult.unsupported();
  }
  final provisioning = await _platform.saveNtut8021xToSystem(
    identity: identity,
    password: password,
  );
  final compatResult = _provisioningResultFromDto(
    provisioning,
    defaultMode: Ntut8021xProvisioningMode.compat,
  );
  if (compatResult.status == Ntut8021xProvisioningStatus.compatSuccess) {
    await _stateStore.markProvisioned(
      mode: Ntut8021xStoredProvisioningMode.compat,
    );
    return compatResult;
  }
  final storedState = await _stateStore.read();
  final nextPendingPromptReason =
      pendingPromptReason ??
      switch (storedState.pendingCompatPromptReason) {
        Ntut8021xStoredPendingPromptReason.credentialChanged =>
          Ntut8021xPendingPromptReason.credentialChanged,
        _ => Ntut8021xPendingPromptReason.suggestionFallbackRequired,
      };
  await _stateStore.setPendingCompatPrompt(
    reason: switch (nextPendingPromptReason) {
      Ntut8021xPendingPromptReason.credentialChanged =>
        Ntut8021xStoredPendingPromptReason.credentialChanged,
      Ntut8021xPendingPromptReason.suggestionFallbackRequired =>
        Ntut8021xStoredPendingPromptReason.suggestionFallbackRequired,
    },
    immediate: false,
  );
  return _copyResult(
    compatResult,
    pendingPromptReason: nextPendingPromptReason,
  );
}