apiConfigured method

Future<bool> apiConfigured()

Checks if the API is configured by verifying the presence of user, password, and clientIdentifier in secure storage.

Returns true if all values are present and credentials are set successfully, otherwise returns false.

This method also reapplies persisted group keys, which makes it the recommended session-restore call during app startup.

Implementation

Future<bool> apiConfigured() async {
  final user = await getValueFromSecureStorage(
    key: 'user',
  );

  final password = await getValueFromSecureStorage(
    key: 'password',
  );

  final clientIdentifier = await getValueFromSecureStorage(
    key: 'clientIdentifier',
  );

  if (user == null || password == null || clientIdentifier == null) {
    return false;
  }

  final response = await setCredentials(
    user: user,
    password: password,
    clientIdentifier: int.parse(clientIdentifier),
  );

  if (response.isLeft()) {
    return false;
  }

  final groupKeyA = await getValueFromSecureStorage(
    key: 'groupKeyA',
  );

  final groupKeyB = await getValueFromSecureStorage(
    key: 'groupKeyB',
  );

  final parsedGroupKeyA = int.tryParse(groupKeyA ?? '');
  if (parsedGroupKeyA == null || parsedGroupKeyA == 0) {
    await clearGroupKeyA();
  } else {
    await addGroupKeyA(groupKeyA: parsedGroupKeyA);
  }

  final parsedGroupKeyB = int.tryParse(groupKeyB ?? '');
  if (parsedGroupKeyB == null || parsedGroupKeyB == 0) {
    await clearGroupKeyB();
  } else {
    await addGroupKeyB(groupKeyB: parsedGroupKeyB);
  }

  return response.asRight;
}