@sendbird/uikit-react-native 1.1.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/README.md +1 -1
  2. package/lib/commonjs/components/ChatFlatList.js +10 -8
  3. package/lib/commonjs/components/ChatFlatList.js.map +1 -1
  4. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +3 -1
  5. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
  6. package/lib/commonjs/containers/SendbirdUIKitContainer.js +12 -15
  7. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  8. package/lib/commonjs/contexts/SendbirdChat.js +9 -9
  9. package/lib/commonjs/contexts/SendbirdChat.js.map +1 -1
  10. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js +4 -4
  11. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
  12. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  13. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js +4 -2
  14. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
  15. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +4 -2
  16. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  17. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js +9 -11
  18. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  19. package/lib/commonjs/domain/groupChannelUserList/types.js.map +1 -1
  20. package/lib/commonjs/fragments/createGroupChannelCreateFragment.js +7 -6
  21. package/lib/commonjs/fragments/createGroupChannelCreateFragment.js.map +1 -1
  22. package/lib/commonjs/fragments/createGroupChannelFragment.js +12 -12
  23. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  24. package/lib/commonjs/fragments/createGroupChannelMembersFragment.js +4 -4
  25. package/lib/commonjs/fragments/createGroupChannelMembersFragment.js.map +1 -1
  26. package/lib/commonjs/hooks/useConnection.js +35 -34
  27. package/lib/commonjs/hooks/useConnection.js.map +1 -1
  28. package/lib/commonjs/hooks/usePushTokenRegistration.js +2 -2
  29. package/lib/commonjs/hooks/usePushTokenRegistration.js.map +1 -1
  30. package/lib/commonjs/index.js +9 -7
  31. package/lib/commonjs/index.js.map +1 -1
  32. package/lib/commonjs/libs/InternalLocalCacheStorage.js +8 -0
  33. package/lib/commonjs/libs/InternalLocalCacheStorage.js.map +1 -1
  34. package/lib/commonjs/platform/createFileService.native.js +1 -3
  35. package/lib/commonjs/platform/createFileService.native.js.map +1 -1
  36. package/lib/commonjs/version.js +1 -1
  37. package/lib/commonjs/version.js.map +1 -1
  38. package/lib/module/components/ChatFlatList.js +10 -8
  39. package/lib/module/components/ChatFlatList.js.map +1 -1
  40. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +3 -1
  41. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
  42. package/lib/module/containers/SendbirdUIKitContainer.js +10 -15
  43. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  44. package/lib/module/contexts/SendbirdChat.js +10 -10
  45. package/lib/module/contexts/SendbirdChat.js.map +1 -1
  46. package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js +5 -5
  47. package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
  48. package/lib/module/domain/groupChannel/types.js.map +1 -1
  49. package/lib/module/domain/groupChannelList/component/GroupChannelListList.js +3 -2
  50. package/lib/module/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
  51. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +3 -2
  52. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  53. package/lib/module/domain/groupChannelSettings/module/moduleContext.js +9 -11
  54. package/lib/module/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  55. package/lib/module/domain/groupChannelUserList/types.js.map +1 -1
  56. package/lib/module/fragments/createGroupChannelCreateFragment.js +7 -6
  57. package/lib/module/fragments/createGroupChannelCreateFragment.js.map +1 -1
  58. package/lib/module/fragments/createGroupChannelFragment.js +12 -12
  59. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  60. package/lib/module/fragments/createGroupChannelMembersFragment.js +4 -4
  61. package/lib/module/fragments/createGroupChannelMembersFragment.js.map +1 -1
  62. package/lib/module/hooks/useConnection.js +35 -35
  63. package/lib/module/hooks/useConnection.js.map +1 -1
  64. package/lib/module/hooks/usePushTokenRegistration.js +2 -2
  65. package/lib/module/hooks/usePushTokenRegistration.js.map +1 -1
  66. package/lib/module/index.js +2 -1
  67. package/lib/module/index.js.map +1 -1
  68. package/lib/module/libs/InternalLocalCacheStorage.js +7 -0
  69. package/lib/module/libs/InternalLocalCacheStorage.js.map +1 -1
  70. package/lib/module/platform/createFileService.native.js +1 -2
  71. package/lib/module/platform/createFileService.native.js.map +1 -1
  72. package/lib/module/version.js +1 -1
  73. package/lib/module/version.js.map +1 -1
  74. package/lib/typescript/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.d.ts +2 -2
  75. package/lib/typescript/src/components/MessageRenderer/index.d.ts +1 -1
  76. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +1 -1
  77. package/lib/typescript/src/contexts/SendbirdChat.d.ts +1 -1
  78. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/index.d.ts +3 -3
  79. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +6 -6
  80. package/lib/typescript/src/domain/groupChannel/types.d.ts +3 -3
  81. package/lib/typescript/src/domain/groupChannelUserList/types.d.ts +2 -2
  82. package/lib/typescript/src/hooks/useContext.d.ts +5 -5
  83. package/lib/typescript/src/index.d.ts +3 -1
  84. package/lib/typescript/src/libs/InternalLocalCacheStorage.d.ts +2 -0
  85. package/lib/typescript/src/version.d.ts +1 -1
  86. package/package.json +20 -8
  87. package/src/components/ChatFlatList.tsx +5 -4
  88. package/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.tsx +5 -3
  89. package/src/containers/SendbirdUIKitContainer.tsx +13 -9
  90. package/src/contexts/SendbirdChat.tsx +18 -13
  91. package/src/domain/groupChannel/component/GroupChannelInput/index.tsx +5 -5
  92. package/src/domain/groupChannel/types.ts +6 -6
  93. package/src/domain/groupChannelList/component/GroupChannelListList.tsx +3 -2
  94. package/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.tsx +3 -2
  95. package/src/domain/groupChannelSettings/module/moduleContext.tsx +7 -15
  96. package/src/domain/groupChannelUserList/types.ts +3 -3
  97. package/src/fragments/createGroupChannelCreateFragment.tsx +8 -7
  98. package/src/fragments/createGroupChannelFragment.tsx +4 -12
  99. package/src/fragments/createGroupChannelMembersFragment.tsx +4 -3
  100. package/src/hooks/useConnection.ts +40 -43
  101. package/src/hooks/usePushTokenRegistration.ts +2 -2
  102. package/src/index.ts +3 -5
  103. package/src/libs/InternalLocalCacheStorage.ts +5 -0
  104. package/src/platform/createFileService.native.ts +1 -2
  105. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","Logger","useSendbirdChat","usePushTokenRegistration","cacheStrictCodes","useConnection","sdk","setCurrentUser","features","registerPushTokenForCurrentUser","unregisterPushTokenForCurrentUser","connect","userId","opts","Promise","resolve","reject","callback","user","error","isCacheEnabled","some","code","warn","message","clearCachedData","catch","e","_user","nickname","debug","updateCurrentUserInfo","currentUser","profileUrl","then","updatedUser","autoPushTokenRegistrationEnabled","accessToken","disconnect","undefined","reconnect"],"sources":["useConnection.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport type Sendbird from 'sendbird';\n\nimport { Logger, SendbirdUser } from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from './useContext';\nimport usePushTokenRegistration from './usePushTokenRegistration';\n\ntype ConnectOptions = { nickname?: string; accessToken?: string };\nconst cacheStrictCodes = [400300, 400301, 400302, 400310];\n\nconst useConnection = () => {\n const { sdk, setCurrentUser, features } = useSendbirdChat();\n const { registerPushTokenForCurrentUser, unregisterPushTokenForCurrentUser } = usePushTokenRegistration();\n\n const connect = useCallback(\n async (userId: string, opts?: ConnectOptions): Promise<SendbirdUser> => {\n return new Promise((resolve, reject) => {\n const callback: Sendbird.userCallback = async (user, error) => {\n if (error && sdk.isCacheEnabled && cacheStrictCodes.some((code) => error.code === code)) {\n Logger.warn('[useConnection]', 'connect failure', error.message, error.code);\n Logger.warn('[useConnection]', 'clear cached-data');\n await sdk.clearCachedData().catch((e) => Logger.warn('[useConnection]', 'clear cached-data failure', e));\n return reject(error);\n }\n\n if (user) {\n let _user = user;\n\n if (opts?.nickname) {\n Logger.debug('[useConnection]', 'nickname-sync start:', opts.nickname);\n await sdk\n .updateCurrentUserInfo(opts.nickname, sdk.currentUser.profileUrl)\n .then((updatedUser) => (_user = updatedUser))\n .catch((e) => Logger.warn('[useConnection]', 'nickname-sync failure', e));\n }\n\n if (features.autoPushTokenRegistrationEnabled) {\n Logger.debug('[useConnection]', 'autoPushTokenRegistration enabled, register for current user');\n await registerPushTokenForCurrentUser().catch((e) => {\n Logger.warn('[useConnection]', 'autoPushToken Registration failure', e);\n });\n }\n\n Logger.debug('[useConnection]', 'connected!');\n setCurrentUser(_user);\n return resolve(_user);\n }\n\n if (error) {\n Logger.warn('[useConnection]', 'connect failure', error.message, error.code);\n return reject(error);\n }\n };\n\n Logger.debug('[useConnection]', 'connect start:', userId);\n if (opts?.accessToken) sdk.connect(userId, opts.accessToken, callback);\n else sdk.connect(userId, callback);\n });\n },\n [sdk, registerPushTokenForCurrentUser, features.autoPushTokenRegistrationEnabled],\n );\n\n const disconnect = useCallback(async () => {\n Logger.debug('[useConnection]', 'disconnect start');\n\n if (features.autoPushTokenRegistrationEnabled) {\n Logger.debug('[useConnection]', 'autoPushTokenRegistration enabled, unregister for current user');\n await unregisterPushTokenForCurrentUser().catch((e) => {\n Logger.warn('[useConnection]', 'autoPushToken unregister failure', e);\n });\n }\n\n await sdk.disconnect();\n setCurrentUser(undefined);\n Logger.debug('[useConnection]', 'disconnected!');\n }, [sdk, unregisterPushTokenForCurrentUser, features.autoPushTokenRegistrationEnabled]);\n\n return { connect, disconnect, reconnect: () => sdk.reconnect() };\n};\n\nexport default useConnection;\n"],"mappings":"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"}
1
+ {"version":3,"names":["useCallback","Logger","useSendbirdChat","usePushTokenRegistration","cacheRestrictCodes","useConnection","sdk","setCurrentUser","features","registerPushTokenForCurrentUser","unregisterPushTokenForCurrentUser","connect","userId","opts","debug","user","accessToken","nickname","updateCurrentUserInfo","then","updatedUser","catch","e","warn","autoPushTokenRegistrationEnabled","error","isCacheEnabled","some","code","message","clearCachedData","currentUser","disconnect","undefined","reconnect"],"sources":["useConnection.ts"],"sourcesContent":["import { useCallback } from 'react';\n\nimport { Logger, SendbirdError, SendbirdUser } from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from './useContext';\nimport usePushTokenRegistration from './usePushTokenRegistration';\n\ntype ConnectOptions = { nickname?: string; accessToken?: string };\nconst cacheRestrictCodes = [400300, 400301, 400302, 400310];\n\nconst useConnection = () => {\n const { sdk, setCurrentUser, features } = useSendbirdChat();\n const { registerPushTokenForCurrentUser, unregisterPushTokenForCurrentUser } = usePushTokenRegistration();\n\n const connect = useCallback(\n async (userId: string, opts?: ConnectOptions): Promise<SendbirdUser> => {\n try {\n Logger.debug('[useConnection]', 'connect start:', userId);\n let user = await sdk.connect(userId, opts?.accessToken);\n\n if (opts?.nickname) {\n Logger.debug('[useConnection]', 'nickname-sync start:', opts.nickname);\n await sdk\n .updateCurrentUserInfo({ nickname: opts.nickname })\n .then((updatedUser) => (user = updatedUser))\n .catch((e) => Logger.warn('[useConnection]', 'nickname-sync failure', e));\n }\n\n if (features.autoPushTokenRegistrationEnabled) {\n Logger.debug('[useConnection]', 'autoPushTokenRegistration enabled, register for current user');\n await registerPushTokenForCurrentUser().catch((e) => {\n Logger.warn('[useConnection]', 'autoPushToken Registration failure', e);\n });\n }\n\n Logger.debug('[useConnection]', 'connected! (online)');\n setCurrentUser(user);\n\n return user;\n } catch (e) {\n const error = e as unknown as SendbirdError;\n\n if (sdk.isCacheEnabled) {\n if (cacheRestrictCodes.some((code) => error.code === code)) {\n Logger.warn('[useConnection]', 'offline connect restricted', error.message, error.code);\n Logger.warn('[useConnection]', 'clear cached-data');\n await sdk.clearCachedData().catch((e) => Logger.warn('[useConnection]', 'clear cached-data failure', e));\n } else if (sdk.currentUser) {\n Logger.debug('[useConnection]', 'connected! (offline)');\n setCurrentUser(sdk.currentUser);\n return sdk.currentUser;\n }\n }\n\n Logger.warn('[useConnection]', 'connect failure', error.message, error.code);\n throw error;\n }\n },\n [sdk, registerPushTokenForCurrentUser, features.autoPushTokenRegistrationEnabled],\n );\n\n const disconnect = useCallback(async () => {\n Logger.debug('[useConnection]', 'disconnect start');\n\n if (features.autoPushTokenRegistrationEnabled) {\n Logger.debug('[useConnection]', 'autoPushTokenRegistration enabled, unregister for current user');\n await unregisterPushTokenForCurrentUser().catch((e) => {\n Logger.warn('[useConnection]', 'autoPushToken unregister failure', e);\n });\n }\n\n await sdk.disconnect().then(() => setCurrentUser(undefined));\n Logger.debug('[useConnection]', 'disconnected!');\n }, [sdk, unregisterPushTokenForCurrentUser, features.autoPushTokenRegistrationEnabled]);\n\n return { connect, disconnect, reconnect: () => sdk.reconnect() };\n};\n\nexport default useConnection;\n"],"mappings":"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"}
@@ -14,10 +14,10 @@ const usePushTokenRegistration = () => {
14
14
  const [registerToken, unregisterToken, getToken] = useIIFE(() => {
15
15
  return [Platform.select({
16
16
  ios: token => sdk.registerAPNSPushTokenForCurrentUser(token),
17
- default: token => sdk.registerGCMPushTokenForCurrentUser(token)
17
+ default: token => sdk.registerFCMPushTokenForCurrentUser(token)
18
18
  }), Platform.select({
19
19
  ios: token => sdk.unregisterAPNSPushTokenForCurrentUser(token),
20
- default: token => sdk.unregisterGCMPushTokenForCurrentUser(token)
20
+ default: token => sdk.unregisterFCMPushTokenForCurrentUser(token)
21
21
  }), Platform.select({
22
22
  ios: notificationService.getAPNSToken,
23
23
  default: notificationService.getFCMToken
@@ -1 +1 @@
1
- {"version":3,"names":["useRef","Platform","Logger","useFreshCallback","useIIFE","usePlatformService","useSendbirdChat","usePushTokenRegistration","sdk","notificationService","refreshListener","registerToken","unregisterToken","getToken","select","ios","token","registerAPNSPushTokenForCurrentUser","default","registerGCMPushTokenForCurrentUser","unregisterAPNSPushTokenForCurrentUser","unregisterGCMPushTokenForCurrentUser","getAPNSToken","getFCMToken","registerPushTokenForCurrentUser","hasPermission","hasPushPermission","pushPermission","requestPushPermission","warn","log","current","onTokenRefresh","unregisterPushTokenForCurrentUser"],"sources":["usePushTokenRegistration.ts"],"sourcesContent":["import { useRef } from 'react';\nimport { Platform } from 'react-native';\n\nimport { Logger, useFreshCallback, useIIFE } from '@sendbird/uikit-utils';\n\nimport { usePlatformService, useSendbirdChat } from './useContext';\n\nconst usePushTokenRegistration = () => {\n const { sdk } = useSendbirdChat();\n const { notificationService } = usePlatformService();\n\n const refreshListener = useRef<() => void>();\n const [registerToken, unregisterToken, getToken] = useIIFE(() => {\n return [\n Platform.select({\n ios: (token: string) => sdk.registerAPNSPushTokenForCurrentUser(token),\n default: (token: string) => sdk.registerGCMPushTokenForCurrentUser(token),\n }),\n Platform.select({\n ios: (token: string) => sdk.unregisterAPNSPushTokenForCurrentUser(token),\n default: (token: string) => sdk.unregisterGCMPushTokenForCurrentUser(token),\n }),\n Platform.select({\n ios: notificationService.getAPNSToken,\n default: notificationService.getFCMToken,\n }),\n ];\n });\n\n const registerPushTokenForCurrentUser = useFreshCallback(async () => {\n // Check and request push permission\n const hasPermission = await notificationService.hasPushPermission();\n if (!hasPermission) {\n const pushPermission = await notificationService.requestPushPermission();\n if (!pushPermission) {\n Logger.warn('[usePushTokenRegistration]', 'Not granted push permission');\n return;\n }\n }\n\n // Register device token\n const token = await getToken();\n if (token) {\n Logger.log('[usePushTokenRegistration]', 'registered token:', token);\n registerToken(token);\n }\n\n // Remove listener\n refreshListener.current = notificationService.onTokenRefresh(registerToken);\n });\n\n const unregisterPushTokenForCurrentUser = useFreshCallback(async () => {\n const token = await getToken();\n if (token) {\n unregisterToken(token);\n Logger.log('[usePushTokenRegistration]', 'unregistered token:', token);\n }\n refreshListener.current?.();\n });\n\n return { registerPushTokenForCurrentUser, unregisterPushTokenForCurrentUser };\n};\n\nexport default usePushTokenRegistration;\n"],"mappings":"AAAA,SAASA,MAAT,QAAuB,OAAvB;AACA,SAASC,QAAT,QAAyB,cAAzB;AAEA,SAASC,MAAT,EAAiBC,gBAAjB,EAAmCC,OAAnC,QAAkD,uBAAlD;AAEA,SAASC,kBAAT,EAA6BC,eAA7B,QAAoD,cAApD;;AAEA,MAAMC,wBAAwB,GAAG,MAAM;EACrC,MAAM;IAAEC;EAAF,IAAUF,eAAe,EAA/B;EACA,MAAM;IAAEG;EAAF,IAA0BJ,kBAAkB,EAAlD;EAEA,MAAMK,eAAe,GAAGV,MAAM,EAA9B;EACA,MAAM,CAACW,aAAD,EAAgBC,eAAhB,EAAiCC,QAAjC,IAA6CT,OAAO,CAAC,MAAM;IAC/D,OAAO,CACLH,QAAQ,CAACa,MAAT,CAAgB;MACdC,GAAG,EAAGC,KAAD,IAAmBR,GAAG,CAACS,mCAAJ,CAAwCD,KAAxC,CADV;MAEdE,OAAO,EAAGF,KAAD,IAAmBR,GAAG,CAACW,kCAAJ,CAAuCH,KAAvC;IAFd,CAAhB,CADK,EAKLf,QAAQ,CAACa,MAAT,CAAgB;MACdC,GAAG,EAAGC,KAAD,IAAmBR,GAAG,CAACY,qCAAJ,CAA0CJ,KAA1C,CADV;MAEdE,OAAO,EAAGF,KAAD,IAAmBR,GAAG,CAACa,oCAAJ,CAAyCL,KAAzC;IAFd,CAAhB,CALK,EASLf,QAAQ,CAACa,MAAT,CAAgB;MACdC,GAAG,EAAEN,mBAAmB,CAACa,YADX;MAEdJ,OAAO,EAAET,mBAAmB,CAACc;IAFf,CAAhB,CATK,CAAP;EAcD,CAfyD,CAA1D;EAiBA,MAAMC,+BAA+B,GAAGrB,gBAAgB,CAAC,YAAY;IACnE;IACA,MAAMsB,aAAa,GAAG,MAAMhB,mBAAmB,CAACiB,iBAApB,EAA5B;;IACA,IAAI,CAACD,aAAL,EAAoB;MAClB,MAAME,cAAc,GAAG,MAAMlB,mBAAmB,CAACmB,qBAApB,EAA7B;;MACA,IAAI,CAACD,cAAL,EAAqB;QACnBzB,MAAM,CAAC2B,IAAP,CAAY,4BAAZ,EAA0C,6BAA1C;QACA;MACD;IACF,CATkE,CAWnE;;;IACA,MAAMb,KAAK,GAAG,MAAMH,QAAQ,EAA5B;;IACA,IAAIG,KAAJ,EAAW;MACTd,MAAM,CAAC4B,GAAP,CAAW,4BAAX,EAAyC,mBAAzC,EAA8Dd,KAA9D;MACAL,aAAa,CAACK,KAAD,CAAb;IACD,CAhBkE,CAkBnE;;;IACAN,eAAe,CAACqB,OAAhB,GAA0BtB,mBAAmB,CAACuB,cAApB,CAAmCrB,aAAnC,CAA1B;EACD,CApBuD,CAAxD;EAsBA,MAAMsB,iCAAiC,GAAG9B,gBAAgB,CAAC,YAAY;IAAA;;IACrE,MAAMa,KAAK,GAAG,MAAMH,QAAQ,EAA5B;;IACA,IAAIG,KAAJ,EAAW;MACTJ,eAAe,CAACI,KAAD,CAAf;MACAd,MAAM,CAAC4B,GAAP,CAAW,4BAAX,EAAyC,qBAAzC,EAAgEd,KAAhE;IACD;;IACD,yBAAAN,eAAe,CAACqB,OAAhB,qFAAArB,eAAe;EAChB,CAPyD,CAA1D;EASA,OAAO;IAAEc,+BAAF;IAAmCS;EAAnC,CAAP;AACD,CAtDD;;AAwDA,eAAe1B,wBAAf"}
1
+ {"version":3,"names":["useRef","Platform","Logger","useFreshCallback","useIIFE","usePlatformService","useSendbirdChat","usePushTokenRegistration","sdk","notificationService","refreshListener","registerToken","unregisterToken","getToken","select","ios","token","registerAPNSPushTokenForCurrentUser","default","registerFCMPushTokenForCurrentUser","unregisterAPNSPushTokenForCurrentUser","unregisterFCMPushTokenForCurrentUser","getAPNSToken","getFCMToken","registerPushTokenForCurrentUser","hasPermission","hasPushPermission","pushPermission","requestPushPermission","warn","log","current","onTokenRefresh","unregisterPushTokenForCurrentUser"],"sources":["usePushTokenRegistration.ts"],"sourcesContent":["import { useRef } from 'react';\nimport { Platform } from 'react-native';\n\nimport { Logger, useFreshCallback, useIIFE } from '@sendbird/uikit-utils';\n\nimport { usePlatformService, useSendbirdChat } from './useContext';\n\nconst usePushTokenRegistration = () => {\n const { sdk } = useSendbirdChat();\n const { notificationService } = usePlatformService();\n\n const refreshListener = useRef<() => void>();\n const [registerToken, unregisterToken, getToken] = useIIFE(() => {\n return [\n Platform.select({\n ios: (token: string) => sdk.registerAPNSPushTokenForCurrentUser(token),\n default: (token: string) => sdk.registerFCMPushTokenForCurrentUser(token),\n }),\n Platform.select({\n ios: (token: string) => sdk.unregisterAPNSPushTokenForCurrentUser(token),\n default: (token: string) => sdk.unregisterFCMPushTokenForCurrentUser(token),\n }),\n Platform.select({\n ios: notificationService.getAPNSToken,\n default: notificationService.getFCMToken,\n }),\n ];\n });\n\n const registerPushTokenForCurrentUser = useFreshCallback(async () => {\n // Check and request push permission\n const hasPermission = await notificationService.hasPushPermission();\n if (!hasPermission) {\n const pushPermission = await notificationService.requestPushPermission();\n if (!pushPermission) {\n Logger.warn('[usePushTokenRegistration]', 'Not granted push permission');\n return;\n }\n }\n\n // Register device token\n const token = await getToken();\n if (token) {\n Logger.log('[usePushTokenRegistration]', 'registered token:', token);\n registerToken(token);\n }\n\n // Remove listener\n refreshListener.current = notificationService.onTokenRefresh(registerToken);\n });\n\n const unregisterPushTokenForCurrentUser = useFreshCallback(async () => {\n const token = await getToken();\n if (token) {\n unregisterToken(token);\n Logger.log('[usePushTokenRegistration]', 'unregistered token:', token);\n }\n refreshListener.current?.();\n });\n\n return { registerPushTokenForCurrentUser, unregisterPushTokenForCurrentUser };\n};\n\nexport default usePushTokenRegistration;\n"],"mappings":"AAAA,SAASA,MAAT,QAAuB,OAAvB;AACA,SAASC,QAAT,QAAyB,cAAzB;AAEA,SAASC,MAAT,EAAiBC,gBAAjB,EAAmCC,OAAnC,QAAkD,uBAAlD;AAEA,SAASC,kBAAT,EAA6BC,eAA7B,QAAoD,cAApD;;AAEA,MAAMC,wBAAwB,GAAG,MAAM;EACrC,MAAM;IAAEC;EAAF,IAAUF,eAAe,EAA/B;EACA,MAAM;IAAEG;EAAF,IAA0BJ,kBAAkB,EAAlD;EAEA,MAAMK,eAAe,GAAGV,MAAM,EAA9B;EACA,MAAM,CAACW,aAAD,EAAgBC,eAAhB,EAAiCC,QAAjC,IAA6CT,OAAO,CAAC,MAAM;IAC/D,OAAO,CACLH,QAAQ,CAACa,MAAT,CAAgB;MACdC,GAAG,EAAGC,KAAD,IAAmBR,GAAG,CAACS,mCAAJ,CAAwCD,KAAxC,CADV;MAEdE,OAAO,EAAGF,KAAD,IAAmBR,GAAG,CAACW,kCAAJ,CAAuCH,KAAvC;IAFd,CAAhB,CADK,EAKLf,QAAQ,CAACa,MAAT,CAAgB;MACdC,GAAG,EAAGC,KAAD,IAAmBR,GAAG,CAACY,qCAAJ,CAA0CJ,KAA1C,CADV;MAEdE,OAAO,EAAGF,KAAD,IAAmBR,GAAG,CAACa,oCAAJ,CAAyCL,KAAzC;IAFd,CAAhB,CALK,EASLf,QAAQ,CAACa,MAAT,CAAgB;MACdC,GAAG,EAAEN,mBAAmB,CAACa,YADX;MAEdJ,OAAO,EAAET,mBAAmB,CAACc;IAFf,CAAhB,CATK,CAAP;EAcD,CAfyD,CAA1D;EAiBA,MAAMC,+BAA+B,GAAGrB,gBAAgB,CAAC,YAAY;IACnE;IACA,MAAMsB,aAAa,GAAG,MAAMhB,mBAAmB,CAACiB,iBAApB,EAA5B;;IACA,IAAI,CAACD,aAAL,EAAoB;MAClB,MAAME,cAAc,GAAG,MAAMlB,mBAAmB,CAACmB,qBAApB,EAA7B;;MACA,IAAI,CAACD,cAAL,EAAqB;QACnBzB,MAAM,CAAC2B,IAAP,CAAY,4BAAZ,EAA0C,6BAA1C;QACA;MACD;IACF,CATkE,CAWnE;;;IACA,MAAMb,KAAK,GAAG,MAAMH,QAAQ,EAA5B;;IACA,IAAIG,KAAJ,EAAW;MACTd,MAAM,CAAC4B,GAAP,CAAW,4BAAX,EAAyC,mBAAzC,EAA8Dd,KAA9D;MACAL,aAAa,CAACK,KAAD,CAAb;IACD,CAhBkE,CAkBnE;;;IACAN,eAAe,CAACqB,OAAhB,GAA0BtB,mBAAmB,CAACuB,cAApB,CAAmCrB,aAAnC,CAA1B;EACD,CApBuD,CAAxD;EAsBA,MAAMsB,iCAAiC,GAAG9B,gBAAgB,CAAC,YAAY;IAAA;;IACrE,MAAMa,KAAK,GAAG,MAAMH,QAAQ,EAA5B;;IACA,IAAIG,KAAJ,EAAW;MACTJ,eAAe,CAACI,KAAD,CAAf;MACAd,MAAM,CAAC4B,GAAP,CAAW,4BAAX,EAAyC,qBAAzC,EAAgEd,KAAhE;IACD;;IACD,yBAAAN,eAAe,CAACqB,OAAhB,qFAAArB,eAAe;EAChB,CAPyD,CAA1D;EASA,OAAO;IAAEc,+BAAF;IAAmCS;EAAnC,CAAP;AACD,CAtDD;;AAwDA,eAAe1B,wBAAf"}
@@ -53,7 +53,8 @@ export * from './domain/userList';
53
53
  export * from './domain/groupChannelUserList/types';
54
54
  /** UIKit **/
55
55
 
56
- export { default as SendbirdUIKitContainer, SendbirdUIKit, SendbirdUIKitContainerProps } from './containers/SendbirdUIKitContainer';
56
+ export { default as SendbirdUIKitContainer, SendbirdUIKit } from './containers/SendbirdUIKitContainer';
57
+ export { default as SBUError } from './libs/SBUError';
57
58
  export * from './types';
58
59
  Logger.setLogLevel(__DEV__ ? 'warn' : 'none');
59
60
  Logger.setTitle(`[UIKIT_${Platform.OS}]`);
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","Logger","default","MessageRenderer","ChannelCover","ChatFlatList","FileViewer","NewMessagesButton","ProviderLayout","ScrollToBottomButton","StatusComposition","TypedPlaceholder","UserActionBar","UserSelectableBar","createGroupChannelCreateFragment","createGroupChannelFragment","createGroupChannelSettingsFragment","createGroupChannelInviteFragment","createGroupChannelListFragment","createGroupChannelMembersFragment","SendbirdChatContext","SendbirdChatProvider","PlatformServiceContext","PlatformServiceProvider","LocalizationContext","LocalizationProvider","useConnection","usePushTokenRegistration","useLocalization","usePlatformService","useSendbirdChat","StringSetEn","createBaseStringSet","createNativeFileService","createNativeClipboardService","createNativeNotificationService","createNativeMediaService","createExpoFileService","createExpoClipboardService","createExpoNotificationService","createExpoMediaService","SendbirdUIKitContainer","SendbirdUIKit","SendbirdUIKitContainerProps","setLogLevel","__DEV__","setTitle","OS"],"sources":["index.ts"],"sourcesContent":["/** Components **/\nimport { Platform } from 'react-native';\n\nimport { Logger } from '@sendbird/uikit-utils';\n\nexport { default as MessageRenderer } from './components/MessageRenderer';\nexport { default as ChannelCover } from './components/ChannelCover';\nexport { default as ChatFlatList } from './components/ChatFlatList';\nexport { default as FileViewer } from './components/FileViewer';\nexport { default as NewMessagesButton } from './components/NewMessagesButton';\nexport { default as ProviderLayout } from './components/ProviderLayout';\nexport { default as ScrollToBottomButton } from './components/ScrollToBottomButton';\nexport { default as StatusComposition } from './components/StatusComposition';\nexport { default as TypedPlaceholder } from './components/TypedPlaceholder';\nexport { default as UserActionBar } from './components/UserActionBar';\nexport { default as UserSelectableBar } from './components/UserSelectableBar';\n\n/** Fragments **/\nexport { default as createGroupChannelCreateFragment } from './fragments/createGroupChannelCreateFragment';\nexport { default as createGroupChannelFragment } from './fragments/createGroupChannelFragment';\nexport { default as createGroupChannelSettingsFragment } from './fragments/createGroupChannelSettingsFragment';\nexport { default as createGroupChannelInviteFragment } from './fragments/createGroupChannelInviteFragment';\nexport { default as createGroupChannelListFragment } from './fragments/createGroupChannelListFragment';\nexport { default as createGroupChannelMembersFragment } from './fragments/createGroupChannelMembersFragment';\n\n/** Context **/\nexport { SendbirdChatContext, SendbirdChatProvider } from './contexts/SendbirdChat';\nexport { PlatformServiceContext, PlatformServiceProvider } from './contexts/PlatformService';\nexport { LocalizationContext, LocalizationProvider } from './contexts/Localization';\n\n/** Hooks **/\nexport { default as useConnection } from './hooks/useConnection';\nexport { default as usePushTokenRegistration } from './hooks/usePushTokenRegistration';\nexport { useLocalization, usePlatformService, useSendbirdChat } from './hooks/useContext';\n\n/** Localization **/\nexport { default as StringSetEn } from './localization/StringSet.en';\nexport { createBaseStringSet } from './localization/StringSet.type';\nexport type { StringSet } from './localization/StringSet.type';\n\n/** Platform API **/\nexport { default as createNativeFileService } from './platform/createFileService.native';\nexport { default as createNativeClipboardService } from './platform/createClipboardService.native';\nexport { default as createNativeNotificationService } from './platform/createNotificationService.native';\nexport { default as createNativeMediaService } from './platform/createMediaService.native';\nexport { default as createExpoFileService } from './platform/createFileService.expo';\nexport { default as createExpoClipboardService } from './platform/createClipboardService.expo';\nexport { default as createExpoNotificationService } from './platform/createNotificationService.expo';\nexport { default as createExpoMediaService } from './platform/createMediaService.expo';\n\nexport type {\n FileServiceInterface,\n ClipboardServiceInterface,\n FilePickerServiceInterface,\n FileSystemServiceInterface,\n SaveOptions,\n OpenDocumentOptions,\n OpenCameraOptions,\n OpenMediaLibraryOptions,\n OpenResultListener,\n DownloadedPath,\n Unsubscribe,\n FilePickerResponse,\n FileType,\n NotificationServiceInterface,\n} from './platform/types';\n\n/** Domain **/\nexport * from './domain/groupChannel';\nexport type {\n GroupChannelProps,\n GroupChannelModule,\n GroupChannelFragment,\n GroupChannelContextsType,\n} from './domain/groupChannel/types';\n\nexport * from './domain/groupChannelSettings';\nexport type {\n GroupChannelSettingsProps,\n GroupChannelSettingsModule,\n GroupChannelSettingsFragment,\n GroupChannelSettingsContextsType,\n} from './domain/groupChannelSettings/types';\n\nexport * from './domain/groupChannelList';\nexport type {\n GroupChannelType,\n GroupChannelListProps,\n GroupChannelListModule,\n GroupChannelListFragment,\n GroupChannelListContextsType,\n} from './domain/groupChannelList/types';\n\nexport * from './domain/userList';\nexport type { UserListProps, UserListModule, UserListContextsType } from './domain/userList/types';\nexport * from './domain/groupChannelUserList/types';\n\n/** UIKit **/\nexport {\n default as SendbirdUIKitContainer,\n SendbirdUIKit,\n SendbirdUIKitContainerProps,\n} from './containers/SendbirdUIKitContainer';\n\nexport * from './types';\n\nLogger.setLogLevel(__DEV__ ? 'warn' : 'none');\nLogger.setTitle(`[UIKIT_${Platform.OS}]`);\n"],"mappings":"AAAA;AACA,SAASA,QAAT,QAAyB,cAAzB;AAEA,SAASC,MAAT,QAAuB,uBAAvB;AAEA,SAASC,OAAO,IAAIC,eAApB,QAA2C,8BAA3C;AACA,SAASD,OAAO,IAAIE,YAApB,QAAwC,2BAAxC;AACA,SAASF,OAAO,IAAIG,YAApB,QAAwC,2BAAxC;AACA,SAASH,OAAO,IAAII,UAApB,QAAsC,yBAAtC;AACA,SAASJ,OAAO,IAAIK,iBAApB,QAA6C,gCAA7C;AACA,SAASL,OAAO,IAAIM,cAApB,QAA0C,6BAA1C;AACA,SAASN,OAAO,IAAIO,oBAApB,QAAgD,mCAAhD;AACA,SAASP,OAAO,IAAIQ,iBAApB,QAA6C,gCAA7C;AACA,SAASR,OAAO,IAAIS,gBAApB,QAA4C,+BAA5C;AACA,SAAST,OAAO,IAAIU,aAApB,QAAyC,4BAAzC;AACA,SAASV,OAAO,IAAIW,iBAApB,QAA6C,gCAA7C;AAEA;;AACA,SAASX,OAAO,IAAIY,gCAApB,QAA4D,8CAA5D;AACA,SAASZ,OAAO,IAAIa,0BAApB,QAAsD,wCAAtD;AACA,SAASb,OAAO,IAAIc,kCAApB,QAA8D,gDAA9D;AACA,SAASd,OAAO,IAAIe,gCAApB,QAA4D,8CAA5D;AACA,SAASf,OAAO,IAAIgB,8BAApB,QAA0D,4CAA1D;AACA,SAAShB,OAAO,IAAIiB,iCAApB,QAA6D,+CAA7D;AAEA;;AACA,SAASC,mBAAT,EAA8BC,oBAA9B,QAA0D,yBAA1D;AACA,SAASC,sBAAT,EAAiCC,uBAAjC,QAAgE,4BAAhE;AACA,SAASC,mBAAT,EAA8BC,oBAA9B,QAA0D,yBAA1D;AAEA;;AACA,SAASvB,OAAO,IAAIwB,aAApB,QAAyC,uBAAzC;AACA,SAASxB,OAAO,IAAIyB,wBAApB,QAAoD,kCAApD;AACA,SAASC,eAAT,EAA0BC,kBAA1B,EAA8CC,eAA9C,QAAqE,oBAArE;AAEA;;AACA,SAAS5B,OAAO,IAAI6B,WAApB,QAAuC,6BAAvC;AACA,SAASC,mBAAT,QAAoC,+BAApC;;AAGA;AACA,SAAS9B,OAAO,IAAI+B,uBAApB,QAAmD,qCAAnD;AACA,SAAS/B,OAAO,IAAIgC,4BAApB,QAAwD,0CAAxD;AACA,SAAShC,OAAO,IAAIiC,+BAApB,QAA2D,6CAA3D;AACA,SAASjC,OAAO,IAAIkC,wBAApB,QAAoD,sCAApD;AACA,SAASlC,OAAO,IAAImC,qBAApB,QAAiD,mCAAjD;AACA,SAASnC,OAAO,IAAIoC,0BAApB,QAAsD,wCAAtD;AACA,SAASpC,OAAO,IAAIqC,6BAApB,QAAyD,2CAAzD;AACA,SAASrC,OAAO,IAAIsC,sBAApB,QAAkD,oCAAlD;;AAmBA;AACA,cAAc,uBAAd;AAQA,cAAc,+BAAd;AAQA,cAAc,2BAAd;AASA,cAAc,mBAAd;AAEA,cAAc,qCAAd;AAEA;;AACA,SACEtC,OAAO,IAAIuC,sBADb,EAEEC,aAFF,EAGEC,2BAHF,QAIO,qCAJP;AAMA,cAAc,SAAd;AAEA1C,MAAM,CAAC2C,WAAP,CAAmBC,OAAO,GAAG,MAAH,GAAY,MAAtC;AACA5C,MAAM,CAAC6C,QAAP,CAAiB,UAAS9C,QAAQ,CAAC+C,EAAG,GAAtC"}
1
+ {"version":3,"names":["Platform","Logger","default","MessageRenderer","ChannelCover","ChatFlatList","FileViewer","NewMessagesButton","ProviderLayout","ScrollToBottomButton","StatusComposition","TypedPlaceholder","UserActionBar","UserSelectableBar","createGroupChannelCreateFragment","createGroupChannelFragment","createGroupChannelSettingsFragment","createGroupChannelInviteFragment","createGroupChannelListFragment","createGroupChannelMembersFragment","SendbirdChatContext","SendbirdChatProvider","PlatformServiceContext","PlatformServiceProvider","LocalizationContext","LocalizationProvider","useConnection","usePushTokenRegistration","useLocalization","usePlatformService","useSendbirdChat","StringSetEn","createBaseStringSet","createNativeFileService","createNativeClipboardService","createNativeNotificationService","createNativeMediaService","createExpoFileService","createExpoClipboardService","createExpoNotificationService","createExpoMediaService","SendbirdUIKitContainer","SendbirdUIKit","SBUError","setLogLevel","__DEV__","setTitle","OS"],"sources":["index.ts"],"sourcesContent":["/** Components **/\nimport { Platform } from 'react-native';\n\nimport { Logger } from '@sendbird/uikit-utils';\n\nexport { default as MessageRenderer } from './components/MessageRenderer';\nexport { default as ChannelCover } from './components/ChannelCover';\nexport { default as ChatFlatList } from './components/ChatFlatList';\nexport { default as FileViewer } from './components/FileViewer';\nexport { default as NewMessagesButton } from './components/NewMessagesButton';\nexport { default as ProviderLayout } from './components/ProviderLayout';\nexport { default as ScrollToBottomButton } from './components/ScrollToBottomButton';\nexport { default as StatusComposition } from './components/StatusComposition';\nexport { default as TypedPlaceholder } from './components/TypedPlaceholder';\nexport { default as UserActionBar } from './components/UserActionBar';\nexport { default as UserSelectableBar } from './components/UserSelectableBar';\n\n/** Fragments **/\nexport { default as createGroupChannelCreateFragment } from './fragments/createGroupChannelCreateFragment';\nexport { default as createGroupChannelFragment } from './fragments/createGroupChannelFragment';\nexport { default as createGroupChannelSettingsFragment } from './fragments/createGroupChannelSettingsFragment';\nexport { default as createGroupChannelInviteFragment } from './fragments/createGroupChannelInviteFragment';\nexport { default as createGroupChannelListFragment } from './fragments/createGroupChannelListFragment';\nexport { default as createGroupChannelMembersFragment } from './fragments/createGroupChannelMembersFragment';\n\n/** Context **/\nexport { SendbirdChatContext, SendbirdChatProvider } from './contexts/SendbirdChat';\nexport { PlatformServiceContext, PlatformServiceProvider } from './contexts/PlatformService';\nexport { LocalizationContext, LocalizationProvider } from './contexts/Localization';\n\n/** Hooks **/\nexport { default as useConnection } from './hooks/useConnection';\nexport { default as usePushTokenRegistration } from './hooks/usePushTokenRegistration';\nexport { useLocalization, usePlatformService, useSendbirdChat } from './hooks/useContext';\n\n/** Localization **/\nexport { default as StringSetEn } from './localization/StringSet.en';\nexport { createBaseStringSet } from './localization/StringSet.type';\nexport type { StringSet } from './localization/StringSet.type';\n\n/** Platform API **/\nexport { default as createNativeFileService } from './platform/createFileService.native';\nexport { default as createNativeClipboardService } from './platform/createClipboardService.native';\nexport { default as createNativeNotificationService } from './platform/createNotificationService.native';\nexport { default as createNativeMediaService } from './platform/createMediaService.native';\nexport { default as createExpoFileService } from './platform/createFileService.expo';\nexport { default as createExpoClipboardService } from './platform/createClipboardService.expo';\nexport { default as createExpoNotificationService } from './platform/createNotificationService.expo';\nexport { default as createExpoMediaService } from './platform/createMediaService.expo';\n\nexport type {\n FileServiceInterface,\n ClipboardServiceInterface,\n FilePickerServiceInterface,\n FileSystemServiceInterface,\n SaveOptions,\n OpenDocumentOptions,\n OpenCameraOptions,\n OpenMediaLibraryOptions,\n OpenResultListener,\n DownloadedPath,\n Unsubscribe,\n FilePickerResponse,\n FileType,\n NotificationServiceInterface,\n} from './platform/types';\n\n/** Domain **/\nexport * from './domain/groupChannel';\nexport type {\n GroupChannelProps,\n GroupChannelModule,\n GroupChannelFragment,\n GroupChannelContextsType,\n} from './domain/groupChannel/types';\n\nexport * from './domain/groupChannelSettings';\nexport type {\n GroupChannelSettingsProps,\n GroupChannelSettingsModule,\n GroupChannelSettingsFragment,\n GroupChannelSettingsContextsType,\n} from './domain/groupChannelSettings/types';\n\nexport * from './domain/groupChannelList';\nexport type {\n GroupChannelType,\n GroupChannelListProps,\n GroupChannelListModule,\n GroupChannelListFragment,\n GroupChannelListContextsType,\n} from './domain/groupChannelList/types';\n\nexport * from './domain/userList';\nexport type { UserListProps, UserListModule, UserListContextsType } from './domain/userList/types';\nexport * from './domain/groupChannelUserList/types';\n\n/** UIKit **/\nexport { default as SendbirdUIKitContainer, SendbirdUIKit } from './containers/SendbirdUIKitContainer';\nexport type { SendbirdUIKitContainerProps } from './containers/SendbirdUIKitContainer';\nexport { default as SBUError } from './libs/SBUError';\n\nexport * from './types';\n\nLogger.setLogLevel(__DEV__ ? 'warn' : 'none');\nLogger.setTitle(`[UIKIT_${Platform.OS}]`);\n"],"mappings":"AAAA;AACA,SAASA,QAAT,QAAyB,cAAzB;AAEA,SAASC,MAAT,QAAuB,uBAAvB;AAEA,SAASC,OAAO,IAAIC,eAApB,QAA2C,8BAA3C;AACA,SAASD,OAAO,IAAIE,YAApB,QAAwC,2BAAxC;AACA,SAASF,OAAO,IAAIG,YAApB,QAAwC,2BAAxC;AACA,SAASH,OAAO,IAAII,UAApB,QAAsC,yBAAtC;AACA,SAASJ,OAAO,IAAIK,iBAApB,QAA6C,gCAA7C;AACA,SAASL,OAAO,IAAIM,cAApB,QAA0C,6BAA1C;AACA,SAASN,OAAO,IAAIO,oBAApB,QAAgD,mCAAhD;AACA,SAASP,OAAO,IAAIQ,iBAApB,QAA6C,gCAA7C;AACA,SAASR,OAAO,IAAIS,gBAApB,QAA4C,+BAA5C;AACA,SAAST,OAAO,IAAIU,aAApB,QAAyC,4BAAzC;AACA,SAASV,OAAO,IAAIW,iBAApB,QAA6C,gCAA7C;AAEA;;AACA,SAASX,OAAO,IAAIY,gCAApB,QAA4D,8CAA5D;AACA,SAASZ,OAAO,IAAIa,0BAApB,QAAsD,wCAAtD;AACA,SAASb,OAAO,IAAIc,kCAApB,QAA8D,gDAA9D;AACA,SAASd,OAAO,IAAIe,gCAApB,QAA4D,8CAA5D;AACA,SAASf,OAAO,IAAIgB,8BAApB,QAA0D,4CAA1D;AACA,SAAShB,OAAO,IAAIiB,iCAApB,QAA6D,+CAA7D;AAEA;;AACA,SAASC,mBAAT,EAA8BC,oBAA9B,QAA0D,yBAA1D;AACA,SAASC,sBAAT,EAAiCC,uBAAjC,QAAgE,4BAAhE;AACA,SAASC,mBAAT,EAA8BC,oBAA9B,QAA0D,yBAA1D;AAEA;;AACA,SAASvB,OAAO,IAAIwB,aAApB,QAAyC,uBAAzC;AACA,SAASxB,OAAO,IAAIyB,wBAApB,QAAoD,kCAApD;AACA,SAASC,eAAT,EAA0BC,kBAA1B,EAA8CC,eAA9C,QAAqE,oBAArE;AAEA;;AACA,SAAS5B,OAAO,IAAI6B,WAApB,QAAuC,6BAAvC;AACA,SAASC,mBAAT,QAAoC,+BAApC;;AAGA;AACA,SAAS9B,OAAO,IAAI+B,uBAApB,QAAmD,qCAAnD;AACA,SAAS/B,OAAO,IAAIgC,4BAApB,QAAwD,0CAAxD;AACA,SAAShC,OAAO,IAAIiC,+BAApB,QAA2D,6CAA3D;AACA,SAASjC,OAAO,IAAIkC,wBAApB,QAAoD,sCAApD;AACA,SAASlC,OAAO,IAAImC,qBAApB,QAAiD,mCAAjD;AACA,SAASnC,OAAO,IAAIoC,0BAApB,QAAsD,wCAAtD;AACA,SAASpC,OAAO,IAAIqC,6BAApB,QAAyD,2CAAzD;AACA,SAASrC,OAAO,IAAIsC,sBAApB,QAAkD,oCAAlD;;AAmBA;AACA,cAAc,uBAAd;AAQA,cAAc,+BAAd;AAQA,cAAc,2BAAd;AASA,cAAc,mBAAd;AAEA,cAAc,qCAAd;AAEA;;AACA,SAAStC,OAAO,IAAIuC,sBAApB,EAA4CC,aAA5C,QAAiE,qCAAjE;AAEA,SAASxC,OAAO,IAAIyC,QAApB,QAAoC,iBAApC;AAEA,cAAc,SAAd;AAEA1C,MAAM,CAAC2C,WAAP,CAAmBC,OAAO,GAAG,MAAH,GAAY,MAAtC;AACA5C,MAAM,CAAC6C,QAAP,CAAiB,UAAS9C,QAAQ,CAAC+C,EAAG,GAAtC"}
@@ -1,6 +1,13 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
3
+ import { ASYNC_NOOP } from '@sendbird/uikit-utils';
1
4
  export default class InternalLocalCacheStorage {
2
5
  constructor(storage) {
3
6
  this.storage = storage;
7
+
8
+ _defineProperty(this, "clear", ASYNC_NOOP);
9
+
10
+ _defineProperty(this, "flushGetRequests", ASYNC_NOOP);
4
11
  }
5
12
 
6
13
  getAllKeys() {
@@ -1 +1 @@
1
- {"version":3,"names":["InternalLocalCacheStorage","constructor","storage","getAllKeys","getItem","key","removeItem","setItem","value","multiGet","keys","Promise","all","map","multiRemove","multiSet","keyValuePairs"],"sources":["InternalLocalCacheStorage.ts"],"sourcesContent":["import type { KeyValuePairGet, KeyValuePairSet, LocalCacheStorage } from '../types';\n\nexport default class InternalLocalCacheStorage implements LocalCacheStorage {\n constructor(private storage: LocalCacheStorage) {}\n\n getAllKeys() {\n return this.storage.getAllKeys();\n }\n\n getItem(key: string) {\n return this.storage.getItem(key);\n }\n\n removeItem(key: string) {\n return this.storage.removeItem(key);\n }\n\n setItem(key: string, value: string) {\n return this.storage.setItem(key, value);\n }\n\n async multiGet(keys: string[]) {\n if (this.storage.multiGet) {\n return this.storage.multiGet(keys);\n } else {\n return Promise.all(keys.map(async (key) => [key, await this.getItem(key)] as KeyValuePairGet));\n }\n }\n\n async multiRemove(keys: string[]) {\n if (this.storage.multiRemove) {\n await this.storage.multiRemove(keys);\n } else {\n await Promise.all(keys.map(async (key) => this.removeItem(key)));\n }\n }\n\n async multiSet(keyValuePairs: Array<KeyValuePairSet>) {\n if (this.storage.multiSet) {\n await this.storage.multiSet(keyValuePairs);\n } else {\n await Promise.all(keyValuePairs.map(([key, value]) => this.storage.setItem(key, value)));\n }\n }\n}\n"],"mappings":"AAEA,eAAe,MAAMA,yBAAN,CAA6D;EAC1EC,WAAW,CAASC,OAAT,EAAqC;IAAA,KAA5BA,OAA4B,GAA5BA,OAA4B;EAAE;;EAElDC,UAAU,GAAG;IACX,OAAO,KAAKD,OAAL,CAAaC,UAAb,EAAP;EACD;;EAEDC,OAAO,CAACC,GAAD,EAAc;IACnB,OAAO,KAAKH,OAAL,CAAaE,OAAb,CAAqBC,GAArB,CAAP;EACD;;EAEDC,UAAU,CAACD,GAAD,EAAc;IACtB,OAAO,KAAKH,OAAL,CAAaI,UAAb,CAAwBD,GAAxB,CAAP;EACD;;EAEDE,OAAO,CAACF,GAAD,EAAcG,KAAd,EAA6B;IAClC,OAAO,KAAKN,OAAL,CAAaK,OAAb,CAAqBF,GAArB,EAA0BG,KAA1B,CAAP;EACD;;EAEa,MAARC,QAAQ,CAACC,IAAD,EAAiB;IAC7B,IAAI,KAAKR,OAAL,CAAaO,QAAjB,EAA2B;MACzB,OAAO,KAAKP,OAAL,CAAaO,QAAb,CAAsBC,IAAtB,CAAP;IACD,CAFD,MAEO;MACL,OAAOC,OAAO,CAACC,GAAR,CAAYF,IAAI,CAACG,GAAL,CAAS,MAAOR,GAAP,IAAe,CAACA,GAAD,EAAM,MAAM,KAAKD,OAAL,CAAaC,GAAb,CAAZ,CAAxB,CAAZ,CAAP;IACD;EACF;;EAEgB,MAAXS,WAAW,CAACJ,IAAD,EAAiB;IAChC,IAAI,KAAKR,OAAL,CAAaY,WAAjB,EAA8B;MAC5B,MAAM,KAAKZ,OAAL,CAAaY,WAAb,CAAyBJ,IAAzB,CAAN;IACD,CAFD,MAEO;MACL,MAAMC,OAAO,CAACC,GAAR,CAAYF,IAAI,CAACG,GAAL,CAAS,MAAOR,GAAP,IAAe,KAAKC,UAAL,CAAgBD,GAAhB,CAAxB,CAAZ,CAAN;IACD;EACF;;EAEa,MAARU,QAAQ,CAACC,aAAD,EAAwC;IACpD,IAAI,KAAKd,OAAL,CAAaa,QAAjB,EAA2B;MACzB,MAAM,KAAKb,OAAL,CAAaa,QAAb,CAAsBC,aAAtB,CAAN;IACD,CAFD,MAEO;MACL,MAAML,OAAO,CAACC,GAAR,CAAYI,aAAa,CAACH,GAAd,CAAkB;QAAA,IAAC,CAACR,GAAD,EAAMG,KAAN,CAAD;QAAA,OAAkB,KAAKN,OAAL,CAAaK,OAAb,CAAqBF,GAArB,EAA0BG,KAA1B,CAAlB;MAAA,CAAlB,CAAZ,CAAN;IACD;EACF;;AAzCyE"}
1
+ {"version":3,"names":["ASYNC_NOOP","InternalLocalCacheStorage","constructor","storage","getAllKeys","getItem","key","removeItem","setItem","value","multiGet","keys","Promise","all","map","multiRemove","multiSet","keyValuePairs"],"sources":["InternalLocalCacheStorage.ts"],"sourcesContent":["import { ASYNC_NOOP } from '@sendbird/uikit-utils';\n\nimport type { KeyValuePairGet, KeyValuePairSet, LocalCacheStorage } from '../types';\n\nexport default class InternalLocalCacheStorage implements LocalCacheStorage {\n constructor(private storage: LocalCacheStorage) {}\n\n getAllKeys() {\n return this.storage.getAllKeys();\n }\n\n getItem(key: string) {\n return this.storage.getItem(key);\n }\n\n removeItem(key: string) {\n return this.storage.removeItem(key);\n }\n\n setItem(key: string, value: string) {\n return this.storage.setItem(key, value);\n }\n\n async multiGet(keys: string[]) {\n if (this.storage.multiGet) {\n return this.storage.multiGet(keys);\n } else {\n return Promise.all(keys.map(async (key) => [key, await this.getItem(key)] as KeyValuePairGet));\n }\n }\n\n async multiRemove(keys: string[]) {\n if (this.storage.multiRemove) {\n await this.storage.multiRemove(keys);\n } else {\n await Promise.all(keys.map(async (key) => this.removeItem(key)));\n }\n }\n\n async multiSet(keyValuePairs: Array<KeyValuePairSet>) {\n if (this.storage.multiSet) {\n await this.storage.multiSet(keyValuePairs);\n } else {\n await Promise.all(keyValuePairs.map(([key, value]) => this.storage.setItem(key, value)));\n }\n }\n\n clear = ASYNC_NOOP;\n flushGetRequests = ASYNC_NOOP;\n}\n"],"mappings":";;AAAA,SAASA,UAAT,QAA2B,uBAA3B;AAIA,eAAe,MAAMC,yBAAN,CAA6D;EAC1EC,WAAW,CAASC,OAAT,EAAqC;IAAA,KAA5BA,OAA4B,GAA5BA,OAA4B;;IAAA,+BA0CxCH,UA1CwC;;IAAA,0CA2C7BA,UA3C6B;EAAE;;EAElDI,UAAU,GAAG;IACX,OAAO,KAAKD,OAAL,CAAaC,UAAb,EAAP;EACD;;EAEDC,OAAO,CAACC,GAAD,EAAc;IACnB,OAAO,KAAKH,OAAL,CAAaE,OAAb,CAAqBC,GAArB,CAAP;EACD;;EAEDC,UAAU,CAACD,GAAD,EAAc;IACtB,OAAO,KAAKH,OAAL,CAAaI,UAAb,CAAwBD,GAAxB,CAAP;EACD;;EAEDE,OAAO,CAACF,GAAD,EAAcG,KAAd,EAA6B;IAClC,OAAO,KAAKN,OAAL,CAAaK,OAAb,CAAqBF,GAArB,EAA0BG,KAA1B,CAAP;EACD;;EAEa,MAARC,QAAQ,CAACC,IAAD,EAAiB;IAC7B,IAAI,KAAKR,OAAL,CAAaO,QAAjB,EAA2B;MACzB,OAAO,KAAKP,OAAL,CAAaO,QAAb,CAAsBC,IAAtB,CAAP;IACD,CAFD,MAEO;MACL,OAAOC,OAAO,CAACC,GAAR,CAAYF,IAAI,CAACG,GAAL,CAAS,MAAOR,GAAP,IAAe,CAACA,GAAD,EAAM,MAAM,KAAKD,OAAL,CAAaC,GAAb,CAAZ,CAAxB,CAAZ,CAAP;IACD;EACF;;EAEgB,MAAXS,WAAW,CAACJ,IAAD,EAAiB;IAChC,IAAI,KAAKR,OAAL,CAAaY,WAAjB,EAA8B;MAC5B,MAAM,KAAKZ,OAAL,CAAaY,WAAb,CAAyBJ,IAAzB,CAAN;IACD,CAFD,MAEO;MACL,MAAMC,OAAO,CAACC,GAAR,CAAYF,IAAI,CAACG,GAAL,CAAS,MAAOR,GAAP,IAAe,KAAKC,UAAL,CAAgBD,GAAhB,CAAxB,CAAZ,CAAN;IACD;EACF;;EAEa,MAARU,QAAQ,CAACC,aAAD,EAAwC;IACpD,IAAI,KAAKd,OAAL,CAAaa,QAAjB,EAA2B;MACzB,MAAM,KAAKb,OAAL,CAAaa,QAAb,CAAsBC,aAAtB,CAAN;IACD,CAFD,MAEO;MACL,MAAML,OAAO,CAACC,GAAR,CAAYI,aAAa,CAACH,GAAd,CAAkB;QAAA,IAAC,CAACR,GAAD,EAAMG,KAAN,CAAD;QAAA,OAAkB,KAAKN,OAAL,CAAaK,OAAb,CAAqBF,GAArB,EAA0BG,KAA1B,CAAlB;MAAA,CAAlB,CAAZ,CAAN;IACD;EACF;;AAzCyE"}
@@ -1,6 +1,5 @@
1
1
  import { Platform } from 'react-native';
2
- import { getFileExtension, getFileType } from '@sendbird/uikit-utils';
3
- import { normalizeFileName } from '@sendbird/uikit-utils/src/shared/regex';
2
+ import { getFileExtension, getFileType, normalizeFileName } from '@sendbird/uikit-utils';
4
3
  import SBUError from '../libs/SBUError';
5
4
  import fileTypeGuard from '../utils/fileTypeGuard';
6
5
  import nativePermissionGranted from '../utils/nativePermissionGranted';
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","getFileExtension","getFileType","normalizeFileName","SBUError","fileTypeGuard","nativePermissionGranted","getAndroidStoragePermissionsByAPILevel","permissionModule","OS","Version","PERMISSIONS","ANDROID","READ_MEDIA_AUDIO","READ_MEDIA_IMAGES","READ_MEDIA_VIDEO","READ_EXTERNAL_STORAGE","WRITE_EXTERNAL_STORAGE","createNativeFileService","imagePickerModule","documentPickerModule","mediaLibraryModule","fsModule","cameraPermissions","select","ios","IOS","CAMERA","MICROPHONE","android","default","mediaLibraryPermissions","MEDIA_LIBRARY","PHOTO_LIBRARY","NativeFileService","hasCameraPermission","status","checkMultiple","requestCameraPermission","requestMultiple","hasMediaLibraryPermission","requestMediaLibraryPermission","openCamera","options","hasPermission","granted","onOpenFailure","PERMISSIONS_DENIED","response","launchCamera","presentationStyle","cameraType","mediaType","didCancel","errorCode","DEVICE_UNAVAILABLE","Error","errorMessage","fileName","name","fileSize","size","type","uri","assets","openMediaLibrary","selectionLimit","launchImageLibrary","slice","map","openDocument","pickSingle","e","isCancel","isInProgress","UNKNOWN","save","basePath","Dirs","CacheDir","DocumentDir","downloadPath","extensionFromUrl","fileUrl","match","FileSystem","fetch","path","fileType","dirType","cpExternal"],"sources":["createFileService.native.ts"],"sourcesContent":["import type CameraRoll from '@react-native-community/cameraroll';\nimport { Platform } from 'react-native';\nimport type * as DocumentPicker from 'react-native-document-picker';\nimport type * as FileAccess from 'react-native-file-access';\nimport type * as ImagePicker from 'react-native-image-picker';\nimport type * as Permissions from 'react-native-permissions';\nimport type { Permission } from 'react-native-permissions';\n\nimport { getFileExtension, getFileType } from '@sendbird/uikit-utils';\nimport { normalizeFileName } from '@sendbird/uikit-utils/src/shared/regex';\n\nimport SBUError from '../libs/SBUError';\nimport fileTypeGuard from '../utils/fileTypeGuard';\nimport nativePermissionGranted from '../utils/nativePermissionGranted';\nimport type {\n FilePickerResponse,\n FileServiceInterface,\n OpenCameraOptions,\n OpenDocumentOptions,\n OpenMediaLibraryOptions,\n SaveOptions,\n} from './types';\n\nfunction getAndroidStoragePermissionsByAPILevel(permissionModule: typeof Permissions): Permission[] {\n if (Platform.OS !== 'android') return [];\n\n if (Platform.Version > 32) {\n return [\n permissionModule.PERMISSIONS.ANDROID.READ_MEDIA_AUDIO,\n permissionModule.PERMISSIONS.ANDROID.READ_MEDIA_IMAGES,\n permissionModule.PERMISSIONS.ANDROID.READ_MEDIA_VIDEO,\n ];\n }\n\n if (Platform.Version > 28) {\n return [permissionModule.PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE];\n }\n\n return [\n permissionModule.PERMISSIONS.ANDROID.WRITE_EXTERNAL_STORAGE,\n permissionModule.PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE,\n ];\n}\n\nconst createNativeFileService = ({\n imagePickerModule,\n documentPickerModule,\n permissionModule,\n mediaLibraryModule,\n fsModule,\n}: {\n imagePickerModule: typeof ImagePicker;\n documentPickerModule: typeof DocumentPicker;\n permissionModule: typeof Permissions;\n mediaLibraryModule: typeof CameraRoll;\n fsModule: typeof FileAccess;\n}): FileServiceInterface => {\n const cameraPermissions: Permission[] = Platform.select({\n ios: [permissionModule.PERMISSIONS.IOS.CAMERA, permissionModule.PERMISSIONS.IOS.MICROPHONE],\n android: [permissionModule.PERMISSIONS.ANDROID.CAMERA],\n default: [],\n });\n const mediaLibraryPermissions: Permission[] = Platform.select({\n ios: [permissionModule.PERMISSIONS.IOS.MEDIA_LIBRARY, permissionModule.PERMISSIONS.IOS.PHOTO_LIBRARY],\n android: getAndroidStoragePermissionsByAPILevel(permissionModule),\n default: [],\n });\n\n class NativeFileService implements FileServiceInterface {\n async hasCameraPermission(): Promise<boolean> {\n const status = await permissionModule.checkMultiple(cameraPermissions);\n return nativePermissionGranted(status);\n }\n async requestCameraPermission(): Promise<boolean> {\n const status = await permissionModule.requestMultiple(cameraPermissions);\n return nativePermissionGranted(status);\n }\n async hasMediaLibraryPermission(): Promise<boolean> {\n const status = await permissionModule.checkMultiple(mediaLibraryPermissions);\n return nativePermissionGranted(status);\n }\n async requestMediaLibraryPermission(): Promise<boolean> {\n const status = await permissionModule.requestMultiple(mediaLibraryPermissions);\n return nativePermissionGranted(status);\n }\n\n async openCamera(options?: OpenCameraOptions): Promise<FilePickerResponse> {\n const hasPermission = await this.hasCameraPermission();\n if (!hasPermission) {\n const granted = await this.requestCameraPermission();\n if (!granted) {\n options?.onOpenFailure?.(SBUError.PERMISSIONS_DENIED);\n return null;\n }\n }\n\n const response = await imagePickerModule.launchCamera({\n presentationStyle: 'fullScreen',\n cameraType: options?.cameraType ?? 'back',\n mediaType: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return 'photo';\n case 'video':\n return 'video';\n case 'all':\n return 'mixed';\n default:\n return 'photo';\n }\n })(),\n });\n if (response.didCancel) return null;\n if (response.errorCode === 'camera_unavailable') {\n options?.onOpenFailure?.(SBUError.DEVICE_UNAVAILABLE, new Error(response.errorMessage));\n return null;\n }\n\n const { fileName: name, fileSize: size, type, uri } = response.assets?.[0] ?? {};\n return fileTypeGuard({ uri, size, name, type });\n }\n async openMediaLibrary(options?: OpenMediaLibraryOptions): Promise<FilePickerResponse[] | null> {\n /**\n * NOTE: options.selectionLimit {@link https://github.com/react-native-image-picker/react-native-image-picker#options}\n * We do not support 0 (any number of files)\n **/\n const selectionLimit = options?.selectionLimit || 1;\n const hasPermission = await this.hasMediaLibraryPermission();\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission();\n if (!granted) {\n options?.onOpenFailure?.(SBUError.PERMISSIONS_DENIED);\n return null;\n }\n }\n\n const response = await imagePickerModule.launchImageLibrary({\n presentationStyle: 'fullScreen',\n selectionLimit,\n mediaType: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return 'photo';\n case 'video':\n return 'video';\n case 'all':\n return 'mixed';\n default:\n return 'photo';\n }\n })(),\n });\n if (response.didCancel) return null;\n if (response.errorCode === 'camera_unavailable') {\n options?.onOpenFailure?.(SBUError.DEVICE_UNAVAILABLE, new Error(response.errorMessage));\n return null;\n }\n\n return (response.assets || [])\n .slice(0, selectionLimit)\n .map(({ fileName: name, fileSize: size, type, uri }) => fileTypeGuard({ uri, size, name, type }));\n }\n async openDocument(options?: OpenDocumentOptions): Promise<FilePickerResponse> {\n try {\n const { uri, size, name, type } = await documentPickerModule.pickSingle();\n return fileTypeGuard({ uri, size, name, type });\n } catch (e) {\n if (!documentPickerModule.isCancel(e) && documentPickerModule.isInProgress(e)) {\n options?.onOpenFailure?.(SBUError.UNKNOWN, e);\n }\n return null;\n }\n }\n async save(options: SaveOptions): Promise<string> {\n const hasPermission = await this.hasMediaLibraryPermission();\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission();\n if (!granted) throw new Error('Permission not granted');\n }\n\n const basePath = Platform.select({ android: fsModule.Dirs.CacheDir, default: fsModule.Dirs.DocumentDir });\n let downloadPath = `${basePath}/${options.fileName}`;\n if (!getFileExtension(options.fileName)) {\n const extensionFromUrl = getFileExtension(options.fileUrl);\n if (getFileType(extensionFromUrl).match(/image|video/)) {\n downloadPath += extensionFromUrl;\n }\n }\n\n await fsModule.FileSystem.fetch(options.fileUrl, { path: downloadPath });\n const fileType = getFileType(getFileExtension(options.fileUrl));\n\n if (Platform.OS === 'ios' && (fileType === 'image' || fileType === 'video')) {\n const type = ({ 'image': 'photo', 'video': 'video' } as const)[fileType];\n await mediaLibraryModule.save(downloadPath, { type });\n }\n\n if (Platform.OS === 'android') {\n const dirType = { 'file': 'downloads', 'audio': 'audio', 'image': 'images', 'video': 'video' } as const;\n await fsModule.FileSystem.cpExternal(\n downloadPath,\n normalizeFileName(options.fileName, getFileExtension(options.fileUrl)),\n dirType[fileType],\n );\n }\n return downloadPath;\n }\n }\n\n return new NativeFileService();\n};\n\nexport default createNativeFileService;\n"],"mappings":"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"}
1
+ {"version":3,"names":["Platform","getFileExtension","getFileType","normalizeFileName","SBUError","fileTypeGuard","nativePermissionGranted","getAndroidStoragePermissionsByAPILevel","permissionModule","OS","Version","PERMISSIONS","ANDROID","READ_MEDIA_AUDIO","READ_MEDIA_IMAGES","READ_MEDIA_VIDEO","READ_EXTERNAL_STORAGE","WRITE_EXTERNAL_STORAGE","createNativeFileService","imagePickerModule","documentPickerModule","mediaLibraryModule","fsModule","cameraPermissions","select","ios","IOS","CAMERA","MICROPHONE","android","default","mediaLibraryPermissions","MEDIA_LIBRARY","PHOTO_LIBRARY","NativeFileService","hasCameraPermission","status","checkMultiple","requestCameraPermission","requestMultiple","hasMediaLibraryPermission","requestMediaLibraryPermission","openCamera","options","hasPermission","granted","onOpenFailure","PERMISSIONS_DENIED","response","launchCamera","presentationStyle","cameraType","mediaType","didCancel","errorCode","DEVICE_UNAVAILABLE","Error","errorMessage","fileName","name","fileSize","size","type","uri","assets","openMediaLibrary","selectionLimit","launchImageLibrary","slice","map","openDocument","pickSingle","e","isCancel","isInProgress","UNKNOWN","save","basePath","Dirs","CacheDir","DocumentDir","downloadPath","extensionFromUrl","fileUrl","match","FileSystem","fetch","path","fileType","dirType","cpExternal"],"sources":["createFileService.native.ts"],"sourcesContent":["import type CameraRoll from '@react-native-community/cameraroll';\nimport { Platform } from 'react-native';\nimport type * as DocumentPicker from 'react-native-document-picker';\nimport type * as FileAccess from 'react-native-file-access';\nimport type * as ImagePicker from 'react-native-image-picker';\nimport type * as Permissions from 'react-native-permissions';\nimport type { Permission } from 'react-native-permissions';\n\nimport { getFileExtension, getFileType, normalizeFileName } from '@sendbird/uikit-utils';\n\nimport SBUError from '../libs/SBUError';\nimport fileTypeGuard from '../utils/fileTypeGuard';\nimport nativePermissionGranted from '../utils/nativePermissionGranted';\nimport type {\n FilePickerResponse,\n FileServiceInterface,\n OpenCameraOptions,\n OpenDocumentOptions,\n OpenMediaLibraryOptions,\n SaveOptions,\n} from './types';\n\nfunction getAndroidStoragePermissionsByAPILevel(permissionModule: typeof Permissions): Permission[] {\n if (Platform.OS !== 'android') return [];\n\n if (Platform.Version > 32) {\n return [\n permissionModule.PERMISSIONS.ANDROID.READ_MEDIA_AUDIO,\n permissionModule.PERMISSIONS.ANDROID.READ_MEDIA_IMAGES,\n permissionModule.PERMISSIONS.ANDROID.READ_MEDIA_VIDEO,\n ];\n }\n\n if (Platform.Version > 28) {\n return [permissionModule.PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE];\n }\n\n return [\n permissionModule.PERMISSIONS.ANDROID.WRITE_EXTERNAL_STORAGE,\n permissionModule.PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE,\n ];\n}\n\nconst createNativeFileService = ({\n imagePickerModule,\n documentPickerModule,\n permissionModule,\n mediaLibraryModule,\n fsModule,\n}: {\n imagePickerModule: typeof ImagePicker;\n documentPickerModule: typeof DocumentPicker;\n permissionModule: typeof Permissions;\n mediaLibraryModule: typeof CameraRoll;\n fsModule: typeof FileAccess;\n}): FileServiceInterface => {\n const cameraPermissions: Permission[] = Platform.select({\n ios: [permissionModule.PERMISSIONS.IOS.CAMERA, permissionModule.PERMISSIONS.IOS.MICROPHONE],\n android: [permissionModule.PERMISSIONS.ANDROID.CAMERA],\n default: [],\n });\n const mediaLibraryPermissions: Permission[] = Platform.select({\n ios: [permissionModule.PERMISSIONS.IOS.MEDIA_LIBRARY, permissionModule.PERMISSIONS.IOS.PHOTO_LIBRARY],\n android: getAndroidStoragePermissionsByAPILevel(permissionModule),\n default: [],\n });\n\n class NativeFileService implements FileServiceInterface {\n async hasCameraPermission(): Promise<boolean> {\n const status = await permissionModule.checkMultiple(cameraPermissions);\n return nativePermissionGranted(status);\n }\n async requestCameraPermission(): Promise<boolean> {\n const status = await permissionModule.requestMultiple(cameraPermissions);\n return nativePermissionGranted(status);\n }\n async hasMediaLibraryPermission(): Promise<boolean> {\n const status = await permissionModule.checkMultiple(mediaLibraryPermissions);\n return nativePermissionGranted(status);\n }\n async requestMediaLibraryPermission(): Promise<boolean> {\n const status = await permissionModule.requestMultiple(mediaLibraryPermissions);\n return nativePermissionGranted(status);\n }\n\n async openCamera(options?: OpenCameraOptions): Promise<FilePickerResponse> {\n const hasPermission = await this.hasCameraPermission();\n if (!hasPermission) {\n const granted = await this.requestCameraPermission();\n if (!granted) {\n options?.onOpenFailure?.(SBUError.PERMISSIONS_DENIED);\n return null;\n }\n }\n\n const response = await imagePickerModule.launchCamera({\n presentationStyle: 'fullScreen',\n cameraType: options?.cameraType ?? 'back',\n mediaType: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return 'photo';\n case 'video':\n return 'video';\n case 'all':\n return 'mixed';\n default:\n return 'photo';\n }\n })(),\n });\n if (response.didCancel) return null;\n if (response.errorCode === 'camera_unavailable') {\n options?.onOpenFailure?.(SBUError.DEVICE_UNAVAILABLE, new Error(response.errorMessage));\n return null;\n }\n\n const { fileName: name, fileSize: size, type, uri } = response.assets?.[0] ?? {};\n return fileTypeGuard({ uri, size, name, type });\n }\n async openMediaLibrary(options?: OpenMediaLibraryOptions): Promise<FilePickerResponse[] | null> {\n /**\n * NOTE: options.selectionLimit {@link https://github.com/react-native-image-picker/react-native-image-picker#options}\n * We do not support 0 (any number of files)\n **/\n const selectionLimit = options?.selectionLimit || 1;\n const hasPermission = await this.hasMediaLibraryPermission();\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission();\n if (!granted) {\n options?.onOpenFailure?.(SBUError.PERMISSIONS_DENIED);\n return null;\n }\n }\n\n const response = await imagePickerModule.launchImageLibrary({\n presentationStyle: 'fullScreen',\n selectionLimit,\n mediaType: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return 'photo';\n case 'video':\n return 'video';\n case 'all':\n return 'mixed';\n default:\n return 'photo';\n }\n })(),\n });\n if (response.didCancel) return null;\n if (response.errorCode === 'camera_unavailable') {\n options?.onOpenFailure?.(SBUError.DEVICE_UNAVAILABLE, new Error(response.errorMessage));\n return null;\n }\n\n return (response.assets || [])\n .slice(0, selectionLimit)\n .map(({ fileName: name, fileSize: size, type, uri }) => fileTypeGuard({ uri, size, name, type }));\n }\n async openDocument(options?: OpenDocumentOptions): Promise<FilePickerResponse> {\n try {\n const { uri, size, name, type } = await documentPickerModule.pickSingle();\n return fileTypeGuard({ uri, size, name, type });\n } catch (e) {\n if (!documentPickerModule.isCancel(e) && documentPickerModule.isInProgress(e)) {\n options?.onOpenFailure?.(SBUError.UNKNOWN, e);\n }\n return null;\n }\n }\n async save(options: SaveOptions): Promise<string> {\n const hasPermission = await this.hasMediaLibraryPermission();\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission();\n if (!granted) throw new Error('Permission not granted');\n }\n\n const basePath = Platform.select({ android: fsModule.Dirs.CacheDir, default: fsModule.Dirs.DocumentDir });\n let downloadPath = `${basePath}/${options.fileName}`;\n if (!getFileExtension(options.fileName)) {\n const extensionFromUrl = getFileExtension(options.fileUrl);\n if (getFileType(extensionFromUrl).match(/image|video/)) {\n downloadPath += extensionFromUrl;\n }\n }\n\n await fsModule.FileSystem.fetch(options.fileUrl, { path: downloadPath });\n const fileType = getFileType(getFileExtension(options.fileUrl));\n\n if (Platform.OS === 'ios' && (fileType === 'image' || fileType === 'video')) {\n const type = ({ 'image': 'photo', 'video': 'video' } as const)[fileType];\n await mediaLibraryModule.save(downloadPath, { type });\n }\n\n if (Platform.OS === 'android') {\n const dirType = { 'file': 'downloads', 'audio': 'audio', 'image': 'images', 'video': 'video' } as const;\n await fsModule.FileSystem.cpExternal(\n downloadPath,\n normalizeFileName(options.fileName, getFileExtension(options.fileUrl)),\n dirType[fileType],\n );\n }\n return downloadPath;\n }\n }\n\n return new NativeFileService();\n};\n\nexport default createNativeFileService;\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- const VERSION = '1.1.2';
1
+ const VERSION = '2.0.0';
2
2
  export default VERSION;
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["const VERSION = '1.1.2';\nexport default VERSION;\n"],"mappings":"AAAA,MAAMA,OAAO,GAAG,OAAhB;AACA,eAAeA,OAAf"}
1
+ {"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["const VERSION = '2.0.0';\nexport default VERSION;\n"],"mappings":"AAAA,MAAMA,OAAO,GAAG,OAAhB;AACA,eAAeA,OAAf"}
@@ -1,7 +1,7 @@
1
- import type Sendbird from 'sendbird';
1
+ import type { OGMetaData } from '@sendbird/chat/message';
2
2
  import type { UserMessageProps } from './index';
3
3
  declare type Props = UserMessageProps & {
4
- ogMetaData: Sendbird.OGMetaData;
4
+ ogMetaData: OGMetaData;
5
5
  };
6
6
  declare const OpenGraphUserMessage: ({ message, variant, pressed, ogMetaData }: Props) => JSX.Element;
7
7
  export default OpenGraphUserMessage;
@@ -16,7 +16,7 @@ declare const _default: React.MemoExoticComponent<(props: {
16
16
  nextMessage?: SendbirdMessage | undefined;
17
17
  onPress?: (() => void) | undefined;
18
18
  onLongPress?: (() => void) | undefined;
19
- channel: import("sendbird").GroupChannel;
19
+ channel: import("@sendbird/chat/groupChannel").GroupChannel;
20
20
  currentUserId?: string | undefined;
21
21
  enableMessageGrouping: boolean;
22
22
  }) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null>;
@@ -5,7 +5,7 @@ import type { StringSet } from '../localization/StringSet.type';
5
5
  import type { ClipboardServiceInterface, FileServiceInterface, MediaServiceInterface, NotificationServiceInterface } from '../platform/types';
6
6
  import type { ErrorBoundaryProps, LocalCacheStorage } from '../types';
7
7
  export declare const SendbirdUIKit: Readonly<{
8
- VERSION: "1.1.2";
8
+ VERSION: "2.0.0";
9
9
  PLATFORM: string;
10
10
  }>;
11
11
  export declare type SendbirdUIKitContainerProps = React.PropsWithChildren<{
@@ -11,7 +11,7 @@ declare type Context = {
11
11
  sdk: SendbirdChatSDK;
12
12
  currentUser?: SendbirdUser;
13
13
  setCurrentUser: React.Dispatch<React.SetStateAction<SendbirdUser | undefined>>;
14
- updateCurrentUserInfo: (nickname: string, profile?: string | FileType) => Promise<SendbirdUser>;
14
+ updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;
15
15
  markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;
16
16
  features: {
17
17
  autoPushTokenRegistrationEnabled: boolean;
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
2
  declare const _default: React.MemoExoticComponent<(props: {
3
- channel: import("sendbird").GroupChannel;
3
+ channel: import("@sendbird/chat/groupChannel").GroupChannel;
4
4
  onSendFileMessage: (file: import("../../../..").FileType) => Promise<void>;
5
5
  onSendUserMessage: (text: string) => Promise<void>;
6
- onUpdateFileMessage: (editedFile: import("../../../..").FileType, message: import("sendbird").FileMessage) => Promise<void>;
7
- onUpdateUserMessage: (editedText: string, message: import("sendbird").UserMessage) => Promise<void>;
6
+ onUpdateFileMessage: (editedFile: import("../../../..").FileType, message: import("@sendbird/chat/message").FileMessage) => Promise<void>;
7
+ onUpdateUserMessage: (editedText: string, message: import("@sendbird/chat/message").UserMessage) => Promise<void>;
8
8
  }) => JSX.Element>;
9
9
  export default _default;
@@ -3,22 +3,22 @@ import type { SendbirdMessage } from '@sendbird/uikit-utils';
3
3
  declare const _default: React.MemoExoticComponent<({ currentUserId, channel, messages, renderMessage, nextMessages, newMessagesFromMembers, onBottomReached, onTopReached, renderNewMessagesButton, renderScrollToBottomButton, onResendFailedMessage, onDeleteMessage, onPressImageMessage, onPressMediaMessage, flatListProps, enableMessageGrouping, }: {
4
4
  enableMessageGrouping: boolean;
5
5
  currentUserId?: string | undefined;
6
- channel: import("sendbird").GroupChannel;
6
+ channel: import("@sendbird/chat/groupChannel").GroupChannel;
7
7
  messages: SendbirdMessage[];
8
8
  nextMessages: SendbirdMessage[];
9
9
  newMessagesFromMembers: SendbirdMessage[];
10
10
  onTopReached: () => void;
11
11
  onBottomReached: () => void;
12
- onResendFailedMessage: (failedMessage: import("sendbird").FileMessage | import("sendbird").UserMessage) => Promise<void>;
13
- onDeleteMessage: (message: import("sendbird").FileMessage | import("sendbird").UserMessage) => Promise<void>;
14
- onPressMediaMessage?: ((message: import("sendbird").FileMessage, deleteMessage: () => Promise<void>, uri: string) => void) | undefined;
12
+ onResendFailedMessage: (failedMessage: import("@sendbird/chat/message").FileMessage | import("@sendbird/chat/message").UserMessage) => Promise<void>;
13
+ onDeleteMessage: (message: import("@sendbird/chat/message").FileMessage | import("@sendbird/chat/message").UserMessage) => Promise<void>;
14
+ onPressMediaMessage?: ((message: import("@sendbird/chat/message").FileMessage, deleteMessage: () => Promise<void>, uri: string) => void) | undefined;
15
15
  renderMessage: (props: {
16
16
  message: SendbirdMessage;
17
17
  prevMessage?: SendbirdMessage | undefined;
18
18
  nextMessage?: SendbirdMessage | undefined;
19
19
  onPress?: (() => void) | undefined;
20
20
  onLongPress?: (() => void) | undefined;
21
- channel: import("sendbird").GroupChannel;
21
+ channel: import("@sendbird/chat/groupChannel").GroupChannel;
22
22
  currentUserId?: string | undefined;
23
23
  enableMessageGrouping: boolean;
24
24
  }) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null;
@@ -32,6 +32,6 @@ declare const _default: React.MemoExoticComponent<({ currentUserId, channel, mes
32
32
  onPress: () => void;
33
33
  }> | null;
34
34
  flatListProps?: Omit<import("react-native").FlatListProps<SendbirdMessage>, "data" | "renderItem"> | undefined;
35
- onPressImageMessage?: ((message: import("sendbird").FileMessage, uri: string) => void) | undefined;
35
+ onPressImageMessage?: ((message: import("@sendbird/chat/message").FileMessage, uri: string) => void) | undefined;
36
36
  }) => JSX.Element>;
37
37
  export default _default;
@@ -1,7 +1,7 @@
1
1
  import type React from 'react';
2
2
  import type { FlatListProps } from 'react-native';
3
3
  import type { UseGroupChannelMessagesOptions } from '@sendbird/uikit-chat-hooks';
4
- import type { SendbirdFileMessage, SendbirdFileMessageParams, SendbirdGroupChannel, SendbirdMessage, SendbirdUser, SendbirdUserMessage, SendbirdUserMessageParams } from '@sendbird/uikit-utils';
4
+ import type { SendbirdFileMessage, SendbirdFileMessageCreateParams, SendbirdGroupChannel, SendbirdMessage, SendbirdUser, SendbirdUserMessage, SendbirdUserMessageCreateParams } from '@sendbird/uikit-utils';
5
5
  import type { FileType } from '../../platform/types';
6
6
  import type { CommonComponent } from '../../types';
7
7
  export interface GroupChannelProps {
@@ -10,8 +10,8 @@ export interface GroupChannelProps {
10
10
  onChannelDeleted: () => void;
11
11
  onPressHeaderLeft: GroupChannelProps['Header']['onPressHeaderLeft'];
12
12
  onPressHeaderRight: GroupChannelProps['Header']['onPressHeaderRight'];
13
- onBeforeSendFileMessage?: (params: SendbirdFileMessageParams) => SendbirdFileMessageParams | Promise<SendbirdFileMessageParams>;
14
- onBeforeSendUserMessage?: (params: SendbirdUserMessageParams) => SendbirdUserMessageParams | Promise<SendbirdUserMessageParams>;
13
+ onBeforeSendFileMessage?: (params: SendbirdFileMessageCreateParams) => SendbirdFileMessageCreateParams | Promise<SendbirdFileMessageCreateParams>;
14
+ onBeforeSendUserMessage?: (params: SendbirdUserMessageCreateParams) => SendbirdUserMessageCreateParams | Promise<SendbirdUserMessageCreateParams>;
15
15
  onPressMediaMessage?: GroupChannelProps['MessageList']['onPressMediaMessage'];
16
16
  renderMessage?: GroupChannelProps['MessageList']['renderMessage'];
17
17
  renderNewMessagesButton?: GroupChannelProps['MessageList']['renderNewMessagesButton'];
@@ -1,5 +1,5 @@
1
1
  import type { UseUserListOptions } from '@sendbird/uikit-chat-hooks';
2
- import type { SendbirdGroupChannel, SendbirdGroupChannelParams } from '@sendbird/uikit-utils';
2
+ import type { SendbirdGroupChannel, SendbirdGroupChannelCreateParams } from '@sendbird/uikit-utils';
3
3
  import type { CommonComponent } from '../../types';
4
4
  import type { GroupChannelType } from '../groupChannelList/types';
5
5
  import type { UserListProps } from '../userList/types';
@@ -10,7 +10,7 @@ export interface GroupChannelCreateProps<User> {
10
10
  onCreateChannel: (channel: SendbirdGroupChannel) => void;
11
11
  channelType?: GroupChannelType;
12
12
  userIdsGenerator?: (users: User[]) => UserIds;
13
- onBeforeCreateChannel?: (params: SendbirdGroupChannelParams, users: User[]) => SendbirdGroupChannelParams | Promise<SendbirdGroupChannelParams>;
13
+ onBeforeCreateChannel?: (params: SendbirdGroupChannelCreateParams, users: User[]) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;
14
14
  sortComparator?: UseUserListOptions<User>['sortComparator'];
15
15
  queryCreator?: UseUserListOptions<User>['queryCreator'];
16
16
  renderUser?: UserListProps<User>['List']['renderUser'];
@@ -9,11 +9,11 @@ export declare const usePlatformService: () => {
9
9
  children?: import("react").ReactNode;
10
10
  };
11
11
  export declare const useSendbirdChat: () => {
12
- sdk: import("sendbird").SendBirdInstance;
13
- currentUser?: import("sendbird").User | undefined;
14
- setCurrentUser: import("react").Dispatch<import("react").SetStateAction<import("sendbird").User | undefined>>;
15
- updateCurrentUserInfo: (nickname: string, profile?: string | import("..").FileType | undefined) => Promise<import("sendbird").User>;
16
- markAsDeliveredWithChannel: (channel: import("sendbird").GroupChannel) => void;
12
+ sdk: import("packages/uikit-utils/lib/typescript/src").SendbirdChatSDK;
13
+ currentUser?: import("@sendbird/chat").User | undefined;
14
+ setCurrentUser: import("react").Dispatch<import("react").SetStateAction<import("@sendbird/chat").User | undefined>>;
15
+ updateCurrentUserInfo: (nickname?: string | undefined, profile?: string | import("..").FileType | undefined) => Promise<import("@sendbird/chat").User>;
16
+ markAsDeliveredWithChannel: (channel: import("@sendbird/chat/groupChannel").GroupChannel) => void;
17
17
  features: {
18
18
  autoPushTokenRegistrationEnabled: boolean;
19
19
  channelListTypingIndicatorEnabled: boolean;
@@ -49,5 +49,7 @@ export * from './domain/userList';
49
49
  export type { UserListProps, UserListModule, UserListContextsType } from './domain/userList/types';
50
50
  export * from './domain/groupChannelUserList/types';
51
51
  /** UIKit **/
52
- export { default as SendbirdUIKitContainer, SendbirdUIKit, SendbirdUIKitContainerProps, } from './containers/SendbirdUIKitContainer';
52
+ export { default as SendbirdUIKitContainer, SendbirdUIKit } from './containers/SendbirdUIKitContainer';
53
+ export type { SendbirdUIKitContainerProps } from './containers/SendbirdUIKitContainer';
54
+ export { default as SBUError } from './libs/SBUError';
53
55
  export * from './types';
@@ -9,4 +9,6 @@ export default class InternalLocalCacheStorage implements LocalCacheStorage {
9
9
  multiGet(keys: string[]): Promise<readonly KeyValuePairGet[]>;
10
10
  multiRemove(keys: string[]): Promise<void>;
11
11
  multiSet(keyValuePairs: Array<KeyValuePairSet>): Promise<void>;
12
+ clear: () => Promise<undefined>;
13
+ flushGetRequests: () => Promise<undefined>;
12
14
  }
@@ -1,2 +1,2 @@
1
- declare const VERSION = "1.1.2";
1
+ declare const VERSION = "2.0.0";
2
2
  export default VERSION;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sendbird/uikit-react-native",
3
- "version": "1.1.2",
3
+ "version": "2.0.0",
4
4
  "description": "react-native-uikit",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -41,9 +41,9 @@
41
41
  "access": "public"
42
42
  },
43
43
  "dependencies": {
44
- "@sendbird/uikit-chat-hooks": "1.1.2",
45
- "@sendbird/uikit-react-native-foundation": "1.1.2",
46
- "@sendbird/uikit-utils": "1.1.2"
44
+ "@sendbird/uikit-chat-hooks": "2.0.0",
45
+ "@sendbird/uikit-react-native-foundation": "2.0.0",
46
+ "@sendbird/uikit-utils": "2.0.0"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@react-native-clipboard/clipboard": "^1.8.5",
@@ -67,7 +67,7 @@
67
67
  "inquirer": "^8.2.0",
68
68
  "js-convert-case": "^4.2.0",
69
69
  "react": "17.0.2",
70
- "react-native": "0.66.4",
70
+ "react-native": "0.67.4",
71
71
  "react-native-builder-bob": "^0.18.0",
72
72
  "react-native-create-thumbnail": "^1.5.1",
73
73
  "react-native-document-picker": "^8.0.0",
@@ -83,6 +83,7 @@
83
83
  "@react-native-community/cameraroll": ">=4.1.2",
84
84
  "@react-native-community/netinfo": ">=9.3.0",
85
85
  "@react-native-firebase/messaging": ">=14.4.0",
86
+ "@sendbird/chat": "^4.0.13",
86
87
  "date-fns": ">=2.28.0",
87
88
  "expo-av": ">=12.0.4",
88
89
  "expo-clipboard": ">=2.1.1",
@@ -99,8 +100,7 @@
99
100
  "react-native-image-picker": ">=4.7.1",
100
101
  "react-native-permissions": ">=3.6.0",
101
102
  "react-native-safe-area-context": ">=3.3.2",
102
- "react-native-video": ">=5.2.0",
103
- "sendbird": "^3.1.22"
103
+ "react-native-video": ">=5.2.0"
104
104
  },
105
105
  "peerDependenciesMeta": {
106
106
  "@react-native-clipboard/clipboard": {
@@ -112,6 +112,9 @@
112
112
  "@react-native-firebase/messaging": {
113
113
  "optional": true
114
114
  },
115
+ "expo-av": {
116
+ "optional": true
117
+ },
115
118
  "expo-clipboard": {
116
119
  "optional": true
117
120
  },
@@ -127,6 +130,12 @@
127
130
  "expo-notifications": {
128
131
  "optional": true
129
132
  },
133
+ "expo-video-thumbnails": {
134
+ "optional": true
135
+ },
136
+ "react-native-create-thumbnail": {
137
+ "optional": true
138
+ },
130
139
  "react-native-document-picker": {
131
140
  "optional": true
132
141
  },
@@ -138,6 +147,9 @@
138
147
  },
139
148
  "react-native-permissions": {
140
149
  "optional": true
150
+ },
151
+ "react-native-video": {
152
+ "optional": true
141
153
  }
142
154
  },
143
155
  "react-native-builder-bob": {
@@ -159,5 +171,5 @@
159
171
  "readmeFile": "./README.md",
160
172
  "displayName": "@sendbird/uikit-react-native"
161
173
  },
162
- "gitHead": "3bfe51786e73bedc419116e447b79d6b57f9178c"
174
+ "gitHead": "955f7adf0891976d8553d9c3b4c171225c775bc9"
163
175
  }
@@ -75,16 +75,17 @@ const ChatFlatList = forwardRef<ChatFlatListRef, Props>(function CustomFlatList(
75
75
 
76
76
  return (
77
77
  <FlatList
78
+ bounces={false}
79
+ removeClippedSubviews
80
+ keyboardDismissMode={'on-drag'}
81
+ keyboardShouldPersistTaps={'handled'}
82
+ indicatorStyle={select({ light: 'black', dark: 'white' })}
78
83
  {...props}
79
84
  // FIXME: inverted list of ListEmptyComponent is reversed {@link https://github.com/facebook/react-native/issues/21196#issuecomment-836937743}
80
85
  inverted={Boolean(props.data?.length)}
81
86
  // FIXME: maintainVisibleContentPosition is not working on Android {@link https://github.com/facebook/react-native/issues/25239}
82
87
  // maintainVisibleContentPosition={{ minIndexForVisible: 1, autoscrollToTopThreshold: AUTO_SCROLL_TO_TOP_THRESHOLD }}
83
88
  ref={scrollRef}
84
- bounces={false}
85
- keyboardShouldPersistTaps={'handled'}
86
- indicatorStyle={select({ light: 'black', dark: 'white' })}
87
- removeClippedSubviews
88
89
  onEndReachedThreshold={0.5}
89
90
  onEndReached={onTopReached}
90
91
  scrollEventThrottle={16}
@@ -1,7 +1,7 @@
1
1
  import React, { useState } from 'react';
2
2
  import { Linking, TouchableOpacity, View } from 'react-native';
3
- import type Sendbird from 'sendbird';
4
3
 
4
+ import type { OGMetaData } from '@sendbird/chat/message';
5
5
  import {
6
6
  Icon,
7
7
  Image,
@@ -16,7 +16,7 @@ import { useLocalization } from '../../../hooks/useContext';
16
16
  import type { UserMessageProps } from './index';
17
17
 
18
18
  type Props = UserMessageProps & {
19
- ogMetaData: Sendbird.OGMetaData;
19
+ ogMetaData: OGMetaData;
20
20
  };
21
21
  const OpenGraphUserMessage = ({ message, variant, pressed, ogMetaData }: Props) => {
22
22
  const { STRINGS } = useLocalization();
@@ -80,6 +80,8 @@ const OpenGraphUserMessage = ({ message, variant, pressed, ogMetaData }: Props)
80
80
 
81
81
  const styles = createStyleSheet({
82
82
  container: {
83
+ width: 240,
84
+ maxWidth: 240,
83
85
  borderRadius: 16,
84
86
  overflow: 'hidden',
85
87
  },
@@ -93,7 +95,7 @@ const styles = createStyleSheet({
93
95
  paddingBottom: 12,
94
96
  },
95
97
  ogImageContainer: {
96
- width: 240,
98
+ flex: 1,
97
99
  height: 136,
98
100
  },
99
101
  ogImage: {