package com.contentsquare.rn.csq.utils import com.contentsquare.api.model.Metadata import com.facebook.react.bridge.Arguments import com.facebook.react.bridge.WritableMap object MetadataConverter { /** * Converts CSQ Metadata object to WritableMap with specific property mappings for React Native bridge. * * @param metadata The CSQ Metadata object to convert * @return WritableMap with properly mapped CSQ metadata fields */ fun convertCSQMetadataToMap(metadata: Metadata): WritableMap { val map = Arguments.createMap() try { // Access properties directly from CSQ Metadata object val userId = metadata.userId if (userId != null) { map.putString("userID", userId) } else { map.putNull("userID") } val sessionId = metadata.sessionId if (sessionId != null) { map.putString("sessionID", sessionId) } else { map.putNull("sessionID") } val identity = metadata.identity if (identity != null) { map.putString("identity", identity) } else { map.putNull("identity") } val environmentId = metadata.environmentId if (environmentId != null) { map.putString("environmentID", environmentId) } else { map.putNull("environmentID") } val projectId = metadata.projectId if (projectId != null) { map.putString("projectID", projectId) } else { map.putNull("projectID") } val sessionReplayUrl = metadata.sessionReplayUrl if (sessionReplayUrl != null) { map.putString("sessionReplayURL", sessionReplayUrl) } else { map.putNull("sessionReplayURL") } } catch (e: Exception) { println("CSLIB Error accessing CSQ metadata: $e") e.printStackTrace() // If everything fails, return an empty map with null values map.putNull("userID") map.putNull("sessionID") map.putNull("identity") map.putNull("environmentID") map.putNull("projectID") map.putNull("sessionReplayURL") } return map } }