@@ -2,7 +2,7 @@ import React, { useLayoutEffect, useMemo, useRef, useState } from 'react';
22import { Platform } from 'react-native' ;
33import { SafeAreaProvider } from 'react-native-safe-area-context' ;
44
5- import Sendbird from '@sendbird/chat' ;
5+ import Sendbird , { DeviceOsPlatform , SendbirdPlatform , SendbirdProduct } from '@sendbird/chat' ;
66import { GroupChannelModule } from '@sendbird/chat/groupChannel' ;
77import { OpenChannelModule } from '@sendbird/chat/openChannel' ;
88import type { HeaderStyleContextType , UIKitTheme } from '@sendbird/uikit-react-native-foundation' ;
@@ -169,13 +169,11 @@ const SendbirdUIKitContainer = ({
169169 }
170170
171171 return ( ) => {
172- if ( ! isFirstMount ) {
173- unsubscribes . current . forEach ( ( u ) => {
174- try {
175- u ( ) ;
176- } catch { }
177- } ) ;
178- }
172+ unsubscribes . current . forEach ( ( u ) => {
173+ try {
174+ u ( ) ;
175+ } catch { }
176+ } ) ;
179177 } ;
180178 } , [ appId , internalStorage ] ) ;
181179
@@ -288,7 +286,17 @@ const initializeSendbird = (
288286 chatSDK = onInitialized ( chatSDK ) ;
289287 }
290288
291- if ( SendbirdUIKit . VERSION ) {
289+ const platform = getDeviceOSPlatform ( ) ;
290+ if ( SendbirdUIKit . VERSION && platform ) {
291+ const deviceOSInfo = { platform, version : String ( Platform . Version ) } ;
292+ const customData = { platform_version : getReactNativeVersion ( ) } ;
293+ const uikitExtension = {
294+ product : SendbirdProduct . UIKIT_CHAT ,
295+ version : SendbirdUIKit . VERSION ,
296+ platform : SendbirdPlatform . REACT_NATIVE ,
297+ } ;
298+
299+ chatSDK . addSendbirdExtensions ( [ uikitExtension ] , deviceOSInfo , customData ) ;
292300 chatSDK . addExtension ( 'sb_uikit' , SendbirdUIKit . VERSION ) ;
293301 }
294302
@@ -331,4 +339,24 @@ const initializeSendbird = (
331339 return { chatSDK, unsubscribes } ;
332340} ;
333341
342+ function getDeviceOSPlatform ( ) {
343+ switch ( Platform . OS ) {
344+ case 'android' :
345+ return DeviceOsPlatform . ANDROID ;
346+ case 'ios' :
347+ return DeviceOsPlatform . IOS ;
348+ case 'web' :
349+ return DeviceOsPlatform . WEB ;
350+ case 'windows' :
351+ return DeviceOsPlatform . WINDOWS ;
352+ default :
353+ return undefined ;
354+ }
355+ }
356+
357+ function getReactNativeVersion ( ) {
358+ const { major, minor, patch } = Platform . constants . reactNativeVersion ;
359+ return `${ major } .${ minor } .${ patch } ` ;
360+ }
361+
334362export default SendbirdUIKitContainer ;
0 commit comments