reprovisionIfEnabled method
Implementation
Future<void> reprovisionIfEnabled({
required String identity,
required String password,
String? previousIdentity,
String? previousPassword,
}) async {
final enabled = await isEnabled();
if (!enabled) {
_logCampusWifi(
'Skipped NTUT-802.1X auto reprovision because the flag is disabled',
);
return;
}
final storedState = await _stateStore.read();
if (storedState.lastProvisioningMode ==
Ntut8021xStoredProvisioningMode.none) {
_logCampusWifi(
'Skipped NTUT-802.1X auto reprovision because no provisioning mode is stored',
);
return;
}
if (previousIdentity == identity && previousPassword == password) {
_logCampusWifi(
'Skipped NTUT-802.1X auto reprovision because credentials did not change',
);
return;
}
if (storedState.lastProvisioningMode ==
Ntut8021xStoredProvisioningMode.compat) {
await _stateStore.setPendingCompatPrompt(
reason: Ntut8021xStoredPendingPromptReason.credentialChanged,
immediate: true,
);
_logCampusWifi(
'Queued NTUT-802.1X compat prompt because last provisioning used compat mode',
);
return;
}
final capabilities = await _platform.getCapabilities();
if (!capabilities.canProvisionNtut8021xSuggestion) {
await _queueCompatPromptIfAvailable(capabilities, immediate: true);
_logCampusWifi(
'Skipped NTUT-802.1X auto reprovision because suggestion mode is unavailable',
);
return;
}
if (capabilities.suggestionPermissionState == 'disallowed') {
await _queueCompatPromptIfAvailable(capabilities, immediate: true);
_logCampusWifi(
'Queued NTUT-802.1X compat prompt because suggestion permission is disallowed',
);
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 (_isSuggestionSuccess(result.status)) {
await _stateStore.markProvisioned(
mode: Ntut8021xStoredProvisioningMode.suggestion,
);
_logCampusWifi('Finished NTUT-802.1X auto reprovision successfully');
return;
}
await _queueCompatPromptIfAvailable(capabilities, immediate: true);
_logCampusWifi(
'Finished NTUT-802.1X auto reprovision without silent success; '
'result=${result.status}',
);
}