getNtut8021xAssistantData method

Future<Ntut8021xAssistantData> getNtut8021xAssistantData()

Implementation

Future<Ntut8021xAssistantData> getNtut8021xAssistantData() async {
  final capabilities = await _getCapabilities();
  final storedState = await _stateStore.read();
  final lastProvisioningMode = _provisioningModeFromStored(
    storedState.lastProvisioningMode,
  );
  final pendingPromptReason =
      _pendingPromptReasonFromStored(storedState.pendingCompatPromptReason) ??
      _deriveImplicitPendingReason(
        capabilities: capabilities,
        lastProvisioningMode: lastProvisioningMode,
      );

  if (!capabilities.isSupported) {
    return Ntut8021xAssistantData(
      status: Ntut8021xAssistantStatus.unsupportedPlatform,
      capabilities: capabilities,
      screenMode: Ntut8021xScreenMode.manualOnly,
      lastProvisioningMode: lastProvisioningMode,
      pendingPromptReason: pendingPromptReason,
      showImmediatePromptCandidate: storedState.pendingImmediatePrompt,
    );
  }

  final user = await _authRepository.getLocalUser();
  if (user == null) {
    return Ntut8021xAssistantData(
      status: Ntut8021xAssistantStatus.notLoggedIn,
      capabilities: capabilities,
      screenMode: Ntut8021xScreenMode.normal,
      lastProvisioningMode: lastProvisioningMode,
      pendingPromptReason: pendingPromptReason,
      showImmediatePromptCandidate: storedState.pendingImmediatePrompt,
    );
  }

  final credentials = await _authRepository.getStoredCredentials();
  final status = credentials == null
      ? Ntut8021xAssistantStatus.credentialsMissing
      : Ntut8021xAssistantStatus.ready;

  return Ntut8021xAssistantData(
    status: status,
    capabilities: capabilities,
    screenMode: _deriveScreenMode(
      status: status,
      capabilities: capabilities,
      pendingPromptReason: pendingPromptReason,
    ),
    lastProvisioningMode: lastProvisioningMode,
    pendingPromptReason: pendingPromptReason,
    showImmediatePromptCandidate: storedState.pendingImmediatePrompt,
    identity: credentials?.username ?? user.studentId,
    password: credentials?.password,
  );
}