@ethora/chat-component-rn 26.6.12 → 26.7.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 (281) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +2 -2
  3. package/lib/commonjs/components/AuthForms/Login.js +4 -4
  4. package/lib/commonjs/components/AuthForms/Login.js.map +1 -1
  5. package/lib/commonjs/components/MainComponents/ChatHeader.js +4 -1
  6. package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
  7. package/lib/commonjs/components/MainComponents/ChatWrapper.js +14 -13
  8. package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
  9. package/lib/commonjs/components/MainComponents/LoginWrapper.js +2 -1
  10. package/lib/commonjs/components/MainComponents/LoginWrapper.js.map +1 -1
  11. package/lib/commonjs/components/MainComponents/MediaMessage.js +17 -6
  12. package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
  13. package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js +9 -8
  14. package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
  15. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +4 -1
  16. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  17. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +8 -7
  18. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  19. package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js +2 -1
  20. package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
  21. package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js +2 -1
  22. package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  23. package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js +8 -0
  24. package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
  25. package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js +7 -21
  26. package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  27. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +5 -1
  28. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
  29. package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js +10 -2
  30. package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
  31. package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js +4 -1
  32. package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
  33. package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js +4 -1
  34. package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
  35. package/lib/commonjs/components/styled/AudioMessage.js +2 -1
  36. package/lib/commonjs/components/styled/AudioMessage.js.map +1 -1
  37. package/lib/commonjs/components/styled/MessageImage.js +34 -8
  38. package/lib/commonjs/components/styled/MessageImage.js.map +1 -1
  39. package/lib/commonjs/components/styled/VideoMessage.js +7 -1
  40. package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
  41. package/lib/commonjs/context/xmppProvider.js +46 -21
  42. package/lib/commonjs/context/xmppProvider.js.map +1 -1
  43. package/lib/commonjs/helpers/ensureScopedChatCache.js +2 -2
  44. package/lib/commonjs/helpers/ensureScopedChatCache.js.map +1 -1
  45. package/lib/commonjs/helpers/initXmppRooms.js +5 -1
  46. package/lib/commonjs/helpers/initXmppRooms.js.map +1 -1
  47. package/lib/commonjs/helpers/persistCrypto.js +122 -0
  48. package/lib/commonjs/helpers/persistCrypto.js.map +1 -0
  49. package/lib/commonjs/helpers/pickImageAsset.js +68 -0
  50. package/lib/commonjs/helpers/pickImageAsset.js.map +1 -0
  51. package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js +130 -17
  52. package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js.map +1 -1
  53. package/lib/commonjs/helpers/secureFileUrl.js +101 -0
  54. package/lib/commonjs/helpers/secureFileUrl.js.map +1 -0
  55. package/lib/commonjs/helpers/secureKeyValue.js +83 -0
  56. package/lib/commonjs/helpers/secureKeyValue.js.map +1 -0
  57. package/lib/commonjs/helpers/secureStoreRuntime.js +59 -0
  58. package/lib/commonjs/helpers/secureStoreRuntime.js.map +1 -0
  59. package/lib/commonjs/helpers/secureUserStorage.js +75 -0
  60. package/lib/commonjs/helpers/secureUserStorage.js.map +1 -0
  61. package/lib/commonjs/hooks/useChatWrapperInit.js +3 -3
  62. package/lib/commonjs/hooks/useChatWrapperInit.js.map +1 -1
  63. package/lib/commonjs/hooks/useFileToken.js +10 -0
  64. package/lib/commonjs/hooks/useFileToken.js.map +1 -0
  65. package/lib/commonjs/hooks/useLogout.js +15 -7
  66. package/lib/commonjs/hooks/useLogout.js.map +1 -1
  67. package/lib/commonjs/hooks/useSendMessage.js +23 -13
  68. package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
  69. package/lib/commonjs/main.js +25 -0
  70. package/lib/commonjs/main.js.map +1 -1
  71. package/lib/commonjs/networking/api-requests/auth.api.js +99 -54
  72. package/lib/commonjs/networking/api-requests/auth.api.js.map +1 -1
  73. package/lib/commonjs/networking/api-requests/roomMembers.api.js +1 -1
  74. package/lib/commonjs/networking/api-requests/roomMembers.api.js.map +1 -1
  75. package/lib/commonjs/networking/api-requests/rooms.api.js +9 -9
  76. package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
  77. package/lib/commonjs/networking/api-requests/user.api.js +9 -9
  78. package/lib/commonjs/networking/api-requests/user.api.js.map +1 -1
  79. package/lib/commonjs/networking/apiClient.js +62 -112
  80. package/lib/commonjs/networking/apiClient.js.map +1 -1
  81. package/lib/commonjs/networking/authRefresh.js +322 -0
  82. package/lib/commonjs/networking/authRefresh.js.map +1 -0
  83. package/lib/commonjs/networking/xmppClient.js +33 -5
  84. package/lib/commonjs/networking/xmppClient.js.map +1 -1
  85. package/lib/commonjs/roomStore/chatSettingsSlice.js +23 -6
  86. package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
  87. package/lib/commonjs/roomStore/persistence.js +29 -15
  88. package/lib/commonjs/roomStore/persistence.js.map +1 -1
  89. package/lib/commonjs/roomStore/roomsSlice.js +2 -0
  90. package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
  91. package/lib/module/components/AuthForms/Login.js +4 -4
  92. package/lib/module/components/AuthForms/Login.js.map +1 -1
  93. package/lib/module/components/MainComponents/ChatHeader.js +4 -1
  94. package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
  95. package/lib/module/components/MainComponents/ChatWrapper.js +14 -13
  96. package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
  97. package/lib/module/components/MainComponents/LoginWrapper.js +2 -1
  98. package/lib/module/components/MainComponents/LoginWrapper.js.map +1 -1
  99. package/lib/module/components/MainComponents/MediaMessage.js +17 -6
  100. package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
  101. package/lib/module/components/MainComponents/ProfileImagePlaceholder.js +9 -8
  102. package/lib/module/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
  103. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +4 -1
  104. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  105. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +8 -7
  106. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  107. package/lib/module/components/Modals/FilePreviewModal/PdfView.js +2 -1
  108. package/lib/module/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
  109. package/lib/module/components/Modals/NewChatModal/ModalContent.js +2 -1
  110. package/lib/module/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  111. package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js +8 -0
  112. package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
  113. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js +9 -23
  114. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  115. package/lib/module/components/RoomComponents/ChatRoomItem.js +5 -1
  116. package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
  117. package/lib/module/components/RoomComponents/styled/LastMessageFile.js +10 -2
  118. package/lib/module/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
  119. package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js +4 -1
  120. package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
  121. package/lib/module/components/RoomComponents/styled/LastMessageVideo.js +4 -1
  122. package/lib/module/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
  123. package/lib/module/components/styled/AudioMessage.js +2 -1
  124. package/lib/module/components/styled/AudioMessage.js.map +1 -1
  125. package/lib/module/components/styled/MessageImage.js +34 -8
  126. package/lib/module/components/styled/MessageImage.js.map +1 -1
  127. package/lib/module/components/styled/VideoMessage.js +7 -1
  128. package/lib/module/components/styled/VideoMessage.js.map +1 -1
  129. package/lib/module/context/xmppProvider.js +45 -21
  130. package/lib/module/context/xmppProvider.js.map +1 -1
  131. package/lib/module/helpers/ensureScopedChatCache.js +2 -2
  132. package/lib/module/helpers/ensureScopedChatCache.js.map +1 -1
  133. package/lib/module/helpers/initXmppRooms.js +5 -1
  134. package/lib/module/helpers/initXmppRooms.js.map +1 -1
  135. package/lib/module/helpers/persistCrypto.js +115 -0
  136. package/lib/module/helpers/persistCrypto.js.map +1 -0
  137. package/lib/module/helpers/pickImageAsset.js +63 -0
  138. package/lib/module/helpers/pickImageAsset.js.map +1 -0
  139. package/lib/module/helpers/resolveInitBeforeLoadUser.js +130 -16
  140. package/lib/module/helpers/resolveInitBeforeLoadUser.js.map +1 -1
  141. package/lib/module/helpers/secureFileUrl.js +91 -0
  142. package/lib/module/helpers/secureFileUrl.js.map +1 -0
  143. package/lib/module/helpers/secureKeyValue.js +75 -0
  144. package/lib/module/helpers/secureKeyValue.js.map +1 -0
  145. package/lib/module/helpers/secureStoreRuntime.js +52 -0
  146. package/lib/module/helpers/secureStoreRuntime.js.map +1 -0
  147. package/lib/module/helpers/secureUserStorage.js +72 -0
  148. package/lib/module/helpers/secureUserStorage.js.map +1 -0
  149. package/lib/module/hooks/useChatWrapperInit.js +3 -3
  150. package/lib/module/hooks/useChatWrapperInit.js.map +1 -1
  151. package/lib/module/hooks/useFileToken.js +5 -0
  152. package/lib/module/hooks/useFileToken.js.map +1 -0
  153. package/lib/module/hooks/useLogout.js +15 -7
  154. package/lib/module/hooks/useLogout.js.map +1 -1
  155. package/lib/module/hooks/useSendMessage.js +24 -14
  156. package/lib/module/hooks/useSendMessage.js.map +1 -1
  157. package/lib/module/main.js +12 -1
  158. package/lib/module/main.js.map +1 -1
  159. package/lib/module/networking/api-requests/auth.api.js +96 -53
  160. package/lib/module/networking/api-requests/auth.api.js.map +1 -1
  161. package/lib/module/networking/api-requests/roomMembers.api.js +1 -1
  162. package/lib/module/networking/api-requests/roomMembers.api.js.map +1 -1
  163. package/lib/module/networking/api-requests/rooms.api.js +9 -9
  164. package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
  165. package/lib/module/networking/api-requests/user.api.js +8 -7
  166. package/lib/module/networking/api-requests/user.api.js.map +1 -1
  167. package/lib/module/networking/apiClient.js +61 -113
  168. package/lib/module/networking/apiClient.js.map +1 -1
  169. package/lib/module/networking/authRefresh.js +311 -0
  170. package/lib/module/networking/authRefresh.js.map +1 -0
  171. package/lib/module/networking/xmppClient.js +33 -5
  172. package/lib/module/networking/xmppClient.js.map +1 -1
  173. package/lib/module/roomStore/chatSettingsSlice.js +23 -6
  174. package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
  175. package/lib/module/roomStore/persistence.js +30 -15
  176. package/lib/module/roomStore/persistence.js.map +1 -1
  177. package/lib/module/roomStore/roomsSlice.js +2 -0
  178. package/lib/module/roomStore/roomsSlice.js.map +1 -1
  179. package/lib/typescript/components/AuthForms/Login.d.ts.map +1 -1
  180. package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
  181. package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
  182. package/lib/typescript/components/MainComponents/LoginWrapper.d.ts.map +1 -1
  183. package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
  184. package/lib/typescript/components/MainComponents/ProfileImagePlaceholder.d.ts.map +1 -1
  185. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
  186. package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
  187. package/lib/typescript/components/Modals/FilePreviewModal/PdfView.d.ts.map +1 -1
  188. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts +4 -2
  189. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts.map +1 -1
  190. package/lib/typescript/components/Modals/NewChatModal/UpdNewChatModal.d.ts.map +1 -1
  191. package/lib/typescript/components/Modals/UserProfileModal/EditUserModal.d.ts.map +1 -1
  192. package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
  193. package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts.map +1 -1
  194. package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts.map +1 -1
  195. package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts.map +1 -1
  196. package/lib/typescript/components/styled/AudioMessage.d.ts.map +1 -1
  197. package/lib/typescript/components/styled/MessageImage.d.ts +8 -0
  198. package/lib/typescript/components/styled/MessageImage.d.ts.map +1 -1
  199. package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
  200. package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
  201. package/lib/typescript/helpers/initXmppRooms.d.ts.map +1 -1
  202. package/lib/typescript/helpers/persistCrypto.d.ts +13 -0
  203. package/lib/typescript/helpers/persistCrypto.d.ts.map +1 -0
  204. package/lib/typescript/helpers/pickImageAsset.d.ts +27 -0
  205. package/lib/typescript/helpers/pickImageAsset.d.ts.map +1 -0
  206. package/lib/typescript/helpers/resolveInitBeforeLoadUser.d.ts.map +1 -1
  207. package/lib/typescript/helpers/secureFileUrl.d.ts +7 -0
  208. package/lib/typescript/helpers/secureFileUrl.d.ts.map +1 -0
  209. package/lib/typescript/helpers/secureKeyValue.d.ts +13 -0
  210. package/lib/typescript/helpers/secureKeyValue.d.ts.map +1 -0
  211. package/lib/typescript/helpers/secureStoreRuntime.d.ts +29 -0
  212. package/lib/typescript/helpers/secureStoreRuntime.d.ts.map +1 -0
  213. package/lib/typescript/helpers/secureUserStorage.d.ts +23 -0
  214. package/lib/typescript/helpers/secureUserStorage.d.ts.map +1 -0
  215. package/lib/typescript/hooks/useFileToken.d.ts +2 -0
  216. package/lib/typescript/hooks/useFileToken.d.ts.map +1 -0
  217. package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
  218. package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
  219. package/lib/typescript/main.d.ts +6 -1
  220. package/lib/typescript/main.d.ts.map +1 -1
  221. package/lib/typescript/networking/api-requests/auth.api.d.ts +3 -27
  222. package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
  223. package/lib/typescript/networking/api-requests/user.api.d.ts.map +1 -1
  224. package/lib/typescript/networking/apiClient.d.ts +12 -6
  225. package/lib/typescript/networking/apiClient.d.ts.map +1 -1
  226. package/lib/typescript/networking/authRefresh.d.ts +92 -0
  227. package/lib/typescript/networking/authRefresh.d.ts.map +1 -0
  228. package/lib/typescript/networking/xmppClient.d.ts +6 -0
  229. package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
  230. package/lib/typescript/roomStore/chatSettingsSlice.d.ts +16 -0
  231. package/lib/typescript/roomStore/chatSettingsSlice.d.ts.map +1 -1
  232. package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
  233. package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
  234. package/lib/typescript/types/types.d.ts +17 -0
  235. package/lib/typescript/types/types.d.ts.map +1 -1
  236. package/package.json +8 -1
  237. package/src/components/AuthForms/Login.tsx +3 -3
  238. package/src/components/MainComponents/ChatHeader.tsx +4 -1
  239. package/src/components/MainComponents/ChatWrapper.tsx +14 -19
  240. package/src/components/MainComponents/LoginWrapper.tsx +1 -0
  241. package/src/components/MainComponents/MediaMessage.tsx +14 -4
  242. package/src/components/MainComponents/ProfileImagePlaceholder.tsx +16 -9
  243. package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +4 -1
  244. package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +8 -7
  245. package/src/components/Modals/FilePreviewModal/PdfView.tsx +2 -1
  246. package/src/components/Modals/NewChatModal/ModalContent.tsx +6 -3
  247. package/src/components/Modals/NewChatModal/UpdNewChatModal.tsx +12 -1
  248. package/src/components/Modals/UserProfileModal/EditUserModal.tsx +9 -25
  249. package/src/components/RoomComponents/ChatRoomItem.tsx +9 -1
  250. package/src/components/RoomComponents/styled/LastMessageFile.tsx +14 -2
  251. package/src/components/RoomComponents/styled/LastMessagePhoto.tsx +4 -1
  252. package/src/components/RoomComponents/styled/LastMessageVideo.tsx +4 -1
  253. package/src/components/styled/AudioMessage.tsx +2 -1
  254. package/src/components/styled/MessageImage.tsx +45 -6
  255. package/src/components/styled/VideoMessage.tsx +10 -1
  256. package/src/context/xmppProvider.tsx +47 -23
  257. package/src/helpers/ensureScopedChatCache.ts +2 -2
  258. package/src/helpers/initXmppRooms.tsx +5 -1
  259. package/src/helpers/persistCrypto.ts +127 -0
  260. package/src/helpers/pickImageAsset.ts +68 -0
  261. package/src/helpers/resolveInitBeforeLoadUser.ts +125 -18
  262. package/src/helpers/secureFileUrl.ts +103 -0
  263. package/src/helpers/secureKeyValue.ts +80 -0
  264. package/src/helpers/secureStoreRuntime.ts +62 -0
  265. package/src/helpers/secureUserStorage.ts +80 -0
  266. package/src/hooks/useChatWrapperInit.ts +3 -3
  267. package/src/hooks/useFileToken.ts +7 -0
  268. package/src/hooks/useLogout.tsx +15 -9
  269. package/src/hooks/useSendMessage.tsx +28 -13
  270. package/src/main.ts +22 -1
  271. package/src/networking/api-requests/auth.api.ts +125 -52
  272. package/src/networking/api-requests/roomMembers.api.ts +1 -1
  273. package/src/networking/api-requests/rooms.api.ts +9 -9
  274. package/src/networking/api-requests/user.api.ts +8 -7
  275. package/src/networking/apiClient.ts +68 -123
  276. package/src/networking/authRefresh.ts +430 -0
  277. package/src/networking/xmppClient.ts +37 -5
  278. package/src/roomStore/chatSettingsSlice.ts +31 -9
  279. package/src/roomStore/persistence.ts +39 -19
  280. package/src/roomStore/roomsSlice.ts +2 -0
  281. package/src/types/types.ts +17 -0
@@ -4,15 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.resolveInitBeforeLoadUser = exports.refreshUserCredentialsForXmpp = exports.default = exports.applyResolvedUserToStore = void 0;
7
- var _apiClient = _interopRequireWildcard(require("../networking/apiClient"));
7
+ var _apiClient = require("../networking/apiClient");
8
+ var _authRefresh = require("../networking/authRefresh");
8
9
  var _auth = require("../networking/api-requests/auth.api");
9
10
  var _user = require("../networking/api-requests/user.api");
10
11
  var _roomStore = require("../roomStore");
11
12
  var _chatSettingsSlice = require("../roomStore/chatSettingsSlice");
12
13
  var _walletUsername = require("./walletUsername");
13
- var _useLocalStorage = require("../hooks/useLocalStorage");
14
- var _LOCAL_STORAGE = require("./constants/LOCAL_STORAGE");
15
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
+ var _secureUserStorage = require("./secureUserStorage");
16
15
  const getStatusCode = error => {
17
16
  const status = error?.response?.status;
18
17
  return typeof status === 'number' ? status : null;
@@ -36,15 +35,112 @@ const normalizeUserForXmpp = user => {
36
35
  xmppUsername: normalizedXmppUsername
37
36
  };
38
37
  };
39
- const refreshWithToken = async refreshToken => {
40
- const response = await _apiClient.default.post('/users/login/refresh', {}, {
41
- headers: {
42
- Authorization: refreshToken
38
+
39
+ // Hermes has no atob/Buffer; hand-decode just enough base64url to read a
40
+ // JWT's `iat`. Claims are ASCII so the byte-per-char string is fine.
41
+ const B64_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
42
+ const readJwtIat = token => {
43
+ if (!token || typeof token !== 'string') {
44
+ return 0;
45
+ }
46
+ const part = token.split('.')[1];
47
+ if (!part) {
48
+ return 0;
49
+ }
50
+ try {
51
+ const clean = part.replace(/-/g, '+').replace(/_/g, '/');
52
+ let out = '';
53
+ let buffer = 0;
54
+ let bits = 0;
55
+ for (let i = 0; i < clean.length; i++) {
56
+ const idx = B64_ALPHABET.indexOf(clean[i]);
57
+ if (idx === -1) {
58
+ continue;
59
+ }
60
+ buffer = buffer << 6 | idx;
61
+ bits += 6;
62
+ if (bits >= 8) {
63
+ bits -= 8;
64
+ out += String.fromCharCode(buffer >> bits & 0xff);
65
+ }
66
+ }
67
+ const iat = JSON.parse(out)?.iat;
68
+ return typeof iat === 'number' ? iat : 0;
69
+ } catch {
70
+ return 0;
71
+ }
72
+ };
73
+
74
+ /**
75
+ * A `userLogin.user` is typically a snapshot the host captured at ITS
76
+ * login time and re-presents verbatim on every mount, while this SDK
77
+ * keeps rotating the session and persisting the newest pair to
78
+ * `ETHORA_USER`. Taking the snapshot as-is therefore discards the live
79
+ * session in favour of an ever-aging copy: media goes blank the moment
80
+ * the snapshot has no `fileToken` (secure-files URLs 401 without it),
81
+ * and once the snapshot's refresh token ages out entirely the account
82
+ * looks dead even though the SDK held a working session all along.
83
+ *
84
+ * So, for the SAME account only, prefer whichever refresh pair was
85
+ * minted later (JWT `iat` decides — a host that genuinely re-logged-in
86
+ * hands us newer tokens and wins), and fill in a missing `fileToken`
87
+ * from the persisted copy either way.
88
+ */
89
+ const adoptFresherPersistedSession = async candidate => {
90
+ try {
91
+ const stored = await (0, _secureUserStorage.secureUserStorage)().get();
92
+ if (!stored) {
93
+ return candidate;
43
94
  }
95
+ const sameUser = candidate._id && stored._id && candidate._id === stored._id || candidate.xmppUsername && stored.xmppUsername && candidate.xmppUsername === stored.xmppUsername;
96
+ if (!sameUser) {
97
+ return candidate;
98
+ }
99
+ const merged = {
100
+ ...candidate
101
+ };
102
+ if (stored.refreshToken && readJwtIat(stored.refreshToken) > readJwtIat(candidate.refreshToken)) {
103
+ merged.refreshToken = stored.refreshToken;
104
+ if (stored.token) {
105
+ merged.token = stored.token;
106
+ }
107
+ if (stored.fileToken) {
108
+ merged.fileToken = stored.fileToken;
109
+ }
110
+ }
111
+ if (!merged.fileToken && stored.fileToken) {
112
+ merged.fileToken = stored.fileToken;
113
+ }
114
+ return merged;
115
+ } catch {
116
+ return candidate;
117
+ }
118
+ };
119
+
120
+ /**
121
+ * Bootstrap rotation.
122
+ *
123
+ * Was a second, independent `/users/login/refresh` caller that bypassed
124
+ * every lock in the SDK — and, worse, only wrote the rotated token to
125
+ * the store on the happy path, so several of the early-return branches
126
+ * below used to drop it. Under the backend's reuse detection a dropped
127
+ * rotation means the next launch presents a burned token and the
128
+ * session is killed.
129
+ *
130
+ * `refreshAuthTokens` persists the new pair before it resolves, so by
131
+ * the time this returns the rotation is safe no matter which branch the
132
+ * caller takes afterwards. The explicit token is required here: during
133
+ * bootstrap the candidate session isn't in the store yet.
134
+ */
135
+ const refreshWithToken = async refreshToken => {
136
+ const result = await (0, _authRefresh.refreshAuthTokens)({
137
+ refreshToken
44
138
  });
45
139
  return {
46
- token: response?.data?.token || '',
47
- refreshToken: response?.data?.refreshToken || refreshToken
140
+ token: result.token,
141
+ refreshToken: result.refreshToken || refreshToken,
142
+ xmppPassword: result.xmppPassword || '',
143
+ fileToken: result.fileToken || ''
48
144
  };
49
145
  };
50
146
  const mergeUsers = (base, patch) => {
@@ -69,10 +165,14 @@ const tryHydrateViaMy = async (candidate, myEndpoint, signal) => {
69
165
  }
70
166
  let workingToken = candidate?.token || '';
71
167
  let workingRefresh = candidate?.refreshToken || '';
168
+ let rotatedXmppPassword = '';
169
+ let workingFileToken = candidate?.fileToken || '';
72
170
  const candidateWithCurrentTokens = () => ({
73
171
  ...candidate,
74
172
  token: workingToken || candidate.token,
75
- refreshToken: workingRefresh || candidate.refreshToken
173
+ refreshToken: workingRefresh || candidate.refreshToken,
174
+ xmppPassword: rotatedXmppPassword || candidate.xmppPassword,
175
+ fileToken: workingFileToken || candidate.fileToken
76
176
  });
77
177
  const fallbackWithCreds = () => {
78
178
  const normalized = normalizeUserForXmpp(candidateWithCurrentTokens());
@@ -91,6 +191,8 @@ const tryHydrateViaMy = async (candidate, myEndpoint, signal) => {
91
191
  if (merged) {
92
192
  merged.token = workingToken || merged.token;
93
193
  merged.refreshToken = workingRefresh || merged.refreshToken;
194
+ merged.xmppPassword = rotatedXmppPassword || merged.xmppPassword;
195
+ merged.fileToken = workingFileToken || merged.fileToken;
94
196
  }
95
197
  return merged;
96
198
  } catch (error) {
@@ -115,6 +217,8 @@ const tryHydrateViaMy = async (candidate, myEndpoint, signal) => {
115
217
  const refreshed = await refreshWithToken(workingRefresh);
116
218
  workingToken = refreshed.token;
117
219
  workingRefresh = refreshed.refreshToken;
220
+ rotatedXmppPassword = refreshed.xmppPassword || rotatedXmppPassword;
221
+ workingFileToken = refreshed.fileToken || workingFileToken;
118
222
  try {
119
223
  const myUser = await (0, _user.getMyUser)({
120
224
  token: workingToken,
@@ -124,6 +228,8 @@ const tryHydrateViaMy = async (candidate, myEndpoint, signal) => {
124
228
  if (merged) {
125
229
  merged.token = workingToken || merged.token;
126
230
  merged.refreshToken = workingRefresh || merged.refreshToken;
231
+ merged.xmppPassword = rotatedXmppPassword || merged.xmppPassword;
232
+ merged.fileToken = workingFileToken || merged.fileToken;
127
233
  }
128
234
  return merged;
129
235
  } catch (myError) {
@@ -143,6 +249,13 @@ const tryHydrateViaMy = async (candidate, myEndpoint, signal) => {
143
249
  if (signal?.aborted || isAbortError(error)) {
144
250
  return null;
145
251
  }
252
+ // A fatal refresh verdict (reuse detected / token not found / stale
253
+ // with nothing newer around) carries no HTTP response, so it would
254
+ // otherwise fall through to `throw` — the session is simply dead,
255
+ // which for bootstrap means "nothing to restore".
256
+ if ((0, _authRefresh.isRefreshFatalError)(error)) {
257
+ return null;
258
+ }
146
259
  if (isAuthError(error)) {
147
260
  return null;
148
261
  }
@@ -160,14 +273,14 @@ const resolveInitBeforeLoadUser = async options => {
160
273
  if (config?.baseUrl) {
161
274
  (0, _apiClient.setBaseURL)(config.baseUrl, config.customAppToken);
162
275
  }
163
- const myEndpoint = config?.initBeforeLoadAuth?.myEndpoint || '/users/my';
276
+ const myEndpoint = config?.initBeforeLoadAuth?.myEndpoint || '/v1/users/my';
164
277
 
165
278
  // Priority 1: explicit userLogin
166
279
  const explicitUser = config?.userLogin?.enabled ? config?.userLogin?.user : null;
167
280
  if (explicitUser) {
168
281
  const candidate = normalizeUserForXmpp(explicitUser);
169
282
  if (candidate && hasXmppCredentials(candidate)) {
170
- return candidate;
283
+ return await adoptFresherPersistedSession(candidate);
171
284
  }
172
285
  const hydrated = await tryHydrateViaMy(explicitUser, myEndpoint, signal).catch(() => null);
173
286
  if (hydrated && hasXmppCredentials(hydrated)) {
@@ -224,13 +337,13 @@ const resolveInitBeforeLoadUser = async options => {
224
337
 
225
338
  // Priority 5: persisted user in AsyncStorage
226
339
  try {
227
- const storedUser = await (0, _useLocalStorage.asyncLocalStorage)(_LOCAL_STORAGE.localStorageConstants.ETHORA_USER).get();
340
+ const storedUser = await (0, _secureUserStorage.secureUserStorage)().get();
228
341
  if (storedUser && (storedUser.token || storedUser.refreshToken || storedUser.xmppPassword)) {
229
342
  const hydrated = await tryHydrateViaMy(storedUser, myEndpoint, signal).catch(() => null);
230
343
  if (hydrated && hasXmppCredentials(hydrated)) {
231
344
  return hydrated;
232
345
  }
233
- await (0, _useLocalStorage.asyncLocalStorage)(_LOCAL_STORAGE.localStorageConstants.ETHORA_USER).remove();
346
+ await (0, _secureUserStorage.secureUserStorage)().remove();
234
347
  }
235
348
  } catch {
236
349
  // ignore storage errors
@@ -286,7 +399,7 @@ const refreshUserCredentialsForXmpp = async (config, signal) => {
286
399
  // fall through to /users/my path
287
400
  }
288
401
  }
289
- const myEndpoint = config?.initBeforeLoadAuth?.myEndpoint || '/users/my';
402
+ const myEndpoint = config?.initBeforeLoadAuth?.myEndpoint || '/v1/users/my';
290
403
 
291
404
  // Priority 2: redux store user (covers userLogin + customLogin +
292
405
  // anything previously persisted into chatSettingStore.user). The
@@ -304,7 +417,7 @@ const refreshUserCredentialsForXmpp = async (config, signal) => {
304
417
  // should already mirror this, but if the redux state got cleared
305
418
  // mid-session (logout race) this gives us one last shot.
306
419
  try {
307
- const storedUser = await (0, _useLocalStorage.asyncLocalStorage)(_LOCAL_STORAGE.localStorageConstants.ETHORA_USER).get();
420
+ const storedUser = await (0, _secureUserStorage.secureUserStorage)().get();
308
421
  if (storedUser && (storedUser.token || storedUser.refreshToken || storedUser.xmppPassword)) {
309
422
  const hydrated = await tryHydrateViaMy(storedUser, myEndpoint, signal).catch(() => null);
310
423
  if (hydrated && hasXmppCredentials(hydrated)) {
@@ -1 +1 @@
1
- {"version":3,"names":["_apiClient","_interopRequireWildcard","require","_auth","_user","_roomStore","_chatSettingsSlice","_walletUsername","_useLocalStorage","_LOCAL_STORAGE","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","getStatusCode","error","status","response","isAuthError","code","isAbortError","message","toLowerCase","includes","hasXmppCredentials","user","Boolean","xmppPassword","xmppUsername","defaultWallet","walletAddress","normalizeUserForXmpp","normalizedXmppUsername","walletToUsername","refreshWithToken","refreshToken","http","post","headers","Authorization","token","data","mergeUsers","base","patch","tryHydrateViaMy","candidate","myEndpoint","signal","aborted","mergedCandidate","workingToken","workingRefresh","candidateWithCurrentTokens","fallbackWithCreds","normalized","myUser","getMyUser","endpoint","merged","fallback","refreshed","myError","resolveInitBeforeLoadUser","options","config","baseUrl","setBaseURL","customAppToken","initBeforeLoadAuth","explicitUser","userLogin","enabled","hydrated","catch","customLogin","loginFunction","customUser","jwtLogin","jwtUser","loginViaJwt","currentUser","store","getState","chatSettingStore","storedUser","asyncLocalStorage","localStorageConstants","ETHORA_USER","remove","exports","applyResolvedUserToStore","dispatch","setUser","refreshUserCredentialsForXmpp","fresh","_default"],"sourceRoot":"../../../src","sources":["helpers/resolveInitBeforeLoadUser.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_apiClient","require","_authRefresh","_auth","_user","_roomStore","_chatSettingsSlice","_walletUsername","_secureUserStorage","getStatusCode","error","status","response","isAuthError","code","isAbortError","message","toLowerCase","includes","hasXmppCredentials","user","Boolean","xmppPassword","xmppUsername","defaultWallet","walletAddress","normalizeUserForXmpp","normalizedXmppUsername","walletToUsername","B64_ALPHABET","readJwtIat","token","part","split","clean","replace","out","buffer","bits","i","length","idx","indexOf","String","fromCharCode","iat","JSON","parse","adoptFresherPersistedSession","candidate","stored","secureUserStorage","get","sameUser","_id","merged","refreshToken","fileToken","refreshWithToken","result","refreshAuthTokens","mergeUsers","base","patch","tryHydrateViaMy","myEndpoint","signal","aborted","mergedCandidate","workingToken","workingRefresh","rotatedXmppPassword","workingFileToken","candidateWithCurrentTokens","fallbackWithCreds","normalized","myUser","getMyUser","endpoint","fallback","refreshed","myError","isRefreshFatalError","resolveInitBeforeLoadUser","options","config","baseUrl","setBaseURL","customAppToken","initBeforeLoadAuth","explicitUser","userLogin","enabled","hydrated","catch","customLogin","loginFunction","customUser","jwtLogin","jwtUser","loginViaJwt","currentUser","store","getState","chatSettingStore","storedUser","remove","exports","applyResolvedUserToStore","dispatch","setUser","refreshUserCredentialsForXmpp","fresh","_default","default"],"sourceRoot":"../../../src","sources":["helpers/resolveInitBeforeLoadUser.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.withFileToken = exports.resolveFileUrl = exports.requestFileTokenRecovery = exports.isSecureFileUrl = exports.appendFileToken = exports.__resetFileTokenRecoveryForTests = void 0;
7
+ var _roomStore = require("../roomStore");
8
+ var _apiClient = require("../networking/apiClient");
9
+ var _authRefresh = require("../networking/authRefresh");
10
+ const SECURE_FILES_HOST_PREFIX = 'secure-files.';
11
+ const SECURE_MEDIA_PATH_PREFIX = '/secure-media/';
12
+ const FILE_TOKEN_PARAM = 'ft';
13
+ const resolveFileUrl = url => {
14
+ if (!url) {
15
+ return '';
16
+ }
17
+ // Any scheme at all — http(s), data, file, content, blob.
18
+ if (/^[a-z][a-z0-9+.-]*:/i.test(url)) {
19
+ return url;
20
+ }
21
+ if (!url.startsWith('/')) {
22
+ return url;
23
+ }
24
+ const base = (0, _apiClient.getCurrentBaseURL)().replace(/\/+$/, '');
25
+ return base ? `${base}${url}` : url;
26
+ };
27
+ exports.resolveFileUrl = resolveFileUrl;
28
+ const isSecureFileUrl = url => {
29
+ if (!url) {
30
+ return false;
31
+ }
32
+ const path = url.replace(/^[a-z][a-z0-9+.-]*:\/\/[^/]*/i, '');
33
+ if (path.startsWith(SECURE_MEDIA_PATH_PREFIX)) {
34
+ return true;
35
+ }
36
+ const match = /^https?:\/\/(?:[^@/]+@)?([^:/?#]+)/i.exec(url);
37
+ if (!match) {
38
+ return false;
39
+ }
40
+ return match[1].toLowerCase().startsWith(SECURE_FILES_HOST_PREFIX);
41
+ };
42
+ exports.isSecureFileUrl = isSecureFileUrl;
43
+ const appendFileToken = (url, fileToken) => {
44
+ if (!url) {
45
+ return '';
46
+ }
47
+ const resolved = resolveFileUrl(url);
48
+ if (!fileToken || !isSecureFileUrl(resolved)) {
49
+ return resolved;
50
+ }
51
+ url = resolved;
52
+ const hashIndex = url.indexOf('#');
53
+ const hash = hashIndex === -1 ? '' : url.slice(hashIndex);
54
+ const withoutHash = hashIndex === -1 ? url : url.slice(0, hashIndex);
55
+ const queryIndex = withoutHash.indexOf('?');
56
+ const base = queryIndex === -1 ? withoutHash : withoutHash.slice(0, queryIndex);
57
+ const query = queryIndex === -1 ? '' : withoutHash.slice(queryIndex + 1);
58
+ const params = query.split('&').filter(Boolean).filter(pair => pair.split('=')[0] !== FILE_TOKEN_PARAM);
59
+ params.push(`${FILE_TOKEN_PARAM}=${encodeURIComponent(fileToken)}`);
60
+ return `${base}?${params.join('&')}${hash}`;
61
+ };
62
+ exports.appendFileToken = appendFileToken;
63
+ const withFileToken = url => appendFileToken(url, _roomStore.store.getState().chatSettingStore?.user?.fileToken || '');
64
+ exports.withFileToken = withFileToken;
65
+ const RECOVERY_COOLDOWN_MS = 30_000;
66
+ let recoveryInFlight = null;
67
+ let lastRecoveryAt = 0;
68
+ const requestFileTokenRecovery = () => {
69
+ if (recoveryInFlight) {
70
+ return recoveryInFlight;
71
+ }
72
+ const now = Date.now();
73
+ if (now - lastRecoveryAt < RECOVERY_COOLDOWN_MS) {
74
+ return Promise.resolve(false);
75
+ }
76
+ lastRecoveryAt = now;
77
+ const state = _roomStore.store.getState();
78
+ const refreshConfig = state.chatSettingStore?.config?.refreshTokens;
79
+ const user = state.chatSettingStore?.user;
80
+ if (!refreshConfig?.enabled) {
81
+ return Promise.resolve(false);
82
+ }
83
+ const run = async () => {
84
+ if (!refreshConfig.refreshFunction && !user?.refreshToken) {
85
+ return false;
86
+ }
87
+ const tokens = await (0, _authRefresh.refreshAuthTokens)();
88
+ return Boolean(tokens.fileToken);
89
+ };
90
+ recoveryInFlight = run().catch(() => false).finally(() => {
91
+ recoveryInFlight = null;
92
+ });
93
+ return recoveryInFlight;
94
+ };
95
+ exports.requestFileTokenRecovery = requestFileTokenRecovery;
96
+ const __resetFileTokenRecoveryForTests = () => {
97
+ recoveryInFlight = null;
98
+ lastRecoveryAt = 0;
99
+ };
100
+ exports.__resetFileTokenRecoveryForTests = __resetFileTokenRecoveryForTests;
101
+ //# sourceMappingURL=secureFileUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_roomStore","require","_apiClient","_authRefresh","SECURE_FILES_HOST_PREFIX","SECURE_MEDIA_PATH_PREFIX","FILE_TOKEN_PARAM","resolveFileUrl","url","test","startsWith","base","getCurrentBaseURL","replace","exports","isSecureFileUrl","path","match","exec","toLowerCase","appendFileToken","fileToken","resolved","hashIndex","indexOf","hash","slice","withoutHash","queryIndex","query","params","split","filter","Boolean","pair","push","encodeURIComponent","join","withFileToken","store","getState","chatSettingStore","user","RECOVERY_COOLDOWN_MS","recoveryInFlight","lastRecoveryAt","requestFileTokenRecovery","now","Date","Promise","resolve","state","refreshConfig","config","refreshTokens","enabled","run","refreshFunction","refreshToken","tokens","refreshAuthTokens","catch","finally","__resetFileTokenRecoveryForTests"],"sourceRoot":"../../../src","sources":["helpers/secureFileUrl.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.__resetSecureKeyValueWarningForTests = void 0;
7
+ exports.secureGet = secureGet;
8
+ exports.secureRemove = secureRemove;
9
+ exports.secureSet = secureSet;
10
+ var _asyncStorage = _interopRequireDefault(require("@react-native-async-storage/async-storage"));
11
+ var _secureStoreRuntime = require("./secureStoreRuntime");
12
+ var _devLogger = require("../utils/devLogger");
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ // Fallback keys are prefixed and namespaced away from every other
15
+ // AsyncStorage key this SDK writes, so a host that never installs
16
+ // expo-secure-store can still be told apart from one that used to lack
17
+ // it and has since added it (see `secureSet`'s stale-fallback cleanup).
18
+ const FALLBACK_PREFIX = '@ethora/secure-fallback:';
19
+ let warnedFallback = false;
20
+ const warnFallbackOnce = () => {
21
+ if (warnedFallback) {
22
+ return;
23
+ }
24
+ warnedFallback = true;
25
+ (0, _devLogger.pushLog)('warn', 'expo-secure-store is not installed — auth tokens, the XMPP ' + 'password, and the message-history cipher key are falling back ' + 'to plain AsyncStorage instead of the platform Keychain/Keystore. ' + 'Add the optional peer dependency `expo-secure-store` to your app ' + 'to store them securely.');
26
+ };
27
+
28
+ /**
29
+ * Small-value secure KV store: platform Keychain/Keystore via
30
+ * expo-secure-store when the host has it installed, plain (but still
31
+ * namespaced) AsyncStorage otherwise. NOT for bulk data — see
32
+ * `persistCrypto.ts`'s size note on why message history goes through
33
+ * AES instead of straight into this store.
34
+ */
35
+ async function secureGet(key) {
36
+ const store = (0, _secureStoreRuntime.loadSecureStore)();
37
+ if (store) {
38
+ try {
39
+ return await store.getItemAsync(key);
40
+ } catch (e) {
41
+ (0, _devLogger.pushLog)('warn', `secureStore: getItemAsync(${key}) failed`, e);
42
+ return null;
43
+ }
44
+ }
45
+ warnFallbackOnce();
46
+ return _asyncStorage.default.getItem(FALLBACK_PREFIX + key);
47
+ }
48
+ async function secureSet(key, value) {
49
+ const store = (0, _secureStoreRuntime.loadSecureStore)();
50
+ if (store) {
51
+ try {
52
+ await store.setItemAsync(key, value);
53
+ // Clean up a stale plaintext fallback copy from before this host
54
+ // added expo-secure-store — otherwise it sits on disk forever.
55
+ _asyncStorage.default.removeItem(FALLBACK_PREFIX + key).catch(() => undefined);
56
+ return;
57
+ } catch (e) {
58
+ (0, _devLogger.pushLog)('warn', `secureStore: setItemAsync(${key}) failed`, e);
59
+ return;
60
+ }
61
+ }
62
+ warnFallbackOnce();
63
+ await _asyncStorage.default.setItem(FALLBACK_PREFIX + key, value);
64
+ }
65
+ async function secureRemove(key) {
66
+ const store = (0, _secureStoreRuntime.loadSecureStore)();
67
+ if (store) {
68
+ try {
69
+ await store.deleteItemAsync(key);
70
+ } catch {
71
+ // Key may simply not exist — deleteItemAsync throwing here isn't
72
+ // actionable either way.
73
+ }
74
+ }
75
+ await _asyncStorage.default.removeItem(FALLBACK_PREFIX + key).catch(() => undefined);
76
+ }
77
+
78
+ /** Test seam only. */
79
+ const __resetSecureKeyValueWarningForTests = () => {
80
+ warnedFallback = false;
81
+ };
82
+ exports.__resetSecureKeyValueWarningForTests = __resetSecureKeyValueWarningForTests;
83
+ //# sourceMappingURL=secureKeyValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_asyncStorage","_interopRequireDefault","require","_secureStoreRuntime","_devLogger","e","__esModule","default","FALLBACK_PREFIX","warnedFallback","warnFallbackOnce","pushLog","secureGet","key","store","loadSecureStore","getItemAsync","AsyncStorage","getItem","secureSet","value","setItemAsync","removeItem","catch","undefined","setItem","secureRemove","deleteItemAsync","__resetSecureKeyValueWarningForTests","exports"],"sourceRoot":"../../../src","sources":["helpers/secureKeyValue.ts"],"mappings":";;;;;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAA6C,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE7C;AACA;AACA;AACA;AACA,MAAMG,eAAe,GAAG,0BAA0B;AAElD,IAAIC,cAAc,GAAG,KAAK;AAC1B,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;EAC7B,IAAID,cAAc,EAAE;IAAC;EAAO;EAC5BA,cAAc,GAAG,IAAI;EACrB,IAAAE,kBAAO,EACL,MAAM,EACN,6DAA6D,GAC3D,gEAAgE,GAChE,mEAAmE,GACnE,mEAAmE,GACnE,yBACJ,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeC,SAASA,CAACC,GAAW,EAA0B;EACnE,MAAMC,KAAK,GAAG,IAAAC,mCAAe,EAAC,CAAC;EAC/B,IAAID,KAAK,EAAE;IACT,IAAI;MACF,OAAO,MAAMA,KAAK,CAACE,YAAY,CAACH,GAAG,CAAC;IACtC,CAAC,CAAC,OAAOR,CAAC,EAAE;MACV,IAAAM,kBAAO,EAAC,MAAM,EAAE,6BAA6BE,GAAG,UAAU,EAAER,CAAC,CAAC;MAC9D,OAAO,IAAI;IACb;EACF;EACAK,gBAAgB,CAAC,CAAC;EAClB,OAAOO,qBAAY,CAACC,OAAO,CAACV,eAAe,GAAGK,GAAG,CAAC;AACpD;AAEO,eAAeM,SAASA,CAACN,GAAW,EAAEO,KAAa,EAAiB;EACzE,MAAMN,KAAK,GAAG,IAAAC,mCAAe,EAAC,CAAC;EAC/B,IAAID,KAAK,EAAE;IACT,IAAI;MACF,MAAMA,KAAK,CAACO,YAAY,CAACR,GAAG,EAAEO,KAAK,CAAC;MACpC;MACA;MACAH,qBAAY,CAACK,UAAU,CAACd,eAAe,GAAGK,GAAG,CAAC,CAACU,KAAK,CAAC,MAAMC,SAAS,CAAC;MACrE;IACF,CAAC,CAAC,OAAOnB,CAAC,EAAE;MACV,IAAAM,kBAAO,EAAC,MAAM,EAAE,6BAA6BE,GAAG,UAAU,EAAER,CAAC,CAAC;MAC9D;IACF;EACF;EACAK,gBAAgB,CAAC,CAAC;EAClB,MAAMO,qBAAY,CAACQ,OAAO,CAACjB,eAAe,GAAGK,GAAG,EAAEO,KAAK,CAAC;AAC1D;AAEO,eAAeM,YAAYA,CAACb,GAAW,EAAiB;EAC7D,MAAMC,KAAK,GAAG,IAAAC,mCAAe,EAAC,CAAC;EAC/B,IAAID,KAAK,EAAE;IACT,IAAI;MACF,MAAMA,KAAK,CAACa,eAAe,CAACd,GAAG,CAAC;IAClC,CAAC,CAAC,MAAM;MACN;MACA;IAAA;EAEJ;EACA,MAAMI,qBAAY,CAACK,UAAU,CAACd,eAAe,GAAGK,GAAG,CAAC,CAACU,KAAK,CAAC,MAAMC,SAAS,CAAC;AAC7E;;AAEA;AACO,MAAMI,oCAAoC,GAAGA,CAAA,KAAY;EAC9DnB,cAAc,GAAG,KAAK;AACxB,CAAC;AAACoB,OAAA,CAAAD,oCAAA,GAAAA,oCAAA","ignoreList":[]}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.loadSecureStore = exports.isSecureStoreAvailable = exports.__resetSecureStoreRuntimeForTests = void 0;
7
+ /**
8
+ * Optional-dependency bridge for `expo-secure-store` — the Keychain
9
+ * (iOS) / Keystore-backed EncryptedSharedPreferences (Android) API.
10
+ *
11
+ * Mirrors `components/VideoCalls/livekitRuntime.ts`: a plain top-level
12
+ * `import ... from 'expo-secure-store'` is not allowed anywhere in the
13
+ * SDK, since Metro resolves imports at bundle time and a host that
14
+ * hasn't added this optional peer dependency would fail to build over
15
+ * a feature it never opted into. Everything goes through
16
+ * `loadSecureStore()`, which requires the module lazily and returns
17
+ * null when it isn't installed — callers fall back to plain
18
+ * AsyncStorage rather than crash (see `secureKeyValue.ts`).
19
+ */
20
+
21
+ let cached;
22
+
23
+ /**
24
+ * Resolve the SecureStore runtime, or null when the optional native
25
+ * package isn't installed in the host app. Result is memoised
26
+ * (including the failure) so a missing dependency doesn't re-throw on
27
+ * every read/write.
28
+ */
29
+ const loadSecureStore = () => {
30
+ if (cached !== undefined) {
31
+ return cached;
32
+ }
33
+ try {
34
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
35
+ const mod = require('expo-secure-store');
36
+ if (typeof mod?.getItemAsync !== 'function' || typeof mod?.setItemAsync !== 'function' || typeof mod?.deleteItemAsync !== 'function') {
37
+ cached = null;
38
+ } else {
39
+ cached = {
40
+ getItemAsync: mod.getItemAsync,
41
+ setItemAsync: mod.setItemAsync,
42
+ deleteItemAsync: mod.deleteItemAsync
43
+ };
44
+ }
45
+ } catch {
46
+ cached = null;
47
+ }
48
+ return cached;
49
+ };
50
+ exports.loadSecureStore = loadSecureStore;
51
+ const isSecureStoreAvailable = () => loadSecureStore() !== null;
52
+
53
+ /** Test seam only. */
54
+ exports.isSecureStoreAvailable = isSecureStoreAvailable;
55
+ const __resetSecureStoreRuntimeForTests = () => {
56
+ cached = undefined;
57
+ };
58
+ exports.__resetSecureStoreRuntimeForTests = __resetSecureStoreRuntimeForTests;
59
+ //# sourceMappingURL=secureStoreRuntime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["cached","loadSecureStore","undefined","mod","require","getItemAsync","setItemAsync","deleteItemAsync","exports","isSecureStoreAvailable","__resetSecureStoreRuntimeForTests"],"sourceRoot":"../../../src","sources":["helpers/secureStoreRuntime.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,IAAIA,MAA6C;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,eAAe,GAAGA,CAAA,KAAiC;EAC9D,IAAID,MAAM,KAAKE,SAAS,EAAE;IACxB,OAAOF,MAAM;EACf;EAEA,IAAI;IACF;IACA,MAAMG,GAAG,GAAGC,OAAO,CAAC,mBAAmB,CAAC;IACxC,IACE,OAAOD,GAAG,EAAEE,YAAY,KAAK,UAAU,IACvC,OAAOF,GAAG,EAAEG,YAAY,KAAK,UAAU,IACvC,OAAOH,GAAG,EAAEI,eAAe,KAAK,UAAU,EAC1C;MACAP,MAAM,GAAG,IAAI;IACf,CAAC,MAAM;MACLA,MAAM,GAAG;QACPK,YAAY,EAAEF,GAAG,CAACE,YAAY;QAC9BC,YAAY,EAAEH,GAAG,CAACG,YAAY;QAC9BC,eAAe,EAAEJ,GAAG,CAACI;MACvB,CAAC;IACH;EACF,CAAC,CAAC,MAAM;IACNP,MAAM,GAAG,IAAI;EACf;EAEA,OAAOA,MAAM;AACf,CAAC;AAACQ,OAAA,CAAAP,eAAA,GAAAA,eAAA;AAEK,MAAMQ,sBAAsB,GAAGA,CAAA,KAAeR,eAAe,CAAC,CAAC,KAAK,IAAI;;AAE/E;AAAAO,OAAA,CAAAC,sBAAA,GAAAA,sBAAA;AACO,MAAMC,iCAAiC,GAAGA,CAAA,KAAY;EAC3DV,MAAM,GAAGE,SAAS;AACpB,CAAC;AAACM,OAAA,CAAAE,iCAAA,GAAAA,iCAAA","ignoreList":[]}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.secureUserStorage = secureUserStorage;
7
+ var _useLocalStorage = require("../hooks/useLocalStorage");
8
+ var _LOCAL_STORAGE = require("./constants/LOCAL_STORAGE");
9
+ var _secureKeyValue = require("./secureKeyValue");
10
+ // Keychain (iOS) / Keystore-backed EncryptedSharedPreferences (Android)
11
+ // keys for the four live bearer credentials on `User`. Deliberately one
12
+ // key per field rather than one JSON blob: expo-secure-store historically
13
+ // caps a single value's size on Android, and four short JWTs each stay
14
+ // comfortably under that ceiling where one combined blob might not.
15
+ const SECRET_KEYS = {
16
+ token: 'ethora_auth_token',
17
+ refreshToken: 'ethora_auth_refresh_token',
18
+ xmppPassword: 'ethora_auth_xmpp_password',
19
+ fileToken: 'ethora_auth_file_token'
20
+ };
21
+ const SECRET_FIELDS = Object.keys(SECRET_KEYS);
22
+
23
+ /**
24
+ * Persisted-user storage, split across two backends behind the exact
25
+ * same `{ get, set, remove }` shape `asyncLocalStorage<User>(...)`
26
+ * already exposed — every existing call site swaps in by changing only
27
+ * the constructor call, `get()`/`set()`/`remove()` keep returning/taking
28
+ * a complete `User`.
29
+ *
30
+ * The four live credentials (REST access + refresh token, XMPP
31
+ * password, secure-media fileToken) never touch plain AsyncStorage:
32
+ * they go through `secureGet`/`secureSet`/`secureRemove` (platform
33
+ * Keychain/Keystore, falling back to namespaced AsyncStorage only when
34
+ * the host hasn't installed the optional `expo-secure-store` peer dep).
35
+ * Everything else on `User` — name, avatar, ids, xmppUsername, wallet
36
+ * address, none of it a bearer credential — keeps living under the
37
+ * existing `ETHORA_USER` AsyncStorage key, unchanged.
38
+ */
39
+ function secureUserStorage() {
40
+ const get = async () => {
41
+ const profile = await (0, _useLocalStorage.asyncLocalStorage)(_LOCAL_STORAGE.localStorageConstants.ETHORA_USER).get();
42
+ if (!profile) {
43
+ return null;
44
+ }
45
+ const secretValues = await Promise.all(SECRET_FIELDS.map(field => (0, _secureKeyValue.secureGet)(SECRET_KEYS[field])));
46
+ const merged = {
47
+ ...profile
48
+ };
49
+ SECRET_FIELDS.forEach((field, i) => {
50
+ merged[field] = secretValues[i] || '';
51
+ });
52
+ return merged;
53
+ };
54
+ const set = async user => {
55
+ const profile = {
56
+ ...user
57
+ };
58
+ for (const field of SECRET_FIELDS) {
59
+ profile[field] = '';
60
+ }
61
+ await Promise.all([(0, _useLocalStorage.asyncLocalStorage)(_LOCAL_STORAGE.localStorageConstants.ETHORA_USER).set(profile), ...SECRET_FIELDS.map(field => {
62
+ const value = user?.[field];
63
+ return value ? (0, _secureKeyValue.secureSet)(SECRET_KEYS[field], value) : (0, _secureKeyValue.secureRemove)(SECRET_KEYS[field]);
64
+ })]);
65
+ };
66
+ const remove = async () => {
67
+ await Promise.all([(0, _useLocalStorage.asyncLocalStorage)(_LOCAL_STORAGE.localStorageConstants.ETHORA_USER).remove(), ...SECRET_FIELDS.map(field => (0, _secureKeyValue.secureRemove)(SECRET_KEYS[field]))]);
68
+ };
69
+ return {
70
+ get,
71
+ set,
72
+ remove
73
+ };
74
+ }
75
+ //# sourceMappingURL=secureUserStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_useLocalStorage","require","_LOCAL_STORAGE","_secureKeyValue","SECRET_KEYS","token","refreshToken","xmppPassword","fileToken","SECRET_FIELDS","Object","keys","secureUserStorage","get","profile","asyncLocalStorage","localStorageConstants","ETHORA_USER","secretValues","Promise","all","map","field","secureGet","merged","forEach","i","set","user","value","secureSet","secureRemove","remove"],"sourceRoot":"../../../src","sources":["helpers/secureUserStorage.ts"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA,MAAMG,WAAW,GAAG;EAClBC,KAAK,EAAE,mBAAmB;EAC1BC,YAAY,EAAE,2BAA2B;EACzCC,YAAY,EAAE,2BAA2B;EACzCC,SAAS,EAAE;AACb,CAAU;AAGV,MAAMC,aAAa,GAAGC,MAAM,CAACC,IAAI,CAACP,WAAW,CAAkB;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASQ,iBAAiBA,CAAA,EAAG;EAClC,MAAMC,GAAG,GAAG,MAAAA,CAAA,KAAkC;IAC5C,MAAMC,OAAO,GAAG,MAAM,IAAAC,kCAAiB,EACrCC,oCAAqB,CAACC,WACxB,CAAC,CAACJ,GAAG,CAAC,CAAC;IACP,IAAI,CAACC,OAAO,EAAE;MAAC,OAAO,IAAI;IAAC;IAE3B,MAAMI,YAAY,GAAG,MAAMC,OAAO,CAACC,GAAG,CACpCX,aAAa,CAACY,GAAG,CAAEC,KAAK,IAAK,IAAAC,yBAAS,EAACnB,WAAW,CAACkB,KAAK,CAAC,CAAC,CAC5D,CAAC;IAED,MAAME,MAAY,GAAG;MAAE,GAAGV;IAAQ,CAAC;IACnCL,aAAa,CAACgB,OAAO,CAAC,CAACH,KAAK,EAAEI,CAAC,KAAK;MACjCF,MAAM,CAASF,KAAK,CAAC,GAAGJ,YAAY,CAACQ,CAAC,CAAC,IAAI,EAAE;IAChD,CAAC,CAAC;IACF,OAAOF,MAAM;EACf,CAAC;EAED,MAAMG,GAAG,GAAG,MAAOC,IAAU,IAAoB;IAC/C,MAAMd,OAAY,GAAG;MAAE,GAAGc;IAAK,CAAC;IAChC,KAAK,MAAMN,KAAK,IAAIb,aAAa,EAAE;MACjCK,OAAO,CAACQ,KAAK,CAAC,GAAG,EAAE;IACrB;IAEA,MAAMH,OAAO,CAACC,GAAG,CAAC,CAChB,IAAAL,kCAAiB,EAAOC,oCAAqB,CAACC,WAAW,CAAC,CAACU,GAAG,CAACb,OAAO,CAAC,EACvE,GAAGL,aAAa,CAACY,GAAG,CAAEC,KAAK,IAAK;MAC9B,MAAMO,KAAK,GAAGD,IAAI,GAAGN,KAAK,CAAuB;MACjD,OAAOO,KAAK,GACR,IAAAC,yBAAS,EAAC1B,WAAW,CAACkB,KAAK,CAAC,EAAEO,KAAK,CAAC,GACpC,IAAAE,4BAAY,EAAC3B,WAAW,CAACkB,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC,CACH,CAAC;EACJ,CAAC;EAED,MAAMU,MAAM,GAAG,MAAAA,CAAA,KAA2B;IACxC,MAAMb,OAAO,CAACC,GAAG,CAAC,CAChB,IAAAL,kCAAiB,EAACC,oCAAqB,CAACC,WAAW,CAAC,CAACe,MAAM,CAAC,CAAC,EAC7D,GAAGvB,aAAa,CAACY,GAAG,CAAEC,KAAK,IAAK,IAAAS,4BAAY,EAAC3B,WAAW,CAACkB,KAAK,CAAC,CAAC,CAAC,CAClE,CAAC;EACJ,CAAC;EAED,OAAO;IAAET,GAAG;IAAEc,GAAG;IAAEK;EAAO,CAAC;AAC7B","ignoreList":[]}