provisionNtut8021x method
Implementation
Future<Ntut8021xProvisioningResult> provisionNtut8021x() async {
final data = await getNtut8021xAssistantData();
if (!data.canProvisionAutomatically) {
return const Ntut8021xProvisioningResult.unsupported();
}
final provisioning = await _platform.provisionNtut8021x(
identity: data.identity!,
password: data.password!,
);
final suggestionResult = _provisioningResultFromDto(
provisioning,
defaultMode: Ntut8021xProvisioningMode.suggestion,
);
if (_isSuggestionSuccess(suggestionResult.status)) {
await _autoReprovision.enable();
await _stateStore.markProvisioned(
mode: Ntut8021xStoredProvisioningMode.suggestion,
);
return suggestionResult;
}
if (_shouldAutoFallbackToCompat(
capabilities: data.capabilities,
result: suggestionResult,
)) {
final compatResult = await saveNtut8021xToSystem(
identity: data.identity,
password: data.password,
pendingPromptReason:
Ntut8021xPendingPromptReason.suggestionFallbackRequired,
);
return Ntut8021xProvisioningResult(
status: compatResult.status,
androidSdkInt: compatResult.androidSdkInt,
usedHiddenCaPath: compatResult.usedHiddenCaPath,
lastProvisioningMode: compatResult.lastProvisioningMode,
pendingPromptReason: compatResult.pendingPromptReason,
wifiEnabled: compatResult.wifiEnabled,
networkSuggestionStatus: compatResult.networkSuggestionStatus,
approvalStatus: compatResult.approvalStatus,
compatResultCode: compatResult.compatResultCode,
compatNetworkResultCode: compatResult.compatNetworkResultCode,
compatNetworkResultCodes: compatResult.compatNetworkResultCodes,
message: compatResult.message,
usedCompatFallback: true,
);
}
if (data.capabilities.isAndroid11OrNewer &&
data.capabilities.canProvisionNtut8021xCompat) {
await _stateStore.setPendingCompatPrompt(
reason: Ntut8021xStoredPendingPromptReason.suggestionFallbackRequired,
immediate: false,
);
return _copyResultWithPendingReason(
suggestionResult,
Ntut8021xPendingPromptReason.suggestionFallbackRequired,
);
}
return suggestionResult;
}