establishSession method

Future<void> establishSession({
  1. required String apiKey,
  2. required String kycLevel,
  3. String? firstName,
  4. String? lastName,
  5. String? uniqueId,
  6. String? phoneNumber,
  7. String? email,
  8. String? i18n,
})

Implementation

Future<void> establishSession({
  required String apiKey,
  required String kycLevel,
  String? firstName,
  String? lastName,
  String? uniqueId,
  String? phoneNumber,
  String? email,
  String? i18n,
}) async {
  state = state.copyWith(isEstablishingSession: true);

  try {
    ApiClient.shared.apiKey = apiKey;

    final branding = await ApiClient.shared.establishSession(
      apiKey: apiKey,
      kycLevel: kycLevel,
      firstName: firstName,
      lastName: lastName,
      uniqueId: uniqueId,
      phoneNumber: phoneNumber,
      emailAddress: email,
      i18n: i18n,
    );

    state = state.copyWith(
      branding: branding,
      isEstablishingSession: false,
    );

    _ref.read(webSocketManagerProvider.notifier).setupConnection(
      baseURL: ApiClient.shared.websocketURL ?? "",
      sessionToken: ApiClient.shared.sessionToken,
    );
  } catch (e) {
    state = state.copyWith(
      isEstablishingSession: false,
    );
    reportError(e.toString());
  }
}