@ethora/chat-component-rn 26.6.13 → 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 (115) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/lib/commonjs/components/AuthForms/Login.js +2 -3
  3. package/lib/commonjs/components/AuthForms/Login.js.map +1 -1
  4. package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js +9 -8
  5. package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
  6. package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js +2 -1
  7. package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  8. package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js +8 -0
  9. package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
  10. package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js +7 -21
  11. package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  12. package/lib/commonjs/context/xmppProvider.js +2 -3
  13. package/lib/commonjs/context/xmppProvider.js.map +1 -1
  14. package/lib/commonjs/helpers/ensureScopedChatCache.js +2 -2
  15. package/lib/commonjs/helpers/ensureScopedChatCache.js.map +1 -1
  16. package/lib/commonjs/helpers/persistCrypto.js +122 -0
  17. package/lib/commonjs/helpers/persistCrypto.js.map +1 -0
  18. package/lib/commonjs/helpers/pickImageAsset.js +68 -0
  19. package/lib/commonjs/helpers/pickImageAsset.js.map +1 -0
  20. package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js +5 -6
  21. package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js.map +1 -1
  22. package/lib/commonjs/helpers/secureKeyValue.js +83 -0
  23. package/lib/commonjs/helpers/secureKeyValue.js.map +1 -0
  24. package/lib/commonjs/helpers/secureStoreRuntime.js +59 -0
  25. package/lib/commonjs/helpers/secureStoreRuntime.js.map +1 -0
  26. package/lib/commonjs/helpers/secureUserStorage.js +75 -0
  27. package/lib/commonjs/helpers/secureUserStorage.js.map +1 -0
  28. package/lib/commonjs/hooks/useLogout.js +15 -7
  29. package/lib/commonjs/hooks/useLogout.js.map +1 -1
  30. package/lib/commonjs/networking/authRefresh.js +4 -5
  31. package/lib/commonjs/networking/authRefresh.js.map +1 -1
  32. package/lib/commonjs/roomStore/chatSettingsSlice.js +3 -4
  33. package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
  34. package/lib/commonjs/roomStore/persistence.js +29 -15
  35. package/lib/commonjs/roomStore/persistence.js.map +1 -1
  36. package/lib/commonjs/roomStore/roomsSlice.js +2 -0
  37. package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
  38. package/lib/module/components/AuthForms/Login.js +2 -3
  39. package/lib/module/components/AuthForms/Login.js.map +1 -1
  40. package/lib/module/components/MainComponents/ProfileImagePlaceholder.js +9 -8
  41. package/lib/module/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
  42. package/lib/module/components/Modals/NewChatModal/ModalContent.js +2 -1
  43. package/lib/module/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  44. package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js +8 -0
  45. package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
  46. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js +9 -23
  47. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  48. package/lib/module/context/xmppProvider.js +2 -3
  49. package/lib/module/context/xmppProvider.js.map +1 -1
  50. package/lib/module/helpers/ensureScopedChatCache.js +2 -2
  51. package/lib/module/helpers/ensureScopedChatCache.js.map +1 -1
  52. package/lib/module/helpers/persistCrypto.js +115 -0
  53. package/lib/module/helpers/persistCrypto.js.map +1 -0
  54. package/lib/module/helpers/pickImageAsset.js +63 -0
  55. package/lib/module/helpers/pickImageAsset.js.map +1 -0
  56. package/lib/module/helpers/resolveInitBeforeLoadUser.js +5 -6
  57. package/lib/module/helpers/resolveInitBeforeLoadUser.js.map +1 -1
  58. package/lib/module/helpers/secureKeyValue.js +75 -0
  59. package/lib/module/helpers/secureKeyValue.js.map +1 -0
  60. package/lib/module/helpers/secureStoreRuntime.js +52 -0
  61. package/lib/module/helpers/secureStoreRuntime.js.map +1 -0
  62. package/lib/module/helpers/secureUserStorage.js +72 -0
  63. package/lib/module/helpers/secureUserStorage.js.map +1 -0
  64. package/lib/module/hooks/useLogout.js +15 -7
  65. package/lib/module/hooks/useLogout.js.map +1 -1
  66. package/lib/module/networking/authRefresh.js +4 -5
  67. package/lib/module/networking/authRefresh.js.map +1 -1
  68. package/lib/module/roomStore/chatSettingsSlice.js +3 -4
  69. package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
  70. package/lib/module/roomStore/persistence.js +30 -15
  71. package/lib/module/roomStore/persistence.js.map +1 -1
  72. package/lib/module/roomStore/roomsSlice.js +2 -0
  73. package/lib/module/roomStore/roomsSlice.js.map +1 -1
  74. package/lib/typescript/components/AuthForms/Login.d.ts.map +1 -1
  75. package/lib/typescript/components/MainComponents/ProfileImagePlaceholder.d.ts.map +1 -1
  76. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts +4 -2
  77. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts.map +1 -1
  78. package/lib/typescript/components/Modals/NewChatModal/UpdNewChatModal.d.ts.map +1 -1
  79. package/lib/typescript/components/Modals/UserProfileModal/EditUserModal.d.ts.map +1 -1
  80. package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
  81. package/lib/typescript/helpers/persistCrypto.d.ts +13 -0
  82. package/lib/typescript/helpers/persistCrypto.d.ts.map +1 -0
  83. package/lib/typescript/helpers/pickImageAsset.d.ts +27 -0
  84. package/lib/typescript/helpers/pickImageAsset.d.ts.map +1 -0
  85. package/lib/typescript/helpers/resolveInitBeforeLoadUser.d.ts.map +1 -1
  86. package/lib/typescript/helpers/secureKeyValue.d.ts +13 -0
  87. package/lib/typescript/helpers/secureKeyValue.d.ts.map +1 -0
  88. package/lib/typescript/helpers/secureStoreRuntime.d.ts +29 -0
  89. package/lib/typescript/helpers/secureStoreRuntime.d.ts.map +1 -0
  90. package/lib/typescript/helpers/secureUserStorage.d.ts +23 -0
  91. package/lib/typescript/helpers/secureUserStorage.d.ts.map +1 -0
  92. package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
  93. package/lib/typescript/networking/authRefresh.d.ts.map +1 -1
  94. package/lib/typescript/roomStore/chatSettingsSlice.d.ts.map +1 -1
  95. package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
  96. package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
  97. package/package.json +8 -1
  98. package/src/components/AuthForms/Login.tsx +2 -3
  99. package/src/components/MainComponents/ProfileImagePlaceholder.tsx +16 -9
  100. package/src/components/Modals/NewChatModal/ModalContent.tsx +6 -3
  101. package/src/components/Modals/NewChatModal/UpdNewChatModal.tsx +12 -1
  102. package/src/components/Modals/UserProfileModal/EditUserModal.tsx +9 -25
  103. package/src/context/xmppProvider.tsx +2 -3
  104. package/src/helpers/ensureScopedChatCache.ts +2 -2
  105. package/src/helpers/persistCrypto.ts +127 -0
  106. package/src/helpers/pickImageAsset.ts +68 -0
  107. package/src/helpers/resolveInitBeforeLoadUser.ts +5 -10
  108. package/src/helpers/secureKeyValue.ts +80 -0
  109. package/src/helpers/secureStoreRuntime.ts +62 -0
  110. package/src/helpers/secureUserStorage.ts +80 -0
  111. package/src/hooks/useLogout.tsx +15 -9
  112. package/src/networking/authRefresh.ts +4 -9
  113. package/src/roomStore/chatSettingsSlice.ts +3 -6
  114. package/src/roomStore/persistence.ts +39 -19
  115. package/src/roomStore/roomsSlice.ts +2 -0
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ import AsyncStorage from '@react-native-async-storage/async-storage';
4
+ import { loadSecureStore } from './secureStoreRuntime';
5
+ import { pushLog } from '../utils/devLogger';
6
+
7
+ // Fallback keys are prefixed and namespaced away from every other
8
+ // AsyncStorage key this SDK writes, so a host that never installs
9
+ // expo-secure-store can still be told apart from one that used to lack
10
+ // it and has since added it (see `secureSet`'s stale-fallback cleanup).
11
+ const FALLBACK_PREFIX = '@ethora/secure-fallback:';
12
+ let warnedFallback = false;
13
+ const warnFallbackOnce = () => {
14
+ if (warnedFallback) {
15
+ return;
16
+ }
17
+ warnedFallback = true;
18
+ 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.');
19
+ };
20
+
21
+ /**
22
+ * Small-value secure KV store: platform Keychain/Keystore via
23
+ * expo-secure-store when the host has it installed, plain (but still
24
+ * namespaced) AsyncStorage otherwise. NOT for bulk data — see
25
+ * `persistCrypto.ts`'s size note on why message history goes through
26
+ * AES instead of straight into this store.
27
+ */
28
+ export async function secureGet(key) {
29
+ const store = loadSecureStore();
30
+ if (store) {
31
+ try {
32
+ return await store.getItemAsync(key);
33
+ } catch (e) {
34
+ pushLog('warn', `secureStore: getItemAsync(${key}) failed`, e);
35
+ return null;
36
+ }
37
+ }
38
+ warnFallbackOnce();
39
+ return AsyncStorage.getItem(FALLBACK_PREFIX + key);
40
+ }
41
+ export async function secureSet(key, value) {
42
+ const store = loadSecureStore();
43
+ if (store) {
44
+ try {
45
+ await store.setItemAsync(key, value);
46
+ // Clean up a stale plaintext fallback copy from before this host
47
+ // added expo-secure-store — otherwise it sits on disk forever.
48
+ AsyncStorage.removeItem(FALLBACK_PREFIX + key).catch(() => undefined);
49
+ return;
50
+ } catch (e) {
51
+ pushLog('warn', `secureStore: setItemAsync(${key}) failed`, e);
52
+ return;
53
+ }
54
+ }
55
+ warnFallbackOnce();
56
+ await AsyncStorage.setItem(FALLBACK_PREFIX + key, value);
57
+ }
58
+ export async function secureRemove(key) {
59
+ const store = loadSecureStore();
60
+ if (store) {
61
+ try {
62
+ await store.deleteItemAsync(key);
63
+ } catch {
64
+ // Key may simply not exist — deleteItemAsync throwing here isn't
65
+ // actionable either way.
66
+ }
67
+ }
68
+ await AsyncStorage.removeItem(FALLBACK_PREFIX + key).catch(() => undefined);
69
+ }
70
+
71
+ /** Test seam only. */
72
+ export const __resetSecureKeyValueWarningForTests = () => {
73
+ warnedFallback = false;
74
+ };
75
+ //# sourceMappingURL=secureKeyValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AsyncStorage","loadSecureStore","pushLog","FALLBACK_PREFIX","warnedFallback","warnFallbackOnce","secureGet","key","store","getItemAsync","e","getItem","secureSet","value","setItemAsync","removeItem","catch","undefined","setItem","secureRemove","deleteItemAsync","__resetSecureKeyValueWarningForTests"],"sourceRoot":"../../../src","sources":["helpers/secureKeyValue.ts"],"mappings":";;AAAA,OAAOA,YAAY,MAAM,2CAA2C;AACpE,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,OAAO,QAAQ,oBAAoB;;AAE5C;AACA;AACA;AACA;AACA,MAAMC,eAAe,GAAG,0BAA0B;AAElD,IAAIC,cAAc,GAAG,KAAK;AAC1B,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;EAC7B,IAAID,cAAc,EAAE;IAAC;EAAO;EAC5BA,cAAc,GAAG,IAAI;EACrBF,OAAO,CACL,MAAM,EACN,6DAA6D,GAC3D,gEAAgE,GAChE,mEAAmE,GACnE,mEAAmE,GACnE,yBACJ,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeI,SAASA,CAACC,GAAW,EAA0B;EACnE,MAAMC,KAAK,GAAGP,eAAe,CAAC,CAAC;EAC/B,IAAIO,KAAK,EAAE;IACT,IAAI;MACF,OAAO,MAAMA,KAAK,CAACC,YAAY,CAACF,GAAG,CAAC;IACtC,CAAC,CAAC,OAAOG,CAAC,EAAE;MACVR,OAAO,CAAC,MAAM,EAAE,6BAA6BK,GAAG,UAAU,EAAEG,CAAC,CAAC;MAC9D,OAAO,IAAI;IACb;EACF;EACAL,gBAAgB,CAAC,CAAC;EAClB,OAAOL,YAAY,CAACW,OAAO,CAACR,eAAe,GAAGI,GAAG,CAAC;AACpD;AAEA,OAAO,eAAeK,SAASA,CAACL,GAAW,EAAEM,KAAa,EAAiB;EACzE,MAAML,KAAK,GAAGP,eAAe,CAAC,CAAC;EAC/B,IAAIO,KAAK,EAAE;IACT,IAAI;MACF,MAAMA,KAAK,CAACM,YAAY,CAACP,GAAG,EAAEM,KAAK,CAAC;MACpC;MACA;MACAb,YAAY,CAACe,UAAU,CAACZ,eAAe,GAAGI,GAAG,CAAC,CAACS,KAAK,CAAC,MAAMC,SAAS,CAAC;MACrE;IACF,CAAC,CAAC,OAAOP,CAAC,EAAE;MACVR,OAAO,CAAC,MAAM,EAAE,6BAA6BK,GAAG,UAAU,EAAEG,CAAC,CAAC;MAC9D;IACF;EACF;EACAL,gBAAgB,CAAC,CAAC;EAClB,MAAML,YAAY,CAACkB,OAAO,CAACf,eAAe,GAAGI,GAAG,EAAEM,KAAK,CAAC;AAC1D;AAEA,OAAO,eAAeM,YAAYA,CAACZ,GAAW,EAAiB;EAC7D,MAAMC,KAAK,GAAGP,eAAe,CAAC,CAAC;EAC/B,IAAIO,KAAK,EAAE;IACT,IAAI;MACF,MAAMA,KAAK,CAACY,eAAe,CAACb,GAAG,CAAC;IAClC,CAAC,CAAC,MAAM;MACN;MACA;IAAA;EAEJ;EACA,MAAMP,YAAY,CAACe,UAAU,CAACZ,eAAe,GAAGI,GAAG,CAAC,CAACS,KAAK,CAAC,MAAMC,SAAS,CAAC;AAC7E;;AAEA;AACA,OAAO,MAAMI,oCAAoC,GAAGA,CAAA,KAAY;EAC9DjB,cAAc,GAAG,KAAK;AACxB,CAAC","ignoreList":[]}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Optional-dependency bridge for `expo-secure-store` — the Keychain
5
+ * (iOS) / Keystore-backed EncryptedSharedPreferences (Android) API.
6
+ *
7
+ * Mirrors `components/VideoCalls/livekitRuntime.ts`: a plain top-level
8
+ * `import ... from 'expo-secure-store'` is not allowed anywhere in the
9
+ * SDK, since Metro resolves imports at bundle time and a host that
10
+ * hasn't added this optional peer dependency would fail to build over
11
+ * a feature it never opted into. Everything goes through
12
+ * `loadSecureStore()`, which requires the module lazily and returns
13
+ * null when it isn't installed — callers fall back to plain
14
+ * AsyncStorage rather than crash (see `secureKeyValue.ts`).
15
+ */
16
+
17
+ let cached;
18
+
19
+ /**
20
+ * Resolve the SecureStore runtime, or null when the optional native
21
+ * package isn't installed in the host app. Result is memoised
22
+ * (including the failure) so a missing dependency doesn't re-throw on
23
+ * every read/write.
24
+ */
25
+ export const loadSecureStore = () => {
26
+ if (cached !== undefined) {
27
+ return cached;
28
+ }
29
+ try {
30
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
31
+ const mod = require('expo-secure-store');
32
+ if (typeof mod?.getItemAsync !== 'function' || typeof mod?.setItemAsync !== 'function' || typeof mod?.deleteItemAsync !== 'function') {
33
+ cached = null;
34
+ } else {
35
+ cached = {
36
+ getItemAsync: mod.getItemAsync,
37
+ setItemAsync: mod.setItemAsync,
38
+ deleteItemAsync: mod.deleteItemAsync
39
+ };
40
+ }
41
+ } catch {
42
+ cached = null;
43
+ }
44
+ return cached;
45
+ };
46
+ export const isSecureStoreAvailable = () => loadSecureStore() !== null;
47
+
48
+ /** Test seam only. */
49
+ export const __resetSecureStoreRuntimeForTests = () => {
50
+ cached = undefined;
51
+ };
52
+ //# sourceMappingURL=secureStoreRuntime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["cached","loadSecureStore","undefined","mod","require","getItemAsync","setItemAsync","deleteItemAsync","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;AACA,OAAO,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;AAED,OAAO,MAAMQ,sBAAsB,GAAGA,CAAA,KAAeP,eAAe,CAAC,CAAC,KAAK,IAAI;;AAE/E;AACA,OAAO,MAAMQ,iCAAiC,GAAGA,CAAA,KAAY;EAC3DT,MAAM,GAAGE,SAAS;AACpB,CAAC","ignoreList":[]}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ import { asyncLocalStorage } from '../hooks/useLocalStorage';
4
+ import { localStorageConstants } from './constants/LOCAL_STORAGE';
5
+ import { secureGet, secureSet, secureRemove } from './secureKeyValue';
6
+
7
+ // Keychain (iOS) / Keystore-backed EncryptedSharedPreferences (Android)
8
+ // keys for the four live bearer credentials on `User`. Deliberately one
9
+ // key per field rather than one JSON blob: expo-secure-store historically
10
+ // caps a single value's size on Android, and four short JWTs each stay
11
+ // comfortably under that ceiling where one combined blob might not.
12
+ const SECRET_KEYS = {
13
+ token: 'ethora_auth_token',
14
+ refreshToken: 'ethora_auth_refresh_token',
15
+ xmppPassword: 'ethora_auth_xmpp_password',
16
+ fileToken: 'ethora_auth_file_token'
17
+ };
18
+ const SECRET_FIELDS = Object.keys(SECRET_KEYS);
19
+
20
+ /**
21
+ * Persisted-user storage, split across two backends behind the exact
22
+ * same `{ get, set, remove }` shape `asyncLocalStorage<User>(...)`
23
+ * already exposed — every existing call site swaps in by changing only
24
+ * the constructor call, `get()`/`set()`/`remove()` keep returning/taking
25
+ * a complete `User`.
26
+ *
27
+ * The four live credentials (REST access + refresh token, XMPP
28
+ * password, secure-media fileToken) never touch plain AsyncStorage:
29
+ * they go through `secureGet`/`secureSet`/`secureRemove` (platform
30
+ * Keychain/Keystore, falling back to namespaced AsyncStorage only when
31
+ * the host hasn't installed the optional `expo-secure-store` peer dep).
32
+ * Everything else on `User` — name, avatar, ids, xmppUsername, wallet
33
+ * address, none of it a bearer credential — keeps living under the
34
+ * existing `ETHORA_USER` AsyncStorage key, unchanged.
35
+ */
36
+ export function secureUserStorage() {
37
+ const get = async () => {
38
+ const profile = await asyncLocalStorage(localStorageConstants.ETHORA_USER).get();
39
+ if (!profile) {
40
+ return null;
41
+ }
42
+ const secretValues = await Promise.all(SECRET_FIELDS.map(field => secureGet(SECRET_KEYS[field])));
43
+ const merged = {
44
+ ...profile
45
+ };
46
+ SECRET_FIELDS.forEach((field, i) => {
47
+ merged[field] = secretValues[i] || '';
48
+ });
49
+ return merged;
50
+ };
51
+ const set = async user => {
52
+ const profile = {
53
+ ...user
54
+ };
55
+ for (const field of SECRET_FIELDS) {
56
+ profile[field] = '';
57
+ }
58
+ await Promise.all([asyncLocalStorage(localStorageConstants.ETHORA_USER).set(profile), ...SECRET_FIELDS.map(field => {
59
+ const value = user?.[field];
60
+ return value ? secureSet(SECRET_KEYS[field], value) : secureRemove(SECRET_KEYS[field]);
61
+ })]);
62
+ };
63
+ const remove = async () => {
64
+ await Promise.all([asyncLocalStorage(localStorageConstants.ETHORA_USER).remove(), ...SECRET_FIELDS.map(field => secureRemove(SECRET_KEYS[field]))]);
65
+ };
66
+ return {
67
+ get,
68
+ set,
69
+ remove
70
+ };
71
+ }
72
+ //# sourceMappingURL=secureUserStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["asyncLocalStorage","localStorageConstants","secureGet","secureSet","secureRemove","SECRET_KEYS","token","refreshToken","xmppPassword","fileToken","SECRET_FIELDS","Object","keys","secureUserStorage","get","profile","ETHORA_USER","secretValues","Promise","all","map","field","merged","forEach","i","set","user","value","remove"],"sourceRoot":"../../../src","sources":["helpers/secureUserStorage.ts"],"mappings":";;AACA,SAASA,iBAAiB,QAAQ,0BAA0B;AAC5D,SAASC,qBAAqB,QAAQ,2BAA2B;AACjE,SAASC,SAAS,EAAEC,SAAS,EAAEC,YAAY,QAAQ,kBAAkB;;AAErE;AACA;AACA;AACA;AACA;AACA,MAAMC,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;AACA,OAAO,SAASQ,iBAAiBA,CAAA,EAAG;EAClC,MAAMC,GAAG,GAAG,MAAAA,CAAA,KAAkC;IAC5C,MAAMC,OAAO,GAAG,MAAMf,iBAAiB,CACrCC,qBAAqB,CAACe,WACxB,CAAC,CAACF,GAAG,CAAC,CAAC;IACP,IAAI,CAACC,OAAO,EAAE;MAAC,OAAO,IAAI;IAAC;IAE3B,MAAME,YAAY,GAAG,MAAMC,OAAO,CAACC,GAAG,CACpCT,aAAa,CAACU,GAAG,CAAEC,KAAK,IAAKnB,SAAS,CAACG,WAAW,CAACgB,KAAK,CAAC,CAAC,CAC5D,CAAC;IAED,MAAMC,MAAY,GAAG;MAAE,GAAGP;IAAQ,CAAC;IACnCL,aAAa,CAACa,OAAO,CAAC,CAACF,KAAK,EAAEG,CAAC,KAAK;MACjCF,MAAM,CAASD,KAAK,CAAC,GAAGJ,YAAY,CAACO,CAAC,CAAC,IAAI,EAAE;IAChD,CAAC,CAAC;IACF,OAAOF,MAAM;EACf,CAAC;EAED,MAAMG,GAAG,GAAG,MAAOC,IAAU,IAAoB;IAC/C,MAAMX,OAAY,GAAG;MAAE,GAAGW;IAAK,CAAC;IAChC,KAAK,MAAML,KAAK,IAAIX,aAAa,EAAE;MACjCK,OAAO,CAACM,KAAK,CAAC,GAAG,EAAE;IACrB;IAEA,MAAMH,OAAO,CAACC,GAAG,CAAC,CAChBnB,iBAAiB,CAAOC,qBAAqB,CAACe,WAAW,CAAC,CAACS,GAAG,CAACV,OAAO,CAAC,EACvE,GAAGL,aAAa,CAACU,GAAG,CAAEC,KAAK,IAAK;MAC9B,MAAMM,KAAK,GAAGD,IAAI,GAAGL,KAAK,CAAuB;MACjD,OAAOM,KAAK,GACRxB,SAAS,CAACE,WAAW,CAACgB,KAAK,CAAC,EAAEM,KAAK,CAAC,GACpCvB,YAAY,CAACC,WAAW,CAACgB,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC,CACH,CAAC;EACJ,CAAC;EAED,MAAMO,MAAM,GAAG,MAAAA,CAAA,KAA2B;IACxC,MAAMV,OAAO,CAACC,GAAG,CAAC,CAChBnB,iBAAiB,CAACC,qBAAqB,CAACe,WAAW,CAAC,CAACY,MAAM,CAAC,CAAC,EAC7D,GAAGlB,aAAa,CAACU,GAAG,CAAEC,KAAK,IAAKjB,YAAY,CAACC,WAAW,CAACgB,KAAK,CAAC,CAAC,CAAC,CAClE,CAAC;EACJ,CAAC;EAED,OAAO;IAAEP,GAAG;IAAEW,GAAG;IAAEG;EAAO,CAAC;AAC7B","ignoreList":[]}
@@ -11,7 +11,7 @@ import { clearHeap } from '../roomStore/roomHeapSlice';
11
11
  import { pushSubscriptionService } from '../services/pushSubscriptionService';
12
12
  import { clearRoomsRestCache } from '../networking/api-requests/rooms.api';
13
13
  import { clearPersistedState } from '../roomStore/persistence';
14
- import { localStorageConstants } from '../helpers/constants/LOCAL_STORAGE';
14
+ import { secureUserStorage } from '../helpers/secureUserStorage';
15
15
 
16
16
  // AsyncStorage keys the library writes but that aren't cleared by any
17
17
  // slice reducer. Listed here so a single logout call wipes the full
@@ -117,15 +117,23 @@ const logoutService = {
117
117
 
118
118
  // 6. Stray keys the slices don't touch.
119
119
  try {
120
- await AsyncStorage.multiRemove([...LIBRARY_STRAY_KEYS,
121
- // Belt-and-suspenders: the chat slice's `logout` reducer
122
- // schedules an async remove of ETHORA_USER fire-and-forget;
123
- // re-issue it here so the disk is provably clean before this
124
- // Promise resolves.
125
- localStorageConstants.ETHORA_USER]);
120
+ await AsyncStorage.multiRemove(LIBRARY_STRAY_KEYS);
126
121
  } catch (e) {
127
122
  console.warn('logoutService: stray-key clear failed', e);
128
123
  }
124
+
125
+ // 7. Belt-and-suspenders: the chat slice's `logout` reducer already
126
+ // fires an async ETHORA_USER removal, but re-issue it here (via
127
+ // the same secureUserStorage split the reducer uses) so BOTH the
128
+ // plain-AsyncStorage profile half AND the Keychain/Keystore
129
+ // secrets are provably gone before this Promise resolves — a bare
130
+ // `AsyncStorage.removeItem(ETHORA_USER)` here would only clear the
131
+ // profile half and leave the tokens behind.
132
+ try {
133
+ await secureUserStorage().remove();
134
+ } catch (e) {
135
+ console.warn('logoutService: secure user storage clear failed', e);
136
+ }
129
137
  }
130
138
  };
131
139
 
@@ -1 +1 @@
1
- {"version":3,"names":["useDispatch","DeviceEventEmitter","AsyncStorage","store","logout","setLogoutState","useCallback","clearHeap","pushSubscriptionService","clearRoomsRestCache","clearPersistedState","localStorageConstants","LIBRARY_STRAY_KEYS","logoutService","performLogout","state","getState","client","chatSettingStore","rooms","visibleRoomJID","flushLastViewedToPrivateStoreStanza","Promise","race","onlyIfNoUnread","res","setTimeout","e","console","warn","emit","reset","dispatch","multiRemove","ETHORA_USER","useLogout","err"],"sourceRoot":"../../../src","sources":["hooks/useLogout.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useDispatch","DeviceEventEmitter","AsyncStorage","store","logout","setLogoutState","useCallback","clearHeap","pushSubscriptionService","clearRoomsRestCache","clearPersistedState","secureUserStorage","LIBRARY_STRAY_KEYS","logoutService","performLogout","state","getState","client","chatSettingStore","rooms","visibleRoomJID","flushLastViewedToPrivateStoreStanza","Promise","race","onlyIfNoUnread","res","setTimeout","e","console","warn","emit","reset","dispatch","multiRemove","remove","useLogout","err"],"sourceRoot":"../../../src","sources":["hooks/useLogout.tsx"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,aAAa;AACzC,SAASC,kBAAkB,QAAQ,cAAc;AACjD,OAAOC,YAAY,MAAM,2CAA2C;AACpE,SAASC,KAAK,QAAQ,cAAc;AACpC,SAASC,MAAM,QAAQ,gCAAgC;AACvD,SAASC,cAAc,QAAQ,yBAAyB;AACxD,SAASC,WAAW,QAAQ,OAAO;AACnC,SAASC,SAAS,QAAQ,4BAA4B;AACtD,SAASC,uBAAuB,QAAQ,qCAAqC;AAC7E,SAASC,mBAAmB,QAAQ,sCAAsC;AAC1E,SAASC,mBAAmB,QAAQ,0BAA0B;AAC9D,SAASC,iBAAiB,QAAQ,8BAA8B;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,kBAAkB,GAAG,CACzB,iCAAiC,CAAE;AAAA,CACpC;AAED,MAAMC,aAAa,GAAG;EACpB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,aAAa,EAAE,MAAAA,CAAA,KAA2B;IACxC;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI;MACF,MAAMC,KAAK,GAAGZ,KAAK,CAACa,QAAQ,CAAC,CAAC;MAC9B,MAAMC,MAAM,GAAIF,KAAK,CAACG,gBAAgB,EAAUD,MAAM;MACtD,MAAME,KAAK,GAAGJ,KAAK,CAACI,KAAK,EAAEA,KAAK;MAChC,MAAMC,cAAc,GAAGL,KAAK,CAACI,KAAK,EAAEC,cAAc,IAAI,IAAI;MAC1D,IAAIH,MAAM,EAAEI,mCAAmC,EAAE;QAC/C,MAAMC,OAAO,CAACC,IAAI,CAAC,CACjBN,MAAM,CAACI,mCAAmC,CAACF,KAAK,EAAE;UAChDC,cAAc;UACdI,cAAc,EAAE;QAClB,CAAC,CAAC,EACF,IAAIF,OAAO,CAAEG,GAAG,IAAKC,UAAU,CAACD,GAAG,EAAE,IAAI,CAAC,CAAC,CAC5C,CAAC;MACJ;IACF,CAAC,CAAC,OAAOE,CAAC,EAAE;MACVC,OAAO,CAACC,IAAI,CAAC,2CAA2C,EAAEF,CAAC,CAAC;IAC9D;;IAEA;IACA,IAAI;MACF1B,kBAAkB,CAAC6B,IAAI,CAAC,0BAA0B,CAAC;IACrD,CAAC,CAAC,MAAM;MACN;IAAA;;IAGF;IACA;IACA;IACA,IAAI;MACF,MAAMtB,uBAAuB,CAACuB,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,OAAOJ,CAAC,EAAE;MACVC,OAAO,CAACC,IAAI,CAAC,kCAAkC,EAAEF,CAAC,CAAC;IACrD;;IAEA;IACA;IACA,IAAI;MACFlB,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC,MAAM;MACN;IAAA;;IAGF;IACA;IACA;IACA;IACA,IAAI;MACFN,KAAK,CAAC6B,QAAQ,CAAC3B,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;MAClCF,KAAK,CAAC6B,QAAQ,CAACzB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;MAC7BJ,KAAK,CAAC6B,QAAQ,CAAC5B,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,OAAOuB,CAAC,EAAE;MACVC,OAAO,CAACC,IAAI,CAAC,sCAAsC,EAAEF,CAAC,CAAC;IACzD;;IAEA;IACA;IACA;IACA;IACA,IAAI;MACF,MAAMjB,mBAAmB,CAAC,CAAC;IAC7B,CAAC,CAAC,MAAM;MACN;IAAA;;IAGF;IACA,IAAI;MACF,MAAMR,YAAY,CAAC+B,WAAW,CAACrB,kBAAkB,CAAC;IACpD,CAAC,CAAC,OAAOe,CAAC,EAAE;MACVC,OAAO,CAACC,IAAI,CAAC,uCAAuC,EAAEF,CAAC,CAAC;IAC1D;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI;MACF,MAAMhB,iBAAiB,CAAC,CAAC,CAACuB,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,OAAOP,CAAC,EAAE;MACVC,OAAO,CAACC,IAAI,CAAC,iDAAiD,EAAEF,CAAC,CAAC;IACpE;EACF;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMQ,SAAS,GAAGA,CAAA,KAA6B;EACpD;EACA;EACA;EACAnC,WAAW,CAAC,CAAC;EAEb,OAAOM,WAAW,CAAC,YAAY;IAC7B,IAAI;MACF,MAAMO,aAAa,CAACC,aAAa,CAAC,CAAC;IACrC,CAAC,CAAC,OAAOsB,GAAG,EAAE;MACZR,OAAO,CAACC,IAAI,CAAC,iCAAiC,EAAEO,GAAG,CAAC;IACtD;EACF,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAED,SAASvB,aAAa","ignoreList":[]}
@@ -3,8 +3,7 @@
3
3
  import http from './apiClient';
4
4
  import { store } from '../roomStore';
5
5
  import { refreshTokens } from '../roomStore/chatSettingsSlice';
6
- import { asyncLocalStorage } from '../hooks/useLocalStorage';
7
- import { localStorageConstants } from '../helpers/constants/LOCAL_STORAGE';
6
+ import { secureUserStorage } from '../helpers/secureUserStorage';
8
7
  import { pushLog } from '../utils/devLogger';
9
8
 
10
9
  /**
@@ -110,7 +109,7 @@ const readCurrentRefreshToken = async () => {
110
109
  if (fromStore) {
111
110
  return fromStore;
112
111
  }
113
- const stored = await asyncLocalStorage(localStorageConstants.ETHORA_USER).get();
112
+ const stored = await secureUserStorage().get();
114
113
  return stored?.refreshToken || '';
115
114
  };
116
115
 
@@ -132,7 +131,7 @@ const persistTokens = async result => {
132
131
  // Write the post-dispatch snapshot rather than a read-modify-write
133
132
  // merge, so this can't race the reducer's own write back to a
134
133
  // stale copy of the surrounding user fields.
135
- await asyncLocalStorage(localStorageConstants.ETHORA_USER).set(store.getState().chatSettingStore.user);
134
+ await secureUserStorage().set(store.getState().chatSettingStore.user);
136
135
  } catch (error) {
137
136
  pushLog('warn', 'authRefresh: failed to persist rotated tokens', error);
138
137
  }
@@ -144,7 +143,7 @@ const persistTokens = async result => {
144
143
  * web build and this one stay structurally identical.
145
144
  */
146
145
  const adoptStoredTokens = async () => {
147
- const stored = await asyncLocalStorage(localStorageConstants.ETHORA_USER).get();
146
+ const stored = await secureUserStorage().get();
148
147
  if (!stored?.refreshToken || !stored?.token) {
149
148
  return null;
150
149
  }
@@ -1 +1 @@
1
- {"version":3,"names":["http","store","refreshTokens","asyncLocalStorage","localStorageConstants","pushLog","RefreshFatalError","Error","constructor","code","message","name","Object","setPrototypeOf","prototype","isRefreshFatalError","error","REFRESH_ENDPOINT","IN_PROGRESS_MAX_ATTEMPTS","IN_PROGRESS_BASE_DELAY_MS","IN_PROGRESS_JITTER_MS","KNOWN_CODES","sleep","ms","Promise","resolve","setTimeout","inProgressDelay","attempt","Math","floor","random","parseRefreshErrorCode","response","data","candidates","errors","headers","candidate","match","find","includes","getStoreUser","getState","chatSettingStore","user","readCurrentRefreshToken","fromStore","refreshToken","stored","ETHORA_USER","get","persistTokens","result","dispatch","token","xmppPassword","fileToken","set","adoptStoredTokens","runConsumerRefresh","refreshFunction","refreshed","accessToken","requestRotation","post","Authorization","wsToken","performRefresh","overrideToken","consumerRefresh","config","adopted","inflight","refreshAuthTokens","options","finally","refreshAuthTokensQuietly","__resetAuthRefreshStateForTests"],"sourceRoot":"../../../src","sources":["networking/authRefresh.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["http","store","refreshTokens","secureUserStorage","pushLog","RefreshFatalError","Error","constructor","code","message","name","Object","setPrototypeOf","prototype","isRefreshFatalError","error","REFRESH_ENDPOINT","IN_PROGRESS_MAX_ATTEMPTS","IN_PROGRESS_BASE_DELAY_MS","IN_PROGRESS_JITTER_MS","KNOWN_CODES","sleep","ms","Promise","resolve","setTimeout","inProgressDelay","attempt","Math","floor","random","parseRefreshErrorCode","response","data","candidates","errors","headers","candidate","match","find","includes","getStoreUser","getState","chatSettingStore","user","readCurrentRefreshToken","fromStore","refreshToken","stored","get","persistTokens","result","dispatch","token","xmppPassword","fileToken","set","adoptStoredTokens","runConsumerRefresh","refreshFunction","refreshed","accessToken","requestRotation","post","Authorization","wsToken","performRefresh","overrideToken","consumerRefresh","config","adopted","inflight","refreshAuthTokens","options","finally","refreshAuthTokensQuietly","__resetAuthRefreshStateForTests"],"sourceRoot":"../../../src","sources":["networking/authRefresh.ts"],"mappings":";;AAAA,OAAOA,IAAI,MAAM,aAAa;AAC9B,SAASC,KAAK,QAAQ,cAAc;AACpC,SAASC,aAAa,QAAQ,gCAAgC;AAC9D,SAASC,iBAAiB,QAAQ,8BAA8B;AAChE,SAASC,OAAO,QAAQ,oBAAoB;;AAG5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAsBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,SAASC,KAAK,CAAC;EAG3CC,WAAWA,CAACC,IAAsB,EAAEC,OAAgB,EAAE;IACpD,KAAK,CAACA,OAAO,IAAI,mBAAmBD,IAAI,EAAE,CAAC;IAC3C,IAAI,CAACE,IAAI,GAAG,mBAAmB;IAC/B,IAAI,CAACF,IAAI,GAAGA,IAAI;IAChB;IACA;IACAG,MAAM,CAACC,cAAc,CAAC,IAAI,EAAEP,iBAAiB,CAACQ,SAAS,CAAC;EAC1D;AACF;AAEA,OAAO,MAAMC,mBAAmB,GAC9BC,KAAc,IAEdA,KAAK,YAAYV,iBAAiB,IACjCU,KAAK,EAAwBL,IAAI,KAAK,mBAAmB;AAE5D,MAAMM,gBAAgB,GAAG,yBAAyB;;AAElD;AACA,MAAMC,wBAAwB,GAAG,CAAC;AAClC,MAAMC,yBAAyB,GAAG,GAAG;AACrC;AACA;AACA;AACA;AACA,MAAMC,qBAAqB,GAAG,GAAG;AAEjC,MAAMC,WAA+B,GAAG,CACtC,qBAAqB,EACrB,+BAA+B,EAC/B,8BAA8B,EAC9B,yBAAyB,CAC1B;AAED,MAAMC,KAAK,GAAIC,EAAU,IACvB,IAAIC,OAAO,CAAQC,OAAO,IAAKC,UAAU,CAACD,OAAO,EAAEF,EAAE,CAAC,CAAC;AAEzD,MAAMI,eAAe,GAAIC,OAAe,IACtCT,yBAAyB,GAAGS,OAAO,GACnCC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAGX,qBAAqB,CAAC;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMY,qBAAqB,GAChChB,KAAc,IACc;EAC5B,MAAMiB,QAAQ,GAAIjB,KAAK,EAAUiB,QAAQ;EACzC,IAAI,CAACA,QAAQ,EAAE;IACb,OAAO,IAAI;EACb;EAEA,MAAMC,IAAI,GAAGD,QAAQ,CAACC,IAAI;EAC1B,MAAMC,UAAU,GAAG,CACjBD,IAAI,EAAEzB,IAAI,EACVyB,IAAI,EAAElB,KAAK,EAAEP,IAAI,EACjByB,IAAI,EAAEE,MAAM,GAAG,CAAC,CAAC,EAAE3B,IAAI,EACvByB,IAAI,EAAElB,KAAK,EACXkB,IAAI,EAAExB,OAAO,EACbuB,QAAQ,CAACI,OAAO,GAAG,cAAc,CAAC,CACnC;EAED,KAAK,MAAMC,SAAS,IAAIH,UAAU,EAAE;IAClC,IAAI,OAAOG,SAAS,KAAK,QAAQ,EAAE;MACjC;IACF;IACA,MAAMC,KAAK,GAAGlB,WAAW,CAACmB,IAAI,CAAE/B,IAAI,IAAK6B,SAAS,CAACG,QAAQ,CAAChC,IAAI,CAAC,CAAC;IAClE,IAAI8B,KAAK,EAAE;MACT,OAAOA,KAAK;IACd;EACF;EAEA,OAAO,IAAI;AACb,CAAC;AAED,MAAMG,YAAY,GAAGA,CAAA,KAClBxC,KAAK,CAACyC,QAAQ,CAAC,CAAC,CAACC,gBAAgB,EAAEC,IAAI,IAAsB,CAAC,CAAC;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,uBAAuB,GAAG,MAAAA,CAAA,KAA6B;EAC3D,MAAMC,SAAS,GAAGL,YAAY,CAAC,CAAC,CAACM,YAAY;EAC7C,IAAID,SAAS,EAAE;IACb,OAAOA,SAAS;EAClB;EAEA,MAAME,MAAM,GAAG,MAAM7C,iBAAiB,CAAC,CAAC,CAAC8C,GAAG,CAAC,CAAC;EAC9C,OAAOD,MAAM,EAAED,YAAY,IAAI,EAAE;AACnC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMG,aAAa,GAAG,MAAOC,MAAqB,IAAoB;EACpElD,KAAK,CAACmD,QAAQ,CACZlD,aAAa,CAAC;IACZmD,KAAK,EAAEF,MAAM,CAACE,KAAK;IACnBN,YAAY,EAAEI,MAAM,CAACJ,YAAY;IACjCO,YAAY,EAAEH,MAAM,CAACG,YAAY;IACjCC,SAAS,EAAEJ,MAAM,CAACI;EACpB,CAAC,CACH,CAAC;EAED,IAAI;IACF;IACA;IACA;IACA,MAAMpD,iBAAiB,CAAC,CAAC,CAACqD,GAAG,CAC3BvD,KAAK,CAACyC,QAAQ,CAAC,CAAC,CAACC,gBAAgB,CAACC,IACpC,CAAC;EACH,CAAC,CAAC,OAAO7B,KAAK,EAAE;IACdX,OAAO,CAAC,MAAM,EAAE,+CAA+C,EAAEW,KAAK,CAAC;EACzE;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAM0C,iBAAiB,GAAG,MAAAA,CAAA,KAA2C;EACnE,MAAMT,MAAM,GAAG,MAAM7C,iBAAiB,CAAC,CAAC,CAAC8C,GAAG,CAAC,CAAC;EAC9C,IAAI,CAACD,MAAM,EAAED,YAAY,IAAI,CAACC,MAAM,EAAEK,KAAK,EAAE;IAC3C,OAAO,IAAI;EACb;EAEA,MAAMT,IAAI,GAAGH,YAAY,CAAC,CAAC;EAC3B,IAAIG,IAAI,CAACG,YAAY,KAAKC,MAAM,CAACD,YAAY,EAAE;IAC7C9C,KAAK,CAACmD,QAAQ,CACZlD,aAAa,CAAC;MACZmD,KAAK,EAAEL,MAAM,CAACK,KAAK;MACnBN,YAAY,EAAEC,MAAM,CAACD;IACvB,CAAC,CACH,CAAC;EACH;EAEA,OAAO;IACLM,KAAK,EAAEL,MAAM,CAACK,KAAK;IACnBN,YAAY,EAAEC,MAAM,CAACD,YAAY;IACjCO,YAAY,EAAEN,MAAM,CAACM,YAAY;IACjCC,SAAS,EAAEP,MAAM,CAACO;EACpB,CAAC;AACH,CAAC;;AAED;;AAQA,MAAMG,kBAAkB,GAAG,MACzBC,eAAkC,IACP;EAC3B,MAAMC,SAAS,GAAG,MAAMD,eAAe,CAAC,CAAC;EAEzC,IAAI,CAACC,SAAS,EAAEC,WAAW,EAAE;IAC3B,MAAM,IAAIvD,KAAK,CAAC,wDAAwD,CAAC;EAC3E;EAEA,IAAI,CAACsD,SAAS,CAACb,YAAY,EAAE;IAC3B;IACA;IACA;IACA3C,OAAO,CACL,MAAM,EACN,gEAAgE,GAC9D,+DAA+D,GAC/D,sBACJ,CAAC;EACH;EAEA,MAAM+C,MAAqB,GAAG;IAC5BE,KAAK,EAAEO,SAAS,CAACC,WAAW;IAC5Bd,YAAY,EACVa,SAAS,CAACb,YAAY,KAAK,MAAMF,uBAAuB,CAAC,CAAC,CAAC,IAAI,EAAE;IACnES,YAAY,EAAEM,SAAS,CAACN,YAAY;IACpCC,SAAS,EAAEK,SAAS,CAACL;EACvB,CAAC;EAED,MAAML,aAAa,CAACC,MAAM,CAAC;EAC3B,OAAOA,MAAM;AACf,CAAC;AAED,MAAMW,eAAe,GAAG,MACtBf,YAAoB,IACO;EAC3B,MAAMf,QAAQ,GAAG,MAAMhC,IAAI,CAAC+D,IAAI,CAC9B/C,gBAAgB,EAChB,CAAC,CAAC,EACF;IAAEoB,OAAO,EAAE;MAAE4B,aAAa,EAAEjB;IAAa;EAAE,CAC7C,CAAC;EAED,MAAMI,MAAqB,GAAG;IAC5BE,KAAK,EAAErB,QAAQ,EAAEC,IAAI,EAAEoB,KAAK,IAAI,EAAE;IAClCN,YAAY,EAAEf,QAAQ,EAAEC,IAAI,EAAEc,YAAY,IAAI,EAAE;IAChDkB,OAAO,EAAEjC,QAAQ,EAAEC,IAAI,EAAEgC,OAAO;IAChCX,YAAY,EAAEtB,QAAQ,EAAEC,IAAI,EAAEqB,YAAY;IAC1CC,SAAS,EAAEvB,QAAQ,EAAEC,IAAI,EAAEsB;EAC7B,CAAC;EAED,IAAI,CAACJ,MAAM,CAACE,KAAK,IAAI,CAACF,MAAM,CAACJ,YAAY,EAAE;IACzC,MAAM,IAAIzC,KAAK,CAAC,8CAA8C,CAAC;EACjE;;EAEA;EACA;EACA,MAAM4C,aAAa,CAACC,MAAM,CAAC;EAC3B,OAAOA,MAAM;AACf,CAAC;AAED,MAAMe,cAAc,GAAG,MACrBC,aAAsB,IACK;EAC3B,MAAMC,eAAe,GACnBnE,KAAK,CAACyC,QAAQ,CAAC,CAAC,CAACC,gBAAgB,EAAE0B,MAAM,EAAEnE,aAAa,EAAEyD,eAAe;EAE3E,IAAIS,eAAe,EAAE;IACnB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,OAAOV,kBAAkB,CAACU,eAAe,CAAC;EAC5C;EAEA,KAAK,IAAIzC,OAAO,GAAG,CAAC,EAAEA,OAAO,IAAIV,wBAAwB,EAAEU,OAAO,EAAE,EAAE;IACpE,MAAMoB,YAAY,GAAGoB,aAAa,KAAK,MAAMtB,uBAAuB,CAAC,CAAC,CAAC;IAEvE,IAAI,CAACE,YAAY,EAAE;MACjB;MACA;MACA,MAAM,IAAIzC,KAAK,CAAC,0BAA0B,CAAC;IAC7C;IAEA,IAAI;MACF,OAAO,MAAMwD,eAAe,CAACf,YAAY,CAAC;IAC5C,CAAC,CAAC,OAAOhC,KAAK,EAAE;MACd,MAAMP,IAAI,GAAGuB,qBAAqB,CAAChB,KAAK,CAAC;MAEzC,IAAIP,IAAI,KAAK,qBAAqB,EAAE;QAClC,IAAImB,OAAO,GAAGV,wBAAwB,EAAE;UACtC,MAAMI,KAAK,CAACK,eAAe,CAACC,OAAO,CAAC,CAAC;UACrC;QACF;QACA;QACA;QACA;QACA;QACA,MAAM2C,OAAO,GAAGH,aAAa,GAAG,IAAI,GAAG,MAAMV,iBAAiB,CAAC,CAAC;QAChE,IAAIa,OAAO,IAAIA,OAAO,CAACvB,YAAY,KAAKA,YAAY,EAAE;UACpD,OAAOuB,OAAO;QAChB;QACA,MAAMvD,KAAK;MACb;MAEA,IAAIP,IAAI,KAAK,+BAA+B,EAAE;QAC5C;QACA;QACA;QACA,MAAM8D,OAAO,GAAGH,aAAa,GAAG,IAAI,GAAG,MAAMV,iBAAiB,CAAC,CAAC;QAChE,IAAIa,OAAO,IAAIA,OAAO,CAACvB,YAAY,KAAKA,YAAY,EAAE;UACpD,OAAOuB,OAAO;QAChB;QACA,MAAM,IAAIjE,iBAAiB,CAACG,IAAI,CAAC;MACnC;MAEA,IACEA,IAAI,KAAK,8BAA8B,IACvCA,IAAI,KAAK,yBAAyB,EAClC;QACA,MAAM,IAAIH,iBAAiB,CAACG,IAAI,CAAC;MACnC;;MAEA;MACA;MACA,MAAMO,KAAK;IACb;EACF;;EAEA;EACA,MAAM,IAAIT,KAAK,CAAC,4BAA4B,CAAC;AAC/C,CAAC;AAcD,IAAIiE,QAAuC,GAAG,IAAI;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAC/BC,OAAwB,EACA;EACxB,IAAIF,QAAQ,EAAE;IACZ;IACA;IACA,OAAOA,QAAQ;EACjB;EAEAA,QAAQ,GAAGL,cAAc,CAACO,OAAO,EAAE1B,YAAY,CAAC,CAAC2B,OAAO,CAAC,MAAM;IAC7DH,QAAQ,GAAG,IAAI;EACjB,CAAC,CAAC;EAEF,OAAOA,QAAQ;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeI,wBAAwBA,CAAA,EAAkC;EAC9E,IAAI;IACF,OAAO,MAAMH,iBAAiB,CAAC,CAAC;EAClC,CAAC,CAAC,OAAOzD,KAAK,EAAE;IACdX,OAAO,CACLU,mBAAmB,CAACC,KAAK,CAAC,GAAG,OAAO,GAAG,MAAM,EAC7C,wCAAwC,EACxCA,KACF,CAAC;IACD,OAAO,IAAI;EACb;AACF;;AAEA;AACA,OAAO,SAAS6D,+BAA+BA,CAAA,EAAS;EACtDL,QAAQ,GAAG,IAAI;AACjB","ignoreList":[]}
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { createSlice } from '@reduxjs/toolkit';
4
- import { localStorageConstants } from '../helpers/constants/LOCAL_STORAGE';
5
- import { asyncLocalStorage } from '../hooks/useLocalStorage';
4
+ import { secureUserStorage } from '../helpers/secureUserStorage';
6
5
  export const unpackAndTransform = input => {
7
6
  return {
8
7
  description: '',
@@ -88,7 +87,7 @@ const initialState = {
88
87
  const reducers = {
89
88
  setUser: (state, action) => {
90
89
  state.user = unpackAndTransform(action.payload);
91
- asyncLocalStorage(localStorageConstants.ETHORA_USER).set(unpackAndTransform(action.payload));
90
+ secureUserStorage().set(unpackAndTransform(action.payload));
92
91
  },
93
92
  updateUser(state, action) {
94
93
  const {
@@ -151,7 +150,7 @@ const reducers = {
151
150
  state.client = undefined;
152
151
  state.langSource = undefined;
153
152
  state.translateMode = undefined;
154
- asyncLocalStorage(localStorageConstants.ETHORA_USER).remove();
153
+ secureUserStorage().remove();
155
154
  },
156
155
  setLangSource: (state, action) => {
157
156
  state.langSource = action.payload;
@@ -1 +1 @@
1
- {"version":3,"names":["createSlice","localStorageConstants","asyncLocalStorage","unpackAndTransform","input","description","token","profileImage","_id","walletAddress","defaultWallet","xmppPassword","fileToken","refreshToken","firstName","lastName","email","username","appId","homeScreen","registrationChannelType","updatedAt","authMethod","resetPasswordExpires","resetPasswordToken","xmppUsername","roles","tags","__v","isProfileOpen","isAssetsOpen","isAgreeWithTerms","initialState","user","deleteModal","isDeleteModal","roomJid","messageId","config","colors","primary","secondary","reducers","setUser","state","action","payload","ETHORA_USER","set","updateUser","updates","setConfig","setActiveModal","activeModal","setActiveFile","activeFile","setDeleteModal","setStoreClient","client","setSelectedUser","selectedUser","refreshTokens","logout","undefined","langSource","translateMode","remove","setLangSource","setTranslateMode","chatSlice","name","actions","reducer"],"sourceRoot":"../../../src","sources":["roomStore/chatSettingsSlice.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createSlice","secureUserStorage","unpackAndTransform","input","description","token","profileImage","_id","walletAddress","defaultWallet","xmppPassword","fileToken","refreshToken","firstName","lastName","email","username","appId","homeScreen","registrationChannelType","updatedAt","authMethod","resetPasswordExpires","resetPasswordToken","xmppUsername","roles","tags","__v","isProfileOpen","isAssetsOpen","isAgreeWithTerms","initialState","user","deleteModal","isDeleteModal","roomJid","messageId","config","colors","primary","secondary","reducers","setUser","state","action","payload","set","updateUser","updates","setConfig","setActiveModal","activeModal","setActiveFile","activeFile","setDeleteModal","setStoreClient","client","setSelectedUser","selectedUser","refreshTokens","logout","undefined","langSource","translateMode","remove","setLangSource","setTranslateMode","chatSlice","name","actions","reducer"],"sourceRoot":"../../../src","sources":["roomStore/chatSettingsSlice.ts"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  import AsyncStorage from '@react-native-async-storage/async-storage';
4
+ import { encryptForPersist, decryptFromPersist } from '../helpers/persistCrypto';
5
+
4
6
  // -------------------------------------------------------------------
5
7
  // Lightweight RN persistence layer. Mirrors what redux-persist gives
6
8
  // the web component:
@@ -10,7 +12,11 @@ import AsyncStorage from '@react-native-async-storage/async-storage';
10
12
  // - cap each room's messages to the most recent MESSAGE_LIMIT (100)
11
13
  // - debounced writes (200ms) on relevant action types
12
14
  //
13
- // Not encrypted. We rely on AsyncStorage's per-app sandbox.
15
+ // AES-256-CBC at rest (see `helpers/persistCrypto.ts`): the JSON blob
16
+ // under each key below is encrypted before it reaches AsyncStorage, with
17
+ // the symmetric key held in the platform Keychain/Keystore. `user` here
18
+ // is already secret-free (see `sanitizeUser`) — the encryption is for
19
+ // the message bodies in `rooms`, which aren't.
14
20
  // -------------------------------------------------------------------
15
21
 
16
22
  const KEY_CHAT = '@ethora/persist:chatSettingStore';
@@ -151,18 +157,21 @@ export const persistenceMiddleware = storeAPI => next => action => {
151
157
  clearTimeout(writeTimer);
152
158
  }
153
159
  writeTimer = setTimeout(() => {
154
- try {
155
- const state = storeAPI.getState();
156
- const chatPayload = {
157
- user: sanitizeUser(state.chatSettingStore?.user)
158
- };
159
- const roomsPayload = {
160
- rooms: sanitizeRooms(state.rooms?.rooms || {})
161
- };
162
- AsyncStorage.multiSet([[KEY_CHAT, JSON.stringify(chatPayload)], [KEY_ROOMS, JSON.stringify(roomsPayload)]]).catch(e => console.warn('persist write failed', e));
163
- } catch (e) {
164
- console.warn('persist serialize failed', e);
165
- }
160
+ (async () => {
161
+ try {
162
+ const state = storeAPI.getState();
163
+ const chatPayload = {
164
+ user: sanitizeUser(state.chatSettingStore?.user)
165
+ };
166
+ const roomsPayload = {
167
+ rooms: sanitizeRooms(state.rooms?.rooms || {})
168
+ };
169
+ const [chatCipher, roomsCipher] = await Promise.all([encryptForPersist(JSON.stringify(chatPayload)), encryptForPersist(JSON.stringify(roomsPayload))]);
170
+ await AsyncStorage.multiSet([[KEY_CHAT, chatCipher], [KEY_ROOMS, roomsCipher]]);
171
+ } catch (e) {
172
+ console.warn('persist write failed', e);
173
+ }
174
+ })();
166
175
  }, 200);
167
176
  return result;
168
177
  };
@@ -175,8 +184,14 @@ export const persistenceMiddleware = storeAPI => next => action => {
175
184
  export async function readPersistedState() {
176
185
  try {
177
186
  const [chatRaw, roomsRaw] = await AsyncStorage.multiGet([KEY_CHAT, KEY_ROOMS]);
178
- const chat = chatRaw[1] ? JSON.parse(chatRaw[1]) : null;
179
- const rooms = roomsRaw[1] ? JSON.parse(roomsRaw[1]) : null;
187
+ const [chatPlain, roomsPlain] = await Promise.all([chatRaw[1] ? decryptFromPersist(chatRaw[1]) : Promise.resolve(null), roomsRaw[1] ? decryptFromPersist(roomsRaw[1]) : Promise.resolve(null)]);
188
+ // `decryptFromPersist` returns null both for "nothing stored" and
189
+ // for "stored value isn't a valid envelope for the current key" —
190
+ // notably a plaintext blob left over from a pre-encryption install.
191
+ // Either way there is nothing safe to parse, so the caller treats it
192
+ // as a cold start and re-hydrates from the server.
193
+ const chat = chatPlain ? JSON.parse(chatPlain) : null;
194
+ const rooms = roomsPlain ? JSON.parse(roomsPlain) : null;
180
195
  return {
181
196
  chat,
182
197
  rooms
@@ -1 +1 @@
1
- {"version":3,"names":["AsyncStorage","KEY_CHAT","KEY_ROOMS","MESSAGE_LIMIT","sanitizeUser","user","token","_token","refreshToken","_refreshToken","xmppPassword","_xmppPassword","rest","PERSISTED_MESSAGE_FIELDS","PERSISTED_MESSAGE_USER_FIELDS","REFETCHED_ROOM_FIELDS","pickDefined","source","keys","out","key","value","undefined","compactMessageForPersist","message","compact","sanitizeMessages","messages","Array","isArray","capped","length","slice","map","sanitizeRooms","rooms","jid","room","Object","entries","includes","compactRoom","usersCnt","members","field","composing","composingList","isLoading","historyPreloadState","writeTimer","persistenceMiddleware","storeAPI","next","action","result","type","startsWith","clearTimeout","setTimeout","state","getState","chatPayload","chatSettingStore","roomsPayload","multiSet","JSON","stringify","catch","e","console","warn","readPersistedState","chatRaw","roomsRaw","multiGet","chat","parse","clearPersistedState","multiRemove","PERSIST_KEYS"],"sourceRoot":"../../../src","sources":["roomStore/persistence.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["AsyncStorage","encryptForPersist","decryptFromPersist","KEY_CHAT","KEY_ROOMS","MESSAGE_LIMIT","sanitizeUser","user","token","_token","refreshToken","_refreshToken","xmppPassword","_xmppPassword","rest","PERSISTED_MESSAGE_FIELDS","PERSISTED_MESSAGE_USER_FIELDS","REFETCHED_ROOM_FIELDS","pickDefined","source","keys","out","key","value","undefined","compactMessageForPersist","message","compact","sanitizeMessages","messages","Array","isArray","capped","length","slice","map","sanitizeRooms","rooms","jid","room","Object","entries","includes","compactRoom","usersCnt","members","field","composing","composingList","isLoading","historyPreloadState","writeTimer","persistenceMiddleware","storeAPI","next","action","result","type","startsWith","clearTimeout","setTimeout","state","getState","chatPayload","chatSettingStore","roomsPayload","chatCipher","roomsCipher","Promise","all","JSON","stringify","multiSet","e","console","warn","readPersistedState","chatRaw","roomsRaw","multiGet","chatPlain","roomsPlain","resolve","chat","parse","clearPersistedState","multiRemove","PERSIST_KEYS"],"sourceRoot":"../../../src","sources":["roomStore/persistence.ts"],"mappings":"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","ignoreList":[]}
@@ -264,6 +264,8 @@ const reducers = {
264
264
  const existingMessages = Array.isArray(existing?.messages) ? existing.messages : [];
265
265
  state.rooms[roomData.jid] = {
266
266
  ...roomData,
267
+ icon: roomData.icon !== undefined ? roomData.icon : existing?.icon,
268
+ roomBg: roomData.roomBg !== undefined ? roomData.roomBg : existing?.roomBg,
267
269
  messages: existingMessages.length > 0 ? existingMessages : incomingMessages,
268
270
  lastViewedTimestamp: lastViewed,
269
271
  unreadMessages: roomData.unreadMessages ?? existing?.unreadMessages ?? 0,