identify method

  1. @override
Future<void> identify({
  1. required IdentifyEvent event,
})
override

Implementation

@override
Future<void> identify({required IdentifyEvent event}) async {
  super.identify(event: event);

  if (!_isInitialized) {
    throw IForeventsAPIException(
      'Integration not initialized. Call init() first.',
    );
  }

  try {
    final requestData = _buildIdentifyRequest(event);

    final response = await _dio.post('/events/identify', data: requestData);

    if (response.data != null) {
      final responseData = response.data as Map<String, dynamic>;
      final user = responseData['user'] as Map<String, dynamic>?;

      if (user != null) {
        final userUUID = user['uuid'] as String?;

        if (userUUID != null) {
          await _storage.write(_userUUIDKey, userUUID);

          if (config.enableLogging) {
            developer.log(
              'UserUUID updated and saved: $userUUID',
              name: 'IForeventsAPI',
            );
          }
        }

        _isIdentified = true;

        if (config.enableLogging) {
          developer.log(
            'User identified successfully. User: $userUUID',
            name: 'IForeventsAPI',
          );
        }
      }
    }
  } catch (e) {
    if (config.enableLogging) {
      developer.log(
        'Failed to identify user: ${event.customID}',
        name: 'IForeventsAPI',
        error: e,
      );
    }

    if (config.throwOnError) {
      rethrow;
    }
  }
}