provision method

  1. @override
Future<Ntut8021xProvisioningResult> provision({
  1. required String identity,
  2. required String password,
  3. required CampusWifiCapabilities capabilities,
})
override

Implementation

@override
Future<Ntut8021xProvisioningResult> provision({
  required String identity,
  required String password,
  required CampusWifiCapabilities capabilities,
}) async {
  if (!capabilities.isSupported || !capabilities.canProvisionAutomatically) {
    return const Ntut8021xProvisioningResult.unsupported();
  }
  final provisioning = await _platform.provisionNtut8021x(
    identity: identity,
    password: password,
  );
  final suggestionResult = _provisioningResultFromDto(
    provisioning,
    defaultMode: Ntut8021xProvisioningMode.suggestion,
  );
  if (_isSuggestionSuccess(suggestionResult.status) &&
      provisioning.suggestionPermissionState != 'disallowed') {
    await _stateStore.markProvisioned(
      mode: Ntut8021xStoredProvisioningMode.suggestion,
    );
    return suggestionResult;
  }
  if (suggestionResult.status ==
          Ntut8021xProvisioningStatus.approvalRejected ||
      suggestionResult.status ==
          Ntut8021xProvisioningStatus.approvalPending ||
      provisioning.suggestionPermissionState == 'disallowed') {
    await _clearSuggestionFallbackPrompt();
    return suggestionResult;
  }
  if (capabilities.isAndroid11OrNewer &&
      capabilities.canProvisionNtut8021xCompat) {
    await _stateStore.setPendingCompatPrompt(
      reason: Ntut8021xStoredPendingPromptReason.suggestionFallbackRequired,
      immediate: false,
    );
    return _copyResult(
      suggestionResult,
      pendingPromptReason:
          Ntut8021xPendingPromptReason.suggestionFallbackRequired,
    );
  }
  return suggestionResult;
}