@droppii-org/chat-mobile 0.2.98 → 0.2.99

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 (33) hide show
  1. package/lib/module/hooks/conversation/useSingleAccessGuard.js +33 -0
  2. package/lib/module/hooks/conversation/useSingleAccessGuard.js.map +1 -0
  3. package/lib/module/hooks/groups/useGroupAccessGuard.js +26 -17
  4. package/lib/module/hooks/groups/useGroupAccessGuard.js.map +1 -1
  5. package/lib/module/screens/chat-detail/ChatDetail.js +58 -47
  6. package/lib/module/screens/chat-detail/ChatDetail.js.map +1 -1
  7. package/lib/module/screens/chat-detail/components/ChatDetailLoading.js +38 -0
  8. package/lib/module/screens/chat-detail/components/ChatDetailLoading.js.map +1 -0
  9. package/lib/module/store/message.js +1 -1
  10. package/lib/module/store/message.js.map +1 -1
  11. package/lib/module/utils/conversation.js +21 -0
  12. package/lib/module/utils/conversation.js.map +1 -1
  13. package/lib/module/utils/message.js +2 -3
  14. package/lib/module/utils/message.js.map +1 -1
  15. package/lib/typescript/src/hooks/conversation/useSingleAccessGuard.d.ts +16 -0
  16. package/lib/typescript/src/hooks/conversation/useSingleAccessGuard.d.ts.map +1 -0
  17. package/lib/typescript/src/hooks/groups/useGroupAccessGuard.d.ts +6 -0
  18. package/lib/typescript/src/hooks/groups/useGroupAccessGuard.d.ts.map +1 -1
  19. package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts +2 -2
  20. package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts.map +1 -1
  21. package/lib/typescript/src/screens/chat-detail/components/ChatDetailLoading.d.ts +2 -0
  22. package/lib/typescript/src/screens/chat-detail/components/ChatDetailLoading.d.ts.map +1 -0
  23. package/lib/typescript/src/utils/conversation.d.ts +17 -0
  24. package/lib/typescript/src/utils/conversation.d.ts.map +1 -1
  25. package/lib/typescript/src/utils/message.d.ts.map +1 -1
  26. package/package.json +1 -1
  27. package/src/hooks/conversation/useSingleAccessGuard.ts +44 -0
  28. package/src/hooks/groups/useGroupAccessGuard.ts +28 -19
  29. package/src/screens/chat-detail/ChatDetail.tsx +80 -43
  30. package/src/screens/chat-detail/components/ChatDetailLoading.tsx +31 -0
  31. package/src/store/message.ts +1 -1
  32. package/src/utils/conversation.ts +31 -0
  33. package/src/utils/message.ts +6 -3
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useRef } from 'react';
4
+ import { isConversationParticipant, isSingleConversationId } from "../../utils/conversation.js";
5
+ import { showAccessBlockedModal } from "../groups/useGroupAccessGuard.js";
6
+ /**
7
+ * 1v1 conversations have no membership guard of their own — a deeplink into a
8
+ * 1v1 the logged-in account isn't part of never syncs a local conversation
9
+ * record, so this can't rely on a synced `ConversationItem` and instead reads
10
+ * the participant ids straight off the "si_<userA>_<userB>" conversationId.
11
+ * No-ops for anything that isn't a 1v1 conversationId.
12
+ */
13
+ export const useSingleAccessGuard = ({
14
+ conversationId,
15
+ currentUserId,
16
+ onBlocked
17
+ }) => {
18
+ const hasBlockedRef = useRef(false);
19
+ const onBlockedRef = useRef(onBlocked);
20
+ onBlockedRef.current = onBlocked;
21
+ useEffect(() => {
22
+ hasBlockedRef.current = false;
23
+ }, [conversationId]);
24
+ useEffect(() => {
25
+ if (!isSingleConversationId(conversationId)) return;
26
+ if (!currentUserId) return;
27
+ if (isConversationParticipant(conversationId, currentUserId)) return;
28
+ if (hasBlockedRef.current) return;
29
+ hasBlockedRef.current = true;
30
+ showAccessBlockedModal(() => onBlockedRef.current());
31
+ }, [conversationId, currentUserId]);
32
+ };
33
+ //# sourceMappingURL=useSingleAccessGuard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","isConversationParticipant","isSingleConversationId","showAccessBlockedModal","useSingleAccessGuard","conversationId","currentUserId","onBlocked","hasBlockedRef","onBlockedRef","current"],"sourceRoot":"../../../../src","sources":["hooks/conversation/useSingleAccessGuard.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACzC,SACEC,yBAAyB,EACzBC,sBAAsB,QACjB,6BAA0B;AACjC,SAASC,sBAAsB,QAAQ,kCAA+B;AAStE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,oBAAoB,GAAGA,CAAC;EACnCC,cAAc;EACdC,aAAa;EACbC;AACM,CAAC,KAAK;EACZ,MAAMC,aAAa,GAAGR,MAAM,CAAC,KAAK,CAAC;EACnC,MAAMS,YAAY,GAAGT,MAAM,CAACO,SAAS,CAAC;EACtCE,YAAY,CAACC,OAAO,GAAGH,SAAS;EAEhCR,SAAS,CAAC,MAAM;IACdS,aAAa,CAACE,OAAO,GAAG,KAAK;EAC/B,CAAC,EAAE,CAACL,cAAc,CAAC,CAAC;EAEpBN,SAAS,CAAC,MAAM;IACd,IAAI,CAACG,sBAAsB,CAACG,cAAc,CAAC,EAAE;IAC7C,IAAI,CAACC,aAAa,EAAE;IACpB,IAAIL,yBAAyB,CAACI,cAAc,EAAEC,aAAa,CAAC,EAAE;IAC9D,IAAIE,aAAa,CAACE,OAAO,EAAE;IAC3BF,aAAa,CAACE,OAAO,GAAG,IAAI;IAE5BP,sBAAsB,CAAC,MAAMM,YAAY,CAACC,OAAO,CAAC,CAAC,CAAC;EACtD,CAAC,EAAE,CAACL,cAAc,EAAEC,aAAa,CAAC,CAAC;AACrC,CAAC","ignoreList":[]}
@@ -9,6 +9,31 @@ import { trans } from "../../translation/index.js";
9
9
  import { ChatEvent } from "../../types/events.js";
10
10
  import { wasSelfExitedGroup } from "../../utils/groupExit.js";
11
11
  import { conversationQueryKeys } from "../query-keys.js";
12
+ /**
13
+ * The "you can't open this conversation" modal — shared by the group
14
+ * non-member guard and the 1v1 non-participant check in ChatDetail, so both
15
+ * present the exact same blocked experience.
16
+ */
17
+ export const showAccessBlockedModal = onAcknowledge => {
18
+ UIUtils.alert.open({
19
+ title: trans('group:access_blocked_title'),
20
+ message: trans('group:access_blocked_desc'),
21
+ primaryIndex: 0,
22
+ buttonType: 'horizontal-button',
23
+ // Drop any alert raised while this one is up rather than stacking it —
24
+ // OnGroupDismissed fires twice for the group owner.
25
+ ignoreStack: true,
26
+ // Force an acknowledgement: dismissing by tapping outside would leave the
27
+ // user sitting in a conversation they cannot access.
28
+ touchOutsideToDismiss: false,
29
+ buttons: [{
30
+ label: trans('group:access_blocked_button'),
31
+ kind: 'primary',
32
+ onPress: onAcknowledge
33
+ }]
34
+ });
35
+ };
36
+
12
37
  /**
13
38
  * Resolves whether the current user may open `groupID`, per the group-access
14
39
  * spec: private non-members and dismissed groups are blocked outright, while
@@ -57,23 +82,7 @@ export const useGroupAccessGuard = ({
57
82
  if (hasBlockedRef.current) return;
58
83
  hasBlockedRef.current = true;
59
84
  setAccessState('blocked');
60
- UIUtils.alert.open({
61
- title: trans('group:access_blocked_title'),
62
- message: trans('group:access_blocked_desc'),
63
- primaryIndex: 0,
64
- buttonType: 'horizontal-button',
65
- // Drop any alert raised while this one is up rather than stacking it —
66
- // OnGroupDismissed fires twice for the group owner.
67
- ignoreStack: true,
68
- // Force an acknowledgement: dismissing by tapping outside would leave the
69
- // user sitting in a conversation they cannot access.
70
- touchOutsideToDismiss: false,
71
- buttons: [{
72
- label: trans('group:access_blocked_button'),
73
- kind: 'primary',
74
- onPress: () => onBlockedRef.current()
75
- }]
76
- });
85
+ showAccessBlockedModal(() => onBlockedRef.current());
77
86
  }, []);
78
87
  const applyResult = useCallback(result => {
79
88
  if (result.state === 'blocked') {
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useRef","useState","DeviceEventEmitter","OpenIMSDK","GroupStatus","GroupVisibility","useQueryClient","UIUtils","trans","ChatEvent","wasSelfExitedGroup","conversationQueryKeys","evaluateAccess","groupID","info","getSpecifiedGroupsInfo","state","status","Dismissed","isMember","isJoinGroup","visibility","Public","useGroupAccessGuard","onBlocked","queryClient","groupIdRef","current","activeGroupId","accessState","setAccessState","hasBlockedRef","onBlockedRef","block","alert","open","title","message","primaryIndex","buttonType","ignoreStack","touchOutsideToDismiss","buttons","label","kind","onPress","applyResult","result","cancelled","then","catch","error","console","sub","addListener","GroupRemoved","payload","reason","remove","isViewOnly","wasViewOnlyRef","invalidateQueries","queryKey","joinedGroup","isCheckingAccess"],"sourceRoot":"../../../../src","sources":["hooks/groups/useGroupAccessGuard.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useRef","useState","DeviceEventEmitter","OpenIMSDK","GroupStatus","GroupVisibility","useQueryClient","UIUtils","trans","ChatEvent","wasSelfExitedGroup","conversationQueryKeys","showAccessBlockedModal","onAcknowledge","alert","open","title","message","primaryIndex","buttonType","ignoreStack","touchOutsideToDismiss","buttons","label","kind","onPress","evaluateAccess","groupID","info","getSpecifiedGroupsInfo","state","status","Dismissed","isMember","isJoinGroup","visibility","Public","useGroupAccessGuard","onBlocked","queryClient","groupIdRef","current","activeGroupId","accessState","setAccessState","hasBlockedRef","onBlockedRef","block","applyResult","result","cancelled","then","catch","error","console","sub","addListener","GroupRemoved","payload","reason","remove","isViewOnly","wasViewOnlyRef","invalidateQueries","queryKey","joinedGroup","isCheckingAccess"],"sourceRoot":"../../../../src","sources":["hooks/groups/useGroupAccessGuard.ts"],"mappings":"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","ignoreList":[]}
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  import { memo, useCallback, useEffect, useRef } from 'react';
4
- import { ActivityIndicator, DeviceEventEmitter } from 'react-native';
4
+ import { DeviceEventEmitter } from 'react-native';
5
5
  import { useKeyboardScrollToEnd } from '@legendapp/list/keyboard';
6
6
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
7
- import { KColors, KContainer, KNavigation } from '@droppii/libs';
7
+ import { KContainer } from '@droppii/libs';
8
8
  import { useNavigation, useRoute } from '@react-navigation/native';
9
9
  import { usePinMessage } from "../../hooks/message/usePinMessage.js";
10
10
  import { PinnedMessageBar } from "./PinnedMessageBar.js";
@@ -17,21 +17,24 @@ import { ChatComposer } from "./ChatComposer.js";
17
17
  import { shouldShowAddMember } from "./conversationHeader.utils.js";
18
18
  import { normalizeUrl } from "../../utils/url.js";
19
19
  import { MessageToolboxOverlay } from "./messageToolbox/MessageToolboxOverlay.js";
20
- import { useGetConversationDetail, useGetConversationTarget } from "../../hooks/conversation/useGetConversationDetail.js";
20
+ import { useGetConversationDetail, useGetConversationTarget, useSyncConversationById } from "../../hooks/conversation/useGetConversationDetail.js";
21
21
  import { GroupJoinSource } from '@droppii/openim-rn-client-sdk';
22
22
  import { useMessages } from "../../hooks/message/useMessages.js";
23
23
  import { ChatEvent } from "../../types/events.js";
24
24
  import { useSetIsShowFLashMessage } from "../../context/global.js";
25
25
  import { useJoinGroup } from "../../hooks/groups/useJoinGroup.js";
26
26
  import { useGroupAccessGuard } from "../../hooks/groups/useGroupAccessGuard.js";
27
+ import { useSingleAccessGuard } from "../../hooks/conversation/useSingleAccessGuard.js";
28
+ import { useIsJoinedGroup } from "../../hooks/useIsJoinedGroup.js";
27
29
  import { UIUtils } from "../../utils/UIUtils.js";
28
30
  import { trans } from "../../translation/index.js";
31
+ import { getGroupIdFromConversationId } from "../../utils/conversation.js";
32
+ import { ChatDetailLoading } from "./components/ChatDetailLoading.js";
29
33
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
30
34
  const ChatDetail = /*#__PURE__*/memo(({
31
- targetConversationId = '',
35
+ conversationId,
32
36
  targetUserId = '',
33
37
  targetGroupId = '',
34
- targetBotId = '',
35
38
  targetMessageId = '',
36
39
  showAddMember,
37
40
  onBack,
@@ -47,15 +50,6 @@ const ChatDetail = /*#__PURE__*/memo(({
47
50
  const mediaViewerRef = useRef(null);
48
51
  const messageToolboxRef = useRef(null);
49
52
  const currentUser = useUserStore(s => s.user);
50
- const {
51
- conversationId,
52
- isLoading: isLoadingConversation
53
- } = useGetConversationDetail({
54
- targetConversationId,
55
- targetUserId,
56
- targetGroupId,
57
- targetBotId
58
- });
59
53
  const conversation = useConversation(conversationId);
60
54
  const {
61
55
  data: target
@@ -105,7 +99,12 @@ const ChatDetail = /*#__PURE__*/memo(({
105
99
  const {
106
100
  isCheckingAccess
107
101
  } = useGroupAccessGuard({
108
- groupID: conversation?.groupID || targetGroupId,
102
+ groupID: conversation?.groupID || targetGroupId || getGroupIdFromConversationId(conversationId),
103
+ onBlocked: handleAccessBlocked
104
+ });
105
+ useSingleAccessGuard({
106
+ conversationId,
107
+ currentUserId: currentUser?.userID,
109
108
  onBlocked: handleAccessBlocked
110
109
  });
111
110
 
@@ -191,7 +190,7 @@ const ChatDetail = /*#__PURE__*/memo(({
191
190
  messages: messages,
192
191
  conversationId: conversationId,
193
192
  customMessageItemFactory: customMessageItemFactory,
194
- isLoading: initLoading || isLoadingConversation || isCheckingAccess,
193
+ isLoading: initLoading || isCheckingAccess,
195
194
  onLoadMoreOld: getMoreOldMessages,
196
195
  hasMoreOld: hasMoreOld,
197
196
  moreOldLoading: moreOldLoading,
@@ -223,43 +222,55 @@ const ChatDetail = /*#__PURE__*/memo(({
223
222
  })]
224
223
  });
225
224
  });
226
- export default props => {
225
+
226
+ // Resolve conversation/group/join-status data before ChatDetail mounts, so the
227
+ // header and composer never render with an incomplete or stale group-membership
228
+ // state on a cold-start deeplink open (DROPPII-30942).
229
+ const ConversationDataGate = props => {
230
+ const {
231
+ targetConversationId,
232
+ targetUserId,
233
+ targetGroupId,
234
+ targetBotId
235
+ } = props;
236
+ const hasTarget = !!(targetConversationId || targetUserId || targetGroupId || targetBotId);
237
+ const {
238
+ conversationId,
239
+ isLoading: isLoadingConversation
240
+ } = useGetConversationDetail({
241
+ targetConversationId,
242
+ targetUserId,
243
+ targetGroupId: targetGroupId || getGroupIdFromConversationId(targetConversationId),
244
+ targetBotId
245
+ });
246
+ const conversation = useConversation(conversationId);
247
+ const {
248
+ isFetching: isSyncingConversation,
249
+ isFetched: isConversationSynced
250
+ } = useSyncConversationById(conversationId, !!conversation);
251
+ const {
252
+ isLoading: isCheckingJoinStatus
253
+ } = useIsJoinedGroup(conversation?.groupID);
254
+ const isConversationResolved = !!conversationId && (!!conversation || isConversationSynced && !isSyncingConversation);
255
+ const isReady = !hasTarget || !isLoadingConversation && isConversationResolved && (!conversation?.groupID || !isCheckingJoinStatus);
256
+ if (!isReady) {
257
+ return /*#__PURE__*/_jsx(ChatDetailLoading, {});
258
+ }
259
+ return /*#__PURE__*/_jsx(ChatDetail, {
260
+ ...props,
261
+ conversationId: conversationId
262
+ });
263
+ };
264
+ const SdkReadyGate = props => {
227
265
  const isUserLoaded = useUserStore(s => s.user != null);
228
- const navigation = useNavigation();
229
266
 
230
267
  // Handle sdk not loaded yet when navigate using deeplink
231
268
  if (!isUserLoaded) {
232
- return /*#__PURE__*/_jsxs(KContainer.Page, {
233
- flex: true,
234
- edges: ['bottom'],
235
- children: [/*#__PURE__*/_jsx(KNavigation.Header, {
236
- theme: "light",
237
- alignment: "left",
238
- size: "small",
239
- disableCenterSpace: true,
240
- shadow: true,
241
- leftButton: {
242
- id: 'back',
243
- icon: {
244
- size: 24,
245
- vectorName: 'arrow-left-o',
246
- vectorProvider: 'DroppiiNew',
247
- tintColor: KColors.primary.normal
248
- },
249
- onPress: navigation.goBack
250
- }
251
- }), /*#__PURE__*/_jsx(KContainer.View, {
252
- flex: true,
253
- center: true,
254
- children: /*#__PURE__*/_jsx(ActivityIndicator, {
255
- size: "small",
256
- color: KColors.primary.normal
257
- })
258
- })]
259
- });
269
+ return /*#__PURE__*/_jsx(ChatDetailLoading, {});
260
270
  }
261
- return /*#__PURE__*/_jsx(ChatDetail, {
271
+ return /*#__PURE__*/_jsx(ConversationDataGate, {
262
272
  ...props
263
273
  });
264
274
  };
275
+ export default SdkReadyGate;
265
276
  //# sourceMappingURL=ChatDetail.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["memo","useCallback","useEffect","useRef","ActivityIndicator","DeviceEventEmitter","useKeyboardScrollToEnd","useSafeAreaInsets","KColors","KContainer","KNavigation","useNavigation","useRoute","usePinMessage","PinnedMessageBar","openPinnedMessagesSheet","MediaViewerModal","useConversation","useConversationStore","useUserStore","ChatDetailHeader","ChatListLegend","ChatComposer","shouldShowAddMember","normalizeUrl","MessageToolboxOverlay","useGetConversationDetail","useGetConversationTarget","GroupJoinSource","useMessages","ChatEvent","useSetIsShowFLashMessage","useJoinGroup","useGroupAccessGuard","UIUtils","trans","jsx","_jsx","jsxs","_jsxs","ChatDetail","targetConversationId","targetUserId","targetGroupId","targetBotId","targetMessageId","showAddMember","onBack","onPressSearch","onPressAddMember","onPressMenu","onPressUrl","customMessageItemFactory","pannelActions","groupJoinSource","navigation","mediaViewerRef","messageToolboxRef","currentUser","s","user","conversationId","isLoading","isLoadingConversation","conversation","data","target","isComposeDisabled","isActive","handleBackDefault","goBack","handleMediaPress","items","index","current","show","messages","initLoading","moreOldLoading","moreNewLoading","getMoreOldMessages","getMoreNewMessages","hasMoreOld","hasMoreNew","startClientMsgId","peerType","mutate","joinGroup","isPending","isJoiningGroup","setShowFLashMessage","pinnedMessages","pinMessage","unpinMessage","getState","setCurrentConversation","undefined","handleAccessBlocked","isCheckingAccess","groupID","onBlocked","subscription","addListener","TargetMessageUnavailable","toast","open","title","theme","remove","params","targetMessage","find","m","clientMsgID","emit","ScrollToMessage","clientMessageId","resolvedShowAddMember","insets","listRef","freeze","scrollMessageToEnd","handlePressUrl","url","handleMessageLongPress","message","rect","groupPosition","handlePressPinnedMessageBar","currentUserId","userID","onPressMessage","handlePressMenu","handlePressJoinGroup","reqMsg","joinSource","Search","groupName","showName","Page","flex","edges","children","onPressAvatar","onPress","onLoadMoreOld","onLoadMoreNew","onMediaPress","onLongPress","keyboardOffset","bottom","isEmptyMessage","length","onPressJoinGroup","ref","onPinMessage","onUnpinMessage","props","isUserLoaded","Header","alignment","size","disableCenterSpace","shadow","leftButton","id","icon","vectorName","vectorProvider","tintColor","primary","normal","View","center","color"],"sourceRoot":"../../../../src","sources":["screens/chat-detail/ChatDetail.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["memo","useCallback","useEffect","useRef","DeviceEventEmitter","useKeyboardScrollToEnd","useSafeAreaInsets","KContainer","useNavigation","useRoute","usePinMessage","PinnedMessageBar","openPinnedMessagesSheet","MediaViewerModal","useConversation","useConversationStore","useUserStore","ChatDetailHeader","ChatListLegend","ChatComposer","shouldShowAddMember","normalizeUrl","MessageToolboxOverlay","useGetConversationDetail","useGetConversationTarget","useSyncConversationById","GroupJoinSource","useMessages","ChatEvent","useSetIsShowFLashMessage","useJoinGroup","useGroupAccessGuard","useSingleAccessGuard","useIsJoinedGroup","UIUtils","trans","getGroupIdFromConversationId","ChatDetailLoading","jsx","_jsx","jsxs","_jsxs","ChatDetail","conversationId","targetUserId","targetGroupId","targetMessageId","showAddMember","onBack","onPressSearch","onPressAddMember","onPressMenu","onPressUrl","customMessageItemFactory","pannelActions","groupJoinSource","navigation","mediaViewerRef","messageToolboxRef","currentUser","s","user","conversation","data","target","isComposeDisabled","isActive","handleBackDefault","goBack","handleMediaPress","items","index","current","show","messages","initLoading","moreOldLoading","moreNewLoading","getMoreOldMessages","getMoreNewMessages","hasMoreOld","hasMoreNew","startClientMsgId","peerType","mutate","joinGroup","isPending","isJoiningGroup","setShowFLashMessage","pinnedMessages","pinMessage","unpinMessage","getState","setCurrentConversation","undefined","handleAccessBlocked","isCheckingAccess","groupID","onBlocked","currentUserId","userID","subscription","addListener","TargetMessageUnavailable","toast","open","title","theme","remove","params","targetMessage","find","m","clientMsgID","emit","ScrollToMessage","clientMessageId","resolvedShowAddMember","insets","listRef","freeze","scrollMessageToEnd","handlePressUrl","url","handleMessageLongPress","message","rect","groupPosition","handlePressPinnedMessageBar","onPressMessage","handlePressMenu","handlePressJoinGroup","reqMsg","joinSource","Search","groupName","showName","Page","flex","edges","children","onPressAvatar","onPress","isLoading","onLoadMoreOld","onLoadMoreNew","onMediaPress","onLongPress","keyboardOffset","bottom","isEmptyMessage","length","onPressJoinGroup","ref","onPinMessage","onUnpinMessage","ConversationDataGate","props","targetConversationId","targetBotId","hasTarget","isLoadingConversation","isFetching","isSyncingConversation","isFetched","isConversationSynced","isCheckingJoinStatus","isConversationResolved","isReady","SdkReadyGate","isUserLoaded"],"sourceRoot":"../../../../src","sources":["screens/chat-detail/ChatDetail.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ import { KColors, KContainer, KNavigation } from '@droppii/libs';
4
+ import { ActivityIndicator } from 'react-native';
5
+ import { useNavigation } from '@react-navigation/native';
6
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ export const ChatDetailLoading = () => {
8
+ const navigation = useNavigation();
9
+ return /*#__PURE__*/_jsxs(KContainer.Page, {
10
+ flex: true,
11
+ edges: ['bottom'],
12
+ children: [/*#__PURE__*/_jsx(KNavigation.Header, {
13
+ theme: "light",
14
+ alignment: "left",
15
+ size: "small",
16
+ disableCenterSpace: true,
17
+ shadow: true,
18
+ leftButton: {
19
+ id: 'back',
20
+ icon: {
21
+ size: 24,
22
+ vectorName: 'arrow-left-o',
23
+ vectorProvider: 'DroppiiNew',
24
+ tintColor: KColors.primary.normal
25
+ },
26
+ onPress: navigation.goBack
27
+ }
28
+ }), /*#__PURE__*/_jsx(KContainer.View, {
29
+ flex: true,
30
+ center: true,
31
+ children: /*#__PURE__*/_jsx(ActivityIndicator, {
32
+ size: "small",
33
+ color: KColors.primary.normal
34
+ })
35
+ })]
36
+ });
37
+ };
38
+ //# sourceMappingURL=ChatDetailLoading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["KColors","KContainer","KNavigation","ActivityIndicator","useNavigation","jsx","_jsx","jsxs","_jsxs","ChatDetailLoading","navigation","Page","flex","edges","children","Header","theme","alignment","size","disableCenterSpace","shadow","leftButton","id","icon","vectorName","vectorProvider","tintColor","primary","normal","onPress","goBack","View","center","color"],"sourceRoot":"../../../../../src","sources":["screens/chat-detail/components/ChatDetailLoading.tsx"],"mappings":";;AAAA,SAASA,OAAO,EAAEC,UAAU,EAAEC,WAAW,QAAQ,eAAe;AAChE,SAASC,iBAAiB,QAAQ,cAAc;AAChD,SAASC,aAAa,QAAQ,0BAA0B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEzD,OAAO,MAAMC,iBAAiB,GAAGA,CAAA,KAAM;EACrC,MAAMC,UAAU,GAAGN,aAAa,CAAC,CAAC;EAClC,oBACEI,KAAA,CAACP,UAAU,CAACU,IAAI;IAACC,IAAI;IAACC,KAAK,EAAE,CAAC,QAAQ,CAAE;IAAAC,QAAA,gBACtCR,IAAA,CAACJ,WAAW,CAACa,MAAM;MACjBC,KAAK,EAAC,OAAO;MACbC,SAAS,EAAC,MAAM;MAChBC,IAAI,EAAC,OAAO;MACZC,kBAAkB;MAClBC,MAAM;MACNC,UAAU,EAAE;QACVC,EAAE,EAAE,MAAM;QACVC,IAAI,EAAE;UACJL,IAAI,EAAE,EAAE;UACRM,UAAU,EAAE,cAAc;UAC1BC,cAAc,EAAE,YAAY;UAC5BC,SAAS,EAAE1B,OAAO,CAAC2B,OAAO,CAACC;QAC7B,CAAC;QACDC,OAAO,EAAEnB,UAAU,CAACoB;MACtB;IAAE,CACH,CAAC,eACFxB,IAAA,CAACL,UAAU,CAAC8B,IAAI;MAACnB,IAAI;MAACoB,MAAM;MAAAlB,QAAA,eAC1BR,IAAA,CAACH,iBAAiB;QAACe,IAAI,EAAC,OAAO;QAACe,KAAK,EAAEjC,OAAO,CAAC2B,OAAO,CAACC;MAAO,CAAE;IAAC,CAClD,CAAC;EAAA,CACH,CAAC;AAEtB,CAAC","ignoreList":[]}
@@ -168,7 +168,7 @@ export const useMessageStore = create()((set, get) => ({
168
168
  hasMoreNew: !searchNextRes.isEnd,
169
169
  initLoading: false
170
170
  });
171
- const targetMessage = currentMessages.find(msg => msg.clientMsgID === startClientMsgId);
171
+ const targetMessage = newMessages.find(msg => msg.clientMsgID === startClientMsgId);
172
172
  if (!targetMessage || isMessageRevoked(targetMessage)) {
173
173
  DeviceEventEmitter.emit(ChatEvent.TargetMessageUnavailable);
174
174
  return;
@@ -1 +1 @@
1
- {"version":3,"names":["create","DeviceEventEmitter","OpenIMSDK","MessageType","ViewType","ChatEvent","mergeMessages","isMessageRevoked","useConversationStore","PAGE_SIZE","useMessageStore","set","get","messages","hasMoreOld","hasMoreNew","initLoading","moreOldLoading","moreNewLoading","setMessages","hasMore","pushNewMessage","message","state","updateOneMessage","tmpList","idx","findIndex","msg","clientMsgID","deleteOneMessage","filter","getMoreOldMessages","loadMore","applicationType","conversationId","params","count","startClientMsgID","conversationID","viewType","History","res","getAdvancedHistoryMessageListApp","getState","currentConversationId","messageList","isEnd","error","console","log","getMoreNewMessages","length","getAdvancedHistoryMessageListReverseApp","Promise","resolve","setTimeout","emit","ScrollToBottom","searchMessages","startClientMsgId","searchPrevParams","Search","searchNextParams","searchCurrentParams","clientMsgIDList","findMessageList","searchPrevRes","searchNextRes","currentMessages","findResultItems","find","item","newMessages","targetMessage","TargetMessageUnavailable","ScrollToMessage","clientMessageId","reset","markMessageRevoked","alreadyRevoked","some","contentType","RevokeMessage","MessageRevoked","revokeQuotedReferences","forEach","quoteElem","quoteMessage","atTextElem"],"sourceRoot":"../../../src","sources":["store/message.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["create","DeviceEventEmitter","OpenIMSDK","MessageType","ViewType","ChatEvent","mergeMessages","isMessageRevoked","useConversationStore","PAGE_SIZE","useMessageStore","set","get","messages","hasMoreOld","hasMoreNew","initLoading","moreOldLoading","moreNewLoading","setMessages","hasMore","pushNewMessage","message","state","updateOneMessage","tmpList","idx","findIndex","msg","clientMsgID","deleteOneMessage","filter","getMoreOldMessages","loadMore","applicationType","conversationId","params","count","startClientMsgID","conversationID","viewType","History","res","getAdvancedHistoryMessageListApp","getState","currentConversationId","messageList","isEnd","error","console","log","getMoreNewMessages","length","getAdvancedHistoryMessageListReverseApp","Promise","resolve","setTimeout","emit","ScrollToBottom","searchMessages","startClientMsgId","searchPrevParams","Search","searchNextParams","searchCurrentParams","clientMsgIDList","findMessageList","searchPrevRes","searchNextRes","currentMessages","findResultItems","find","item","newMessages","targetMessage","TargetMessageUnavailable","ScrollToMessage","clientMessageId","reset","markMessageRevoked","alreadyRevoked","some","contentType","RevokeMessage","MessageRevoked","revokeQuotedReferences","forEach","quoteElem","quoteMessage","atTextElem"],"sourceRoot":"../../../src","sources":["store/message.ts"],"mappings":"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","ignoreList":[]}
@@ -36,4 +36,25 @@ export const getBotId = conversation => {
36
36
  export const isGroupConversation = conversation => {
37
37
  return conversation?.peerType === PeerType.Group;
38
38
  };
39
+ const GROUP_CONVERSATION_ID_PREFIX = 'sg_';
40
+
41
+ /**
42
+ * Group conversationIds are formatted as "sg_<groupID>" — derive the groupID
43
+ * straight from the id when a full ConversationItem isn't available yet (e.g.
44
+ * a non-member previewing a public group via deeplink has no synced
45
+ * conversation object to read groupID off of).
46
+ */
47
+ export const getGroupIdFromConversationId = conversationId => conversationId?.startsWith(GROUP_CONVERSATION_ID_PREFIX) ? conversationId.slice(GROUP_CONVERSATION_ID_PREFIX.length) : '';
48
+ const SINGLE_CONVERSATION_ID_PREFIX = 'si_';
49
+ export const isSingleConversationId = conversationId => conversationId.startsWith(SINGLE_CONVERSATION_ID_PREFIX);
50
+
51
+ /**
52
+ * A 1v1 conversationId is "si_<userA>_<userB>" (see `getConversationID`), with
53
+ * no fixed order between the two — same as the forward/reverse match
54
+ * `isSameConversation` does above. Used to tell whether the logged-in user is
55
+ * actually a participant when no local conversation record has synced (e.g. a
56
+ * deeplink into a 1v1 the current account has no access to). Only meaningful
57
+ * once `isSingleConversationId` is true.
58
+ */
59
+ export const isConversationParticipant = (conversationId, userId) => !!userId && conversationId.split('_').includes(userId);
39
60
  //# sourceMappingURL=conversation.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["PeerType","SessionType","conversationCompare","a","b","isPinned","aCompare","draftTextTime","latestMsgSendTime","bCompare","getConversationID","sessionType","senderID","receiverID","prefix","Single","Notification","filter","Boolean","join","sortConversation","map","list","Object","keys","id","isNotInGroup","sort","getBotId","conversation","peerType","Bot","JSON","parse","ex","sessionInfo","data","botId","_","undefined","isGroupConversation","Group"],"sourceRoot":"../../../src","sources":["utils/conversation.ts"],"mappings":";;AAAA,SACEA,QAAQ,EACRC,WAAW,QAEN,+BAA+B;AAEtC,OAAO,MAAMC,mBAAmB,GAAGA,CACjCC,CAAmB,EACnBC,CAAmB,KAChB;EACH,IAAID,CAAC,CAACE,QAAQ,KAAKD,CAAC,CAACC,QAAQ,EAAE,OAAOF,CAAC,CAACE,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;EAEzD,MAAMC,QAAQ,GACZH,CAAC,CAACI,aAAa,GAAGJ,CAAC,CAACK,iBAAiB,GACjCL,CAAC,CAACI,aAAa,GACfJ,CAAC,CAACK,iBAAiB;EACzB,MAAMC,QAAQ,GACZL,CAAC,CAACG,aAAa,GAAGH,CAAC,CAACI,iBAAiB,GACjCJ,CAAC,CAACG,aAAa,GACfH,CAAC,CAACI,iBAAiB;EAEzB,OAAOC,QAAQ,GAAGH,QAAQ;AAC5B,CAAC;AAED,OAAO,MAAMI,iBAAiB,GAAGA,CAC/BC,WAAwB,EACxBC,QAAiB,EACjBC,UAAmB,KAChB;EACH,MAAMC,MAAM,GACVH,WAAW,KAAKV,WAAW,CAACc,MAAM,GAC9B,IAAI,GACJJ,WAAW,KAAKV,WAAW,CAACe,YAAY,GACtC,IAAI,GACJ,IAAI;EAEZ,OAAO,CAACF,MAAM,EAAEF,QAAQ,EAAEC,UAAU,CAAC,CAACI,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;AACjE,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAIC,GAAqC,IAAK;EACzE;EACA;EACA;EACA,MAAMC,IAAI,GAAGC,MAAM,CAACC,IAAI,CAACH,GAAG,CAAC,CAC1BJ,MAAM,CAAEQ,EAAE,IAAK,CAACJ,GAAG,CAACI,EAAE,CAAC,EAAEC,YAAY,CAAC,CACtCC,IAAI,CAAC,CAACxB,CAAC,EAAEC,CAAC,KAAKF,mBAAmB,CAACmB,GAAG,CAAClB,CAAC,CAAC,EAAGkB,GAAG,CAACjB,CAAC,CAAE,CAAC,CAAC;EACxD,OAAO;IAAEiB,GAAG;IAAEC;EAAK,CAAC;AACtB,CAAC;AAED,OAAO,MAAMM,QAAQ,GAAIC,YAA+B,IAAK;EAC3D,IAAIA,YAAY,IAAIA,YAAY,EAAEC,QAAQ,KAAK9B,QAAQ,CAAC+B,GAAG,EAAE;IAC3D,IAAI;MACF,MAAMN,EAAE,GAAGO,IAAI,CAACC,KAAK,CAACJ,YAAY,EAAEK,EAAE,IAAI,IAAI,CAAC,EAAEC,WAAW,EAAEC,IAAI,EAAEC,KAAK;MACzE,OAAOZ,EAAE;MACT;IACF,CAAC,CAAC,OAAOa,CAAM,EAAE;MACf,OAAOC,SAAS;IAClB;EACF;EACA,OAAOA,SAAS;AAClB,CAAC;AAED,OAAO,MAAMC,mBAAmB,GAC9BX,YAAsE,IACnE;EACH,OAAOA,YAAY,EAAEC,QAAQ,KAAK9B,QAAQ,CAACyC,KAAK;AAClD,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["PeerType","SessionType","conversationCompare","a","b","isPinned","aCompare","draftTextTime","latestMsgSendTime","bCompare","getConversationID","sessionType","senderID","receiverID","prefix","Single","Notification","filter","Boolean","join","sortConversation","map","list","Object","keys","id","isNotInGroup","sort","getBotId","conversation","peerType","Bot","JSON","parse","ex","sessionInfo","data","botId","_","undefined","isGroupConversation","Group","GROUP_CONVERSATION_ID_PREFIX","getGroupIdFromConversationId","conversationId","startsWith","slice","length","SINGLE_CONVERSATION_ID_PREFIX","isSingleConversationId","isConversationParticipant","userId","split","includes"],"sourceRoot":"../../../src","sources":["utils/conversation.ts"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { PeerType, SessionType } from '@droppii/openim-rn-client-sdk';
4
- import { getConversationID } from "./conversation.js";
4
+ import { getConversationID, getGroupIdFromConversationId } from "./conversation.js";
5
5
 
6
6
  /**
7
7
  * Canonical timestamp for a message. `sendTime` is 0 until the SDK stamps an
@@ -90,8 +90,7 @@ export const getReceiverId = conversation => {
90
90
  recvID: ''
91
91
  };
92
92
  if (conversation.peerType === PeerType.Group) {
93
- // Group conversation: groupID is embedded after the "sg_" prefix
94
- const groupID = conversation.groupID || conversation.conversationID.slice(3);
93
+ const groupID = conversation.groupID || getGroupIdFromConversationId(conversation.conversationID);
95
94
  return {
96
95
  groupID: groupID ?? '',
97
96
  recvID: ''
@@ -1 +1 @@
1
- {"version":3,"names":["PeerType","SessionType","getConversationID","getMessageTime","message","sendTime","createTime","getMessageKey","clientMsgID","serverMsgID","getMessageRenderId","index","mergeMessages","current","incoming","map","Map","key","set","Array","from","values","sort","a","b","normalizeCreatedMessage","normalized","JSON","parse","Error","resolveHistoryLastMinSeq","history","fallbackMessage","lastMinSeq","seq","getHistoryPaginationAnchor","messages","length","oldest","reduce","prev","curr","hasNewHistoryMessages","currentKeys","Set","filter","Boolean","some","has","belongsToConversation","conversationId","targetUserId","sessionType","Single","forwardId","sendID","recvID","reverseId","Group","groupID","getReceiverId","conversation","peerType","conversationID","slice","userID"],"sourceRoot":"../../../src","sources":["utils/message.ts"],"mappings":";;AAAA,SACEA,QAAQ,EACRC,WAAW,QAGN,+BAA+B;AACtC,SAASC,iBAAiB,QAAQ,mBAAgB;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,GAAIC,OAAoB,IACjDA,OAAO,CAACC,QAAQ,IAAID,OAAO,CAACE,UAAU,IAAI,CAAC;AAE7C,MAAMC,aAAa,GAAIH,OAAoB,IACzCA,OAAO,CAACI,WAAW,IAAIJ,OAAO,CAACK,WAAW;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,kBAAkB,GAAGA,CAACN,OAAoB,EAAEO,KAAa,KACpEJ,aAAa,CAACH,OAAO,CAAC,IAAI,QAAQD,cAAc,CAACC,OAAO,CAAC,IAAIO,KAAK,EAAE;AAEtE,OAAO,MAAMC,aAAa,GAAGA,CAC3BC,OAAsB,EACtBC,QAAuB,KACL;EAClB,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAAsB,CAAC;EAE1C,KAAK,MAAMZ,OAAO,IAAI,CAAC,GAAGS,OAAO,EAAE,GAAGC,QAAQ,CAAC,EAAE;IAC/C,MAAMG,GAAG,GAAGV,aAAa,CAACH,OAAO,CAAC;IAClC,IAAIa,GAAG,EAAE;MACPF,GAAG,CAACG,GAAG,CAACD,GAAG,EAAEb,OAAO,CAAC;IACvB;EACF;EAEA,OAAOe,KAAK,CAACC,IAAI,CAACL,GAAG,CAACM,MAAM,CAAC,CAAC,CAAC,CAACC,IAAI,CAClC,CAACC,CAAC,EAAEC,CAAC,KAAKrB,cAAc,CAACoB,CAAC,CAAC,GAAGpB,cAAc,CAACqB,CAAC,CAChD,CAAC;AACH,CAAC;AAED,OAAO,MAAMC,uBAAuB,GAClCrB,OAA6B,IACb;EAChB,IAAIsB,UAAmB,GAAGtB,OAAO;EAEjC,OAAO,OAAOsB,UAAU,KAAK,QAAQ,EAAE;IACrCA,UAAU,GAAGC,IAAI,CAACC,KAAK,CAACF,UAAU,CAAC;EACrC;EAEA,IAAIA,UAAU,IAAI,IAAI,IAAI,OAAOA,UAAU,KAAK,QAAQ,EAAE;IACxD,MAAM,IAAIG,KAAK,CAAC,gCAAgC,CAAC;EACnD;EAEA,OAAOH,UAAU;AACnB,CAAC;AAOD,OAAO,MAAMI,wBAAwB,GAAGA,CACtCC,OAAgC,EAChCC,eAA6B,KAClB;EACX,IAAID,OAAO,CAACE,UAAU,IAAI,IAAI,EAAE;IAC9B,OAAOF,OAAO,CAACE,UAAU;EAC3B;EAEA,OAAOD,eAAe,EAAEE,GAAG,IAAI,CAAC;AAClC,CAAC;AAED,OAAO,MAAMC,0BAA0B,GACrCC,QAAuB,IACY;EACnC,IAAI,CAACA,QAAQ,CAACC,MAAM,EAAE;IACpB,OAAO,IAAI;EACb;EAEA,MAAMC,MAAM,GAAGF,QAAQ,CAACG,MAAM,CAC5B,CAACC,IAAI,EAAEC,IAAI,KAAMtC,cAAc,CAACsC,IAAI,CAAC,GAAGtC,cAAc,CAACqC,IAAI,CAAC,GAAGC,IAAI,GAAGD,IAAK,EAC3EJ,QAAQ,CAAC,CAAC,CACZ,CAAC;EAED,IAAI,CAACE,MAAM,EAAE9B,WAAW,EAAE;IACxB,OAAO,IAAI;EACb;EAEA,OAAO;IACLA,WAAW,EAAE8B,MAAM,CAAC9B;IACpB;EACF,CAAC;AACH,CAAC;AAED,OAAO,MAAMkC,qBAAqB,GAAGA,CACnC7B,OAAsB,EACtBC,QAAuB,KACX;EACZ,MAAM6B,WAAW,GAAG,IAAIC,GAAG,CACzB/B,OAAO,CAACE,GAAG,CAAEX,OAAO,IAAKG,aAAa,CAACH,OAAO,CAAC,CAAC,CAACyC,MAAM,CAACC,OAAO,CACjE,CAAC;EAED,OAAOhC,QAAQ,CAACiC,IAAI,CAAE3C,OAAO,IAAK;IAChC,MAAMa,GAAG,GAAGV,aAAa,CAACH,OAAO,CAAC;IAClC,OAAO,CAAC,CAACa,GAAG,IAAI,CAAC0B,WAAW,CAACK,GAAG,CAAC/B,GAAG,CAAC;EACvC,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,MAAMgC,qBAAqB,GAAGA,CACnC7C,OAAoB,EACpB8C,cAAuB,EACvBC,YAAqB,KACT;EACZ,QAAQ/C,OAAO,CAACgD,WAAW;IACzB,KAAKnD,WAAW,CAACoD,MAAM;MAAE;QACvB,MAAMC,SAAS,GAAGpD,iBAAiB,CACjCE,OAAO,CAACgD,WAAW,EACnBhD,OAAO,CAACmD,MAAM,EACdnD,OAAO,CAACoD,MACV,CAAC;QACD,MAAMC,SAAS,GAAGvD,iBAAiB,CACjCE,OAAO,CAACgD,WAAW,EACnBhD,OAAO,CAACoD,MAAM,EACdpD,OAAO,CAACmD,MACV,CAAC;QACD,OAAOL,cAAc,GACjBA,cAAc,KAAKI,SAAS,IAAIJ,cAAc,KAAKO,SAAS,GAC5DN,YAAY,GACV/C,OAAO,CAACmD,MAAM,KAAKJ,YAAY,IAAI/C,OAAO,CAACoD,MAAM,KAAKL,YAAY,GAClE,KAAK;MACb;IAEA,KAAKlD,WAAW,CAACyD,KAAK;MAAE;QACtB,OAAOR,cAAc,KAAK,MAAM9C,OAAO,CAACuD,OAAO,EAAE;MACnD;IAEA;MACE,OAAO,KAAK;EAChB;AACF,CAAC;AAED,OAAO,MAAMC,aAAa,GAAIC,YAA+B,IAAK;EAChE,IAAIA,YAAY,IAAI,IAAI,EAAE,OAAO;IAAEF,OAAO,EAAE,EAAE;IAAEH,MAAM,EAAE;EAAG,CAAC;EAE5D,IAAIK,YAAY,CAACC,QAAQ,KAAK9D,QAAQ,CAAC0D,KAAK,EAAE;IAC5C;IACA,MAAMC,OAAO,GACXE,YAAY,CAACF,OAAO,IAAIE,YAAY,CAACE,cAAc,CAACC,KAAK,CAAC,CAAC,CAAC;IAC9D,OAAO;MAAEL,OAAO,EAAEA,OAAO,IAAI,EAAE;MAAEH,MAAM,EAAE;IAAG,CAAC;EAC/C;EAEA,OAAO;IAAEG,OAAO,EAAE,EAAE;IAAEH,MAAM,EAAEK,YAAY,CAACI,MAAM,IAAI;EAAG,CAAC;AAC3D,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["PeerType","SessionType","getConversationID","getGroupIdFromConversationId","getMessageTime","message","sendTime","createTime","getMessageKey","clientMsgID","serverMsgID","getMessageRenderId","index","mergeMessages","current","incoming","map","Map","key","set","Array","from","values","sort","a","b","normalizeCreatedMessage","normalized","JSON","parse","Error","resolveHistoryLastMinSeq","history","fallbackMessage","lastMinSeq","seq","getHistoryPaginationAnchor","messages","length","oldest","reduce","prev","curr","hasNewHistoryMessages","currentKeys","Set","filter","Boolean","some","has","belongsToConversation","conversationId","targetUserId","sessionType","Single","forwardId","sendID","recvID","reverseId","Group","groupID","getReceiverId","conversation","peerType","conversationID","userID"],"sourceRoot":"../../../src","sources":["utils/message.ts"],"mappings":";;AAAA,SACEA,QAAQ,EACRC,WAAW,QAGN,+BAA+B;AACtC,SACEC,iBAAiB,EACjBC,4BAA4B,QACvB,mBAAgB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,GAAIC,OAAoB,IACjDA,OAAO,CAACC,QAAQ,IAAID,OAAO,CAACE,UAAU,IAAI,CAAC;AAE7C,MAAMC,aAAa,GAAIH,OAAoB,IACzCA,OAAO,CAACI,WAAW,IAAIJ,OAAO,CAACK,WAAW;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,kBAAkB,GAAGA,CAACN,OAAoB,EAAEO,KAAa,KACpEJ,aAAa,CAACH,OAAO,CAAC,IAAI,QAAQD,cAAc,CAACC,OAAO,CAAC,IAAIO,KAAK,EAAE;AAEtE,OAAO,MAAMC,aAAa,GAAGA,CAC3BC,OAAsB,EACtBC,QAAuB,KACL;EAClB,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAAsB,CAAC;EAE1C,KAAK,MAAMZ,OAAO,IAAI,CAAC,GAAGS,OAAO,EAAE,GAAGC,QAAQ,CAAC,EAAE;IAC/C,MAAMG,GAAG,GAAGV,aAAa,CAACH,OAAO,CAAC;IAClC,IAAIa,GAAG,EAAE;MACPF,GAAG,CAACG,GAAG,CAACD,GAAG,EAAEb,OAAO,CAAC;IACvB;EACF;EAEA,OAAOe,KAAK,CAACC,IAAI,CAACL,GAAG,CAACM,MAAM,CAAC,CAAC,CAAC,CAACC,IAAI,CAClC,CAACC,CAAC,EAAEC,CAAC,KAAKrB,cAAc,CAACoB,CAAC,CAAC,GAAGpB,cAAc,CAACqB,CAAC,CAChD,CAAC;AACH,CAAC;AAED,OAAO,MAAMC,uBAAuB,GAClCrB,OAA6B,IACb;EAChB,IAAIsB,UAAmB,GAAGtB,OAAO;EAEjC,OAAO,OAAOsB,UAAU,KAAK,QAAQ,EAAE;IACrCA,UAAU,GAAGC,IAAI,CAACC,KAAK,CAACF,UAAU,CAAC;EACrC;EAEA,IAAIA,UAAU,IAAI,IAAI,IAAI,OAAOA,UAAU,KAAK,QAAQ,EAAE;IACxD,MAAM,IAAIG,KAAK,CAAC,gCAAgC,CAAC;EACnD;EAEA,OAAOH,UAAU;AACnB,CAAC;AAOD,OAAO,MAAMI,wBAAwB,GAAGA,CACtCC,OAAgC,EAChCC,eAA6B,KAClB;EACX,IAAID,OAAO,CAACE,UAAU,IAAI,IAAI,EAAE;IAC9B,OAAOF,OAAO,CAACE,UAAU;EAC3B;EAEA,OAAOD,eAAe,EAAEE,GAAG,IAAI,CAAC;AAClC,CAAC;AAED,OAAO,MAAMC,0BAA0B,GACrCC,QAAuB,IACY;EACnC,IAAI,CAACA,QAAQ,CAACC,MAAM,EAAE;IACpB,OAAO,IAAI;EACb;EAEA,MAAMC,MAAM,GAAGF,QAAQ,CAACG,MAAM,CAC5B,CAACC,IAAI,EAAEC,IAAI,KAAMtC,cAAc,CAACsC,IAAI,CAAC,GAAGtC,cAAc,CAACqC,IAAI,CAAC,GAAGC,IAAI,GAAGD,IAAK,EAC3EJ,QAAQ,CAAC,CAAC,CACZ,CAAC;EAED,IAAI,CAACE,MAAM,EAAE9B,WAAW,EAAE;IACxB,OAAO,IAAI;EACb;EAEA,OAAO;IACLA,WAAW,EAAE8B,MAAM,CAAC9B;IACpB;EACF,CAAC;AACH,CAAC;AAED,OAAO,MAAMkC,qBAAqB,GAAGA,CACnC7B,OAAsB,EACtBC,QAAuB,KACX;EACZ,MAAM6B,WAAW,GAAG,IAAIC,GAAG,CACzB/B,OAAO,CAACE,GAAG,CAAEX,OAAO,IAAKG,aAAa,CAACH,OAAO,CAAC,CAAC,CAACyC,MAAM,CAACC,OAAO,CACjE,CAAC;EAED,OAAOhC,QAAQ,CAACiC,IAAI,CAAE3C,OAAO,IAAK;IAChC,MAAMa,GAAG,GAAGV,aAAa,CAACH,OAAO,CAAC;IAClC,OAAO,CAAC,CAACa,GAAG,IAAI,CAAC0B,WAAW,CAACK,GAAG,CAAC/B,GAAG,CAAC;EACvC,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,MAAMgC,qBAAqB,GAAGA,CACnC7C,OAAoB,EACpB8C,cAAuB,EACvBC,YAAqB,KACT;EACZ,QAAQ/C,OAAO,CAACgD,WAAW;IACzB,KAAKpD,WAAW,CAACqD,MAAM;MAAE;QACvB,MAAMC,SAAS,GAAGrD,iBAAiB,CACjCG,OAAO,CAACgD,WAAW,EACnBhD,OAAO,CAACmD,MAAM,EACdnD,OAAO,CAACoD,MACV,CAAC;QACD,MAAMC,SAAS,GAAGxD,iBAAiB,CACjCG,OAAO,CAACgD,WAAW,EACnBhD,OAAO,CAACoD,MAAM,EACdpD,OAAO,CAACmD,MACV,CAAC;QACD,OAAOL,cAAc,GACjBA,cAAc,KAAKI,SAAS,IAAIJ,cAAc,KAAKO,SAAS,GAC5DN,YAAY,GACV/C,OAAO,CAACmD,MAAM,KAAKJ,YAAY,IAAI/C,OAAO,CAACoD,MAAM,KAAKL,YAAY,GAClE,KAAK;MACb;IAEA,KAAKnD,WAAW,CAAC0D,KAAK;MAAE;QACtB,OAAOR,cAAc,KAAK,MAAM9C,OAAO,CAACuD,OAAO,EAAE;MACnD;IAEA;MACE,OAAO,KAAK;EAChB;AACF,CAAC;AAED,OAAO,MAAMC,aAAa,GAAIC,YAA+B,IAAK;EAChE,IAAIA,YAAY,IAAI,IAAI,EAAE,OAAO;IAAEF,OAAO,EAAE,EAAE;IAAEH,MAAM,EAAE;EAAG,CAAC;EAE5D,IAAIK,YAAY,CAACC,QAAQ,KAAK/D,QAAQ,CAAC2D,KAAK,EAAE;IAC5C,MAAMC,OAAO,GACXE,YAAY,CAACF,OAAO,IACpBzD,4BAA4B,CAAC2D,YAAY,CAACE,cAAc,CAAC;IAC3D,OAAO;MAAEJ,OAAO,EAAEA,OAAO,IAAI,EAAE;MAAEH,MAAM,EAAE;IAAG,CAAC;EAC/C;EAEA,OAAO;IAAEG,OAAO,EAAE,EAAE;IAAEH,MAAM,EAAEK,YAAY,CAACG,MAAM,IAAI;EAAG,CAAC;AAC3D,CAAC","ignoreList":[]}
@@ -0,0 +1,16 @@
1
+ type Params = {
2
+ conversationId: string;
3
+ currentUserId?: string;
4
+ /** Navigate away from the chat screen. Called once, after the block modal. */
5
+ onBlocked: () => void;
6
+ };
7
+ /**
8
+ * 1v1 conversations have no membership guard of their own — a deeplink into a
9
+ * 1v1 the logged-in account isn't part of never syncs a local conversation
10
+ * record, so this can't rely on a synced `ConversationItem` and instead reads
11
+ * the participant ids straight off the "si_<userA>_<userB>" conversationId.
12
+ * No-ops for anything that isn't a 1v1 conversationId.
13
+ */
14
+ export declare const useSingleAccessGuard: ({ conversationId, currentUserId, onBlocked, }: Params) => void;
15
+ export {};
16
+ //# sourceMappingURL=useSingleAccessGuard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSingleAccessGuard.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/conversation/useSingleAccessGuard.ts"],"names":[],"mappings":"AAOA,KAAK,MAAM,GAAG;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,+CAIlC,MAAM,SAkBR,CAAC"}
@@ -1,3 +1,9 @@
1
+ /**
2
+ * The "you can't open this conversation" modal — shared by the group
3
+ * non-member guard and the 1v1 non-participant check in ChatDetail, so both
4
+ * present the exact same blocked experience.
5
+ */
6
+ export declare const showAccessBlockedModal: (onAcknowledge: () => void) => void;
1
7
  type Params = {
2
8
  groupID?: string;
3
9
  /** Navigate away from the chat screen. Called once, after the block modal. */
@@ -1 +1 @@
1
- {"version":3,"file":"useGroupAccessGuard.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/groups/useGroupAccessGuard.ts"],"names":[],"mappings":"AA2CA,KAAK,MAAM,GAAG;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,wBAAwB,MAAM;;CA0IjE,CAAC"}
1
+ {"version":3,"file":"useGroupAccessGuard.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/groups/useGroupAccessGuard.ts"],"names":[],"mappings":"AAyBA;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,eAAe,MAAM,IAAI,SAoB/D,CAAC;AAoBF,KAAK,MAAM,GAAG;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,wBAAwB,MAAM;;CAwHjE,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import type { ChatDetailProps } from './types';
2
- declare const _default: (props: ChatDetailProps) => import("react").JSX.Element;
3
- export default _default;
2
+ declare const SdkReadyGate: (props: ChatDetailProps) => import("react").JSX.Element;
3
+ export default SdkReadyGate;
4
4
  //# sourceMappingURL=ChatDetail.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatDetail.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/ChatDetail.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;yBAuQ/B,OAAO,eAAe;AAAtC,wBAkCE"}
1
+ {"version":3,"file":"ChatDetail.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/ChatDetail.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAmU/C,QAAA,MAAM,YAAY,GAAI,OAAO,eAAe,gCAS3C,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const ChatDetailLoading: () => import("react").JSX.Element;
2
+ //# sourceMappingURL=ChatDetailLoading.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatDetailLoading.d.ts","sourceRoot":"","sources":["../../../../../../src/screens/chat-detail/components/ChatDetailLoading.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB,mCA0B7B,CAAC"}
@@ -7,4 +7,21 @@ export declare const sortConversation: (map: Record<string, ConversationItem>) =
7
7
  };
8
8
  export declare const getBotId: (conversation?: ConversationItem) => any;
9
9
  export declare const isGroupConversation: (conversation?: Pick<ConversationItem, "conversationType" | "peerType">) => boolean;
10
+ /**
11
+ * Group conversationIds are formatted as "sg_<groupID>" — derive the groupID
12
+ * straight from the id when a full ConversationItem isn't available yet (e.g.
13
+ * a non-member previewing a public group via deeplink has no synced
14
+ * conversation object to read groupID off of).
15
+ */
16
+ export declare const getGroupIdFromConversationId: (conversationId?: string) => string;
17
+ export declare const isSingleConversationId: (conversationId: string) => boolean;
18
+ /**
19
+ * A 1v1 conversationId is "si_<userA>_<userB>" (see `getConversationID`), with
20
+ * no fixed order between the two — same as the forward/reverse match
21
+ * `isSameConversation` does above. Used to tell whether the logged-in user is
22
+ * actually a participant when no local conversation record has synced (e.g. a
23
+ * deeplink into a 1v1 the current account has no access to). Only meaningful
24
+ * once `isSingleConversationId` is true.
25
+ */
26
+ export declare const isConversationParticipant: (conversationId: string, userId?: string) => boolean;
10
27
  //# sourceMappingURL=conversation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../../src/utils/conversation.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,KAAK,gBAAgB,EACtB,MAAM,+BAA+B,CAAC;AAEvC,eAAO,MAAM,mBAAmB,GAC9B,GAAG,gBAAgB,EACnB,GAAG,gBAAgB,WAcpB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,aAAa,WAAW,EACxB,WAAW,MAAM,EACjB,aAAa,MAAM,WAUpB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;;;CAQrE,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,eAAe,gBAAgB,QAWvD,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,eAAe,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,UAAU,CAAC,YAGvE,CAAC"}
1
+ {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../../src/utils/conversation.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,KAAK,gBAAgB,EACtB,MAAM,+BAA+B,CAAC;AAEvC,eAAO,MAAM,mBAAmB,GAC9B,GAAG,gBAAgB,EACnB,GAAG,gBAAgB,WAcpB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,aAAa,WAAW,EACxB,WAAW,MAAM,EACjB,aAAa,MAAM,WAUpB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;;;CAQrE,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,eAAe,gBAAgB,QAWvD,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,eAAe,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,UAAU,CAAC,YAGvE,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,GAAI,iBAAiB,MAAM,WAG5D,CAAC;AAIT,eAAO,MAAM,sBAAsB,GAAI,gBAAgB,MAAM,KAAG,OACN,CAAC;AAE3D;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,GACpC,gBAAgB,MAAM,EACtB,SAAS,MAAM,KACd,OAAiE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../src/utils/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,+BAA+B,CAAC;AAGvC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,SAAS,WAAW,WACN,CAAC;AAK9C;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,WAAW,EAAE,OAAO,MAAM,WACA,CAAC;AAEvE,eAAO,MAAM,aAAa,GACxB,SAAS,WAAW,EAAE,EACtB,UAAU,WAAW,EAAE,KACtB,WAAW,EAab,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,SAAS,WAAW,GAAG,MAAM,KAC5B,WAYF,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,SAAS;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAChC,kBAAkB,WAAW,KAC5B,MAMF,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,UAAU,WAAW,EAAE,KACtB,uBAAuB,GAAG,IAkB5B,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,SAAS,WAAW,EAAE,EACtB,UAAU,WAAW,EAAE,KACtB,OASF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,SAAS,WAAW,EACpB,iBAAiB,MAAM,EACvB,eAAe,MAAM,KACpB,OA2BF,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,eAAe,gBAAgB;;;CAW5D,CAAC"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../src/utils/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,+BAA+B,CAAC;AAMvC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,SAAS,WAAW,WACN,CAAC;AAK9C;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,WAAW,EAAE,OAAO,MAAM,WACA,CAAC;AAEvE,eAAO,MAAM,aAAa,GACxB,SAAS,WAAW,EAAE,EACtB,UAAU,WAAW,EAAE,KACtB,WAAW,EAab,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,SAAS,WAAW,GAAG,MAAM,KAC5B,WAYF,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,SAAS;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAChC,kBAAkB,WAAW,KAC5B,MAMF,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,UAAU,WAAW,EAAE,KACtB,uBAAuB,GAAG,IAkB5B,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,SAAS,WAAW,EAAE,EACtB,UAAU,WAAW,EAAE,KACtB,OASF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,SAAS,WAAW,EACpB,iBAAiB,MAAM,EACvB,eAAe,MAAM,KACpB,OA2BF,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,eAAe,gBAAgB;;;CAW5D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@droppii-org/chat-mobile",
3
- "version": "0.2.98",
3
+ "version": "0.2.99",
4
4
  "description": "Droppii chat mobile",
5
5
  "keywords": [
6
6
  "react-native",
@@ -0,0 +1,44 @@
1
+ import { useEffect, useRef } from 'react';
2
+ import {
3
+ isConversationParticipant,
4
+ isSingleConversationId,
5
+ } from '../../utils/conversation';
6
+ import { showAccessBlockedModal } from '../groups/useGroupAccessGuard';
7
+
8
+ type Params = {
9
+ conversationId: string;
10
+ currentUserId?: string;
11
+ /** Navigate away from the chat screen. Called once, after the block modal. */
12
+ onBlocked: () => void;
13
+ };
14
+
15
+ /**
16
+ * 1v1 conversations have no membership guard of their own — a deeplink into a
17
+ * 1v1 the logged-in account isn't part of never syncs a local conversation
18
+ * record, so this can't rely on a synced `ConversationItem` and instead reads
19
+ * the participant ids straight off the "si_<userA>_<userB>" conversationId.
20
+ * No-ops for anything that isn't a 1v1 conversationId.
21
+ */
22
+ export const useSingleAccessGuard = ({
23
+ conversationId,
24
+ currentUserId,
25
+ onBlocked,
26
+ }: Params) => {
27
+ const hasBlockedRef = useRef(false);
28
+ const onBlockedRef = useRef(onBlocked);
29
+ onBlockedRef.current = onBlocked;
30
+
31
+ useEffect(() => {
32
+ hasBlockedRef.current = false;
33
+ }, [conversationId]);
34
+
35
+ useEffect(() => {
36
+ if (!isSingleConversationId(conversationId)) return;
37
+ if (!currentUserId) return;
38
+ if (isConversationParticipant(conversationId, currentUserId)) return;
39
+ if (hasBlockedRef.current) return;
40
+ hasBlockedRef.current = true;
41
+
42
+ showAccessBlockedModal(() => onBlockedRef.current());
43
+ }, [conversationId, currentUserId]);
44
+ };
@@ -23,6 +23,33 @@ type GroupAccessState =
23
23
 
24
24
  type EvaluationResult = { state: Exclude<GroupAccessState, 'checking'> };
25
25
 
26
+ /**
27
+ * The "you can't open this conversation" modal — shared by the group
28
+ * non-member guard and the 1v1 non-participant check in ChatDetail, so both
29
+ * present the exact same blocked experience.
30
+ */
31
+ export const showAccessBlockedModal = (onAcknowledge: () => void) => {
32
+ UIUtils.alert.open({
33
+ title: trans('group:access_blocked_title'),
34
+ message: trans('group:access_blocked_desc'),
35
+ primaryIndex: 0,
36
+ buttonType: 'horizontal-button',
37
+ // Drop any alert raised while this one is up rather than stacking it —
38
+ // OnGroupDismissed fires twice for the group owner.
39
+ ignoreStack: true,
40
+ // Force an acknowledgement: dismissing by tapping outside would leave the
41
+ // user sitting in a conversation they cannot access.
42
+ touchOutsideToDismiss: false,
43
+ buttons: [
44
+ {
45
+ label: trans('group:access_blocked_button'),
46
+ kind: 'primary',
47
+ onPress: onAcknowledge,
48
+ },
49
+ ],
50
+ });
51
+ };
52
+
26
53
  /**
27
54
  * Resolves whether the current user may open `groupID`, per the group-access
28
55
  * spec: private non-members and dismissed groups are blocked outright, while
@@ -74,25 +101,7 @@ export const useGroupAccessGuard = ({ groupID, onBlocked }: Params) => {
74
101
  hasBlockedRef.current = true;
75
102
 
76
103
  setAccessState('blocked');
77
- UIUtils.alert.open({
78
- title: trans('group:access_blocked_title'),
79
- message: trans('group:access_blocked_desc'),
80
- primaryIndex: 0,
81
- buttonType: 'horizontal-button',
82
- // Drop any alert raised while this one is up rather than stacking it —
83
- // OnGroupDismissed fires twice for the group owner.
84
- ignoreStack: true,
85
- // Force an acknowledgement: dismissing by tapping outside would leave the
86
- // user sitting in a conversation they cannot access.
87
- touchOutsideToDismiss: false,
88
- buttons: [
89
- {
90
- label: trans('group:access_blocked_button'),
91
- kind: 'primary',
92
- onPress: () => onBlockedRef.current(),
93
- },
94
- ],
95
- });
104
+ showAccessBlockedModal(() => onBlockedRef.current());
96
105
  }, []);
97
106
 
98
107
  const applyResult = useCallback(
@@ -1,10 +1,10 @@
1
1
  import { memo, useCallback, useEffect, useRef } from 'react';
2
- import { ActivityIndicator, DeviceEventEmitter } from 'react-native';
2
+ import { DeviceEventEmitter } from 'react-native';
3
3
 
4
4
  import { useKeyboardScrollToEnd } from '@legendapp/list/keyboard';
5
5
  import type { LegendListRef } from '@legendapp/list/react-native';
6
6
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
7
- import { KColors, KContainer, KNavigation } from '@droppii/libs';
7
+ import { KContainer } from '@droppii/libs';
8
8
  import { useNavigation, useRoute } from '@react-navigation/native';
9
9
  import { usePinMessage } from '../../hooks/message/usePinMessage';
10
10
  import { PinnedMessageBar } from './PinnedMessageBar';
@@ -32,6 +32,7 @@ import type {
32
32
  import {
33
33
  useGetConversationDetail,
34
34
  useGetConversationTarget,
35
+ useSyncConversationById,
35
36
  } from '../../hooks/conversation/useGetConversationDetail';
36
37
  import {
37
38
  GroupJoinSource,
@@ -42,15 +43,25 @@ import { ChatEvent } from '../../types/events';
42
43
  import { useSetIsShowFLashMessage } from '../../context/global';
43
44
  import { useJoinGroup } from '../../hooks/groups/useJoinGroup';
44
45
  import { useGroupAccessGuard } from '../../hooks/groups/useGroupAccessGuard';
46
+ import { useSingleAccessGuard } from '../../hooks/conversation/useSingleAccessGuard';
47
+ import { useIsJoinedGroup } from '../../hooks/useIsJoinedGroup';
45
48
  import { UIUtils } from '../../utils/UIUtils';
46
49
  import { trans } from '../../translation';
50
+ import { getGroupIdFromConversationId } from '../../utils/conversation';
51
+ import { ChatDetailLoading } from './components/ChatDetailLoading';
52
+
53
+ interface ChatDetailScreenProps extends Omit<
54
+ ChatDetailProps,
55
+ 'targetConversationId' | 'targetBotId'
56
+ > {
57
+ conversationId: string;
58
+ }
47
59
 
48
60
  const ChatDetail = memo(
49
61
  ({
50
- targetConversationId = '',
62
+ conversationId,
51
63
  targetUserId = '',
52
64
  targetGroupId = '',
53
- targetBotId = '',
54
65
  targetMessageId = '',
55
66
  showAddMember,
56
67
  onBack,
@@ -61,20 +72,12 @@ const ChatDetail = memo(
61
72
  customMessageItemFactory,
62
73
  pannelActions,
63
74
  groupJoinSource,
64
- }: ChatDetailProps) => {
75
+ }: ChatDetailScreenProps) => {
65
76
  const navigation = useNavigation();
66
77
  const mediaViewerRef = useRef<MediaViewerModalHandle>(null);
67
78
  const messageToolboxRef = useRef<MessageToolboxRef>(null);
68
79
  const currentUser = useUserStore((s) => s.user);
69
80
 
70
- const { conversationId, isLoading: isLoadingConversation } =
71
- useGetConversationDetail({
72
- targetConversationId,
73
- targetUserId,
74
- targetGroupId,
75
- targetBotId,
76
- });
77
-
78
81
  const conversation = useConversation(conversationId);
79
82
 
80
83
  const { data: target } = useGetConversationTarget(conversationId);
@@ -134,7 +137,16 @@ const ChatDetail = memo(
134
137
  }, [onBack, handleBackDefault]);
135
138
 
136
139
  const { isCheckingAccess } = useGroupAccessGuard({
137
- groupID: conversation?.groupID || targetGroupId,
140
+ groupID:
141
+ conversation?.groupID ||
142
+ targetGroupId ||
143
+ getGroupIdFromConversationId(conversationId),
144
+ onBlocked: handleAccessBlocked,
145
+ });
146
+
147
+ useSingleAccessGuard({
148
+ conversationId,
149
+ currentUserId: currentUser?.userID,
138
150
  onBlocked: handleAccessBlocked,
139
151
  });
140
152
 
@@ -247,7 +259,7 @@ const ChatDetail = memo(
247
259
  messages={messages}
248
260
  conversationId={conversationId}
249
261
  customMessageItemFactory={customMessageItemFactory}
250
- isLoading={initLoading || isLoadingConversation || isCheckingAccess}
262
+ isLoading={initLoading || isCheckingAccess}
251
263
  onLoadMoreOld={getMoreOldMessages}
252
264
  hasMoreOld={hasMoreOld}
253
265
  moreOldLoading={moreOldLoading}
@@ -285,38 +297,63 @@ const ChatDetail = memo(
285
297
  }
286
298
  );
287
299
 
288
- export default (props: ChatDetailProps) => {
289
- const isUserLoaded = useUserStore((s) => s.user != null);
300
+ // Resolve conversation/group/join-status data before ChatDetail mounts, so the
301
+ // header and composer never render with an incomplete or stale group-membership
302
+ // state on a cold-start deeplink open (DROPPII-30942).
303
+ const ConversationDataGate = (props: ChatDetailProps) => {
304
+ const { targetConversationId, targetUserId, targetGroupId, targetBotId } =
305
+ props;
306
+
307
+ const hasTarget = !!(
308
+ targetConversationId ||
309
+ targetUserId ||
310
+ targetGroupId ||
311
+ targetBotId
312
+ );
313
+
314
+ const { conversationId, isLoading: isLoadingConversation } =
315
+ useGetConversationDetail({
316
+ targetConversationId,
317
+ targetUserId,
318
+ targetGroupId:
319
+ targetGroupId || getGroupIdFromConversationId(targetConversationId),
320
+ targetBotId,
321
+ });
322
+
323
+ const conversation = useConversation(conversationId);
324
+ const { isFetching: isSyncingConversation, isFetched: isConversationSynced } =
325
+ useSyncConversationById(conversationId, !!conversation);
326
+
327
+ const { isLoading: isCheckingJoinStatus } = useIsJoinedGroup(
328
+ conversation?.groupID
329
+ );
330
+
331
+ const isConversationResolved =
332
+ !!conversationId &&
333
+ (!!conversation || (isConversationSynced && !isSyncingConversation));
290
334
 
291
- const navigation = useNavigation();
335
+ const isReady =
336
+ !hasTarget ||
337
+ (!isLoadingConversation &&
338
+ isConversationResolved &&
339
+ (!conversation?.groupID || !isCheckingJoinStatus));
340
+
341
+ if (!isReady) {
342
+ return <ChatDetailLoading />;
343
+ }
344
+
345
+ return <ChatDetail {...props} conversationId={conversationId} />;
346
+ };
347
+
348
+ const SdkReadyGate = (props: ChatDetailProps) => {
349
+ const isUserLoaded = useUserStore((s) => s.user != null);
292
350
 
293
351
  // Handle sdk not loaded yet when navigate using deeplink
294
352
  if (!isUserLoaded) {
295
- return (
296
- <KContainer.Page flex edges={['bottom']}>
297
- <KNavigation.Header
298
- theme="light"
299
- alignment="left"
300
- size="small"
301
- disableCenterSpace
302
- shadow
303
- leftButton={{
304
- id: 'back',
305
- icon: {
306
- size: 24,
307
- vectorName: 'arrow-left-o',
308
- vectorProvider: 'DroppiiNew',
309
- tintColor: KColors.primary.normal,
310
- },
311
- onPress: navigation.goBack,
312
- }}
313
- />
314
- <KContainer.View flex center>
315
- <ActivityIndicator size="small" color={KColors.primary.normal} />
316
- </KContainer.View>
317
- </KContainer.Page>
318
- );
353
+ return <ChatDetailLoading />;
319
354
  }
320
355
 
321
- return <ChatDetail {...props} />;
356
+ return <ConversationDataGate {...props} />;
322
357
  };
358
+
359
+ export default SdkReadyGate;
@@ -0,0 +1,31 @@
1
+ import { KColors, KContainer, KNavigation } from '@droppii/libs';
2
+ import { ActivityIndicator } from 'react-native';
3
+ import { useNavigation } from '@react-navigation/native';
4
+
5
+ export const ChatDetailLoading = () => {
6
+ const navigation = useNavigation();
7
+ return (
8
+ <KContainer.Page flex edges={['bottom']}>
9
+ <KNavigation.Header
10
+ theme="light"
11
+ alignment="left"
12
+ size="small"
13
+ disableCenterSpace
14
+ shadow
15
+ leftButton={{
16
+ id: 'back',
17
+ icon: {
18
+ size: 24,
19
+ vectorName: 'arrow-left-o',
20
+ vectorProvider: 'DroppiiNew',
21
+ tintColor: KColors.primary.normal,
22
+ },
23
+ onPress: navigation.goBack,
24
+ }}
25
+ />
26
+ <KContainer.View flex center>
27
+ <ActivityIndicator size="small" color={KColors.primary.normal} />
28
+ </KContainer.View>
29
+ </KContainer.Page>
30
+ );
31
+ };
@@ -193,7 +193,7 @@ export const useMessageStore = create<MessageStore>()((set, get) => ({
193
193
  initLoading: false,
194
194
  });
195
195
 
196
- const targetMessage = currentMessages.find(
196
+ const targetMessage = newMessages.find(
197
197
  (msg) => msg.clientMsgID === startClientMsgId
198
198
  );
199
199
 
@@ -65,3 +65,34 @@ export const isGroupConversation = (
65
65
  ) => {
66
66
  return conversation?.peerType === PeerType.Group;
67
67
  };
68
+
69
+ const GROUP_CONVERSATION_ID_PREFIX = 'sg_';
70
+
71
+ /**
72
+ * Group conversationIds are formatted as "sg_<groupID>" — derive the groupID
73
+ * straight from the id when a full ConversationItem isn't available yet (e.g.
74
+ * a non-member previewing a public group via deeplink has no synced
75
+ * conversation object to read groupID off of).
76
+ */
77
+ export const getGroupIdFromConversationId = (conversationId?: string) =>
78
+ conversationId?.startsWith(GROUP_CONVERSATION_ID_PREFIX)
79
+ ? conversationId.slice(GROUP_CONVERSATION_ID_PREFIX.length)
80
+ : '';
81
+
82
+ const SINGLE_CONVERSATION_ID_PREFIX = 'si_';
83
+
84
+ export const isSingleConversationId = (conversationId: string): boolean =>
85
+ conversationId.startsWith(SINGLE_CONVERSATION_ID_PREFIX);
86
+
87
+ /**
88
+ * A 1v1 conversationId is "si_<userA>_<userB>" (see `getConversationID`), with
89
+ * no fixed order between the two — same as the forward/reverse match
90
+ * `isSameConversation` does above. Used to tell whether the logged-in user is
91
+ * actually a participant when no local conversation record has synced (e.g. a
92
+ * deeplink into a 1v1 the current account has no access to). Only meaningful
93
+ * once `isSingleConversationId` is true.
94
+ */
95
+ export const isConversationParticipant = (
96
+ conversationId: string,
97
+ userId?: string
98
+ ): boolean => !!userId && conversationId.split('_').includes(userId);
@@ -4,7 +4,10 @@ import {
4
4
  type ConversationItem,
5
5
  type MessageItem,
6
6
  } from '@droppii/openim-rn-client-sdk';
7
- import { getConversationID } from './conversation';
7
+ import {
8
+ getConversationID,
9
+ getGroupIdFromConversationId,
10
+ } from './conversation';
8
11
 
9
12
  /**
10
13
  * Canonical timestamp for a message. `sendTime` is 0 until the SDK stamps an
@@ -153,9 +156,9 @@ export const getReceiverId = (conversation?: ConversationItem) => {
153
156
  if (conversation == null) return { groupID: '', recvID: '' };
154
157
 
155
158
  if (conversation.peerType === PeerType.Group) {
156
- // Group conversation: groupID is embedded after the "sg_" prefix
157
159
  const groupID =
158
- conversation.groupID || conversation.conversationID.slice(3);
160
+ conversation.groupID ||
161
+ getGroupIdFromConversationId(conversation.conversationID);
159
162
  return { groupID: groupID ?? '', recvID: '' };
160
163
  }
161
164