@ethora/chat-component-rn 26.5.10 → 26.5.11
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.
- package/CHANGELOG.md +59 -1
- package/README.md +29 -1
- package/lib/commonjs/components/MainComponents/ChatHeader.js +31 -16
- package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatRoom.js +17 -3
- package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatWrapper.js +17 -14
- package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MediaMessage.js +12 -9
- package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/InteractionsOverlay.js +119 -0
- package/lib/commonjs/components/MessageBubble/InteractionsOverlay.js.map +1 -0
- package/lib/commonjs/components/MessageBubble/Message.js +39 -3
- package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/MessageInteractions.js +64 -36
- package/lib/commonjs/components/MessageBubble/MessageInteractions.js.map +1 -1
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +153 -62
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +20 -5
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +5 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/commonjs/components/Modals/ModalHeaderComponent.js +10 -0
- package/lib/commonjs/components/Modals/ModalHeaderComponent.js.map +1 -1
- package/lib/commonjs/components/Modals/styledModalComponents.js +13 -4
- package/lib/commonjs/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/commonjs/components/styled/StyledComponents.js +6 -3
- package/lib/commonjs/components/styled/StyledComponents.js.map +1 -1
- package/lib/commonjs/components/styled/VideoMessage.js +44 -25
- package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
- package/lib/commonjs/helpers/mimeToExtension.js +56 -0
- package/lib/commonjs/helpers/mimeToExtension.js.map +1 -1
- package/lib/commonjs/hooks/useLogout.js +33 -8
- package/lib/commonjs/hooks/useLogout.js.map +1 -1
- package/lib/commonjs/networking/api-requests/rooms.api.js +29 -4
- package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
- package/lib/module/components/MainComponents/ChatHeader.js +31 -16
- package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/module/components/MainComponents/ChatRoom.js +18 -4
- package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/module/components/MainComponents/ChatWrapper.js +17 -14
- package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/MediaMessage.js +13 -10
- package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/module/components/MessageBubble/InteractionsOverlay.js +112 -0
- package/lib/module/components/MessageBubble/InteractionsOverlay.js.map +1 -0
- package/lib/module/components/MessageBubble/Message.js +40 -4
- package/lib/module/components/MessageBubble/Message.js.map +1 -1
- package/lib/module/components/MessageBubble/MessageInteractions.js +66 -38
- package/lib/module/components/MessageBubble/MessageInteractions.js.map +1 -1
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js +155 -64
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +20 -5
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +6 -2
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/module/components/Modals/ModalHeaderComponent.js +10 -0
- package/lib/module/components/Modals/ModalHeaderComponent.js.map +1 -1
- package/lib/module/components/Modals/styledModalComponents.js +13 -4
- package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/module/components/styled/StyledComponents.js +6 -3
- package/lib/module/components/styled/StyledComponents.js.map +1 -1
- package/lib/module/components/styled/VideoMessage.js +45 -26
- package/lib/module/components/styled/VideoMessage.js.map +1 -1
- package/lib/module/helpers/mimeToExtension.js +55 -0
- package/lib/module/helpers/mimeToExtension.js.map +1 -1
- package/lib/module/hooks/useLogout.js +33 -8
- package/lib/module/hooks/useLogout.js.map +1 -1
- package/lib/module/networking/api-requests/rooms.api.js +29 -4
- package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
- package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/InteractionsOverlay.d.ts +13 -0
- package/lib/typescript/components/MessageBubble/InteractionsOverlay.d.ts.map +1 -0
- package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts.map +1 -1
- package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ModalHeaderComponent.d.ts.map +1 -1
- package/lib/typescript/components/Modals/styledModalComponents.d.ts.map +1 -1
- package/lib/typescript/components/styled/StyledComponents.d.ts.map +1 -1
- package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
- package/lib/typescript/helpers/mimeToExtension.d.ts +8 -0
- package/lib/typescript/helpers/mimeToExtension.d.ts.map +1 -1
- package/lib/typescript/hooks/useLogout.d.ts +23 -1
- package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/rooms.api.d.ts.map +1 -1
- package/lib/typescript/types/types.d.ts +16 -0
- package/lib/typescript/types/types.d.ts.map +1 -1
- package/package.json +7 -4
- package/src/components/MainComponents/ChatHeader.tsx +46 -15
- package/src/components/MainComponents/ChatRoom.tsx +17 -3
- package/src/components/MainComponents/ChatWrapper.tsx +28 -21
- package/src/components/MainComponents/MediaMessage.tsx +11 -8
- package/src/components/MessageBubble/InteractionsOverlay.tsx +121 -0
- package/src/components/MessageBubble/Message.tsx +44 -3
- package/src/components/MessageBubble/MessageInteractions.tsx +67 -48
- package/src/components/Modals/AttachSheet/AttachSheet.tsx +144 -51
- package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +25 -3
- package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +10 -2
- package/src/components/Modals/ModalHeaderComponent.tsx +8 -1
- package/src/components/Modals/styledModalComponents.tsx +13 -4
- package/src/components/styled/StyledComponents.ts +6 -3
- package/src/components/styled/VideoMessage.tsx +21 -5
- package/src/helpers/mimeToExtension.ts +64 -0
- package/src/hooks/useLogout.tsx +33 -10
- package/src/networking/api-requests/rooms.api.ts +31 -7
- package/src/types/types.ts +16 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_native","_interopRequireDefault","require","_reactNative","e","__esModule","default","width","height","Dimensions","get","ChatContainer","exports","styled","View","ThreadContainer","ChatContainerHeader","CenterContainer","rightSpace","leftSpace","ChatContainerHeaderBoxInfo","TouchableOpacity","ChatContainerHeaderInfo","ChatContainerHeaderLabel","Text","NonRoomChat","MessagesScroll","ScrollView","MessagesList","MessageTimestamp","Message","props","isUser","MessageText","UserName","InputContainer","MessageInput","TextInput","IconButton","SendButton","SendButtonText","AvatarCircle","size","bgColor","AvatarImage","Image","RemoveButton","RemoveButtonText","InitialsText","color","Overlay","CustomMessageText","colorUser","FileInput","StyledLoaderWrapper","OrDelimiter","OrDelimiterText","Line","AlsoCheckbox","accentColor","AlsoContainer","Wrapper","CustomSystemMessage","MessageFooter"],"sourceRoot":"../../../../src","sources":["components/styled/StyledComponents.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_native","_interopRequireDefault","require","_reactNative","e","__esModule","default","width","height","Dimensions","get","ChatContainer","exports","styled","View","ThreadContainer","ChatContainerHeader","CenterContainer","rightSpace","leftSpace","ChatContainerHeaderBoxInfo","TouchableOpacity","ChatContainerHeaderInfo","ChatContainerHeaderLabel","Text","NonRoomChat","MessagesScroll","ScrollView","MessagesList","MessageTimestamp","Message","props","isUser","MessageText","UserName","InputContainer","MessageInput","TextInput","IconButton","SendButton","SendButtonText","AvatarCircle","size","bgColor","AvatarImage","Image","RemoveButton","RemoveButtonText","InitialsText","color","Overlay","CustomMessageText","colorUser","FileInput","StyledLoaderWrapper","OrDelimiter","OrDelimiterText","Line","AlsoCheckbox","accentColor","AlsoContainer","Wrapper","CustomSystemMessage","MessageFooter"],"sourceRoot":"../../../../src","sources":["components/styled/StyledComponents.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -41,32 +41,51 @@ const CustomMessageVideo = ({
|
|
|
41
41
|
}));
|
|
42
42
|
dispatch((0, _chatSettingsSlice.setActiveModal)(_MODAL_TYPES.MODAL_TYPES.FILE_PREVIEW));
|
|
43
43
|
};
|
|
44
|
-
return
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
style: styles.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
44
|
+
return (
|
|
45
|
+
/*#__PURE__*/
|
|
46
|
+
// Capture-overlay pattern: VideoView sits underneath without ANY
|
|
47
|
+
// touch participation; a transparent absolute-fill <Pressable> on
|
|
48
|
+
// top owns the tap. Previously we wrapped VideoView in a
|
|
49
|
+
// TouchableOpacity and set `pointerEvents="none"` on the inner
|
|
50
|
+
// VideoView — but on some expo-video versions / iOS the native
|
|
51
|
+
// VideoView still intercepted gestures despite that hint, so
|
|
52
|
+
// tapping the poster did nothing. Customer-reported #9 (video
|
|
53
|
+
// preview unresponsive). The Pressable now guarantees the tap
|
|
54
|
+
// reaches `handleOpen`.
|
|
55
|
+
(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
56
|
+
style: [styles.wrapper, {
|
|
57
|
+
width: dims.width,
|
|
58
|
+
height: dims.height
|
|
59
|
+
}],
|
|
60
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_expoVideo.VideoView, {
|
|
61
|
+
player: player,
|
|
62
|
+
style: styles.video,
|
|
63
|
+
contentFit: "cover",
|
|
64
|
+
nativeControls: false,
|
|
65
|
+
surfaceType: "textureView",
|
|
66
|
+
pointerEvents: "none"
|
|
67
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
68
|
+
style: styles.overlay,
|
|
69
|
+
pointerEvents: "none",
|
|
70
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
71
|
+
style: styles.playButton,
|
|
72
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.PlayIcon, {
|
|
73
|
+
width: 28,
|
|
74
|
+
height: 28
|
|
75
|
+
})
|
|
66
76
|
})
|
|
67
|
-
})
|
|
68
|
-
|
|
69
|
-
|
|
77
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
|
|
78
|
+
onPress: handleOpen
|
|
79
|
+
// Sits ON TOP of VideoView + the play-button overlay; transparent
|
|
80
|
+
// so the poster + play icon show through. Captures the tap and
|
|
81
|
+
// routes to handleOpen → setActiveModal(FILE_PREVIEW).
|
|
82
|
+
,
|
|
83
|
+
style: _reactNative.StyleSheet.absoluteFill,
|
|
84
|
+
accessibilityRole: "button",
|
|
85
|
+
accessibilityLabel: "Play video"
|
|
86
|
+
})]
|
|
87
|
+
})
|
|
88
|
+
);
|
|
70
89
|
};
|
|
71
90
|
var _default = exports.default = CustomMessageVideo;
|
|
72
91
|
const styles = _reactNative.StyleSheet.create({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_expoVideo","_reactRedux","_chatSettingsSlice","_MODAL_TYPES","_icons","_mediaDimensions","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","CustomMessageVideo","fileName","fileURL","mimetype","dispatch","useDispatch","dims","setDims","useState","defaultMediaDims","player","useVideoPlayer","p","muted","useEffect","sub","addListener","size","videoTrack","width","height","fitMediaDimensions","remove","handleOpen","setActiveFile","setActiveModal","MODAL_TYPES","FILE_PREVIEW","jsxs","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_expoVideo","_reactRedux","_chatSettingsSlice","_MODAL_TYPES","_icons","_mediaDimensions","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","CustomMessageVideo","fileName","fileURL","mimetype","dispatch","useDispatch","dims","setDims","useState","defaultMediaDims","player","useVideoPlayer","p","muted","useEffect","sub","addListener","size","videoTrack","width","height","fitMediaDimensions","remove","handleOpen","setActiveFile","setActiveModal","MODAL_TYPES","FILE_PREVIEW","jsxs","View","style","styles","wrapper","children","jsx","VideoView","video","contentFit","nativeControls","surfaceType","pointerEvents","overlay","playButton","PlayIcon","Pressable","onPress","StyleSheet","absoluteFill","accessibilityRole","accessibilityLabel","_default","exports","create","borderRadius","overflow","backgroundColor","absoluteFillObject","justifyContent","alignItems"],"sourceRoot":"../../../../src","sources":["components/styled/VideoMessage.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,6 +7,7 @@ exports.deriveDisplayFilename = deriveDisplayFilename;
|
|
|
7
7
|
exports.ensureFilenameHasExtension = ensureFilenameHasExtension;
|
|
8
8
|
exports.filenameFromUrl = filenameFromUrl;
|
|
9
9
|
exports.getExtensionForMime = getExtensionForMime;
|
|
10
|
+
exports.isLikelyAudio = isLikelyAudio;
|
|
10
11
|
// MIME → file extension table for download/preview filename fallbacks.
|
|
11
12
|
// Centralized so FilePreviewModal, MediaMessage, and any future media
|
|
12
13
|
// surface share one source of truth. Keep additions sorted by category.
|
|
@@ -66,6 +67,61 @@ const MIME_TO_EXT = {
|
|
|
66
67
|
};
|
|
67
68
|
const VALID_EXT_RE = /\.[a-z0-9]{1,8}$/i;
|
|
68
69
|
|
|
70
|
+
// Audio file extensions we recognise across the SDK. Used for the
|
|
71
|
+
// "looks like audio even when the mimetype is application/octet-stream"
|
|
72
|
+
// heuristic in MediaMessage / FilePreviewModal. Voice-message senders
|
|
73
|
+
// (web app, push voice memos) sometimes ship audio as octet-stream with
|
|
74
|
+
// no audio mime — sniffing the extension lets us still play it.
|
|
75
|
+
// `.bin` is intentionally NOT here: it's our own fallback extension for
|
|
76
|
+
// truly unknown payloads (see getExtensionForMime), not a real format.
|
|
77
|
+
const AUDIO_EXTENSIONS = ['.mp3', '.m4a', '.wav', '.aac', '.ogg', '.flac', '.weba', '.webm', '.opus', '.amr', '.3gp', '.3gpp'];
|
|
78
|
+
const AUDIO_EXT_RE = new RegExp(`(${AUDIO_EXTENSIONS.map(e => e.replace('.', '\\.')).join('|')})$`, 'i');
|
|
79
|
+
// Filename / URL substrings that strongly indicate a voice / audio
|
|
80
|
+
// payload even without an explicit audio extension — e.g. a web-app
|
|
81
|
+
// voicemail uploaded as application/octet-stream named "voicemail-…".
|
|
82
|
+
const AUDIO_NAME_HINT_RE = /(?:^|[_\-./])(voice|voicemail|audio|audio-message|audiomessage|recording|voice-?note)(?:[_\-./]|$)/i;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Returns true when the (mime, fileName, url) triple looks like an
|
|
86
|
+
* audio payload — either by mime, by recognised extension on the
|
|
87
|
+
* filename or URL path, or by a voice-message naming hint. The hint
|
|
88
|
+
* branch is what catches voicemails sent as `application/octet-stream`
|
|
89
|
+
* with a generic `.bin` filename (customer-reported #9 voicemail).
|
|
90
|
+
*/
|
|
91
|
+
function isLikelyAudio(mime, fileName, url) {
|
|
92
|
+
const m = (mime || '').toLowerCase();
|
|
93
|
+
if (m.startsWith('audio/')) {
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
// For octet-stream (and any other non-audio mime) fall through to the
|
|
97
|
+
// filename / URL heuristics. We don't restrict to octet-stream — some
|
|
98
|
+
// backends send no mime at all, or send text/plain by accident.
|
|
99
|
+
const name = (fileName || '').toLowerCase();
|
|
100
|
+
const urlLast = filenameFromUrl(url).toLowerCase();
|
|
101
|
+
if (AUDIO_EXT_RE.test(name) || AUDIO_EXT_RE.test(urlLast)) {
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
// Last resort: voice-message naming hint anywhere in the filename, the
|
|
105
|
+
// URL's last segment, OR the URL's full path. Voicemails are commonly
|
|
106
|
+
// hosted under `/voice/abc-123` or `/voicemail/abc-123` where the last
|
|
107
|
+
// segment is an opaque id with no hint by itself.
|
|
108
|
+
const urlPath = (() => {
|
|
109
|
+
if (!url) {
|
|
110
|
+
return '';
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
const noQuery = url.split('?')[0].split('#')[0];
|
|
114
|
+
return decodeURIComponent(noQuery).toLowerCase();
|
|
115
|
+
} catch {
|
|
116
|
+
return '';
|
|
117
|
+
}
|
|
118
|
+
})();
|
|
119
|
+
if (AUDIO_NAME_HINT_RE.test(name) || AUDIO_NAME_HINT_RE.test(urlLast) || AUDIO_NAME_HINT_RE.test(urlPath)) {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
|
|
69
125
|
/**
|
|
70
126
|
* Returns the conventional extension (including the leading dot) for a
|
|
71
127
|
* MIME type, or `.bin` as a last-resort fallback so callers never end up
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MIME_TO_EXT","VALID_EXT_RE","
|
|
1
|
+
{"version":3,"names":["MIME_TO_EXT","VALID_EXT_RE","AUDIO_EXTENSIONS","AUDIO_EXT_RE","RegExp","map","e","replace","join","AUDIO_NAME_HINT_RE","isLikelyAudio","mime","fileName","url","m","toLowerCase","startsWith","name","urlLast","filenameFromUrl","test","urlPath","noQuery","split","decodeURIComponent","getExtensionForMime","normalized","trim","last","pop","ensureFilenameHasExtension","base","Date","now","deriveDisplayFilename","opts","candidate","originalName"],"sourceRoot":"../../../src","sources":["helpers/mimeToExtension.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -132,16 +132,41 @@ const logoutService = exports.logoutService = {
|
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
};
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Hook that returns an awaitable logout function.
|
|
138
|
+
*
|
|
139
|
+
* ```tsx
|
|
140
|
+
* const logout = useLogout();
|
|
141
|
+
* await logout();
|
|
142
|
+
* navigation.replace('SignIn'); // disk is provably clean here
|
|
143
|
+
* ```
|
|
144
|
+
*
|
|
145
|
+
* The returned function resolves AFTER all teardown work has landed:
|
|
146
|
+
* XMPP disconnect, redux reset, persisted slices wiped, stray
|
|
147
|
+
* AsyncStorage keys removed, REST cache cleared. It never rejects —
|
|
148
|
+
* any internal failure is logged via console.warn so a fire-and-forget
|
|
149
|
+
* `logout()` call (no `await`) still won't crash the host.
|
|
150
|
+
*
|
|
151
|
+
* Why awaitable: the persistence middleware debounces writes by 200ms,
|
|
152
|
+
* and the chat-slice `logout` reducer removes ETHORA_USER fire-and-
|
|
153
|
+
* forget. If the host navigated / re-mounted `<Chat>` immediately
|
|
154
|
+
* after a non-awaited call, the next bootstrap could occasionally
|
|
155
|
+
* read stale persisted state ("old chats reappear"). Awaiting the
|
|
156
|
+
* returned promise eliminates that race entirely.
|
|
157
|
+
*/
|
|
135
158
|
const useLogout = () => {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
159
|
+
// dispatch is kept for backward-compat with consumers who treat the
|
|
160
|
+
// hook's presence as a redux-context requirement; not used directly
|
|
161
|
+
// here because the work happens through the module-level service.
|
|
162
|
+
(0, _reactRedux.useDispatch)();
|
|
163
|
+
return (0, _react.useCallback)(async () => {
|
|
164
|
+
try {
|
|
165
|
+
await logoutService.performLogout();
|
|
166
|
+
} catch (err) {
|
|
167
|
+
console.warn('useLogout: performLogout failed', err);
|
|
168
|
+
}
|
|
143
169
|
}, []);
|
|
144
|
-
return handleLogout;
|
|
145
170
|
};
|
|
146
171
|
exports.useLogout = useLogout;
|
|
147
172
|
//# sourceMappingURL=useLogout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactRedux","require","_reactNative","_asyncStorage","_interopRequireDefault","_roomStore","_chatSettingsSlice","_roomsSlice","_react","_roomHeapSlice","_pushSubscriptionService","_rooms","_persistence","_LOCAL_STORAGE","e","__esModule","default","LIBRARY_STRAY_KEYS","logoutService","exports","performLogout","state","store","getState","client","chatSettingStore","rooms","visibleRoomJID","flushLastViewedToPrivateStoreStanza","Promise","race","onlyIfNoUnread","res","setTimeout","console","warn","DeviceEventEmitter","emit","pushSubscriptionService","reset","clearRoomsRestCache","dispatch","setLogoutState","clearHeap","logout","clearPersistedState","AsyncStorage","multiRemove","localStorageConstants","ETHORA_USER","useLogout","useDispatch","
|
|
1
|
+
{"version":3,"names":["_reactRedux","require","_reactNative","_asyncStorage","_interopRequireDefault","_roomStore","_chatSettingsSlice","_roomsSlice","_react","_roomHeapSlice","_pushSubscriptionService","_rooms","_persistence","_LOCAL_STORAGE","e","__esModule","default","LIBRARY_STRAY_KEYS","logoutService","exports","performLogout","state","store","getState","client","chatSettingStore","rooms","visibleRoomJID","flushLastViewedToPrivateStoreStanza","Promise","race","onlyIfNoUnread","res","setTimeout","console","warn","DeviceEventEmitter","emit","pushSubscriptionService","reset","clearRoomsRestCache","dispatch","setLogoutState","clearHeap","logout","clearPersistedState","AsyncStorage","multiRemove","localStorageConstants","ETHORA_USER","useLogout","useDispatch","useCallback","err"],"sourceRoot":"../../../src","sources":["hooks/useLogout.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -27,16 +27,41 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
27
27
|
* 1. explicit `room.jid` from the server (if present)
|
|
28
28
|
* 2. `<name>@conference.<xmppHost>` where xmppHost comes from the
|
|
29
29
|
* provider's `xmppSettings.host` saved to `chatSettingStore.config`
|
|
30
|
-
* 3.
|
|
30
|
+
* 3. derive host from `config.baseUrl` (api.<host> → xmpp.<host>)
|
|
31
|
+
* as a last-resort heuristic for misconfigured deployments
|
|
32
|
+
* 4. otherwise: skip the room with a warn log (NEVER fall back to a
|
|
33
|
+
* hardcoded vendor host — previously `xmpp.chat.ethora.com`, which
|
|
34
|
+
* manifested as a phantom "ethora" room stub on third-party servers,
|
|
35
|
+
* customer-reported #23)
|
|
31
36
|
*/
|
|
32
37
|
function dispatchRoomsFromRestItems(items) {
|
|
33
38
|
if (!items?.length) return;
|
|
34
39
|
const config = _roomStore.store.getState().chatSettingStore?.config;
|
|
35
|
-
|
|
36
|
-
|
|
40
|
+
// Best: explicit xmpp settings.
|
|
41
|
+
let host = config?.xmppSettings?.host || config?.xmppSettings?.conference?.replace(/^conference\./, '');
|
|
42
|
+
// Heuristic fallback: derive xmpp host from the REST baseUrl.
|
|
43
|
+
// `https://api.foo.com/v1` → `xmpp.foo.com`. Better than a hardcoded
|
|
44
|
+
// vendor host and right in 99% of single-domain deployments.
|
|
45
|
+
if (!host && typeof config?.baseUrl === 'string') {
|
|
46
|
+
const m = /^https?:\/\/(?:api\.)?([^/]+)/i.exec(config.baseUrl);
|
|
47
|
+
if (m && m[1]) {
|
|
48
|
+
host = `xmpp.${m[1].replace(/^api\./, '')}`;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const conference = config?.xmppSettings?.conference || (host ? `conference.${host}` : undefined);
|
|
37
52
|
for (const item of items) {
|
|
38
53
|
if (!item) continue;
|
|
39
|
-
|
|
54
|
+
let jid = item.jid;
|
|
55
|
+
if (!jid) {
|
|
56
|
+
if (!conference) {
|
|
57
|
+
// No server-supplied JID and no way to synthesize one safely —
|
|
58
|
+
// skip rather than create a phantom room on a wrong host.
|
|
59
|
+
// Consumers who hit this should set config.xmppSettings.host.
|
|
60
|
+
console.warn(`[ethora-rn] rooms.api: skipping room "${item.name}" — no item.jid and no xmppSettings.host / baseUrl to derive host from`);
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
jid = `${item.name}@${conference}`;
|
|
64
|
+
}
|
|
40
65
|
if (!jid.includes('@')) continue;
|
|
41
66
|
const room = {
|
|
42
67
|
id: item._id || jid,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_roomStore","require","_roomsSlice","_apiClient","_interopRequireDefault","e","__esModule","default","dispatchRoomsFromRestItems","items","length","config","store","getState","chatSettingStore","host","xmppSettings","conference","replace","item","jid","name","includes","room","id","_id","title","usersCnt","participants","members","messages","isLoading","roomBg","icon","picture","createdAt","updatedAt","description","type","roomMembers","map","
|
|
1
|
+
{"version":3,"names":["_roomStore","require","_roomsSlice","_apiClient","_interopRequireDefault","e","__esModule","default","dispatchRoomsFromRestItems","items","length","config","store","getState","chatSettingStore","host","xmppSettings","conference","replace","baseUrl","m","exec","undefined","item","jid","console","warn","name","includes","room","id","_id","title","usersCnt","participants","members","messages","isLoading","roomBg","icon","picture","createdAt","updatedAt","description","type","roomMembers","map","firstName","lastName","xmppUsername","role","ban_status","last_active","dispatch","addRoom","roomData","GET_ROOMS_CACHE_MS","getRoomsInFlight","getRoomsInFlightToken","lastGetRoomsResponse","lastGetRoomsResponseAt","lastGetRoomsResponseToken","getRooms","token","user","now","Date","response","http","get","headers","Authorization","data","error","log","getRoomByName","chatName","Error","postRoom","post","result","postPrivateRoom","username","postReportRoom","category","text","postAddRoomMember","results","deleteRoomMember","roomId","delete","deleteRoom","clearRoomsRestCache"],"sourceRoot":"../../../../src","sources":["networking/api-requests/rooms.api.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -61,6 +61,11 @@ const ChatHeader = ({
|
|
|
61
61
|
Keyboard.dismiss();
|
|
62
62
|
config?.headerChatMenu && config?.headerChatMenu();
|
|
63
63
|
};
|
|
64
|
+
|
|
65
|
+
// Shared open-chat-info handler used by BOTH the outer touchable row
|
|
66
|
+
// and the avatar's own press (the avatar otherwise absorbs taps without
|
|
67
|
+
// bubbling — see the comment on ProfileImagePlaceholder below).
|
|
68
|
+
const openChatInfo = useCallback(() => dispatch(setActiveModal(MODAL_TYPES.CHAT_PROFILE)), [dispatch]);
|
|
64
69
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
65
70
|
children: [/*#__PURE__*/_jsxs(ChatContainerHeader, {
|
|
66
71
|
children: [handleBackClick && !config?.headerChatMenu ? /*#__PURE__*/_jsx(View, {
|
|
@@ -80,13 +85,13 @@ const ChatHeader = ({
|
|
|
80
85
|
}),
|
|
81
86
|
onPress: handleHeaderChatMenu
|
|
82
87
|
})
|
|
83
|
-
}) :
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
}) : null
|
|
89
|
+
/* Don't reserve the 15%-wide leftContainer when both the back
|
|
90
|
+
* button is absent AND the burger icon is hidden — the empty
|
|
91
|
+
* slot used to steal width from the title row, clipping the chat
|
|
92
|
+
* name. Customer-reported #15. The right action area still fills
|
|
93
|
+
* its own slot, so the title now starts at the left edge as
|
|
94
|
+
* intended by `disableChatHeaderBurgerMenuIcon`. */, /*#__PURE__*/_jsxs(CenterContainer, {
|
|
90
95
|
rightSpace: config?.disableRoomConfig,
|
|
91
96
|
leftSpace: !!config?.headerChatMenu,
|
|
92
97
|
children: [config?.chatHeaderBurgerMenu && roomsList && /*#__PURE__*/_jsx(RoomList, {
|
|
@@ -94,15 +99,25 @@ const ChatHeader = ({
|
|
|
94
99
|
burgerMenu: true,
|
|
95
100
|
onRoomClick: handleChangeChat
|
|
96
101
|
}), /*#__PURE__*/_jsxs(ChatContainerHeaderBoxInfo, {
|
|
97
|
-
onPress:
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
onPress: openChatInfo
|
|
103
|
+
// Gates the entry to the CHAT-INFO modal (room name, members,
|
|
104
|
+
// settings) via the dedicated `disableChatInfo.disableChatHeaderMenu`
|
|
105
|
+
// flag. Previously wired to `disableProfilesInteractions`, which
|
|
106
|
+
// is for USER-profile popups (the in-bubble avatar tap, see
|
|
107
|
+
// Message.tsx) — wrong semantic gate, and it meant a consumer
|
|
108
|
+
// who wanted to hide user profiles also lost their entry to
|
|
109
|
+
// the chat info screen.
|
|
110
|
+
,
|
|
111
|
+
disabled: config?.disableChatInfo?.disableChatHeaderMenu,
|
|
112
|
+
children: [/*#__PURE__*/_jsx(ProfileImagePlaceholder, {
|
|
113
|
+
name: currentRoom?.title || currentRoom?.name,
|
|
114
|
+
size: 40,
|
|
115
|
+
icon: currentRoom?.icon,
|
|
116
|
+
active: !config?.disableChatInfo?.disableChatHeaderMenu,
|
|
117
|
+
click: config?.disableChatInfo?.disableChatHeaderMenu ? undefined : {
|
|
118
|
+
isClick: true,
|
|
119
|
+
onPress: openChatInfo
|
|
120
|
+
}
|
|
106
121
|
}), /*#__PURE__*/_jsxs(ChatContainerHeaderInfo, {
|
|
107
122
|
children: [/*#__PURE__*/_jsx(ChatContainerHeaderLabel, {
|
|
108
123
|
numberOfLines: 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","CenterContainer","ChatContainerHeader","ChatContainerHeaderBoxInfo","ChatContainerHeaderInfo","ChatContainerHeaderLabel","RoomList","ProfileImagePlaceholder","Button","BackIcon","BurgerMenuIcon","useDispatch","Composing","deleteRoom","setCurrentRoom","setIsLoading","useXmppClient","setActiveModal","MODAL_TYPES","RoomMenu","useRoomState","useChatSettingState","View","StyleSheet","Text","Keyboard","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ChatHeader","currentRoom","handleBackClick","dispatch","client","roomsList","activeRoomJID","jid","roomState","room","composing","config","handleChangeChat","chat","roomJID","chatJID","loading","handleLeaveClick","leaveTheRoomStanza","nextRoomJID","Object","keys","handleHeaderChatMenu","dismiss","headerChatMenu","children","style","styles","leftContainer","EndIcon","onPress","disableChatHeaderBurgerMenuIcon","menuButton","color","unstyled","colors","primary","rightSpace","disableRoomConfig","leftSpace","chatHeaderBurgerMenu","chats","values","burgerMenu","onRoomClick","
|
|
1
|
+
{"version":3,"names":["React","useCallback","CenterContainer","ChatContainerHeader","ChatContainerHeaderBoxInfo","ChatContainerHeaderInfo","ChatContainerHeaderLabel","RoomList","ProfileImagePlaceholder","Button","BackIcon","BurgerMenuIcon","useDispatch","Composing","deleteRoom","setCurrentRoom","setIsLoading","useXmppClient","setActiveModal","MODAL_TYPES","RoomMenu","useRoomState","useChatSettingState","View","StyleSheet","Text","Keyboard","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ChatHeader","currentRoom","handleBackClick","dispatch","client","roomsList","activeRoomJID","jid","roomState","room","composing","config","handleChangeChat","chat","roomJID","chatJID","loading","handleLeaveClick","leaveTheRoomStanza","nextRoomJID","Object","keys","handleHeaderChatMenu","dismiss","headerChatMenu","openChatInfo","CHAT_PROFILE","children","style","styles","leftContainer","EndIcon","onPress","disableChatHeaderBurgerMenuIcon","menuButton","color","unstyled","colors","primary","rightSpace","disableRoomConfig","leftSpace","chatHeaderBurgerMenu","chats","values","burgerMenu","onRoomClick","disabled","disableChatInfo","disableChatHeaderMenu","name","title","size","icon","active","click","undefined","isClick","numberOfLines","ellipsizeMode","usersTyping","composingList","disableUserCount","subLabel","usersCnt","rightContainer","chatHeaderAdditional","enabled","element","create","fontSize","padding","borderRadius","backgroundColor","alignItems","width"],"sourceRoot":"../../../../src","sources":["components/MainComponents/ChatHeader.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
/** @format */
|
|
4
4
|
|
|
5
|
-
import React, { useState, useEffect, useCallback } from 'react';
|
|
5
|
+
import React, { useState, useEffect, useCallback, useRef } from 'react';
|
|
6
6
|
import { ChatContainer, NonRoomChat } from '../styled/StyledComponents';
|
|
7
7
|
import { useDispatch } from 'react-redux';
|
|
8
8
|
import MessageList from './MessageList';
|
|
@@ -115,6 +115,19 @@ const ChatRoom = /*#__PURE__*/React.memo(({
|
|
|
115
115
|
isEdit: false
|
|
116
116
|
}));
|
|
117
117
|
};
|
|
118
|
+
|
|
119
|
+
// Read the latest client through a ref so this effect's setup phase
|
|
120
|
+
// does NOT re-run on every `client` identity change. With `client` in
|
|
121
|
+
// the deps array, a reconnect or any provider re-render would re-fire
|
|
122
|
+
// setup → `dispatch(setVisibleRoom(...))` ~one tick after the host
|
|
123
|
+
// cleared visibility via the `isVisible` prop (XmppProvider) — racing
|
|
124
|
+
// and clobbering it, so `useUnread()` reported 0 in tab-mounted hosts.
|
|
125
|
+
// Customer-reported #19. The cleanup still needs the live client for
|
|
126
|
+
// flushLastViewedToPrivateStoreStanza, which is what the ref provides.
|
|
127
|
+
const clientRef = useRef(client);
|
|
128
|
+
useEffect(() => {
|
|
129
|
+
clientRef.current = client;
|
|
130
|
+
}, [client]);
|
|
118
131
|
useEffect(() => {
|
|
119
132
|
if (!activeRoomJID) {
|
|
120
133
|
return;
|
|
@@ -130,8 +143,9 @@ const ChatRoom = /*#__PURE__*/React.memo(({
|
|
|
130
143
|
timestamp
|
|
131
144
|
}));
|
|
132
145
|
dispatch(clearVisibleRoom());
|
|
133
|
-
|
|
134
|
-
|
|
146
|
+
const liveClient = clientRef.current;
|
|
147
|
+
if (liveClient) {
|
|
148
|
+
liveClient.flushLastViewedToPrivateStoreStanza(store.getState().rooms?.rooms, {
|
|
135
149
|
visibleRoomJID: activeRoomJID
|
|
136
150
|
}).catch(() => {});
|
|
137
151
|
}
|
|
@@ -141,7 +155,7 @@ const ChatRoom = /*#__PURE__*/React.memo(({
|
|
|
141
155
|
}));
|
|
142
156
|
setIsLoadingMore(false);
|
|
143
157
|
};
|
|
144
|
-
}, [activeRoomJID,
|
|
158
|
+
}, [activeRoomJID, dispatch]);
|
|
145
159
|
|
|
146
160
|
// hooks useEffects
|
|
147
161
|
// useRoomUrl(activeRoomJID || "", roomsList, config);
|