refreshCredentials method
- required String identity,
- required String password,
- String? previousIdentity,
- String? previousPassword,
override
Implementation
@override
Future<void> refreshCredentials({
required String identity,
required String password,
String? previousIdentity,
String? previousPassword,
}) async {
final storedState = await _stateStore.read();
if (storedState.lastProvisioningMode ==
Ntut8021xStoredProvisioningMode.compat ||
storedState.lastProvisioningMode ==
Ntut8021xStoredProvisioningMode.direct) {
await _stateStore.setPendingCompatPrompt(
reason: Ntut8021xStoredPendingPromptReason.credentialChanged,
immediate: true,
);
_logCampusWifi(
'Queued NTUT-802.1X update prompt because provisioning requires consent',
);
return;
}
final capabilities = await getCapabilities();
if (capabilities.isSuggestionPermissionDisallowed) {
await _clearSuggestionFallbackPrompt();
_logCampusWifi(
'Skipped NTUT-802.1X refresh: Wi-Fi control permission is required',
);
return;
}
if (!capabilities.isSupported ||
!capabilities.canProvisionNtut8021xSuggestion) {
await _queueCompatPromptIfAvailable(capabilities);
_logCampusWifi(
'Skipped NTUT-802.1X auto reprovision because suggestion mode is unavailable',
);
return;
}
_logCampusWifi(
'Starting NTUT-802.1X auto reprovision; '
'hasPreviousCredentials=${previousIdentity != null && previousPassword != null}',
);
final result = await _platform.provisionNtut8021x(
identity: identity,
password: password,
previousIdentity: previousIdentity,
previousPassword: previousPassword,
);
if (result.status == 'approvalRejected' ||
result.status == 'approvalPending' ||
result.suggestionPermissionState == 'disallowed') {
await _clearSuggestionFallbackPrompt();
_logCampusWifi(
'Skipped compatibility fallback: Wi-Fi suggestion approval is required',
);
return;
}
if (result.status == 'success' || result.status == 'successPendingWifi') {
await _stateStore.markProvisioned(
mode: Ntut8021xStoredProvisioningMode.suggestion,
);
_logCampusWifi('Finished NTUT-802.1X auto reprovision successfully');
return;
}
await _queueCompatPromptIfAvailable(capabilities);
_logCampusWifi(
'Finished NTUT-802.1X auto reprovision without silent success; '
'result=${result.status}',
);
}