updateIdentities method

Future updateIdentities(
  1. Map<String, dynamic> parameters
)

Implementation

Future<dynamic> updateIdentities(Map<String, dynamic> parameters) async {
  try {
    final identitiesMap = parameters['identities'] as Map<String, dynamic>;
    final identityMap = IdentityMap();

    // Process each namespace in the identities map
    identitiesMap.forEach((namespace, items) {
      if (items is List) {
        for (var item in items) {
          if (item is Map<String, dynamic>) {
            AuthenticatedState authState;
            switch (item['authenticatedState'] as String) {
              case 'authenticated':
                authState = AuthenticatedState.AUTHENTICATED;
                break;
              case 'ambiguous':
                authState = AuthenticatedState.AMBIGUOUS;
                break;
              case 'loggedOut':
                authState = AuthenticatedState.LOGGED_OUT;
                break;
              default:
                authState = AuthenticatedState.AMBIGUOUS;
            }

            final identityItem = IdentityItem(
              item['id'] as String,
              authState,
              item['primary'] as bool? ?? false,
            );
            try {
              identityMap.addItem(identityItem, namespace);
            } catch (e) {
              throw StateError('Failed to add identity item: $e');
            }
          }
        }
      }
    });
    // Perform the update with a workaround for the hanging issue
    try {
      final updateFuture = Identity.updateIdentities(identityMap);
      final timeoutFuture = Future.delayed(Duration(seconds: 1));
      await Future.any([updateFuture, timeoutFuture]);
      final afterUpdateIdentities = await Identity.identities;

      return afterUpdateIdentities;
    } catch (e) {
      print('Error during identity update: $e');
      throw StateError('Failed to update identities: $e');
    }
  } catch (e) {
    debugPrint('Error updating Adobe Analytics Identities: $e');
    throw StateError('Error updating Adobe Analytics Identities: $e');
  }
}