@ethora/chat-component-rn 26.6.13 → 26.7.2

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 (152) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +22 -0
  3. package/lib/commonjs/assets/icons.js +2 -2
  4. package/lib/commonjs/assets/icons.js.map +1 -1
  5. package/lib/commonjs/components/AuthForms/Login.js +2 -3
  6. package/lib/commonjs/components/AuthForms/Login.js.map +1 -1
  7. package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js +9 -8
  8. package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
  9. package/lib/commonjs/components/Menu/HeaderRoomListMenu.js +110 -37
  10. package/lib/commonjs/components/Menu/HeaderRoomListMenu.js.map +1 -1
  11. package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +16 -14
  12. package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  13. package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js +2 -1
  14. package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  15. package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js +8 -0
  16. package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
  17. package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js +7 -21
  18. package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  19. package/lib/commonjs/components/styled/SendInput.js +0 -10
  20. package/lib/commonjs/components/styled/SendInput.js.map +1 -1
  21. package/lib/commonjs/context/xmppProvider.js +2 -3
  22. package/lib/commonjs/context/xmppProvider.js.map +1 -1
  23. package/lib/commonjs/helpers/ensureScopedChatCache.js +2 -2
  24. package/lib/commonjs/helpers/ensureScopedChatCache.js.map +1 -1
  25. package/lib/commonjs/helpers/persistCrypto.js +122 -0
  26. package/lib/commonjs/helpers/persistCrypto.js.map +1 -0
  27. package/lib/commonjs/helpers/pickImageAsset.js +68 -0
  28. package/lib/commonjs/helpers/pickImageAsset.js.map +1 -0
  29. package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js +5 -6
  30. package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js.map +1 -1
  31. package/lib/commonjs/helpers/secureKeyValue.js +83 -0
  32. package/lib/commonjs/helpers/secureKeyValue.js.map +1 -0
  33. package/lib/commonjs/helpers/secureStoreRuntime.js +59 -0
  34. package/lib/commonjs/helpers/secureStoreRuntime.js.map +1 -0
  35. package/lib/commonjs/helpers/secureUserStorage.js +75 -0
  36. package/lib/commonjs/helpers/secureUserStorage.js.map +1 -0
  37. package/lib/commonjs/hooks/useLogout.js +15 -7
  38. package/lib/commonjs/hooks/useLogout.js.map +1 -1
  39. package/lib/commonjs/main.js +6 -0
  40. package/lib/commonjs/main.js.map +1 -1
  41. package/lib/commonjs/networking/authRefresh.js +4 -5
  42. package/lib/commonjs/networking/authRefresh.js.map +1 -1
  43. package/lib/commonjs/roomStore/chatSettingsSlice.js +3 -4
  44. package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
  45. package/lib/commonjs/roomStore/persistence.js +29 -15
  46. package/lib/commonjs/roomStore/persistence.js.map +1 -1
  47. package/lib/commonjs/roomStore/roomsSlice.js +2 -0
  48. package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
  49. package/lib/module/assets/icons.js +1 -1
  50. package/lib/module/assets/icons.js.map +1 -1
  51. package/lib/module/components/AuthForms/Login.js +2 -3
  52. package/lib/module/components/AuthForms/Login.js.map +1 -1
  53. package/lib/module/components/MainComponents/ProfileImagePlaceholder.js +9 -8
  54. package/lib/module/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
  55. package/lib/module/components/Menu/HeaderRoomListMenu.js +110 -38
  56. package/lib/module/components/Menu/HeaderRoomListMenu.js.map +1 -1
  57. package/lib/module/components/Modals/AttachSheet/AttachSheet.js +16 -14
  58. package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  59. package/lib/module/components/Modals/NewChatModal/ModalContent.js +2 -1
  60. package/lib/module/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  61. package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js +8 -0
  62. package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
  63. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js +9 -23
  64. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  65. package/lib/module/components/styled/SendInput.js +1 -11
  66. package/lib/module/components/styled/SendInput.js.map +1 -1
  67. package/lib/module/context/xmppProvider.js +2 -3
  68. package/lib/module/context/xmppProvider.js.map +1 -1
  69. package/lib/module/helpers/ensureScopedChatCache.js +2 -2
  70. package/lib/module/helpers/ensureScopedChatCache.js.map +1 -1
  71. package/lib/module/helpers/persistCrypto.js +115 -0
  72. package/lib/module/helpers/persistCrypto.js.map +1 -0
  73. package/lib/module/helpers/pickImageAsset.js +63 -0
  74. package/lib/module/helpers/pickImageAsset.js.map +1 -0
  75. package/lib/module/helpers/resolveInitBeforeLoadUser.js +5 -6
  76. package/lib/module/helpers/resolveInitBeforeLoadUser.js.map +1 -1
  77. package/lib/module/helpers/secureKeyValue.js +75 -0
  78. package/lib/module/helpers/secureKeyValue.js.map +1 -0
  79. package/lib/module/helpers/secureStoreRuntime.js +52 -0
  80. package/lib/module/helpers/secureStoreRuntime.js.map +1 -0
  81. package/lib/module/helpers/secureUserStorage.js +72 -0
  82. package/lib/module/helpers/secureUserStorage.js.map +1 -0
  83. package/lib/module/hooks/useLogout.js +15 -7
  84. package/lib/module/hooks/useLogout.js.map +1 -1
  85. package/lib/module/main.js +1 -1
  86. package/lib/module/main.js.map +1 -1
  87. package/lib/module/networking/authRefresh.js +4 -5
  88. package/lib/module/networking/authRefresh.js.map +1 -1
  89. package/lib/module/roomStore/chatSettingsSlice.js +3 -4
  90. package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
  91. package/lib/module/roomStore/persistence.js +30 -15
  92. package/lib/module/roomStore/persistence.js.map +1 -1
  93. package/lib/module/roomStore/roomsSlice.js +2 -0
  94. package/lib/module/roomStore/roomsSlice.js.map +1 -1
  95. package/lib/typescript/assets/icons.d.ts +4 -0
  96. package/lib/typescript/assets/icons.d.ts.map +1 -1
  97. package/lib/typescript/components/AuthForms/Login.d.ts.map +1 -1
  98. package/lib/typescript/components/MainComponents/ProfileImagePlaceholder.d.ts.map +1 -1
  99. package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts +3 -0
  100. package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts.map +1 -1
  101. package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
  102. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts +4 -2
  103. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts.map +1 -1
  104. package/lib/typescript/components/Modals/NewChatModal/UpdNewChatModal.d.ts.map +1 -1
  105. package/lib/typescript/components/Modals/UserProfileModal/EditUserModal.d.ts.map +1 -1
  106. package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
  107. package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
  108. package/lib/typescript/helpers/persistCrypto.d.ts +13 -0
  109. package/lib/typescript/helpers/persistCrypto.d.ts.map +1 -0
  110. package/lib/typescript/helpers/pickImageAsset.d.ts +27 -0
  111. package/lib/typescript/helpers/pickImageAsset.d.ts.map +1 -0
  112. package/lib/typescript/helpers/resolveInitBeforeLoadUser.d.ts.map +1 -1
  113. package/lib/typescript/helpers/secureKeyValue.d.ts +13 -0
  114. package/lib/typescript/helpers/secureKeyValue.d.ts.map +1 -0
  115. package/lib/typescript/helpers/secureStoreRuntime.d.ts +29 -0
  116. package/lib/typescript/helpers/secureStoreRuntime.d.ts.map +1 -0
  117. package/lib/typescript/helpers/secureUserStorage.d.ts +23 -0
  118. package/lib/typescript/helpers/secureUserStorage.d.ts.map +1 -0
  119. package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
  120. package/lib/typescript/main.d.ts +1 -1
  121. package/lib/typescript/main.d.ts.map +1 -1
  122. package/lib/typescript/networking/authRefresh.d.ts.map +1 -1
  123. package/lib/typescript/roomStore/chatSettingsSlice.d.ts.map +1 -1
  124. package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
  125. package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
  126. package/lib/typescript/types/types.d.ts +12 -0
  127. package/lib/typescript/types/types.d.ts.map +1 -1
  128. package/package.json +8 -1
  129. package/src/assets/icons.tsx +19 -0
  130. package/src/components/AuthForms/Login.tsx +2 -3
  131. package/src/components/MainComponents/ProfileImagePlaceholder.tsx +16 -9
  132. package/src/components/Menu/HeaderRoomListMenu.tsx +105 -11
  133. package/src/components/Modals/AttachSheet/AttachSheet.tsx +16 -14
  134. package/src/components/Modals/NewChatModal/ModalContent.tsx +6 -3
  135. package/src/components/Modals/NewChatModal/UpdNewChatModal.tsx +12 -1
  136. package/src/components/Modals/UserProfileModal/EditUserModal.tsx +9 -25
  137. package/src/components/styled/SendInput.tsx +0 -10
  138. package/src/context/xmppProvider.tsx +2 -3
  139. package/src/helpers/ensureScopedChatCache.ts +2 -2
  140. package/src/helpers/persistCrypto.ts +127 -0
  141. package/src/helpers/pickImageAsset.ts +68 -0
  142. package/src/helpers/resolveInitBeforeLoadUser.ts +5 -10
  143. package/src/helpers/secureKeyValue.ts +80 -0
  144. package/src/helpers/secureStoreRuntime.ts +62 -0
  145. package/src/helpers/secureUserStorage.ts +80 -0
  146. package/src/hooks/useLogout.tsx +15 -9
  147. package/src/main.ts +1 -1
  148. package/src/networking/authRefresh.ts +4 -9
  149. package/src/roomStore/chatSettingsSlice.ts +3 -6
  150. package/src/roomStore/persistence.ts +39 -19
  151. package/src/roomStore/roomsSlice.ts +2 -0
  152. package/src/types/types.ts +14 -0
@@ -383,6 +383,18 @@ export interface IConfig {
383
383
  loginFunction: () => Promise<User | null>;
384
384
  };
385
385
  defaultLogin?: boolean;
386
+ logout?: {
387
+ enabled: boolean;
388
+ label?: string;
389
+ confirm?: boolean | {
390
+ title?: string;
391
+ message?: string;
392
+ confirmText?: string;
393
+ cancelText?: string;
394
+ };
395
+ onBeforeLogout?: () => Promise<boolean | void> | boolean | void;
396
+ onAfterLogout?: () => Promise<void> | void;
397
+ };
386
398
  refreshTokens?: {
387
399
  enabled: boolean;
388
400
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ethora/chat-component-rn",
3
- "version": "26.6.13",
3
+ "version": "26.7.2",
4
4
  "description": "Drop-in XMPP chat component for React Native / Expo. <Chat config={...}/> and you're done.",
5
5
  "main": "index.js",
6
6
  "module": "lib/module/main.js",
@@ -55,6 +55,7 @@
55
55
  "expo-image-manipulator": ">=13.0.0",
56
56
  "expo-image-picker": ">=16.0.0",
57
57
  "expo-media-library": ">=17.0.0",
58
+ "expo-secure-store": ">=13.0.0",
58
59
  "expo-video": ">=2.0.0",
59
60
  "react": ">=18.0.0",
60
61
  "react-native": ">=0.73.0",
@@ -113,6 +114,9 @@
113
114
  "expo-media-library": {
114
115
  "optional": true
115
116
  },
117
+ "expo-secure-store": {
118
+ "optional": true
119
+ },
116
120
  "expo-video": {
117
121
  "optional": true
118
122
  }
@@ -138,6 +142,7 @@
138
142
  "@reduxjs/toolkit": "^2.5.0",
139
143
  "@xmpp/client": "^0.13.1",
140
144
  "axios": "^1.7.9",
145
+ "crypto-js": "^4.2.0",
141
146
  "js-sha256": "^0.11.0",
142
147
  "react-native-keyboard-controller": "^1.22.3",
143
148
  "react-native-webview": "^13.16.1",
@@ -153,6 +158,7 @@
153
158
  "@react-native-async-storage/async-storage": "2.2.0",
154
159
  "@react-native-community/netinfo": "12.0.1",
155
160
  "@react-native/eslint-config": "^0.86.2",
161
+ "@types/crypto-js": "^4.2.2",
156
162
  "@types/jest": "^29.5.12",
157
163
  "@types/react": "~19.2.0",
158
164
  "@types/react-test-renderer": "^19.1.0",
@@ -167,6 +173,7 @@
167
173
  "expo-image-manipulator": "~57.0.9",
168
174
  "expo-image-picker": "~57.0.9",
169
175
  "expo-media-library": "~57.0.3",
176
+ "expo-secure-store": "~15.0.7",
170
177
  "expo-status-bar": "~57.0.1",
171
178
  "expo-video": "~57.0.2",
172
179
  "jest": "^29.6.3",
@@ -578,6 +578,25 @@ export const SettingIcon = ({ color = '#8C8C8C', ...props }) => (
578
578
  </Svg>
579
579
  );
580
580
 
581
+ export const LogoutIcon = ({ color = '#8C8C8C', ...props }) => (
582
+ <Svg width="24" height="24" viewBox="0 0 24 24" fill="none" {...props}>
583
+ <Path
584
+ d="M15 4H18C19.1046 4 20 4.89543 20 6V18C20 19.1046 19.1046 20 18 20H15"
585
+ stroke={color}
586
+ strokeWidth="2"
587
+ strokeLinecap="round"
588
+ strokeLinejoin="round"
589
+ />
590
+ <Path
591
+ d="M10 8L14 12L10 16M14 12H4"
592
+ stroke={color}
593
+ strokeWidth="2"
594
+ strokeLinecap="round"
595
+ strokeLinejoin="round"
596
+ />
597
+ </Svg>
598
+ );
599
+
581
600
  export const FileIcon = ({ width = 46, height = 46, ...props }) => (
582
601
  <Svg width={width} height={height} viewBox="0 0 40 40" fill="none">
583
602
  <Rect width="40" height="40" rx="8" fill="#F2E6F6" />
@@ -12,9 +12,8 @@ import {
12
12
  // signInWithGoogle,
13
13
  } from '../../networking/api-requests/auth.api';
14
14
  import { useDispatch } from 'react-redux';
15
- import { useLocalStorage } from '../../hooks/useLocalStorage';
15
+ import { secureUserStorage } from '../../helpers/secureUserStorage';
16
16
  import { setUser, unpackAndTransform } from '../../roomStore/chatSettingsSlice';
17
- import { localStorageConstants } from '../../helpers/constants/LOCAL_STORAGE';
18
17
  import { Text, TextInput, View } from 'react-native';
19
18
 
20
19
  interface LoginFormProps {
@@ -23,7 +22,7 @@ interface LoginFormProps {
23
22
 
24
23
  const LoginForm: React.FC<LoginFormProps> = ({ config }) => {
25
24
  const dispatch = useDispatch();
26
- const { set } = useLocalStorage(localStorageConstants.ETHORA_USER);
25
+ const { set } = secureUserStorage();
27
26
 
28
27
  const [email, setEmail] = useState('');
29
28
  const [password, setPassword] = useState('');
@@ -97,16 +97,26 @@ export const ProfileImagePlaceholder: React.FC<
97
97
  return '';
98
98
  };
99
99
 
100
- const getInitials = () => (!icon && name ? getTwoUppercaseLetters(name) : '');
100
+ const getInitials = () =>
101
+ !imageSource && name ? getTwoUppercaseLetters(name) : '';
102
+
103
+ const imageSource =
104
+ typeof icon === 'string' && icon
105
+ ? { uri: icon }
106
+ : typeof icon === 'number'
107
+ ? icon
108
+ : icon && typeof (icon as any).uri === 'string' && (icon as any).uri
109
+ ? (icon as any)
110
+ : null;
101
111
 
102
112
  return (
103
113
  <Wrapper
104
- bgColor={icon ? 'transparent' : backgroundColor?.backgroundColor}
114
+ bgColor={imageSource ? 'transparent' : backgroundColor?.backgroundColor}
105
115
  size={size}
106
116
  isClickable={active || !!upload?.active}
107
117
  >
108
118
  <AvatarCircle
109
- bgColor={icon ? 'transparent' : backgroundColor?.backgroundColor}
119
+ bgColor={imageSource ? 'transparent' : backgroundColor?.backgroundColor}
110
120
  size={size}
111
121
  isClickable={active || !!upload?.active}
112
122
  onPress={
@@ -117,11 +127,8 @@ export const ProfileImagePlaceholder: React.FC<
117
127
  : undefined
118
128
  }
119
129
  >
120
- {icon ? (
121
- <AvatarImage
122
- source={typeof icon === 'string' ? { uri: icon } : icon as any}
123
- size={size}
124
- />
130
+ {imageSource ? (
131
+ <AvatarImage source={imageSource} size={size} />
125
132
  ) : placeholderIcon ? (
126
133
  placeholderIcon
127
134
  ) : (
@@ -140,7 +147,7 @@ export const ProfileImagePlaceholder: React.FC<
140
147
  </Overlay>
141
148
  )}
142
149
  </AvatarCircle>
143
- {remove?.enabled && icon && role !== 'participant' && (
150
+ {remove?.enabled && imageSource && role !== 'participant' && (
144
151
  <RemoveButton onPress={remove.onRemoveClick}>
145
152
  <RemoveButtonText>&times;</RemoveButtonText>
146
153
  </RemoveButton>
@@ -1,5 +1,6 @@
1
1
  import React, { FC, useMemo } from 'react';
2
2
  import {
3
+ Alert,
3
4
  Animated,
4
5
  Text,
5
6
  TouchableOpacity,
@@ -8,10 +9,81 @@ import {
8
9
  Dimensions,
9
10
  View,
10
11
  } from 'react-native';
11
- import { AddNewIcon, ProfileIcon, SettingIcon } from '../../assets/icons';
12
+ import {
13
+ AddNewIcon,
14
+ LogoutIcon,
15
+ ProfileIcon,
16
+ SettingIcon,
17
+ } from '../../assets/icons';
12
18
  import { useDispatch } from 'react-redux';
13
19
  import { setActiveModal } from '../../roomStore/chatSettingsSlice';
14
20
  import { MODAL_TYPES } from '../../helpers/constants/MODAL_TYPES';
21
+ import { useChatSettingState } from '../../hooks/useChatSettingState';
22
+ import { useLogout } from '../../hooks/useLogout';
23
+ import type { IConfig } from '../../types/types';
24
+
25
+ type LogoutConfig = NonNullable<IConfig['logout']>;
26
+
27
+ const DEFAULT_LOGOUT_LABEL = 'Sign out';
28
+
29
+ const confirmLogout = (
30
+ confirm: LogoutConfig['confirm'],
31
+ label: string
32
+ ): Promise<boolean> => {
33
+ if (confirm === false) {
34
+ return Promise.resolve(true);
35
+ }
36
+ const copy = typeof confirm === 'object' && confirm ? confirm : {};
37
+ return new Promise<boolean>((resolve) => {
38
+ Alert.alert(
39
+ copy.title ?? label,
40
+ copy.message ?? 'Are you sure you want to sign out?',
41
+ [
42
+ {
43
+ text: copy.cancelText ?? 'Cancel',
44
+ style: 'cancel',
45
+ onPress: () => resolve(false),
46
+ },
47
+ {
48
+ text: copy.confirmText ?? label,
49
+ style: 'destructive',
50
+ onPress: () => resolve(true),
51
+ },
52
+ ],
53
+ { cancelable: true, onDismiss: () => resolve(false) }
54
+ );
55
+ });
56
+ };
57
+
58
+ export const runLogoutFlow = async (
59
+ logoutConfig: LogoutConfig,
60
+ performLogout: () => Promise<void>
61
+ ): Promise<void> => {
62
+ const label = logoutConfig.label ?? DEFAULT_LOGOUT_LABEL;
63
+ const confirmed = await confirmLogout(logoutConfig.confirm ?? true, label);
64
+ if (!confirmed) {
65
+ return;
66
+ }
67
+ if (logoutConfig.onBeforeLogout) {
68
+ try {
69
+ const proceed = await logoutConfig.onBeforeLogout();
70
+ if (proceed === false) {
71
+ return;
72
+ }
73
+ } catch (e) {
74
+ console.warn('HeaderRoomListMenu: onBeforeLogout threw, logout cancelled', e);
75
+ return;
76
+ }
77
+ }
78
+ await performLogout(); // never rejects (see useLogout)
79
+ if (logoutConfig.onAfterLogout) {
80
+ try {
81
+ await logoutConfig.onAfterLogout();
82
+ } catch (e) {
83
+ console.warn('HeaderRoomListMenu: onAfterLogout threw', e);
84
+ }
85
+ }
86
+ };
15
87
 
16
88
  const { width } = Dimensions.get('window');
17
89
 
@@ -29,14 +101,25 @@ export const HeaderRoomListMenu: FC<HeaderRoomListMenuProps> = ({
29
101
  closeDrawer,
30
102
  }) => {
31
103
  const dispatch = useDispatch();
104
+ const { config } = useChatSettingState();
105
+ const performLogout = useLogout();
106
+ const logoutConfig = config?.logout?.enabled ? config.logout : undefined;
107
+ const primaryColor = config?.colors?.primary ?? '#0052CD';
32
108
 
33
109
  const drawerTranslateX = drawerAnimation.interpolate({
34
110
  inputRange: [0, 1],
35
111
  outputRange: [width, 0],
36
112
  });
37
113
 
38
- const menuOptions = useMemo(
39
- () => [
114
+ const menuOptions = useMemo(() => {
115
+ const options: {
116
+ label: string;
117
+ icon: React.ReactElement;
118
+ onClick: () => void;
119
+ styles?: { color: string };
120
+ /** When true the row closes the drawer itself before acting. */
121
+ closesDrawer?: boolean;
122
+ }[] = [
40
123
  {
41
124
  label: 'New Chat',
42
125
  icon: <AddNewIcon color="#8C8C8C" />,
@@ -62,13 +145,21 @@ export const HeaderRoomListMenu: FC<HeaderRoomListMenuProps> = ({
62
145
  console.log('Settings clicked');
63
146
  },
64
147
  },
65
- // {
66
- // label: "Logout",
67
- // onClick: handleLogout,
68
- // },
69
- ],
70
- []
71
- );
148
+ ];
149
+ if (logoutConfig) {
150
+ options.push({
151
+ label: logoutConfig.label ?? DEFAULT_LOGOUT_LABEL,
152
+ icon: <LogoutIcon color={primaryColor} />,
153
+ styles: { color: primaryColor },
154
+ closesDrawer: true,
155
+ onClick: () => {
156
+ closeDrawer();
157
+ runLogoutFlow(logoutConfig, performLogout).catch(() => {});
158
+ },
159
+ });
160
+ }
161
+ return options;
162
+ }, [dispatch, logoutConfig, performLogout, primaryColor, closeDrawer]);
72
163
 
73
164
  return (
74
165
  <>
@@ -82,9 +173,12 @@ export const HeaderRoomListMenu: FC<HeaderRoomListMenuProps> = ({
82
173
  <View key={index} style={styles.menuItemWrapper}>
83
174
  <TouchableOpacity
84
175
  style={styles.menuItem}
176
+ testID={`header-menu-${option.label}`}
85
177
  onPress={() => {
86
178
  option.onClick();
87
- closeDrawer();
179
+ if (!option.closesDrawer) {
180
+ closeDrawer();
181
+ }
88
182
  }}
89
183
  >
90
184
  <View
@@ -39,12 +39,13 @@ const AttachSheet: React.FC<AttachSheetProps> = ({
39
39
  }) => {
40
40
  const { config } = useChatSettingState();
41
41
  const ts = config?.typography?.attachSheet;
42
- // Pending handler captured on row tap — runs once the EXIT animation
43
- // finishes so iOS doesn't try to present an image picker over a
44
- // still-dismissing modal (was the original reason for the
45
- // platform-split + Modal.onDismiss dance). The animation completion
46
- // callback now drives this on both platforms.
47
42
  const pendingRef = useRef<(() => void) | null>(null);
43
+ const runPending = () => {
44
+ console.log('[timing] runPending', Date.now());
45
+ const fn = pendingRef.current;
46
+ pendingRef.current = null;
47
+ fn?.();
48
+ };
48
49
 
49
50
  // Local "modal stays mounted while animating out" state. The parent
50
51
  // controls `visible`; we mirror it but delay unmount until the exit
@@ -95,8 +96,6 @@ const AttachSheet: React.FC<AttachSheetProps> = ({
95
96
  return () => cancelAnimationFrame(raf);
96
97
  }
97
98
  if (!mounted) {return;}
98
- // Exit: fade the backdrop, slide the sheet down, then unmount and
99
- // fire any pending picker handler.
100
99
  Animated.parallel([
101
100
  Animated.timing(backdropOpacity, {
102
101
  toValue: 0,
@@ -113,19 +112,19 @@ const AttachSheet: React.FC<AttachSheetProps> = ({
113
112
  ]).start(({ finished }) => {
114
113
  if (!finished) {return;} // interrupted (rapid re-open) → leave state alone
115
114
  setMounted(false);
116
- const fn = pendingRef.current;
117
- pendingRef.current = null;
118
- fn?.();
115
+ if (Platform.OS !== 'ios') {
116
+ runPending();
117
+ }
119
118
  });
120
119
  return undefined;
121
120
  }, [visible]); // eslint-disable-line react-hooks/exhaustive-deps
122
121
 
123
122
  const trigger = (handler: () => void) => () => {
124
- // Capture the handler and ask parent to close. The exit-animation
125
- // completion above fires `handler` AFTER the sheet has slid away,
126
- // so iOS no longer tries to present a picker over a dismissing
127
- // modal — and Android no longer needs the ad-hoc 150ms setTimeout.
123
+ console.log('[timing] row tap', Date.now());
128
124
  pendingRef.current = handler;
125
+ if (Platform.OS === 'ios') {
126
+ setMounted(false);
127
+ }
129
128
  onClose();
130
129
  };
131
130
 
@@ -166,11 +165,13 @@ const AttachSheet: React.FC<AttachSheetProps> = ({
166
165
  onRequestClose={onClose}
167
166
  // Hardware-back / iOS gesture also routes through onClose, which
168
167
  // flips `visible` and triggers our exit animation above.
168
+ onDismiss={Platform.OS === 'ios' ? runPending : undefined}
169
169
  >
170
170
  <Animated.View
171
171
  style={[styles.backdrop, { opacity: backdropOpacity }]}
172
172
  >
173
173
  <TouchableOpacity
174
+ testID="attach-backdrop"
174
175
  style={StyleSheet.absoluteFill}
175
176
  activeOpacity={1}
176
177
  onPress={onClose}
@@ -187,6 +188,7 @@ const AttachSheet: React.FC<AttachSheetProps> = ({
187
188
  {rows.map(({ label, hint, Icon, handler }, idx) => (
188
189
  <TouchableOpacity
189
190
  key={label}
191
+ testID={`attach-row-${label}`}
190
192
  activeOpacity={0.6}
191
193
  style={[
192
194
  styles.row,
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { PickedImage } from '../../../helpers/pickImageAsset';
2
3
  import {
3
4
  ModalContainer,
4
5
  CloseButton,
@@ -19,12 +20,13 @@ type ModalContentProps = {
19
20
  roomName: string;
20
21
  roomDescription: string;
21
22
  chatType: ChatAccessOption;
22
- profileImage: string | File | null;
23
+ profileImage: string | PickedImage | null;
23
24
  setActiveTab: (tab: '0' | '1' | null) => void;
24
25
  handleRoomNameChange: (e: string) => void;
25
26
  setRoomDescription: (description: string) => void;
26
27
  setChatType: (type: ChatAccessOption) => void;
27
- setProfileImage: (image: string | File | null) => void;
28
+ setProfileImage: (image: string | PickedImage | null) => void;
29
+ onUploadImage: () => void;
28
30
  selectedUsers: any[];
29
31
  setSelectedUsers: (users: any[]) => void;
30
32
  handleCreateRoom: () => void;
@@ -40,6 +42,7 @@ const ModalContent: React.FC<ModalContentProps> = ({
40
42
  roomDescription,
41
43
  chatType,
42
44
  profileImage,
45
+ onUploadImage,
43
46
  setActiveTab,
44
47
  handleRoomNameChange,
45
48
  setChatType,
@@ -62,7 +65,7 @@ const ModalContent: React.FC<ModalContentProps> = ({
62
65
  <ModalTitle>Create New Chat</ModalTitle>
63
66
  <ProfileImagePlaceholder
64
67
  size={120}
65
- upload={{ active: true, onUpload: setProfileImage }}
68
+ upload={{ active: true, onUpload: onUploadImage }}
66
69
  remove={{
67
70
  enabled: true,
68
71
  onRemoveClick: () => setProfileImage(null),
@@ -1,4 +1,5 @@
1
1
  import React, { useState, useMemo } from 'react';
2
+ import { pickImageAsset, PickedImage } from '../../../helpers/pickImageAsset';
2
3
  import Button from '../../styled/Button';
3
4
  import { AddNewIcon } from '../../../assets/icons';
4
5
  import { useDispatch, useSelector } from 'react-redux';
@@ -29,7 +30,16 @@ const NewChatModal: React.FC = () => {
29
30
  name: 'Public',
30
31
  id: 'public',
31
32
  });
32
- const [profileImage, setProfileImage] = useState<string | File | null>(null);
33
+ const [profileImage, setProfileImage] = useState<
34
+ string | PickedImage | null
35
+ >(null);
36
+
37
+ const handleUploadImage = async () => {
38
+ const picked = await pickImageAsset();
39
+ if (picked) {
40
+ setProfileImage(picked);
41
+ }
42
+ };
33
43
  const [errors, setErrors] = useState({ name: '', description: '' });
34
44
  const [selectedUsers, setSelectedUsers] = useState<RoomMember[]>([]);
35
45
 
@@ -119,6 +129,7 @@ const NewChatModal: React.FC = () => {
119
129
  setRoomDescription={setRoomDescription}
120
130
  setChatType={setChatType}
121
131
  setProfileImage={setProfileImage}
132
+ onUploadImage={handleUploadImage}
122
133
  selectedUsers={selectedUsers}
123
134
  setSelectedUsers={setSelectedUsers}
124
135
  handleCreateRoom={handleCreateRoom}
@@ -8,23 +8,10 @@ import { updateProfile } from '../../../networking/api-requests/user.api';
8
8
  import { useDispatch } from 'react-redux';
9
9
  import { updateUser } from '../../../roomStore/chatSettingsSlice';
10
10
  import { View } from 'react-native';
11
+ import { pickImageAsset, PickedImage } from '../../../helpers/pickImageAsset';
11
12
  import { AddPhotoIcon } from '../../../assets/icons';
12
13
  // import { actionUpdateUser } from '../actions';
13
14
 
14
- const base64ToFile = (base64String: string, fileName: string) => {
15
- const byteString = atob(base64String.split(',')[1]);
16
- const arrayBuffer = new ArrayBuffer(byteString.length);
17
- const uintArray = new Uint8Array(arrayBuffer);
18
- for (let i = 0; i < byteString.length; i++) {
19
- uintArray[i] = byteString.charCodeAt(i);
20
- }
21
- const blob = new Blob([uintArray], { type: 'image/jpeg' });
22
- return new File([blob], fileName, {
23
- type: 'image/jpeg',
24
- lastModified: Date.now(),
25
- });
26
- };
27
-
28
15
  interface EditUserModalProps {
29
16
  setIsEditing: React.Dispatch<React.SetStateAction<boolean>>;
30
17
  modalUser: any;
@@ -41,7 +28,7 @@ const EditUserModal: React.FC<EditUserModalProps> = ({
41
28
  const [firstName, setFirstName] = useState(modalUser?.firstName || '');
42
29
  const [lastName, setLastName] = useState(modalUser?.lastName || '');
43
30
  const [description, setDescription] = useState(modalUser?.description || '');
44
- const [profileImage, setProfileImage] = useState<string | File>(
31
+ const [profileImage, setProfileImage] = useState<string | PickedImage>(
45
32
  modalUser?.profileImage
46
33
  );
47
34
 
@@ -49,14 +36,8 @@ const EditUserModal: React.FC<EditUserModalProps> = ({
49
36
  try {
50
37
  let fd = new FormData();
51
38
 
52
- if (
53
- typeof profileImage === 'string' &&
54
- profileImage.startsWith('data:image/')
55
- ) {
56
- const file = base64ToFile(profileImage, 'profileImage.jpg');
57
- fd.append('file', file);
58
- } else if (profileImage instanceof File) {
59
- fd.append('file', profileImage);
39
+ if (profileImage && typeof profileImage !== 'string') {
40
+ fd.append('file', profileImage as any);
60
41
  }
61
42
 
62
43
  fd.append('firstName', firstName);
@@ -82,8 +63,11 @@ const EditUserModal: React.FC<EditUserModalProps> = ({
82
63
  }
83
64
  };
84
65
 
85
- const handleProfileImageChange = (image: File) => {
86
- setProfileImage(image);
66
+ const handleProfileImageChange = async () => {
67
+ const picked = await pickImageAsset();
68
+ if (picked) {
69
+ setProfileImage(picked);
70
+ }
87
71
  };
88
72
 
89
73
  return (
@@ -265,16 +265,6 @@ const SendInput: React.FC<SendInputProps> = ({
265
265
  if (pickingDocRef.current) {return;}
266
266
  pickingDocRef.current = true;
267
267
  try {
268
- // Let the attach-sheet's modal finish its NATIVE dismissal before we
269
- // present the picker. The sheet fires this handler right after its
270
- // slide-out animation, but the underlying RN Modal view-controller
271
- // dismissal is async — presenting the document picker over a still-
272
- // dismissing modal makes iOS tear it down without a cancel callback,
273
- // which strands expo-document-picker's pickingContext and makes every
274
- // subsequent open throw "Different document picking in progress".
275
- if (Platform.OS === 'ios') {
276
- await new Promise((resolve) => setTimeout(resolve, 350));
277
- }
278
268
  const result = await DocumentPicker.getDocumentAsync({
279
269
  type: '*/*',
280
270
  multiple: false,
@@ -49,8 +49,7 @@ import {
49
49
  setUnreadSyncing,
50
50
  } from '../roomStore/roomsSlice';
51
51
  import { runHistoryPreloadScheduler } from '../helpers/historyPreloadScheduler';
52
- import { asyncLocalStorage } from '../hooks/useLocalStorage';
53
- import { localStorageConstants } from '../helpers/constants/LOCAL_STORAGE';
52
+ import { secureUserStorage } from '../helpers/secureUserStorage';
54
53
  import { clearPersistedState } from '../roomStore/persistence';
55
54
  import { pushLog as devPushLog } from '../utils/devLogger';
56
55
 
@@ -324,7 +323,7 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
324
323
  devPushLog('rn', 'initBeforeLoad: clearStoreBeforeInit');
325
324
  store.dispatch(setLogoutState());
326
325
  store.dispatch(logout());
327
- await asyncLocalStorage(localStorageConstants.ETHORA_USER).remove().catch(() => undefined);
326
+ await secureUserStorage().remove().catch(() => undefined);
328
327
  }
329
328
 
330
329
  await ensureScopedChatCache(config);