updateIdentities method
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');
}
}