@ethora/chat-component-rn 26.7.4 → 26.7.5

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 (288) hide show
  1. package/CHANGELOG.md +0 -54
  2. package/README.md +8 -31
  3. package/lib/commonjs/assets/icons.js +2 -7
  4. package/lib/commonjs/assets/icons.js.map +1 -1
  5. package/lib/commonjs/components/Header/HeaderRoomList.js +6 -20
  6. package/lib/commonjs/components/Header/HeaderRoomList.js.map +1 -1
  7. package/lib/commonjs/components/MainComponents/ChatRoom.js +14 -36
  8. package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
  9. package/lib/commonjs/components/MainComponents/MessageList.js +23 -7
  10. package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
  11. package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js +13 -14
  12. package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
  13. package/lib/commonjs/components/MainComponents/RoomList.js +32 -62
  14. package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
  15. package/lib/commonjs/components/Menu/HeaderRoomListMenu.js +98 -309
  16. package/lib/commonjs/components/Menu/HeaderRoomListMenu.js.map +1 -1
  17. package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +110 -320
  18. package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  19. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +213 -552
  20. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  21. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +2 -6
  22. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  23. package/lib/commonjs/components/Modals/Modal/Modal.js +0 -8
  24. package/lib/commonjs/components/Modals/Modal/Modal.js.map +1 -1
  25. package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js +1 -2
  26. package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  27. package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js +104 -202
  28. package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
  29. package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js +0 -8
  30. package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
  31. package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js +2 -4
  32. package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
  33. package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js +21 -7
  34. package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  35. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +244 -507
  36. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  37. package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js +46 -74
  38. package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  39. package/lib/commonjs/components/Modals/styledModalComponents.js +2 -9
  40. package/lib/commonjs/components/Modals/styledModalComponents.js.map +1 -1
  41. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +7 -17
  42. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
  43. package/lib/commonjs/components/styled/SendInput.js +11 -80
  44. package/lib/commonjs/components/styled/SendInput.js.map +1 -1
  45. package/lib/commonjs/components/styled/StyledComponents.js +3 -9
  46. package/lib/commonjs/components/styled/StyledComponents.js.map +1 -1
  47. package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js +4 -11
  48. package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
  49. package/lib/commonjs/context/xmppProvider.js +35 -6
  50. package/lib/commonjs/context/xmppProvider.js.map +1 -1
  51. package/lib/commonjs/helpers/updateMessagesTillLast.js +40 -12
  52. package/lib/commonjs/helpers/updateMessagesTillLast.js.map +1 -1
  53. package/lib/commonjs/hooks/useChatRoomFocus.js +9 -3
  54. package/lib/commonjs/hooks/useChatRoomFocus.js.map +1 -1
  55. package/lib/commonjs/hooks/useLogout.js +5 -0
  56. package/lib/commonjs/hooks/useLogout.js.map +1 -1
  57. package/lib/commonjs/hooks/useSendMessage.js +50 -23
  58. package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
  59. package/lib/commonjs/i18n/strings.js +1 -121
  60. package/lib/commonjs/i18n/strings.js.map +1 -1
  61. package/lib/commonjs/main.js +0 -6
  62. package/lib/commonjs/main.js.map +1 -1
  63. package/lib/commonjs/networking/api-requests/user.api.js +0 -59
  64. package/lib/commonjs/networking/api-requests/user.api.js.map +1 -1
  65. package/lib/commonjs/networking/outboundQueue.js +18 -0
  66. package/lib/commonjs/networking/outboundQueue.js.map +1 -1
  67. package/lib/commonjs/networking/stanzaHandlers.js +10 -1
  68. package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
  69. package/lib/commonjs/networking/xmppClient.js +107 -7
  70. package/lib/commonjs/networking/xmppClient.js.map +1 -1
  71. package/lib/commonjs/roomStore/chatSettingsSlice.js +1 -3
  72. package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
  73. package/lib/commonjs/roomStore/roomsSlice.js +22 -3
  74. package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
  75. package/lib/module/assets/icons.js +1 -6
  76. package/lib/module/assets/icons.js.map +1 -1
  77. package/lib/module/components/Header/HeaderRoomList.js +6 -20
  78. package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
  79. package/lib/module/components/MainComponents/ChatRoom.js +14 -36
  80. package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
  81. package/lib/module/components/MainComponents/MessageList.js +24 -8
  82. package/lib/module/components/MainComponents/MessageList.js.map +1 -1
  83. package/lib/module/components/MainComponents/ProfileImagePlaceholder.js +13 -14
  84. package/lib/module/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
  85. package/lib/module/components/MainComponents/RoomList.js +32 -62
  86. package/lib/module/components/MainComponents/RoomList.js.map +1 -1
  87. package/lib/module/components/Menu/HeaderRoomListMenu.js +101 -311
  88. package/lib/module/components/Menu/HeaderRoomListMenu.js.map +1 -1
  89. package/lib/module/components/Modals/AttachSheet/AttachSheet.js +113 -311
  90. package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  91. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +217 -555
  92. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  93. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +2 -6
  94. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  95. package/lib/module/components/Modals/Modal/Modal.js +1 -9
  96. package/lib/module/components/Modals/Modal/Modal.js.map +1 -1
  97. package/lib/module/components/Modals/NewChatModal/ModalContent.js +1 -2
  98. package/lib/module/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  99. package/lib/module/components/Modals/NewChatModal/NewChatModal.js +106 -205
  100. package/lib/module/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
  101. package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js +0 -8
  102. package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
  103. package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js +2 -4
  104. package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
  105. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js +23 -9
  106. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  107. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +248 -509
  108. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  109. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js +48 -76
  110. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  111. package/lib/module/components/Modals/styledModalComponents.js +2 -9
  112. package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
  113. package/lib/module/components/RoomComponents/ChatRoomItem.js +7 -17
  114. package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
  115. package/lib/module/components/styled/SendInput.js +12 -81
  116. package/lib/module/components/styled/SendInput.js.map +1 -1
  117. package/lib/module/components/styled/StyledComponents.js +3 -9
  118. package/lib/module/components/styled/StyledComponents.js.map +1 -1
  119. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +4 -11
  120. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
  121. package/lib/module/context/xmppProvider.js +35 -6
  122. package/lib/module/context/xmppProvider.js.map +1 -1
  123. package/lib/module/helpers/updateMessagesTillLast.js +41 -13
  124. package/lib/module/helpers/updateMessagesTillLast.js.map +1 -1
  125. package/lib/module/hooks/useChatRoomFocus.js +9 -3
  126. package/lib/module/hooks/useChatRoomFocus.js.map +1 -1
  127. package/lib/module/hooks/useLogout.js +5 -0
  128. package/lib/module/hooks/useLogout.js.map +1 -1
  129. package/lib/module/hooks/useSendMessage.js +51 -24
  130. package/lib/module/hooks/useSendMessage.js.map +1 -1
  131. package/lib/module/i18n/strings.js +1 -121
  132. package/lib/module/i18n/strings.js.map +1 -1
  133. package/lib/module/main.js +1 -1
  134. package/lib/module/main.js.map +1 -1
  135. package/lib/module/networking/api-requests/user.api.js +0 -56
  136. package/lib/module/networking/api-requests/user.api.js.map +1 -1
  137. package/lib/module/networking/outboundQueue.js +17 -0
  138. package/lib/module/networking/outboundQueue.js.map +1 -1
  139. package/lib/module/networking/stanzaHandlers.js +10 -1
  140. package/lib/module/networking/stanzaHandlers.js.map +1 -1
  141. package/lib/module/networking/xmppClient.js +107 -7
  142. package/lib/module/networking/xmppClient.js.map +1 -1
  143. package/lib/module/roomStore/chatSettingsSlice.js +1 -3
  144. package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
  145. package/lib/module/roomStore/roomsSlice.js +20 -2
  146. package/lib/module/roomStore/roomsSlice.js.map +1 -1
  147. package/lib/typescript/assets/icons.d.ts +0 -16
  148. package/lib/typescript/assets/icons.d.ts.map +1 -1
  149. package/lib/typescript/components/Header/HeaderRoomList.d.ts.map +1 -1
  150. package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
  151. package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
  152. package/lib/typescript/components/MainComponents/ProfileImagePlaceholder.d.ts.map +1 -1
  153. package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
  154. package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts +0 -3
  155. package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts.map +1 -1
  156. package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts +0 -9
  157. package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
  158. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts +0 -10
  159. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
  160. package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
  161. package/lib/typescript/components/Modals/Modal/Modal.d.ts.map +1 -1
  162. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts +2 -4
  163. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts.map +1 -1
  164. package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts +1 -1
  165. package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts.map +1 -1
  166. package/lib/typescript/components/Modals/NewChatModal/UpdNewChatModal.d.ts.map +1 -1
  167. package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts +1 -6
  168. package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts.map +1 -1
  169. package/lib/typescript/components/Modals/UserProfileModal/EditUserModal.d.ts.map +1 -1
  170. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts +0 -16
  171. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
  172. package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts +0 -1
  173. package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts.map +1 -1
  174. package/lib/typescript/components/Modals/styledModalComponents.d.ts.map +1 -1
  175. package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
  176. package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
  177. package/lib/typescript/components/styled/StyledComponents.d.ts.map +1 -1
  178. package/lib/typescript/components/styled/StyledInputComponents/StyledInputComponents.d.ts.map +1 -1
  179. package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
  180. package/lib/typescript/helpers/updateMessagesTillLast.d.ts.map +1 -1
  181. package/lib/typescript/hooks/useChatRoomFocus.d.ts.map +1 -1
  182. package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
  183. package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
  184. package/lib/typescript/i18n/strings.d.ts.map +1 -1
  185. package/lib/typescript/main.d.ts +1 -1
  186. package/lib/typescript/main.d.ts.map +1 -1
  187. package/lib/typescript/networking/api-requests/user.api.d.ts +0 -27
  188. package/lib/typescript/networking/api-requests/user.api.d.ts.map +1 -1
  189. package/lib/typescript/networking/outboundQueue.d.ts +16 -0
  190. package/lib/typescript/networking/outboundQueue.d.ts.map +1 -1
  191. package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
  192. package/lib/typescript/networking/xmppClient.d.ts +33 -1
  193. package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
  194. package/lib/typescript/roomStore/chatSettingsSlice.d.ts.map +1 -1
  195. package/lib/typescript/roomStore/roomsSlice.d.ts +18 -1
  196. package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
  197. package/lib/typescript/types/models/room.model.d.ts +15 -0
  198. package/lib/typescript/types/models/room.model.d.ts.map +1 -1
  199. package/lib/typescript/types/types.d.ts +20 -20
  200. package/lib/typescript/types/types.d.ts.map +1 -1
  201. package/package.json +1 -6
  202. package/src/assets/icons.tsx +9 -48
  203. package/src/components/Header/HeaderRoomList.tsx +5 -20
  204. package/src/components/MainComponents/ChatRoom.tsx +20 -38
  205. package/src/components/MainComponents/MessageList.tsx +24 -8
  206. package/src/components/MainComponents/ProfileImagePlaceholder.tsx +14 -21
  207. package/src/components/MainComponents/RoomList.tsx +34 -65
  208. package/src/components/Menu/HeaderRoomListMenu.tsx +71 -310
  209. package/src/components/Modals/AttachSheet/AttachSheet.tsx +97 -331
  210. package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +279 -598
  211. package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +2 -4
  212. package/src/components/Modals/Modal/Modal.tsx +0 -7
  213. package/src/components/Modals/NewChatModal/ModalContent.tsx +3 -6
  214. package/src/components/Modals/NewChatModal/NewChatModal.tsx +117 -219
  215. package/src/components/Modals/NewChatModal/UpdNewChatModal.tsx +1 -12
  216. package/src/components/Modals/SelectUsersModal/SelectUsersModal.tsx +4 -14
  217. package/src/components/Modals/UserProfileModal/EditUserModal.tsx +25 -9
  218. package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +307 -617
  219. package/src/components/Modals/UserSettingsModal/UserSettingsModal.tsx +58 -75
  220. package/src/components/Modals/styledModalComponents.tsx +2 -9
  221. package/src/components/RoomComponents/ChatRoomItem.tsx +7 -14
  222. package/src/components/styled/SendInput.tsx +12 -83
  223. package/src/components/styled/StyledComponents.ts +3 -9
  224. package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +4 -11
  225. package/src/context/xmppProvider.tsx +41 -8
  226. package/src/helpers/updateMessagesTillLast.tsx +42 -17
  227. package/src/hooks/useChatRoomFocus.ts +11 -3
  228. package/src/hooks/useLogout.tsx +7 -0
  229. package/src/hooks/useSendMessage.tsx +60 -24
  230. package/src/i18n/strings.ts +1 -121
  231. package/src/main.ts +1 -1
  232. package/src/networking/api-requests/user.api.ts +0 -71
  233. package/src/networking/outboundQueue.ts +29 -0
  234. package/src/networking/stanzaHandlers.ts +9 -1
  235. package/src/networking/xmppClient.ts +118 -7
  236. package/src/roomStore/chatSettingsSlice.ts +1 -3
  237. package/src/roomStore/roomsSlice.ts +20 -2
  238. package/src/types/models/room.model.ts +15 -0
  239. package/src/types/types.ts +20 -22
  240. package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js +0 -226
  241. package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js.map +0 -1
  242. package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js +0 -556
  243. package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js.map +0 -1
  244. package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js +0 -210
  245. package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js.map +0 -1
  246. package/lib/commonjs/helpers/getChatBackground.js +0 -23
  247. package/lib/commonjs/helpers/getChatBackground.js.map +0 -1
  248. package/lib/commonjs/helpers/mediaLibraryRuntime.js +0 -31
  249. package/lib/commonjs/helpers/mediaLibraryRuntime.js.map +0 -1
  250. package/lib/commonjs/helpers/pickImageAsset.js +0 -68
  251. package/lib/commonjs/helpers/pickImageAsset.js.map +0 -1
  252. package/lib/commonjs/helpers/sheetGestures.js +0 -32
  253. package/lib/commonjs/helpers/sheetGestures.js.map +0 -1
  254. package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js +0 -223
  255. package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js.map +0 -1
  256. package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js +0 -548
  257. package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js.map +0 -1
  258. package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js +0 -205
  259. package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js.map +0 -1
  260. package/lib/module/helpers/getChatBackground.js +0 -18
  261. package/lib/module/helpers/getChatBackground.js.map +0 -1
  262. package/lib/module/helpers/mediaLibraryRuntime.js +0 -25
  263. package/lib/module/helpers/mediaLibraryRuntime.js.map +0 -1
  264. package/lib/module/helpers/pickImageAsset.js +0 -63
  265. package/lib/module/helpers/pickImageAsset.js.map +0 -1
  266. package/lib/module/helpers/sheetGestures.js +0 -26
  267. package/lib/module/helpers/sheetGestures.js.map +0 -1
  268. package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts +0 -9
  269. package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts.map +0 -1
  270. package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts +0 -75
  271. package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts.map +0 -1
  272. package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts +0 -25
  273. package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts.map +0 -1
  274. package/lib/typescript/helpers/getChatBackground.d.ts +0 -15
  275. package/lib/typescript/helpers/getChatBackground.d.ts.map +0 -1
  276. package/lib/typescript/helpers/mediaLibraryRuntime.d.ts +0 -3
  277. package/lib/typescript/helpers/mediaLibraryRuntime.d.ts.map +0 -1
  278. package/lib/typescript/helpers/pickImageAsset.d.ts +0 -27
  279. package/lib/typescript/helpers/pickImageAsset.d.ts.map +0 -1
  280. package/lib/typescript/helpers/sheetGestures.d.ts +0 -20
  281. package/lib/typescript/helpers/sheetGestures.d.ts.map +0 -1
  282. package/src/components/Modals/ChatProfileModal/ReportChatModal.tsx +0 -244
  283. package/src/components/Modals/ProfileHeader/ProfileHeader.tsx +0 -615
  284. package/src/components/Modals/ProfileHeader/ProfileMenu.tsx +0 -217
  285. package/src/helpers/getChatBackground.ts +0 -18
  286. package/src/helpers/mediaLibraryRuntime.ts +0 -25
  287. package/src/helpers/pickImageAsset.ts +0 -68
  288. package/src/helpers/sheetGestures.ts +0 -25
@@ -1,69 +1,30 @@
1
1
  "use strict";
2
2
 
3
- /** @format */
4
-
5
- import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
6
- import { ActivityIndicator, Animated, Image, Share, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
7
- import { ModalContainerFullScreen } from '../styledModalComponents';
8
- import { ChatIcon, EditIcon, IconDoc, LeaveIcon, LogoutIcon, ProfileIcon, ShareIcon } from '../../../assets/icons';
9
- import { useAppDispatch } from '../../../hooks/hooks';
10
- import { useChatSettingState } from '../../../hooks/useChatSettingState';
3
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
4
+ import { CenterContainer, UserInfo, UserName, ModalContainerFullScreen, ActionButton, Label, BorderedContainer, LabelData, ModalBackground, ModalContainer, CloseButton, ModalTitle, GroupContainer } from '../styledModalComponents';
5
+ import { ChatIcon, DeleteIcon, EditIcon, IconDoc, LeaveIcon, MoreIcon } from '../../../assets/icons';
6
+ import ModalHeaderComponent from '../ModalHeaderComponent';
7
+ import { ProfileImagePlaceholder } from '../../MainComponents/ProfileImagePlaceholder';
8
+ import Button from '../../styled/Button';
9
+ import DropdownMenu from '../../DropdownMenu/DropdownMenu';
10
+ import { logout, setActiveModal, setLangSource, setSelectedUser } from '../../../roomStore/chatSettingsSlice';
11
+ import { addRoomViaApi, setCurrentRoom, setLogoutState } from '../../../roomStore/roomsSlice';
12
+ import EditUserModal from './EditUserModal';
13
+ import { walletToUsername } from '../../../helpers/walletUsername';
11
14
  import { useXmppClient } from '../../../context/xmppProvider';
12
- import { useToast } from '../../../context/ToastContext';
13
- import { useT } from '../../../i18n/useT';
14
- import { useFileToken } from '../../../hooks/useFileToken';
15
- import { appendFileToken } from '../../../helpers/secureFileUrl';
16
- import { getIconColor } from '../../../helpers/getIconColor';
17
- import { chatTextStyle } from '../../../helpers/typography';
18
- import { getElementFont } from '../../../helpers/getElementFont';
19
- import { LANGUAGE_OPTIONS } from '../../../helpers/constants/LANGUAGE_OPTIONS';
20
- import { MODAL_TYPES } from '../../../helpers/constants/MODAL_TYPES';
21
- import { setActiveFile, setActiveModal, setLangSource, setSelectedUser } from '../../../roomStore/chatSettingsSlice';
22
- import { addRoomViaApi, setCurrentRoom } from '../../../roomStore/roomsSlice';
23
- import { runLogoutFlow } from '../../Menu/HeaderRoomListMenu';
24
- import { useLogout } from '../../../hooks/useLogout';
15
+ import Select from '../../MainComponents/Select';
16
+ import { useAppDispatch } from '../../../hooks/hooks';
17
+ import { ScrollView, Text, View } from 'react-native';
25
18
  import { postPrivateRoom } from '../../../networking/api-requests/rooms.api';
26
- import { getUserFiles, isMediaFile } from '../../../networking/api-requests/user.api';
27
19
  import { createRoomFromApi } from '../../../helpers/createRoomFromApi';
28
- import { walletToUsername } from '../../../helpers/walletUsername';
29
- import { ProfileHero, ProfileTopBar, useHeaderMetrics } from '../ProfileHeader/ProfileHeader';
30
- import ProfileMenu from '../ProfileHeader/ProfileMenu';
31
- import EditUserModal from './EditUserModal';
32
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
33
- const PREFIX = 'user-profile';
34
- /** Two uppercase letters for a person without a picture. */
35
- export const userInitials = name => {
36
- const words = (name || '').trim().split(/\s+/).filter(Boolean);
37
- const letters = (words.length >= 2 ? [words[0][0], words[1][0]] : [words[0]?.[0], words[0]?.[1]]).filter(c => !!c && /[\p{L}\p{N}]/u.test(c));
38
- return letters.join('').toUpperCase();
39
- };
40
-
41
- /**
42
- * Which tabs a profile shows. Only the signed-in user has tabs at all:
43
- * `GET /v2/files/` returns the JWT owner's files, so there is nothing to
44
- * put under Media/Documents for anybody else, and the language picker is
45
- * a personal setting.
46
- */
47
- export const profileTabs = opts => {
48
- if (!opts.isOwnProfile) {
49
- return [];
50
- }
51
- const tabs = [];
52
- if (opts.translatesEnabled) {
53
- tabs.push('language');
54
- }
55
- if (opts.hasMedia) {
56
- tabs.push('media');
57
- }
58
- if (opts.hasDocuments) {
59
- tabs.push('documents');
60
- }
61
- return tabs;
62
- };
20
+ import { useToast } from '../../../context/ToastContext';
21
+ import { LANGUAGE_OPTIONS } from '../../../helpers/constants/LANGUAGE_OPTIONS';
22
+ import { deleteDocument, getDocuments } from '../../../networking/api-requests/user.api';
23
+ import { useChatSettingState } from '../../../hooks/useChatSettingState';
24
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
63
25
  const UserProfileModal = ({
64
26
  handleCloseModal
65
27
  }) => {
66
- const t = useT();
67
28
  const dispatch = useAppDispatch();
68
29
  const {
69
30
  client
@@ -77,99 +38,75 @@ const UserProfileModal = ({
77
38
  selectedUser,
78
39
  langSource
79
40
  } = useChatSettingState();
80
- const fileToken = useFileToken();
81
41
  const [isEditing, setIsEditing] = useState(false);
82
- const [files, setFiles] = useState([]);
83
- const [loadingFiles, setLoadingFiles] = useState(false);
84
- const [activeTab, setActiveTab] = useState(null);
85
- const scrollY = useRef(new Animated.Value(0)).current;
86
- const scrollRef = useRef(null);
87
- const {
88
- collapseDistance
89
- } = useHeaderMetrics();
90
- const [viewportHeight, setViewportHeight] = useState(0);
91
- // `scrollY` is driven natively, so its value can't be read back with
92
- // addListener; the Animated.event's JS `listener` still fires, which is
93
- // enough to know which state the header is in.
94
- const [isCollapsed, setIsCollapsed] = useState(false);
95
- const isOwnProfile = !selectedUser;
96
- const profileUser = selectedUser ?? user;
97
- const media = useMemo(() => files.filter(isMediaFile), [files]);
98
- const documents = useMemo(() => files.filter(file => !isMediaFile(file)), [files]);
99
- const tabs = useMemo(() => profileTabs({
100
- isOwnProfile,
101
- translatesEnabled: !!config?.translates?.enabled,
102
- hasMedia: media.length > 0,
103
- hasDocuments: documents.length > 0
104
- }), [isOwnProfile, config?.translates?.enabled, media.length, documents.length]);
105
-
106
- // Keep the selected tab valid as the lists load in.
107
- useEffect(() => {
108
- if (tabs.length === 0) {
109
- setActiveTab(null);
110
- return;
42
+ const [documents, setDocuments] = useState([]);
43
+ const [deleteDocumentId, setDeleteDocumentId] = useState('');
44
+ const [showDelete, setShowDelete] = useState(false);
45
+ const handleDeleteDocument = async () => {
46
+ try {
47
+ await deleteDocument(deleteDocumentId);
48
+ setDocuments(documents.filter(doc => doc._id !== deleteDocumentId));
49
+ showToast({
50
+ id: Date.now().toString(),
51
+ title: 'Success',
52
+ message: 'Document deleted successfully',
53
+ type: 'success'
54
+ });
55
+ // handleGetDocs();
56
+ } catch (error) {
57
+ console.error('Error deleting document', error);
58
+ showToast({
59
+ id: Date.now().toString(),
60
+ title: 'Error',
61
+ message: 'Failed to delete document',
62
+ type: 'error'
63
+ });
64
+ } finally {
65
+ setShowDelete(false);
111
66
  }
112
- setActiveTab(current => current && tabs.includes(current) ? current : tabs[0]);
113
- }, [tabs]);
114
-
115
- // One request per visit, and only for one's own profile — the endpoint
116
- // is scoped to the JWT owner, so it would return *our* files while
117
- // looking at somebody else's page.
118
- useEffect(() => {
119
- if (!isOwnProfile) {
120
- setFiles([]);
121
- return;
67
+ };
68
+ const handleGetDocs = async () => {
69
+ try {
70
+ const {
71
+ data
72
+ } = await getDocuments(user?.defaultWallet?.walletAddress);
73
+ const items = data.results.filter(el => el.locations[0]);
74
+ setDocuments(items);
75
+ } catch (error) {
76
+ console.error('Error getting docs', error);
122
77
  }
123
- let cancelled = false;
124
- setLoadingFiles(true);
125
- getUserFiles().then(rows => {
126
- if (!cancelled) {
127
- setFiles(rows);
128
- }
129
- }).catch(error => {
130
- console.warn('Could not load user files:', error);
131
- if (!cancelled) {
132
- setFiles([]);
133
- }
134
- }).finally(() => {
135
- if (!cancelled) {
136
- setLoadingFiles(false);
137
- }
138
- });
139
- return () => {
140
- cancelled = true;
141
- };
142
- }, [isOwnProfile, user?.token]);
78
+ };
79
+ useEffect(() => {
80
+ handleGetDocs();
81
+ }, []);
143
82
  const handleBackClick = useCallback(() => {
144
83
  dispatch(setSelectedUser(undefined));
145
84
  handleCloseModal();
146
- }, [dispatch, handleCloseModal]);
147
-
148
- // Same teardown the room-list menu runs (XMPP, redux, persisted slices,
149
- // AsyncStorage), including the host's confirm copy and callbacks.
150
- const performLogout = useLogout();
85
+ }, []);
151
86
  const handleLogout = useCallback(() => {
152
- runLogoutFlow(config?.logout ?? {
153
- enabled: true
154
- }, performLogout).catch(() => {});
155
- }, [config?.logout, performLogout]);
156
- const handleShare = useCallback(async () => {
157
- const name = profileUser?.name || `${profileUser?.firstName ?? ''} ${profileUser?.lastName ?? ''}`.trim();
158
- const id = profileUser?.userJID || profileUser?.defaultWallet?.walletAddress || profileUser?.id || '';
159
- try {
160
- await Share.share({
161
- message: id ? `${name}\n${id}` : name
162
- });
163
- } catch (error) {
164
- console.warn('Could not share the profile:', error);
87
+ dispatch(logout());
88
+ dispatch(setLogoutState());
89
+ }, []);
90
+ const menuOptions = useMemo(() => [{
91
+ label: 'Log Out',
92
+ icon: /*#__PURE__*/_jsx(LeaveIcon, {}),
93
+ onClick: () => {
94
+ handleLogout();
95
+ },
96
+ styles: {
97
+ color: 'red'
165
98
  }
166
- }, [profileUser]);
99
+ }], []);
100
+ const handleSelect = selected => {
101
+ dispatch(setLangSource(selected.id));
102
+ };
103
+ const EditClick = useCallback(() => {
104
+ setIsEditing(true);
105
+ }, []);
167
106
  const handleRoomCreation = async (newChat, usersArrayLength) => {
168
107
  try {
169
108
  const normalizedChat = createRoomFromApi(newChat, config?.xmppSettings?.conference, usersArrayLength);
170
- if (!normalizedChat || !client) {
171
- return;
172
- }
109
+ if (!normalizedChat || !client) return;
173
110
  dispatch(addRoomViaApi({
174
111
  room: normalizedChat,
175
112
  xmpp: client
@@ -196,400 +133,202 @@ const UserProfileModal = ({
196
133
  type: 'info',
197
134
  duration: 3000
198
135
  });
136
+ let newRoomJid = '';
199
137
  if (config?.newArch) {
200
138
  const newRoom = await postPrivateRoom(selectedUser?.userJID ?? (selectedUser?.id || ''));
201
139
  handleRoomCreation(newRoom, 2);
140
+ newRoomJid = newRoom.name;
202
141
  } else {
203
142
  const selectedUserUsername = walletToUsername(selectedUser?.id || '');
204
143
  const myUsername = walletToUsername(user.defaultWallet.walletAddress);
205
- const roomJid = [myUsername, selectedUserUsername].sort().join('.').toLowerCase();
144
+ const combinedWalletAddress = [myUsername, selectedUserUsername].sort().join('.');
145
+ const roomJid = combinedWalletAddress.toLowerCase();
206
146
  const combinedUsersName = [user.firstName, selectedUser?.name?.split(' ')?.[0] || ''].sort().join(' and ');
207
- const newRoomJid = (await client?.createPrivateRoomStanza(combinedUsersName, `Private chat ${combinedUsersName}`, roomJid)) || '';
147
+ newRoomJid = (await client?.createPrivateRoomStanza(combinedUsersName, `Private chat ${combinedUsersName}`, roomJid)) || '';
208
148
  if (newRoomJid) {
209
149
  await client?.inviteRoomRequestStanza(selectedUserUsername, newRoomJid);
210
150
  await client?.getRoomsStanza();
211
151
  }
212
152
  }
213
153
  dispatch(setActiveModal(undefined));
214
- }, [selectedUser]); // eslint-disable-line react-hooks/exhaustive-deps
215
-
216
- const openFile = file => {
217
- dispatch(setActiveFile({
218
- fileName: file.name,
219
- fileURL: file.url,
220
- mimetype: file.mimetype
221
- }));
222
- dispatch(setActiveModal(MODAL_TYPES.FILE_PREVIEW));
154
+ }, [selectedUser]);
155
+ const modalUser = selectedUser ?? user;
156
+ const findLanguage = () => {
157
+ if (!langSource) {
158
+ return null;
159
+ }
160
+ const language = LANGUAGE_OPTIONS.find(lang => lang.id === langSource);
161
+ return language || null;
223
162
  };
224
- const heroActions = useMemo(() => isOwnProfile ? [{
225
- key: 'account',
226
- label: t('action.account'),
227
- icon: color => /*#__PURE__*/_jsx(ProfileIcon, {
228
- color: color
229
- }),
230
- onPress: () => dispatch(setActiveModal(MODAL_TYPES.SETTINGS))
231
- }, {
232
- key: 'share',
233
- label: t('action.share'),
234
- icon: color => /*#__PURE__*/_jsx(ShareIcon, {
235
- color: color
236
- }),
237
- onPress: handleShare
238
- }, {
239
- key: 'edit',
240
- label: t('action.edit'),
241
- icon: color => /*#__PURE__*/_jsx(EditIcon, {
242
- color: color
243
- }),
244
- onPress: () => setIsEditing(true)
245
- }, {
246
- key: 'logout',
247
- label: t('action.logOut'),
248
- icon: color => /*#__PURE__*/_jsx(LogoutIcon, {
249
- color: color
250
- }),
251
- onPress: handleLogout
252
- }] : [...(config?.hideMemberSendMessageAction ? [] : [{
253
- key: 'message',
254
- label: t('action.message'),
255
- icon: color => /*#__PURE__*/_jsx(ChatIcon, {
256
- color: color
257
- }),
258
- onPress: handlePrivateMessage
259
- }]), {
260
- key: 'share',
261
- label: t('action.share'),
262
- icon: color => /*#__PURE__*/_jsx(ShareIcon, {
263
- color: color
264
- }),
265
- onPress: handleShare
266
- }], [isOwnProfile, t, handleShare, handlePrivateMessage, handleLogout] // eslint-disable-line react-hooks/exhaustive-deps
267
- );
268
-
269
- // Collapsed, the hero's round buttons are gone — the "…" menu carries
270
- // exactly the same actions so nothing becomes unreachable.
271
- const menuItems = useMemo(() => isCollapsed ? heroActions.map(action => ({
272
- key: action.key,
273
- label: action.label,
274
- icon: action.icon('#141414'),
275
- destructive: action.key === 'logout',
276
- onPress: action.onPress
277
- })) : [], [isCollapsed, heroActions]);
278
- if (isEditing) {
279
- return /*#__PURE__*/_jsx(ModalContainerFullScreen, {
280
- children: /*#__PURE__*/_jsx(EditUserModal, {
281
- setIsEditing: setIsEditing,
282
- modalUser: profileUser,
283
- config: config
163
+ const showDeleteModal = docId => {
164
+ setDeleteDocumentId(docId);
165
+ setShowDelete(true);
166
+ };
167
+ const DefaultBody = useMemo(() => /*#__PURE__*/_jsxs(_Fragment, {
168
+ children: [/*#__PURE__*/_jsx(ModalHeaderComponent, {
169
+ handleCloseModal: handleBackClick,
170
+ headerTitle: 'Profile',
171
+ rightMenu: !selectedUser && /*#__PURE__*/_jsxs(_Fragment, {
172
+ children: [/*#__PURE__*/_jsx(Button, {
173
+ onPress: EditClick,
174
+ children: /*#__PURE__*/_jsx(EditIcon, {
175
+ color: "#8C8C8C"
176
+ })
177
+ }), /*#__PURE__*/_jsx(DropdownMenu, {
178
+ options: menuOptions,
179
+ position: "right",
180
+ menuIcon: /*#__PURE__*/_jsx(MoreIcon, {})
181
+ })]
284
182
  })
285
- });
286
- }
287
- const displayName = profileUser?.name || `${profileUser?.firstName ?? ''} ${profileUser?.lastName ?? ''}`.trim() || t('modal.profile.title');
288
- const heroImage = appendFileToken(profileUser?.profileImage, fileToken) || null;
289
- const heroColor = config?.colors?.avatar || getIconColor(config);
290
- const description = profileUser?.description;
291
- const renderTabBody = () => {
292
- if (activeTab === 'language') {
293
- return /*#__PURE__*/_jsx(View, {
294
- children: LANGUAGE_OPTIONS.map(option => {
295
- const selected = langSource === option.id;
296
- return /*#__PURE__*/_jsxs(TouchableOpacity, {
297
- testID: `${PREFIX}-language-${option.id}`,
298
- activeOpacity: 0.7,
299
- style: styles.languageRow,
300
- onPress: () => dispatch(setLangSource(option.id)),
301
- children: [/*#__PURE__*/_jsx(Text, {
302
- style: styles.languageLabel,
303
- children: option.name
304
- }), selected && /*#__PURE__*/_jsx(Text, {
305
- style: [styles.check, {
306
- color: getIconColor(config)
307
- }],
308
- children: "\u2713"
309
- })]
310
- }, option.id);
183
+ }), /*#__PURE__*/_jsxs(CenterContainer, {
184
+ children: [/*#__PURE__*/_jsx(ProfileImagePlaceholder, {
185
+ icon: modalUser?.profileImage ?? null,
186
+ name: modalUser?.name ?? modalUser?.firstName,
187
+ size: 120
188
+ }), /*#__PURE__*/_jsx(UserInfo, {
189
+ children: /*#__PURE__*/_jsx(UserName, {
190
+ children: modalUser?.name ? `${modalUser?.name}` : `${modalUser?.firstName} ${modalUser?.lastName}`
311
191
  })
312
- });
313
- }
314
- if (activeTab === 'media') {
315
- return /*#__PURE__*/_jsx(View, {
316
- style: styles.mediaGrid,
317
- children: media.map(file => /*#__PURE__*/_jsx(TouchableOpacity, {
318
- testID: `${PREFIX}-media-${file.id}`,
319
- activeOpacity: 0.8,
320
- style: styles.mediaTile,
321
- onPress: () => openFile(file),
322
- children: /*#__PURE__*/_jsx(Image, {
323
- source: {
324
- uri: appendFileToken(file.url, fileToken) || file.url
192
+ }), !selectedUser && config?.translates?.enabled && /*#__PURE__*/_jsx(BorderedContainer, {
193
+ children: /*#__PURE__*/_jsx(Select, {
194
+ options: LANGUAGE_OPTIONS,
195
+ placeholder: 'Select your language',
196
+ onSelect: handleSelect,
197
+ accentColor: config?.colors?.primary,
198
+ selectedValue: findLanguage()
199
+ })
200
+ }), /*#__PURE__*/_jsxs(BorderedContainer, {
201
+ children: [/*#__PURE__*/_jsx(Label, {
202
+ children: "About"
203
+ }), /*#__PURE__*/_jsx(LabelData, {
204
+ children: modalUser?.description && modalUser?.description?.length > 4 ? modalUser.description : 'No description'
205
+ })]
206
+ }), selectedUser && !config?.disableMemberProfileActions && /*#__PURE__*/_jsxs(_Fragment, {
207
+ children: [!config?.hideMemberSendMessageAction && /*#__PURE__*/_jsx(ActionButton, {
208
+ StartIcon: /*#__PURE__*/_jsx(ChatIcon, {}),
209
+ onPress: handlePrivateMessage,
210
+ variant: "filled",
211
+ children: /*#__PURE__*/_jsx(Text, {
212
+ style: {
213
+ color: '#ffffff'
325
214
  },
326
- style: styles.mediaImage,
327
- resizeMode: "cover"
215
+ children: "Message"
216
+ })
217
+ }), !config?.hideMemberCopyIdAction && /*#__PURE__*/_jsx(ActionButton, {
218
+ onPress: () => {}
219
+ // onPress={() => handleCopyClick(selectedUser.id)}
220
+ ,
221
+ variant: "filled",
222
+ children: /*#__PURE__*/_jsx(Text, {
223
+ style: {
224
+ color: '#ffffff'
225
+ },
226
+ children: "Copy User Id"
328
227
  })
329
- }, file.id))
330
- });
331
- }
332
- return /*#__PURE__*/_jsx(View, {
333
- children: documents.map(file => /*#__PURE__*/_jsxs(TouchableOpacity, {
334
- testID: `${PREFIX}-document-${file.id}`,
335
- activeOpacity: 0.7,
336
- style: styles.documentRow,
337
- onPress: () => openFile(file),
338
- children: [/*#__PURE__*/_jsx(IconDoc, {}), /*#__PURE__*/_jsxs(View, {
339
- style: styles.documentText,
340
- children: [/*#__PURE__*/_jsx(Text, {
341
- numberOfLines: 1,
342
- style: styles.documentName,
343
- children: file.name
344
- }), !!file.createdAt && /*#__PURE__*/_jsx(Text, {
345
- style: styles.documentDate,
346
- children: new Date(file.createdAt).toLocaleDateString()
347
- })]
348
228
  })]
349
- }, file.id))
350
- });
351
- };
352
- return /*#__PURE__*/_jsxs(ModalContainerFullScreen, {
353
- style: styles.screen,
354
- children: [/*#__PURE__*/_jsxs(Animated.ScrollView, {
355
- ref: scrollRef,
356
- style: styles.scroll,
357
- contentContainerStyle: [styles.scrollContent, viewportHeight > 0 && {
358
- minHeight: viewportHeight + collapseDistance
359
- }],
360
- onLayout: e => setViewportHeight(e.nativeEvent.layout.height),
361
- showsVerticalScrollIndicator: false,
362
- scrollEventThrottle: 16,
363
- onScroll: Animated.event([{
364
- nativeEvent: {
365
- contentOffset: {
366
- y: scrollY
367
- }
368
- }
369
- }], {
370
- useNativeDriver: true,
371
- listener: e => {
372
- const y = e?.nativeEvent?.contentOffset?.y ?? 0;
373
- setIsCollapsed(y >= collapseDistance - 8);
374
- }
375
- }),
376
- children: [/*#__PURE__*/_jsx(ProfileHero, {
377
- testIDPrefix: PREFIX,
378
- title: displayName,
379
- imageUri: heroImage,
380
- fallbackColor: heroColor,
381
- initials: userInitials(displayName),
382
- scrollY: scrollY,
383
- actions: heroActions,
384
- titleStyle: chatTextStyle(config?.typography?.profile?.title),
385
- titleAccessory: isOwnProfile ? /*#__PURE__*/_jsxs(TouchableOpacity, {
386
- testID: `${PREFIX}-logout`,
387
- activeOpacity: 0.7,
388
- style: styles.leaveButton,
389
- onPress: handleLogout,
390
- children: [/*#__PURE__*/_jsx(LeaveIcon, {
391
- color: "#FFFFFF",
392
- width: 18,
393
- height: 18
394
- }), /*#__PURE__*/_jsx(Text, {
395
- style: styles.leaveLabel,
396
- children: t('action.leave')
397
- })]
398
- }) : undefined
399
- }), /*#__PURE__*/_jsxs(View, {
400
- style: styles.body,
401
- children: [/*#__PURE__*/_jsxs(View, {
402
- style: styles.card,
403
- children: [/*#__PURE__*/_jsx(Text, {
404
- style: [styles.cardLabel, getElementFont(config, 'profileSectionLabel')],
405
- children: t('modal.profile.about')
406
- }), /*#__PURE__*/_jsx(Text, {
407
- style: styles.cardValue,
408
- children: description && description.length > 4 ? description : t('modal.profile.noDescription')
409
- })]
410
- }), tabs.length > 0 && /*#__PURE__*/_jsxs(View, {
411
- style: styles.card,
412
- children: [/*#__PURE__*/_jsx(View, {
413
- style: styles.tabsRow,
414
- children: tabs.map(tab => {
415
- const active = tab === activeTab;
416
- const count = tab === 'media' ? media.length : tab === 'documents' ? documents.length : 0;
417
- return /*#__PURE__*/_jsxs(TouchableOpacity, {
418
- testID: `${PREFIX}-tab-${tab}`,
419
- activeOpacity: 0.7,
420
- style: [styles.tab, active && {
421
- borderBottomColor: getIconColor(config)
422
- }],
423
- onPress: () => setActiveTab(tab),
424
- children: [/*#__PURE__*/_jsx(Text, {
425
- style: [styles.tabLabel, active && {
426
- color: getIconColor(config)
427
- }],
428
- children: t(`modal.profile.${tab}`)
429
- }), count > 0 && /*#__PURE__*/_jsx(View, {
430
- style: [styles.tabBadge, {
431
- backgroundColor: getIconColor(config)
432
- }],
433
- children: /*#__PURE__*/_jsx(Text, {
434
- style: styles.tabBadgeText,
435
- children: count
229
+ }), /*#__PURE__*/_jsx(BorderedContainer, {
230
+ children: /*#__PURE__*/_jsx(ScrollView, {
231
+ style: {
232
+ maxHeight: 400
233
+ },
234
+ showsVerticalScrollIndicator: true,
235
+ nestedScrollEnabled: true,
236
+ children: documents.map(doc => /*#__PURE__*/_jsxs(View, {
237
+ style: {
238
+ flexDirection: 'row',
239
+ alignItems: 'center',
240
+ justifyContent: 'space-between',
241
+ gap: 24,
242
+ backgroundColor: '#F3F6FC',
243
+ marginBottom: 8,
244
+ paddingVertical: 8,
245
+ paddingHorizontal: 16,
246
+ borderRadius: 8
247
+ },
248
+ children: [/*#__PURE__*/_jsxs(View, {
249
+ style: {
250
+ flexDirection: 'row',
251
+ alignItems: 'center',
252
+ gap: 24
253
+ },
254
+ children: [/*#__PURE__*/_jsx(View, {
255
+ children: /*#__PURE__*/_jsx(IconDoc, {})
256
+ }), /*#__PURE__*/_jsxs(View, {
257
+ children: [/*#__PURE__*/_jsx(Label, {
258
+ style: {
259
+ paddingBottom: 4
260
+ },
261
+ children: doc.documentName
262
+ }), /*#__PURE__*/_jsx(LabelData, {
263
+ children: new Date(doc.createdAt).toLocaleDateString('en-GB', {
264
+ day: '2-digit',
265
+ month: 'short',
266
+ year: 'numeric'
267
+ }) + ' ' + new Date(doc.createdAt).toLocaleTimeString('en-GB', {
268
+ hour: '2-digit',
269
+ minute: '2-digit'
436
270
  })
437
271
  })]
438
- }, tab);
439
- })
440
- }), renderTabBody()]
441
- }), isOwnProfile && loadingFiles && files.length === 0 && /*#__PURE__*/_jsx(ActivityIndicator, {
442
- testID: `${PREFIX}-files-loading`
443
- })]
272
+ })]
273
+ }), /*#__PURE__*/_jsx(Button, {
274
+ onPress: () => showDeleteModal(doc._id),
275
+ children: /*#__PURE__*/_jsx(DeleteIcon, {})
276
+ })]
277
+ }, doc._id))
278
+ })
444
279
  })]
445
- }), /*#__PURE__*/_jsx(ProfileTopBar, {
446
- testIDPrefix: PREFIX,
447
- title: displayName,
448
- imageUri: heroImage,
449
- fallbackColor: heroColor,
450
- initials: userInitials(displayName),
451
- scrollY: scrollY,
452
- onBack: handleBackClick,
453
- titleStyle: chatTextStyle(config?.typography?.profile?.screenTitle),
454
- menu: /*#__PURE__*/_jsx(ProfileMenu, {
455
- testIDPrefix: PREFIX,
456
- items: menuItems
280
+ })]
281
+ }), [modalUser, documents]);
282
+ const EditingBody = useMemo(() => /*#__PURE__*/_jsx(EditUserModal, {
283
+ setIsEditing: setIsEditing,
284
+ modalUser: modalUser,
285
+ config: config
286
+ }), [modalUser]);
287
+ return /*#__PURE__*/_jsxs(_Fragment, {
288
+ children: [/*#__PURE__*/_jsx(ModalContainerFullScreen, {
289
+ children: !isEditing ? DefaultBody : EditingBody
290
+ }), showDelete && /*#__PURE__*/_jsx(ModalBackground, {
291
+ style: {
292
+ position: 'absolute',
293
+ zIndex: 9999
294
+ },
295
+ children: /*#__PURE__*/_jsxs(ModalContainer, {
296
+ children: [/*#__PURE__*/_jsx(CloseButton, {
297
+ onPress: () => setShowDelete(false),
298
+ children: /*#__PURE__*/_jsx(Text, {
299
+ style: {
300
+ fontSize: 24
301
+ },
302
+ children: "\xD7"
303
+ })
304
+ }), /*#__PURE__*/_jsx(ModalTitle, {
305
+ children: "Delete this document?"
306
+ }), /*#__PURE__*/_jsxs(GroupContainer, {
307
+ children: [/*#__PURE__*/_jsx(Button, {
308
+ onPress: () => setShowDelete(false),
309
+ text: 'Cancel',
310
+ style: {
311
+ width: '100%'
312
+ },
313
+ unstyled: true,
314
+ variant: "filled",
315
+ color: "white"
316
+ }), /*#__PURE__*/_jsx(Button, {
317
+ onPress: handleDeleteDocument,
318
+ text: 'Delete',
319
+ style: {
320
+ width: '100%',
321
+ borderWidth: 1,
322
+ borderColor: 'red'
323
+ },
324
+ color: "red",
325
+ unstyled: true,
326
+ variant: "outlined"
327
+ })]
328
+ })]
457
329
  })
458
330
  })]
459
331
  });
460
332
  };
461
- const styles = StyleSheet.create({
462
- screen: {
463
- position: 'relative',
464
- backgroundColor: '#F2F3F5'
465
- },
466
- scroll: {
467
- width: '100%',
468
- flex: 1
469
- },
470
- scrollContent: {
471
- paddingBottom: 32
472
- },
473
- body: {
474
- padding: 12,
475
- gap: 12
476
- },
477
- card: {
478
- backgroundColor: '#FFFFFF',
479
- borderRadius: 14,
480
- padding: 16,
481
- shadowColor: '#000',
482
- shadowOffset: {
483
- width: 0,
484
- height: 1
485
- },
486
- shadowOpacity: 0.05,
487
- shadowRadius: 4,
488
- elevation: 1
489
- },
490
- cardLabel: {
491
- color: '#8C8C8C',
492
- fontSize: 14
493
- },
494
- cardValue: {
495
- color: '#141414',
496
- fontSize: 16,
497
- marginTop: 4
498
- },
499
- leaveButton: {
500
- flexDirection: 'row',
501
- alignItems: 'center',
502
- gap: 6,
503
- paddingHorizontal: 12,
504
- paddingVertical: 7,
505
- borderRadius: 18,
506
- backgroundColor: 'rgba(0,0,0,0.35)'
507
- },
508
- leaveLabel: {
509
- color: '#FFFFFF',
510
- fontSize: 14,
511
- fontWeight: '500'
512
- },
513
- tabsRow: {
514
- flexDirection: 'row',
515
- gap: 20,
516
- borderBottomWidth: StyleSheet.hairlineWidth,
517
- borderBottomColor: '#EFEFF2',
518
- marginBottom: 12
519
- },
520
- tab: {
521
- flexDirection: 'row',
522
- alignItems: 'center',
523
- gap: 6,
524
- paddingBottom: 10,
525
- borderBottomWidth: 2,
526
- borderBottomColor: 'transparent'
527
- },
528
- tabLabel: {
529
- fontSize: 15,
530
- fontWeight: '500',
531
- color: '#8C8C8C'
532
- },
533
- tabBadge: {
534
- minWidth: 20,
535
- paddingHorizontal: 5,
536
- paddingVertical: 1,
537
- borderRadius: 10,
538
- alignItems: 'center'
539
- },
540
- tabBadgeText: {
541
- color: '#FFFFFF',
542
- fontSize: 11,
543
- fontWeight: '600'
544
- },
545
- languageRow: {
546
- flexDirection: 'row',
547
- alignItems: 'center',
548
- justifyContent: 'space-between',
549
- paddingVertical: 12
550
- },
551
- languageLabel: {
552
- fontSize: 16,
553
- color: '#141414'
554
- },
555
- check: {
556
- fontSize: 16,
557
- fontWeight: '700'
558
- },
559
- mediaGrid: {
560
- flexDirection: 'row',
561
- flexWrap: 'wrap',
562
- gap: 6
563
- },
564
- mediaTile: {
565
- width: '31.8%',
566
- aspectRatio: 1,
567
- borderRadius: 10,
568
- overflow: 'hidden',
569
- backgroundColor: '#EFEFF2'
570
- },
571
- mediaImage: {
572
- width: '100%',
573
- height: '100%'
574
- },
575
- documentRow: {
576
- flexDirection: 'row',
577
- alignItems: 'center',
578
- gap: 14,
579
- paddingVertical: 12
580
- },
581
- documentText: {
582
- flex: 1
583
- },
584
- documentName: {
585
- fontSize: 16,
586
- color: '#141414'
587
- },
588
- documentDate: {
589
- fontSize: 13,
590
- color: '#8C8C8C',
591
- marginTop: 2
592
- }
593
- });
594
333
  export default UserProfileModal;
595
334
  //# sourceMappingURL=UserProfileModal.js.map