agora-appbuilder-core 4.0.0-test.2 → 4.0.1

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 (442) hide show
  1. package/package.json +3 -3
  2. package/template/.bundle/config +2 -0
  3. package/template/Gemfile +4 -0
  4. package/template/Gulpfile.js +22 -22
  5. package/template/_eslintrc.js +3 -3
  6. package/template/_gitignore +12 -11
  7. package/template/_package-lock.json +20328 -20229
  8. package/template/_prettierrc.js +2 -2
  9. package/template/agora-rn-uikit/.eslintrc.js +5 -0
  10. package/template/agora-rn-uikit/package.json +14 -14
  11. package/template/agora-rn-uikit/src/AgoraUIKit.tsx +6 -6
  12. package/template/agora-rn-uikit/src/Contexts/ContentContext.tsx +10 -0
  13. package/template/agora-rn-uikit/src/Contexts/DispatchContext.tsx +22 -0
  14. package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +6 -6
  15. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +78 -38
  16. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +26 -17
  17. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +1 -0
  18. package/template/agora-rn-uikit/src/Controls/Icons.ts +39 -0
  19. package/template/agora-rn-uikit/src/Controls/Local/EndCall.tsx +6 -4
  20. package/template/agora-rn-uikit/src/Controls/Local/FullScreen.tsx +3 -1
  21. package/template/agora-rn-uikit/src/Controls/Local/LocalAudioMute.tsx +5 -2
  22. package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +5 -2
  23. package/template/agora-rn-uikit/src/Controls/Local/Recording.tsx +0 -2
  24. package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +7 -6
  25. package/template/agora-rn-uikit/src/Controls/LocalControls.tsx +5 -5
  26. package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +5 -4
  27. package/template/agora-rn-uikit/src/Controls/Remote/RemoteSwap.tsx +3 -1
  28. package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +5 -4
  29. package/template/agora-rn-uikit/src/Controls/RemoteControls.tsx +2 -2
  30. package/template/agora-rn-uikit/src/Reducer/ActiveSpeaker.ts +30 -0
  31. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +8 -7
  32. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +8 -7
  33. package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +6 -7
  34. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +7 -8
  35. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +9 -9
  36. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +7 -8
  37. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +14 -13
  38. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +6 -7
  39. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +6 -7
  40. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +5 -6
  41. package/template/agora-rn-uikit/src/Reducer/UserPin.ts +20 -3
  42. package/template/agora-rn-uikit/src/Reducer/UserSecondaryPin.ts +23 -0
  43. package/template/agora-rn-uikit/src/Reducer/index.ts +2 -1
  44. package/template/agora-rn-uikit/src/Rtc/Create.tsx +117 -111
  45. package/template/agora-rn-uikit/src/Rtc/Join.tsx +46 -27
  46. package/template/agora-rn-uikit/src/RtcConfigure.tsx +174 -75
  47. package/template/agora-rn-uikit/src/Utils/isBotUser.ts +15 -0
  48. package/template/agora-rn-uikit/src/Utils/quality.tsx +2 -2
  49. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +41 -19
  50. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +37 -17
  51. package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +19 -11
  52. package/template/agora-rn-uikit/src/index.ts +15 -9
  53. package/template/android/app/build.gradle +59 -156
  54. package/template/android/app/src/debug/AndroidManifest.xml +6 -1
  55. package/template/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java +7 -4
  56. package/template/android/app/src/main/AndroidManifest.xml +6 -19
  57. package/template/android/app/src/main/assets/fonts/icomoon.ttf +0 -0
  58. package/template/android/app/src/main/java/com/helloworld/MainActivity.java +17 -0
  59. package/template/android/app/src/main/java/com/helloworld/MainApplication.java +22 -36
  60. package/template/android/app/src/main/java/com/helloworld/SSLPinningFactory.java +30 -0
  61. package/template/android/app/src/main/res/values/strings.xml +3 -0
  62. package/template/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java +20 -0
  63. package/template/android/build.gradle +17 -31
  64. package/template/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  65. package/template/android/gradle/wrapper/gradle-wrapper.properties +3 -2
  66. package/template/android/gradle.properties +18 -4
  67. package/template/android/gradlew +165 -104
  68. package/template/android/gradlew.bat +12 -23
  69. package/template/android/settings.gradle +1 -0
  70. package/template/bridge/rtc/webNg/RtcEngine.ts +191 -71
  71. package/template/bridge/rtc/webNg/{SurfaceView.tsx → RtcSurfaceView.tsx} +20 -26
  72. package/template/bridge/rtc/webNg/Types.ts +20 -5
  73. package/template/bridge/rtc/webNg/index.ts +81 -14
  74. package/template/bridge/rtm/web/index.ts +5 -3
  75. package/template/configTransform.js +16 -1
  76. package/template/customization-api/action-library.ts +4 -16
  77. package/template/customization-api/app-state.ts +15 -8
  78. package/template/customization-api/customEvents.ts +7 -2
  79. package/template/customization-api/customize.ts +1 -1
  80. package/template/customization-api/index.ts +4 -0
  81. package/template/customization-api/sub-components.ts +17 -16
  82. package/template/customization-api/temp.ts +52 -0
  83. package/template/customization-api/typeDefinition.ts +32 -45
  84. package/template/customization-api/types.ts +26 -0
  85. package/template/customization-api/utils.ts +4 -0
  86. package/template/customization-implementation/index.ts +0 -1
  87. package/template/defaultConfig.js +72 -0
  88. package/template/global.d.ts +9 -1
  89. package/template/index.js +1 -4
  90. package/template/index.web.js +0 -5
  91. package/template/ios/.xcode.env +11 -0
  92. package/template/ios/HelloWorld/AppDelegate.h +2 -4
  93. package/template/ios/HelloWorld/AppDelegate.mm +64 -0
  94. package/template/ios/HelloWorld/HelloWorldDebug.entitlements +10 -0
  95. package/template/ios/HelloWorld/Info.plist +7 -1
  96. package/template/ios/HelloWorld/main.m +2 -1
  97. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +81 -119
  98. package/template/ios/HelloWorld.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  99. package/template/ios/HelloWorld.xcworkspace/contents.xcworkspacedata +10 -0
  100. package/template/ios/HelloWorld.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  101. package/template/ios/HelloWorldTests/HelloWorldTests.m +14 -13
  102. package/template/ios/HelloWorldTests/Info.plist +2 -2
  103. package/template/ios/Podfile +51 -21
  104. package/template/ios/Podfile.lock +553 -294
  105. package/template/jest.config.js +4 -0
  106. package/template/metro.config.js +7 -32
  107. package/template/package.json +48 -39
  108. package/template/react-native-toast-message/index.d.ts +3 -1
  109. package/template/react-native-toast-message/index.js +1 -0
  110. package/template/react-native-toast-message/src/components/base/index.js +20 -32
  111. package/template/react-native-toast-message/src/components/base/styles.js +18 -21
  112. package/template/react-native-toast-message/src/components/checkbox.js +24 -19
  113. package/template/react-native-toast-message/src/index.js +3 -1
  114. package/template/react-native-toast-message/src/index.sdk.tsx +4 -1
  115. package/template/src/App.tsx +79 -22
  116. package/template/src/AppRoutes.tsx +48 -3
  117. package/template/src/AppWrapper.tsx +25 -21
  118. package/template/src/SDKAppWrapper.tsx +11 -11
  119. package/template/src/app-state/useLocalUserInfo.ts +3 -3
  120. package/template/src/app-state/useNoiseSupression.native.tsx +67 -0
  121. package/template/src/app-state/useNoiseSupression.tsx +107 -0
  122. package/template/src/app-state/useVideoQuality.tsx +39 -0
  123. package/template/src/assets/font-styles.css +174 -3
  124. package/template/src/assets/fonts/icomoon.ttf +0 -0
  125. package/template/src/assets/selection.json +1 -1
  126. package/template/src/atoms/ActionMenu.tsx +50 -11
  127. package/template/src/atoms/Avatar.tsx +51 -0
  128. package/template/src/atoms/Card.tsx +21 -8
  129. package/template/src/atoms/Carousel.native.tsx +105 -0
  130. package/template/src/atoms/Carousel.tsx +103 -0
  131. package/template/src/atoms/Checkbox.tsx +98 -0
  132. package/template/src/atoms/CircularProgress.tsx +0 -1
  133. package/template/src/atoms/ClipboardIconButton.tsx +91 -0
  134. package/template/src/atoms/CustomIcon.tsx +46 -0
  135. package/template/src/atoms/DropDownMulti.tsx +349 -0
  136. package/template/src/atoms/Dropdown.tsx +3 -3
  137. package/template/src/atoms/IconButton.tsx +52 -9
  138. package/template/src/atoms/ImageIcon.tsx +18 -5
  139. package/template/src/atoms/InlineNotification.tsx +81 -0
  140. package/template/src/atoms/InviteInfo.tsx +4 -4
  141. package/template/src/atoms/MeetingLink.tsx +160 -0
  142. package/template/src/atoms/ParticipantsCount.tsx +20 -8
  143. package/template/src/atoms/Popup.tsx +46 -26
  144. package/template/src/atoms/PrimaryButton.tsx +19 -5
  145. package/template/src/atoms/RecordingInfo.tsx +8 -5
  146. package/template/src/atoms/SecondaryButton.tsx +2 -0
  147. package/template/src/atoms/Spacer.tsx +1 -0
  148. package/template/src/atoms/TertiaryButton.tsx +35 -5
  149. package/template/src/atoms/TextInput.tsx +2 -1
  150. package/template/src/atoms/Toolbar.tsx +102 -0
  151. package/template/src/atoms/ToolbarItem.tsx +85 -0
  152. package/template/src/atoms/ToolbarMenu.tsx +40 -0
  153. package/template/src/atoms/ToolbarMenuItem.tsx +104 -0
  154. package/template/src/atoms/ToolbarPreset.tsx +71 -0
  155. package/template/src/atoms/Tooltip.tsx +30 -13
  156. package/template/src/atoms/pagination/Pagination.tsx +127 -0
  157. package/template/src/atoms/pagination/usePagination.tsx +88 -0
  158. package/template/src/auth/AuthProvider.tsx +30 -32
  159. package/template/src/auth/AuthRoute.tsx +11 -3
  160. package/template/src/auth/IDPAuth.electron.tsx +4 -3
  161. package/template/src/auth/IDPAuth.tsx +10 -2
  162. package/template/src/auth/IDPLogoutComponent.tsx +14 -5
  163. package/template/src/auth/UserCancelPopup.tsx +11 -4
  164. package/template/src/auth/openIDPURL.electron.tsx +5 -4
  165. package/template/src/auth/openIDPURL.tsx +1 -1
  166. package/template/src/auth/useIDPAuth.electron.tsx +6 -3
  167. package/template/src/auth/useIDPAuth.tsx +0 -4
  168. package/template/src/auth/useTokenAuth.tsx +10 -8
  169. package/template/src/components/Chat.tsx +97 -78
  170. package/template/src/components/ChatContext.ts +2 -0
  171. package/template/src/components/ColorConfigure.tsx +0 -1
  172. package/template/src/components/CommonStyles.ts +9 -2
  173. package/template/src/components/Controls.tsx +914 -182
  174. package/template/src/components/Controls1.native.tsx +9 -5
  175. package/template/src/components/DeviceConfigure.native.tsx +2 -2
  176. package/template/src/components/DeviceConfigure.tsx +88 -43
  177. package/template/src/components/DeviceContext.tsx +2 -0
  178. package/template/src/components/EventsConfigure.tsx +685 -81
  179. package/template/src/components/GraphQLProvider.tsx +51 -33
  180. package/template/src/components/GridVideo.tsx +30 -16
  181. package/template/src/components/HostControlView.tsx +11 -14
  182. package/template/src/components/JoinPhrase.tsx +0 -1
  183. package/template/src/components/Leftbar.tsx +110 -0
  184. package/template/src/components/Navbar.tsx +296 -149
  185. package/template/src/components/NavbarMobile.tsx +119 -0
  186. package/template/src/components/NetworkQualityContext.tsx +12 -6
  187. package/template/src/components/ParticipantsView.tsx +62 -55
  188. package/template/src/components/PinnedVideo.tsx +191 -119
  189. package/template/src/components/Precall.native.tsx +155 -72
  190. package/template/src/components/Precall.tsx +225 -73
  191. package/template/src/components/RTMConfigure.tsx +180 -63
  192. package/template/src/components/Rightbar.tsx +112 -0
  193. package/template/src/components/SdkApiContext.tsx +26 -24
  194. package/template/src/components/SdkMuteToggleListener.tsx +8 -12
  195. package/template/src/components/SessionContext.tsx +0 -1
  196. package/template/src/components/Settings.tsx +33 -4
  197. package/template/src/components/SettingsView.tsx +42 -9
  198. package/template/src/components/Share.tsx +130 -72
  199. package/template/src/components/StorageContext.tsx +5 -4
  200. package/template/src/components/ToastComponent.tsx +7 -1
  201. package/template/src/components/WhiteboardLayout.tsx +291 -0
  202. package/template/src/components/chat-messages/useChatMessages.tsx +454 -239
  203. package/template/src/components/chat-ui/{useChatUIControl.tsx → useChatUIControls.tsx} +29 -29
  204. package/template/src/components/common/Error.tsx +2 -0
  205. package/template/src/components/common/Logo.tsx +2 -2
  206. package/template/src/components/contexts/LiveStreamDataContext.tsx +13 -12
  207. package/template/src/components/contexts/ScreenShareContext.tsx +1 -0
  208. package/template/src/components/contexts/VideoMeetingDataContext.tsx +6 -6
  209. package/template/src/components/contexts/WaitingRoomContext.tsx +50 -0
  210. package/template/src/components/contexts/WhiteboardContext.tsx +54 -54
  211. package/template/src/components/disable-chat/useDisableChat.tsx +32 -0
  212. package/template/src/components/livestream/LiveStreamContext.tsx +314 -220
  213. package/template/src/components/livestream/Types.ts +36 -20
  214. package/template/src/components/livestream/views/LiveStreamAttendeeLandingTile.tsx +295 -0
  215. package/template/src/components/livestream/views/LiveStreamControls.tsx +5 -10
  216. package/template/src/components/meeting-info-invite/MeetingInfo.tsx +82 -0
  217. package/template/src/components/meeting-info-invite/MeetingInfoCardHeader.tsx +86 -0
  218. package/template/src/components/meeting-info-invite/MeetingInfoGridTile.tsx +218 -0
  219. package/template/src/components/meeting-info-invite/MeetingInfoLinks.tsx +122 -0
  220. package/template/src/components/participants/AllAudienceParticipants.tsx +19 -20
  221. package/template/src/components/participants/AllHostParticipants.tsx +20 -19
  222. package/template/src/components/participants/Participant.tsx +45 -16
  223. package/template/src/components/participants/ParticipantSectionTitle.tsx +5 -2
  224. package/template/src/components/participants/ScreenshareParticipants.tsx +17 -19
  225. package/template/src/components/participants/UserActionMenuOptions.tsx +173 -62
  226. package/template/src/components/participants/WaitingRoomParticipants.tsx +74 -0
  227. package/template/src/components/popups/InvitePopup.tsx +105 -44
  228. package/template/src/components/popups/StartScreenSharePopup.native.tsx +26 -23
  229. package/template/src/components/popups/StopRecordingPopup.tsx +11 -5
  230. package/template/src/components/popups/StopScreenSharePopup.native.tsx +17 -5
  231. package/template/src/components/popups/WhiteboardClearAllPopup.tsx +123 -0
  232. package/template/src/components/precall/LocalMute.tsx +69 -45
  233. package/template/src/components/precall/PermissionHelper.tsx +31 -28
  234. package/template/src/components/precall/PreCallSettings.tsx +1 -0
  235. package/template/src/components/precall/VideoFallback.tsx +173 -0
  236. package/template/src/components/precall/VideoPreview.native.tsx +19 -53
  237. package/template/src/components/precall/VideoPreview.tsx +29 -164
  238. package/template/src/components/precall/index.tsx +2 -0
  239. package/template/src/components/precall/joinCallBtn.native.tsx +9 -4
  240. package/template/src/components/precall/joinCallBtn.tsx +9 -4
  241. package/template/src/components/precall/joinWaitingRoomBtn.native.tsx +210 -0
  242. package/template/src/components/precall/joinWaitingRoomBtn.tsx +250 -0
  243. package/template/src/components/precall/meetingTitle.tsx +37 -11
  244. package/template/src/components/precall/selectDevice.tsx +5 -5
  245. package/template/src/components/precall/textInput.tsx +17 -19
  246. package/template/src/components/precall/usePreCall.tsx +4 -4
  247. package/template/src/components/recording-bot/RecordingBotRoute.tsx +42 -0
  248. package/template/src/components/recordings/RecordingsDateTable.tsx +62 -0
  249. package/template/src/components/recordings/RecordingsModal.tsx +135 -0
  250. package/template/src/components/recordings/ViewRecordingsModal.tsx +51 -0
  251. package/template/src/components/recordings/recording-table.tsx +154 -0
  252. package/template/src/components/recordings/style.ts +183 -0
  253. package/template/src/components/recordings/utils.ts +80 -0
  254. package/template/src/components/{meeting-info/useMeetingInfo.tsx → room-info/useRoomInfo.tsx} +46 -12
  255. package/template/src/components/{meeting-info/useSetMeetingInfo.tsx → room-info/useSetRoomInfo.tsx} +12 -12
  256. package/template/src/components/useShareLink.tsx +23 -60
  257. package/template/src/components/useUserPreference.tsx +54 -17
  258. package/template/src/components/useVideoCall.tsx +52 -7
  259. package/template/src/components/virtual-background/VBButton.tsx +64 -0
  260. package/template/src/components/virtual-background/VBCard.native.tsx +282 -0
  261. package/template/src/components/virtual-background/VBCard.tsx +272 -0
  262. package/template/src/components/virtual-background/VBPanel.tsx +279 -0
  263. package/template/src/components/virtual-background/VButils.native.ts +37 -0
  264. package/template/src/components/virtual-background/VButils.ts +104 -0
  265. package/template/src/components/virtual-background/VideoPreview.native.tsx +43 -0
  266. package/template/src/components/virtual-background/VideoPreview.tsx +106 -0
  267. package/template/src/components/virtual-background/imagePaths.ts +87 -0
  268. package/template/src/components/virtual-background/images/beachImageBase64.ts +1 -0
  269. package/template/src/components/virtual-background/images/bedroomImageBase64.ts +1 -0
  270. package/template/src/components/virtual-background/images/bookImageBase64.ts +1 -0
  271. package/template/src/components/virtual-background/images/earthImageBase64.ts +1 -0
  272. package/template/src/components/virtual-background/images/index.ts +37 -0
  273. package/template/src/components/virtual-background/images/lampImageBase64.ts +1 -0
  274. package/template/src/components/virtual-background/images/mountainsImageBase64.ts +1 -0
  275. package/template/src/components/virtual-background/images/office1ImageBase64.ts +1 -0
  276. package/template/src/components/virtual-background/images/officeImageBase64.ts +1 -0
  277. package/template/src/components/virtual-background/images/plantsImageBase64.ts +1 -0
  278. package/template/src/components/virtual-background/images/skyImageBase64.ts +1 -0
  279. package/template/src/components/virtual-background/images/wallImageBase64.ts +1 -0
  280. package/template/src/components/virtual-background/useVB.native.tsx +185 -0
  281. package/template/src/components/virtual-background/useVB.tsx +267 -0
  282. package/template/src/components/whiteboard/StrokeWidthTool.tsx +137 -0
  283. package/template/src/components/whiteboard/WhiteboardButton.tsx +93 -0
  284. package/template/src/components/whiteboard/WhiteboardCanvas.tsx +99 -0
  285. package/template/src/components/whiteboard/WhiteboardConfigure.native.tsx +148 -0
  286. package/template/src/components/whiteboard/WhiteboardConfigure.tsx +446 -0
  287. package/template/src/components/whiteboard/WhiteboardCursor.tsx +152 -0
  288. package/template/src/components/whiteboard/WhiteboardToolBox.tsx +1246 -0
  289. package/template/src/components/whiteboard/WhiteboardView.native.tsx +188 -0
  290. package/template/src/components/whiteboard/WhiteboardView.tsx +81 -0
  291. package/template/src/components/whiteboard/WhiteboardWidget.tsx +685 -0
  292. package/template/src/components/whiteboard/WhiteboardWrapper.tsx +38 -0
  293. package/template/src/language/default-labels/commonLabels.ts +51 -14
  294. package/template/src/language/default-labels/createScreenLabels.ts +97 -17
  295. package/template/src/language/default-labels/joinScreenLabels.ts +45 -6
  296. package/template/src/language/default-labels/precallScreenLabels.ts +149 -25
  297. package/template/src/language/default-labels/shareLinkScreenLabels.ts +85 -37
  298. package/template/src/language/default-labels/videoCallScreenLabels.ts +1195 -158
  299. package/template/src/pages/Create.tsx +118 -92
  300. package/template/src/pages/Endcall.tsx +2 -2
  301. package/template/src/pages/Join.tsx +67 -45
  302. package/template/src/pages/VideoCall.tsx +240 -132
  303. package/template/src/pages/video-call/ActionSheet.native.tsx +33 -3
  304. package/template/src/pages/video-call/ActionSheet.tsx +54 -15
  305. package/template/src/pages/video-call/ActionSheetContent.tsx +487 -313
  306. package/template/src/pages/video-call/ActionSheetHandle.tsx +7 -1
  307. package/template/src/pages/video-call/DefaultLayouts.ts +20 -8
  308. package/template/src/pages/video-call/NameWithMicIcon.tsx +41 -64
  309. package/template/src/pages/video-call/RenderComponent.tsx +14 -30
  310. package/template/src/pages/video-call/SidePanelHeader.tsx +227 -29
  311. package/template/src/pages/video-call/VideoCallMobileView.tsx +199 -99
  312. package/template/src/pages/video-call/VideoCallScreen.native.tsx +2 -25
  313. package/template/src/pages/video-call/VideoCallScreen.tsx +233 -57
  314. package/template/src/pages/video-call/VideoCallScreenWrapper.tsx +41 -0
  315. package/template/src/pages/video-call/VideoComponent.tsx +60 -8
  316. package/template/src/pages/video-call/VideoRenderer.tsx +237 -98
  317. package/template/src/pages/video-call/VisibilitySensor.tsx +104 -0
  318. package/template/src/pages/video-call/index.ts +42 -8
  319. package/template/src/rtm/RTMEngine.ts +9 -4
  320. package/template/src/rtm-events/constants.ts +21 -3
  321. package/template/src/rtm-events-api/Events.ts +6 -4
  322. package/template/src/rtm-events-api/LocalEvents.ts +14 -0
  323. package/template/src/rtm-events-api/types.ts +5 -5
  324. package/template/src/selection.json +1 -0
  325. package/template/src/subComponents/ChatBubble.tsx +87 -67
  326. package/template/src/subComponents/ChatContainer.tsx +70 -49
  327. package/template/src/subComponents/ChatInput.ios.tsx +32 -85
  328. package/template/src/subComponents/ChatInput.tsx +31 -80
  329. package/template/src/subComponents/Checkbox.native.tsx +46 -46
  330. package/template/src/subComponents/Checkbox.tsx +7 -6
  331. package/template/src/subComponents/CopyJoinInfo.tsx +31 -11
  332. package/template/src/subComponents/EndcallPopup.tsx +83 -12
  333. package/template/src/subComponents/FallbackLogo.tsx +2 -2
  334. package/template/src/subComponents/LanguageSelector.tsx +34 -30
  335. package/template/src/subComponents/LayoutIconButton.tsx +34 -17
  336. package/template/src/subComponents/LayoutIconDropdown.tsx +21 -8
  337. package/template/src/subComponents/Loading.tsx +22 -9
  338. package/template/src/subComponents/LocalAudioMute.tsx +87 -34
  339. package/template/src/subComponents/LocalEndCall.tsx +48 -31
  340. package/template/src/subComponents/LocalSwitchCamera.tsx +49 -11
  341. package/template/src/subComponents/LocalVideoMute.tsx +87 -35
  342. package/template/src/subComponents/NetworkQualityPill.tsx +22 -38
  343. package/template/src/subComponents/Recording.tsx +29 -9
  344. package/template/src/subComponents/RemoteAudioMute.tsx +5 -5
  345. package/template/src/subComponents/RemoteMutePopup.tsx +55 -14
  346. package/template/src/subComponents/RemoteVideoMute.tsx +5 -5
  347. package/template/src/subComponents/RemoveMeetingPopup.tsx +19 -6
  348. package/template/src/subComponents/RemoveScreensharePopup.tsx +20 -5
  349. package/template/src/subComponents/ScreenShareNotice.tsx +11 -6
  350. package/template/src/subComponents/SelectDevice.tsx +103 -34
  351. package/template/src/subComponents/SelectDeviceSettings.backup.tsx +9 -6
  352. package/template/src/subComponents/SidePanelButtons.ts +0 -3
  353. package/template/src/subComponents/SidePanelEnum.tsx +2 -0
  354. package/template/src/subComponents/SidePanelHeader.tsx +97 -63
  355. package/template/src/subComponents/ToastConfig.tsx +70 -61
  356. package/template/src/subComponents/caption/Caption.tsx +132 -0
  357. package/template/src/subComponents/caption/CaptionContainer.tsx +302 -0
  358. package/template/src/subComponents/caption/CaptionIcon.tsx +111 -0
  359. package/template/src/subComponents/caption/CaptionText.tsx +182 -0
  360. package/template/src/subComponents/caption/DownloadTranscriptBtn.tsx +65 -0
  361. package/template/src/subComponents/caption/LanguageSelectorPopup.tsx +192 -0
  362. package/template/src/subComponents/caption/Transcript.tsx +452 -0
  363. package/template/src/subComponents/caption/TranscriptIcon.tsx +123 -0
  364. package/template/src/subComponents/caption/TranscriptText.tsx +98 -0
  365. package/template/src/subComponents/caption/index.ts +3 -0
  366. package/template/src/subComponents/caption/proto/ptoto.js +91 -0
  367. package/template/src/subComponents/caption/proto/test.proto +23 -0
  368. package/template/src/subComponents/caption/useCaption.tsx +123 -0
  369. package/template/src/subComponents/caption/useCaptionWidth.ts +27 -0
  370. package/template/src/subComponents/caption/useSTTAPI.tsx +179 -0
  371. package/template/src/subComponents/caption/useStreamMessageUtils.native.ts +211 -0
  372. package/template/src/subComponents/caption/useStreamMessageUtils.ts +235 -0
  373. package/template/src/subComponents/caption/useTranscriptDownload.native.ts +63 -0
  374. package/template/src/subComponents/caption/useTranscriptDownload.ts +52 -0
  375. package/template/src/subComponents/caption/utils.ts +126 -0
  376. package/template/src/subComponents/chat/ChatParticipants.tsx +60 -24
  377. package/template/src/subComponents/livestream/ApprovedLiveStreamControlsView.tsx +2 -2
  378. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +19 -20
  379. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +66 -35
  380. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +3 -2
  381. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +10 -6
  382. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +28 -19
  383. package/template/src/subComponents/recording/useIsRecordingBot.tsx +38 -0
  384. package/template/src/subComponents/recording/useRecording.tsx +251 -150
  385. package/template/src/subComponents/recording/useRecordingLayoutQuery.tsx +0 -1
  386. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +18 -13
  387. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +164 -93
  388. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +163 -108
  389. package/template/src/subComponents/waiting-rooms/WaitingRoomControls.tsx +85 -0
  390. package/template/src/subComponents/waiting-rooms/useWaitingRoomAPI.ts +75 -0
  391. package/template/src/theme/index.ts +13 -0
  392. package/template/src/utils/SdkMethodEvents.ts +5 -5
  393. package/template/src/utils/axiomLogger.ts +117 -0
  394. package/template/src/utils/book.jpg +0 -0
  395. package/template/src/utils/common.tsx +96 -1
  396. package/template/src/utils/constants.ts +4 -0
  397. package/template/src/utils/getCustomRoute.ts +7 -0
  398. package/template/src/utils/index.tsx +34 -0
  399. package/template/src/utils/useActionSheet.tsx +50 -0
  400. package/template/src/utils/useActiveSpeaker.ts +38 -0
  401. package/template/src/utils/useAppState.ts +17 -0
  402. package/template/src/utils/useAsyncEffect.ts +138 -0
  403. package/template/src/utils/{useCreateMeeting.ts → useCreateRoom.ts} +19 -14
  404. package/template/src/utils/useEndCall.ts +65 -0
  405. package/template/src/utils/useFindActiveSpeaker.native.ts +4 -0
  406. package/template/src/utils/useFindActiveSpeaker.ts +335 -0
  407. package/template/src/utils/useGetMeetingPhrase.ts +10 -10
  408. package/template/src/utils/useIsAudioEnabled.ts +3 -3
  409. package/template/src/utils/useIsLocalUserSpeaking.native.ts +4 -0
  410. package/template/src/utils/useIsLocalUserSpeaking.ts +103 -0
  411. package/template/src/utils/useIsPSTN.ts +3 -3
  412. package/template/src/utils/useIsVideoEnabled.ts +3 -3
  413. package/template/src/utils/useJoinRoom.ts +199 -0
  414. package/template/src/utils/{useIsActiveSpeaker.ts → useLocalAudio.ts} +23 -12
  415. package/template/src/{components/Settings.native.tsx → utils/useMenu.tsx} +16 -6
  416. package/template/src/utils/useModal.tsx +8 -0
  417. package/template/src/utils/useMutePSTN.ts +2 -2
  418. package/template/src/utils/useMuteToggleLocal.ts +21 -9
  419. package/template/src/utils/useRemoteEndCall.ts +4 -4
  420. package/template/src/utils/useRemoteEndScreenshare.ts +4 -4
  421. package/template/src/utils/useRemoteMute.ts +7 -7
  422. package/template/src/utils/useRemoteRequest.ts +7 -7
  423. package/template/src/utils/useSearchParams.tsx +18 -0
  424. package/template/src/utils/useString.ts +13 -3
  425. package/template/src/utils/useSwitchCamera.native.tsx +25 -0
  426. package/template/src/utils/useSwitchCamera.tsx +19 -0
  427. package/template/src/utils/useToolbar.tsx +59 -0
  428. package/template/src/wasms/agora-virtual-background.wasm +0 -0
  429. package/template/static.d.ts +42 -0
  430. package/template/web/index.html +20 -0
  431. package/template/webpack.commons.js +21 -10
  432. package/template/_buckconfig +0 -6
  433. package/template/_gitattributes +0 -1
  434. package/template/agora-rn-uikit/src/Contexts/RenderContext.tsx +0 -10
  435. package/template/agora-rn-uikit/src/Reducer/ActiveSpeakerDetected.ts +0 -11
  436. package/template/android/app/_BUCK +0 -55
  437. package/template/android/app/build_defs.bzl +0 -19
  438. package/template/bridge/rtc/webNg/LocalView.tsx +0 -20
  439. package/template/ios/HelloWorld/AppDelegate.m +0 -74
  440. package/template/src/pages/video-call/CustomUserContextHolder.tsx +0 -20
  441. package/template/src/utils/useButtonTemplate.tsx +0 -44
  442. package/template/src/utils/useJoinMeeting.ts +0 -142
@@ -15,17 +15,19 @@ import Hyperlink from 'react-native-hyperlink';
15
15
  import {useString} from '../utils/useString';
16
16
  import {ChatBubbleProps} from '../components/ChatContext';
17
17
  import ColorContext from '../components/ColorContext';
18
- import {isWebInternal} from '../utils/common';
19
- import {useChatUIControl, useRender} from 'customization-api';
18
+ import {isWebInternal, trimText} from '../utils/common';
19
+ import {useChatUIControls, useContent} from 'customization-api';
20
20
  import ThemeConfig from '../theme';
21
21
  import hexadecimalTransparency from '../utils/hexadecimalTransparency';
22
22
  import Spacer from '../atoms/Spacer';
23
- import {formatAMPM} from '../utils';
23
+ import {formatAMPM, isURL} from '../utils';
24
+ import {ChatType} from '../components/chat-ui/useChatUIControls';
25
+ import {videoRoomUserFallbackText} from '../language/default-labels/videoCallScreenLabels';
24
26
 
25
27
  const ChatBubble = (props: ChatBubbleProps) => {
26
- const {renderList} = useRender();
28
+ const {defaultContent} = useContent();
27
29
  const {primaryColor} = useContext(ColorContext);
28
- const {privateActive, selectedChatUserId} = useChatUIControl();
30
+ const {chatType, privateChatUser} = useChatUIControls();
29
31
  let {
30
32
  isLocal,
31
33
  isSameUser,
@@ -35,9 +37,31 @@ const ChatBubble = (props: ChatBubbleProps) => {
35
37
  isDeleted,
36
38
  msgId,
37
39
  updatedTimestamp,
40
+ previousMessageCreatedTimestamp,
38
41
  } = props;
42
+
39
43
  let time = formatAMPM(new Date(parseInt(createdTimestamp)));
40
44
 
45
+ let forceShowUserNameandTimeStamp = false;
46
+ //calculate time difference between current message and last message
47
+ //if difference over 2 minutes passed from previous message
48
+ //then show the user and timestamp again even if same user
49
+ if (previousMessageCreatedTimestamp && createdTimestamp) {
50
+ try {
51
+ const startTime = new Date(parseInt(previousMessageCreatedTimestamp));
52
+ const endTime = new Date(parseInt(createdTimestamp));
53
+ let resultInMinutes = 0;
54
+ if (startTime && endTime) {
55
+ const difference = endTime.getTime() - startTime.getTime(); // This will give difference in milliseconds
56
+ resultInMinutes = Math.round(difference / 60000);
57
+ }
58
+ forceShowUserNameandTimeStamp =
59
+ resultInMinutes && !isNaN(resultInMinutes) && resultInMinutes >= 2
60
+ ? true
61
+ : false;
62
+ } catch (e) {}
63
+ }
64
+
41
65
  const handleUrl = (url: string) => {
42
66
  if (isWebInternal()) {
43
67
  window.open(url, '_blank');
@@ -45,9 +69,7 @@ const ChatBubble = (props: ChatBubbleProps) => {
45
69
  Linking.openURL(url);
46
70
  }
47
71
  };
48
- //commented for v1 release
49
- //const remoteUserDefaultLabel = useString('remoteUserDefaultLabel')();
50
- const remoteUserDefaultLabel = 'User';
72
+ const remoteUserDefaultLabel = useString(videoRoomUserFallbackText)();
51
73
 
52
74
  return props?.render ? (
53
75
  props.render(
@@ -59,27 +81,50 @@ const ChatBubble = (props: ChatBubbleProps) => {
59
81
  isDeleted,
60
82
  updatedTimestamp,
61
83
  isSameUser,
84
+ previousMessageCreatedTimestamp,
62
85
  )
63
86
  ) : (
64
87
  <>
65
- {!isSameUser && !(privateActive && selectedChatUserId) ? (
66
- <Text
67
- style={
68
- isLocal ? style.localUsernameStyle : style.remoteUsernameStyle
69
- }>
70
- {isLocal
71
- ? 'You'
72
- : renderList[uid]
73
- ? renderList[uid].name
74
- : remoteUserDefaultLabel}
75
- </Text>
88
+ {(!isSameUser || forceShowUserNameandTimeStamp) &&
89
+ !(chatType === ChatType.Private && privateChatUser) ? (
90
+ <View
91
+ style={{
92
+ flexDirection: 'row',
93
+ justifyContent: isLocal ? 'flex-end' : 'flex-start',
94
+ marginBottom: 8,
95
+ marginTop: 14,
96
+ marginHorizontal: 20,
97
+ }}>
98
+ <Text style={style.userNameStyle}>
99
+ {isLocal
100
+ ? 'You'
101
+ : defaultContent[uid]?.name
102
+ ? trimText(defaultContent[uid].name)
103
+ : remoteUserDefaultLabel}
104
+ </Text>
105
+ <Text style={style.timestampStyle}>{time}</Text>
106
+ </View>
107
+ ) : (!isSameUser || forceShowUserNameandTimeStamp) &&
108
+ chatType === ChatType.Private &&
109
+ privateChatUser ? (
110
+ <View
111
+ style={{
112
+ flexDirection: 'row',
113
+ justifyContent: isLocal ? 'flex-end' : 'flex-start',
114
+ marginBottom: 8,
115
+ marginTop: 14,
116
+ marginHorizontal: 20,
117
+ }}>
118
+ <Text style={style.timestampStyle}>{time}</Text>
119
+ </View>
76
120
  ) : (
77
121
  <></>
78
122
  )}
79
123
  <View
80
- style={
81
- isLocal ? style.chatBubbleLocalView : style.chatBubbleRemoteView
82
- }>
124
+ style={[
125
+ isLocal ? style.chatBubbleLocalView : style.chatBubbleRemoteView,
126
+ //isURL(message) ? {maxWidth: '88%'} : {},
127
+ ]}>
83
128
  <View
84
129
  style={
85
130
  isLocal
@@ -96,8 +141,6 @@ const ChatBubble = (props: ChatBubbleProps) => {
96
141
  {message}
97
142
  </Text>
98
143
  </Hyperlink>
99
- {/* <Spacer size={5} /> */}
100
- <Text style={style.timestampStyle}>{time}</Text>
101
144
  </View>
102
145
  </View>
103
146
  </>
@@ -105,51 +148,29 @@ const ChatBubble = (props: ChatBubbleProps) => {
105
148
  };
106
149
 
107
150
  const style = StyleSheet.create({
108
- remoteUsernameStyle: {
151
+ userNameStyle: {
109
152
  fontFamily: ThemeConfig.FontFamily.sansPro,
110
153
  fontWeight: '600',
111
- fontSize: ThemeConfig.FontSize.small,
112
- textAlign: 'left',
113
- color: $config.FONT_COLOR + ThemeConfig.EmphasisPlus.medium,
114
- alignSelf: 'flex-start',
115
- marginTop: 20,
116
- marginBottom: 8,
117
- marginHorizontal: 20,
118
- },
119
- localUsernameStyle: {
120
- fontFamily: ThemeConfig.FontFamily.sansPro,
121
- fontWeight: '600',
122
- fontSize: ThemeConfig.FontSize.small,
123
- textAlign: 'left',
124
- color: $config.FONT_COLOR + ThemeConfig.EmphasisPlus.medium,
125
- alignSelf: 'flex-end',
126
- marginTop: 20,
127
- marginBottom: 8,
128
- marginHorizontal: 20,
154
+ fontSize: ThemeConfig.FontSize.tiny,
155
+ color: $config.FONT_COLOR + hexadecimalTransparency['70%'],
129
156
  },
130
157
  timestampStyle: {
131
- // position: 'absolute',
132
- // bottom: 0,
133
- // right: 12,
134
158
  fontFamily: ThemeConfig.FontFamily.sansPro,
135
159
  fontWeight: '400',
136
160
  fontSize: ThemeConfig.FontSize.tiny,
137
- textAlign: 'right',
138
- color: $config.FONT_COLOR + ThemeConfig.EmphasisPlus.disabled,
139
- marginTop: 4,
140
- marginBottom: 6,
161
+ color: $config.FONT_COLOR + hexadecimalTransparency['30%'],
162
+ marginLeft: 4,
141
163
  },
142
164
  chatBubbleRemoteView: {
143
165
  backgroundColor: $config.CARD_LAYER_2_COLOR,
144
- minWidth: '30%',
145
- maxWidth: '80%',
146
166
  alignSelf: 'flex-start',
147
167
  marginVertical: 2,
148
168
  marginHorizontal: 20,
149
- borderBottomLeftRadius: 12,
150
- borderBottomRightRadius: 12,
169
+ borderBottomLeftRadius: 8,
170
+ borderBottomRightRadius: 8,
151
171
  borderTopLeftRadius: 0,
152
- borderTopRightRadius: 12,
172
+ borderTopRightRadius: 8,
173
+ maxWidth: '88%',
153
174
  },
154
175
  chatBubbleRemoteViewLayer2: {
155
176
  backgroundColor: 'transparent',
@@ -157,9 +178,9 @@ const style = StyleSheet.create({
157
178
  // height: '100%',
158
179
  paddingVertical: 8,
159
180
  paddingHorizontal: 12,
160
- borderBottomLeftRadius: 12,
161
- borderBottomRightRadius: 12,
162
- borderTopLeftRadius: 12,
181
+ borderBottomLeftRadius: 8,
182
+ borderBottomRightRadius: 8,
183
+ borderTopLeftRadius: 8,
163
184
  borderTopRightRadius: 0,
164
185
  },
165
186
  chatBubbleLocalViewLayer2: {
@@ -167,9 +188,9 @@ const style = StyleSheet.create({
167
188
  //height: '100%',
168
189
  paddingVertical: 8,
169
190
  paddingHorizontal: 12,
170
- borderBottomLeftRadius: 12,
171
- borderBottomRightRadius: 12,
172
- borderTopLeftRadius: 12,
191
+ borderBottomLeftRadius: 8,
192
+ borderBottomRightRadius: 8,
193
+ borderTopLeftRadius: 8,
173
194
  borderTopRightRadius: 0,
174
195
  backgroundColor:
175
196
  $config.PRIMARY_ACTION_BRAND_COLOR + hexadecimalTransparency['10%'],
@@ -177,21 +198,20 @@ const style = StyleSheet.create({
177
198
  chatBubbleLocalView: {
178
199
  backgroundColor:
179
200
  $config.CARD_LAYER_5_COLOR + hexadecimalTransparency['20%'],
180
- minWidth: '30%',
181
- maxWidth: '80%',
182
201
  alignSelf: 'flex-end',
183
202
  marginVertical: 2,
184
203
  marginHorizontal: 20,
185
- borderBottomLeftRadius: 12,
186
- borderBottomRightRadius: 12,
187
- borderTopLeftRadius: 12,
204
+ borderBottomLeftRadius: 8,
205
+ borderBottomRightRadius: 8,
206
+ borderTopLeftRadius: 8,
188
207
  borderTopRightRadius: 0,
208
+ maxWidth: '88%',
189
209
  },
190
210
  messageStyle: {
191
211
  fontFamily: ThemeConfig.FontFamily.sansPro,
192
212
  fontWeight: '400',
193
213
  fontSize: ThemeConfig.FontSize.small,
194
- lineHeight: ThemeConfig.FontSize.small * 1.4,
214
+ lineHeight: ThemeConfig.FontSize.small * 1.45,
195
215
  color: $config.FONT_COLOR,
196
216
  },
197
217
  });
@@ -9,7 +9,13 @@
9
9
  information visit https://appbuilder.agora.io.
10
10
  *********************************************
11
11
  */
12
- import React, {useCallback, useEffect, useRef, useState} from 'react';
12
+ import React, {
13
+ useCallback,
14
+ useContext,
15
+ useEffect,
16
+ useRef,
17
+ useState,
18
+ } from 'react';
13
19
  import {
14
20
  View,
15
21
  ScrollView,
@@ -22,19 +28,31 @@ import {
22
28
  import {RFValue} from 'react-native-responsive-fontsize';
23
29
  import ChatBubble from './ChatBubble';
24
30
  import {ChatBubbleProps} from '../components/ChatContext';
25
- import {RenderInterface, useLocalUid} from '../../agora-rn-uikit';
31
+ import {
32
+ DispatchContext,
33
+ ContentInterface,
34
+ useLocalUid,
35
+ } from '../../agora-rn-uikit';
26
36
  import TextWithTooltip from './TextWithTooltip';
27
37
  import {useCustomization} from 'customization-implementation';
28
38
  import {isValidReactComponent, isWebInternal} from '../utils/common';
29
39
  import {useString} from '../utils/useString';
30
- import {useChatUIControl} from '../components/chat-ui/useChatUIControl';
31
- import {useRender, useRtc} from 'customization-api';
40
+ import {
41
+ ChatType,
42
+ useChatUIControls,
43
+ } from '../components/chat-ui/useChatUIControls';
44
+ import {useContent} from 'customization-api';
32
45
  import {useChatMessages} from '../components/chat-messages/useChatMessages';
33
46
  import hexadecimalTransparency from '../utils/hexadecimalTransparency';
34
47
  import ThemeConfig from '../theme';
35
48
  import UserAvatar from '../atoms/UserAvatar';
36
49
  import Spacer from '../atoms/Spacer';
37
50
  import {useChatNotification} from '../components/chat-notification/useChatNotification';
51
+ import {
52
+ chatPanelUnreadMessageText,
53
+ chatPanelUserOfflineText,
54
+ groupChatWelcomeContent,
55
+ } from '../language/default-labels/videoCallScreenLabels';
38
56
 
39
57
  /**
40
58
  * Chat container is the component which renders all the chat messages
@@ -44,23 +62,19 @@ import {useChatNotification} from '../components/chat-notification/useChatNotifi
44
62
  const ChatContainer = (props?: {
45
63
  chatBubble?: React.ComponentType<ChatBubbleProps>;
46
64
  }) => {
65
+ const info1 = useString<boolean>(groupChatWelcomeContent);
47
66
  const [scrollToEnd, setScrollToEnd] = useState(false);
48
- const {dispatch} = useRtc();
67
+ const {dispatch} = useContext(DispatchContext);
49
68
  const [grpUnreadCount, setGrpUnreadCount] = useState(0);
50
69
  const [privateUnreadCount, setPrivateUnreadCount] = useState(0);
51
- const {renderList} = useRender();
70
+ const {defaultContent} = useContent();
52
71
  const {messageStore, privateMessageStore} = useChatMessages();
53
72
  const messageStoreLengthRef = useRef(messageStore.length);
54
73
  const {height, width} = useWindowDimensions();
55
- const {
56
- groupActive,
57
- privateActive,
58
- selectedChatUserId: selectedUserID,
59
- setPrivateActive,
60
- inputActive,
61
- } = useChatUIControl();
74
+ const {chatType, setChatType, privateChatUser, inputActive} =
75
+ useChatUIControls();
62
76
  const privateMessageStoreRef = useRef(
63
- privateMessageStore[selectedUserID]?.length,
77
+ privateMessageStore[privateChatUser]?.length,
64
78
  );
65
79
  const {
66
80
  setUnreadGroupMessageCount,
@@ -69,41 +83,38 @@ const ChatContainer = (props?: {
69
83
  setUnreadIndividualMessageCount,
70
84
  } = useChatNotification();
71
85
  const localUid = useLocalUid();
72
- //commented for v1 release
73
- //const remoteUserDefaultLabel = useString('remoteUserDefaultLabel')();
74
- const remoteUserDefaultLabel = 'User';
75
86
  const scrollViewRef = useRef<ScrollView>(null);
76
87
 
77
88
  useEffect(() => {
78
- if (groupActive) {
89
+ if (chatType === ChatType.Group) {
79
90
  setGrpUnreadCount(unreadGroupMessageCount);
80
91
  setUnreadGroupMessageCount(0);
81
92
  }
82
- }, [groupActive]);
93
+ }, [chatType]);
83
94
 
84
95
  useEffect(() => {
85
- if (selectedUserID) {
86
- setPrivateUnreadCount(unreadIndividualMessageCount[selectedUserID]);
87
- setUnreadIndividualMessageCount((prevState) => {
96
+ if (privateChatUser) {
97
+ setPrivateUnreadCount(unreadIndividualMessageCount[privateChatUser]);
98
+ setUnreadIndividualMessageCount(prevState => {
88
99
  return {
89
100
  ...prevState,
90
- [selectedUserID]: 0,
101
+ [privateChatUser]: 0,
91
102
  };
92
103
  });
93
104
  //Once message is seen, reset lastMessageTimeStamp.
94
105
  //so whoever has unread count will show in the top of participant list
95
- updateRenderListState(selectedUserID, {lastMessageTimeStamp: 0});
106
+ updateRenderListState(privateChatUser, {lastMessageTimeStamp: 0});
96
107
  }
97
- }, [selectedUserID]);
108
+ }, [privateChatUser]);
98
109
 
99
110
  const updateRenderListState = (
100
111
  uid: number,
101
- data: Partial<RenderInterface>,
112
+ data: Partial<ContentInterface>,
102
113
  ) => {
103
114
  dispatch({type: 'UpdateRenderList', value: [uid, data]});
104
115
  };
105
116
 
106
- const {ChatBubbleComponent} = useCustomization((data) => {
117
+ const {ChatBubbleComponent} = useCustomization(data => {
107
118
  let components: {
108
119
  ChatBubbleComponent: React.ComponentType<ChatBubbleProps>;
109
120
  } = {
@@ -134,18 +145,19 @@ const ChatContainer = (props?: {
134
145
  }
135
146
  return components;
136
147
  });
137
- //commented for v1 release
138
- //const userOfflineLabel = useString('userOfflineLabel')();
139
- const userOfflineLabel = 'User is offline';
148
+
149
+ const userOfflineLabel = useString(chatPanelUserOfflineText)();
150
+ const unreadMessageLabel = useString(chatPanelUnreadMessageText)();
140
151
 
141
152
  //if we don't have unread count then enable scroll to end
142
153
  useEffect(() => {
143
- if (!privateActive && !grpUnreadCount) {
154
+ const isPrivateActive = chatType === ChatType.Private;
155
+ if (!isPrivateActive && !grpUnreadCount) {
144
156
  setScrollToEnd(true);
145
- } else if (privateActive && !privateUnreadCount) {
157
+ } else if (isPrivateActive && !privateUnreadCount) {
146
158
  setScrollToEnd(true);
147
159
  }
148
- }, [privateActive, grpUnreadCount, privateUnreadCount]);
160
+ }, [chatType, grpUnreadCount, privateUnreadCount]);
149
161
 
150
162
  const onContentSizeChange = useCallback(() => {
151
163
  if (scrollToEnd) {
@@ -167,19 +179,19 @@ const ChatContainer = (props?: {
167
179
 
168
180
  return (
169
181
  <View style={style.containerView}>
170
- {privateActive && selectedUserID ? (
182
+ {chatType === ChatType.Private && privateChatUser ? (
171
183
  <>
172
184
  <View style={style.participantContainer}>
173
185
  <View style={style.bgContainerStyle}>
174
186
  <UserAvatar
175
- name={renderList[selectedUserID].name}
187
+ name={defaultContent[privateChatUser].name}
176
188
  containerStyle={style.userAvatarContainer}
177
189
  textStyle={style.userAvatarText}
178
190
  />
179
191
  </View>
180
192
  <View style={style.participantTextContainer}>
181
193
  <Text style={[style.participantText]} numberOfLines={1}>
182
- {renderList[selectedUserID].name}
194
+ {defaultContent[privateChatUser].name}
183
195
  </Text>
184
196
  </View>
185
197
  </View>
@@ -189,13 +201,11 @@ const ChatContainer = (props?: {
189
201
  <></>
190
202
  )}
191
203
  <ScrollView ref={scrollViewRef} onContentSizeChange={onContentSizeChange}>
192
- {!privateActive ? (
204
+ {chatType === ChatType.Group ? (
193
205
  <>
194
206
  <View style={style.defaultMessageContainer}>
195
207
  <Text style={style.defaultMessageText}>
196
- {!messageStore?.length
197
- ? `Welcome to Chat! \nAll messages are deleted when call ends.`
198
- : 'All messages are deleted when call ends.'}
208
+ {info1(messageStore?.length ? false : true)}
199
209
  </Text>
200
210
  </View>
201
211
  {messageStore.map((message: any, index) => (
@@ -207,7 +217,7 @@ const ChatContainer = (props?: {
207
217
  style={style.unreadMessageContainer}
208
218
  onLayout={unreadViewOnLayout}>
209
219
  <Text style={style.unreadMessageText}>
210
- {grpUnreadCount} Unread Message
220
+ {grpUnreadCount} {unreadMessageLabel}
211
221
  </Text>
212
222
  </View>
213
223
  ) : (
@@ -220,6 +230,12 @@ const ChatContainer = (props?: {
220
230
  ? true
221
231
  : false
222
232
  }
233
+ previousMessageCreatedTimestamp={
234
+ index !== 0
235
+ ? (messageStore[index - 1]
236
+ .createdTimestamp as unknown as string)
237
+ : ''
238
+ }
223
239
  message={message.msg}
224
240
  createdTimestamp={message.createdTimestamp}
225
241
  updatedTimestamp={message.updatedTimestamp}
@@ -236,21 +252,26 @@ const ChatContainer = (props?: {
236
252
  </>
237
253
  ))}
238
254
  </>
239
- ) : privateMessageStore[selectedUserID] ? (
255
+ ) : (
256
+ <></>
257
+ )}
258
+ {chatType === ChatType.Private &&
259
+ privateChatUser &&
260
+ privateMessageStore[privateChatUser] ? (
240
261
  <>
241
- {privateMessageStore[selectedUserID].map((message: any, index) => (
262
+ {privateMessageStore[privateChatUser].map((message: any, index) => (
242
263
  <>
243
264
  {privateMessageStoreRef.current ===
244
- privateMessageStore[selectedUserID]?.length &&
265
+ privateMessageStore[privateChatUser]?.length &&
245
266
  privateUnreadCount &&
246
- privateMessageStore[selectedUserID]?.length -
267
+ privateMessageStore[privateChatUser]?.length -
247
268
  privateUnreadCount ===
248
269
  index ? (
249
270
  <View
250
271
  style={style.unreadMessageContainer}
251
272
  onLayout={unreadViewOnLayout}>
252
273
  <Text style={style.unreadMessageText}>
253
- {privateUnreadCount} Unread Message
274
+ {privateUnreadCount} {unreadMessageLabel}
254
275
  </Text>
255
276
  </View>
256
277
  ) : (
@@ -260,7 +281,7 @@ const ChatContainer = (props?: {
260
281
  isLocal={localUid === message.uid}
261
282
  isSameUser={
262
283
  index !== 0 &&
263
- privateMessageStore[selectedUserID][index - 1].uid ===
284
+ privateMessageStore[privateChatUser][index - 1].uid ===
264
285
  message.uid
265
286
  ? true
266
287
  : false
@@ -273,7 +294,7 @@ const ChatContainer = (props?: {
273
294
  msgId={message.msgId}
274
295
  isDeleted={message.isDeleted}
275
296
  />
276
- {privateMessageStore[selectedUserID]?.length - 1 === index ? (
297
+ {privateMessageStore[privateChatUser]?.length - 1 === index ? (
277
298
  <Spacer size={10} />
278
299
  ) : (
279
300
  <></>
@@ -284,7 +305,7 @@ const ChatContainer = (props?: {
284
305
  ) : (
285
306
  <></>
286
307
  )}
287
- {renderList[selectedUserID]?.offline && (
308
+ {defaultContent[privateChatUser]?.offline && (
288
309
  <View style={style.infoTextView}>
289
310
  <Text style={style.infoText}>{userOfflineLabel}</Text>
290
311
  </View>