@droppii-org/chat-mobile 0.2.88 → 0.2.90
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/lib/module/components/ThreadCard/ThreadCard.js +0 -1
- package/lib/module/components/ThreadCard/ThreadCard.js.map +1 -1
- package/lib/module/components/messages/LinkifiedText.js +34 -0
- package/lib/module/components/messages/LinkifiedText.js.map +1 -0
- package/lib/module/components/messages/quotedMessage/index.js +14 -2
- package/lib/module/components/messages/quotedMessage/index.js.map +1 -1
- package/lib/module/components/messages/textMessage/index.js +15 -22
- package/lib/module/components/messages/textMessage/index.js.map +1 -1
- package/lib/module/core/useChatListener.js +2 -2
- package/lib/module/core/useChatListener.js.map +1 -1
- package/lib/module/hooks/message/useMessages.js +6 -0
- package/lib/module/hooks/message/useMessages.js.map +1 -1
- package/lib/module/hooks/message/useSendMessage.js +10 -3
- package/lib/module/hooks/message/useSendMessage.js.map +1 -1
- package/lib/module/screens/ResourceCenter/ResourceCenterTabScene.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatDetail.js +2 -1
- package/lib/module/screens/chat-detail/ChatDetail.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatListLegend.js +235 -123
- package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
- package/lib/module/screens/chat-detail/PinnedMessagesSheet.js +4 -1
- package/lib/module/screens/chat-detail/PinnedMessagesSheet.js.map +1 -1
- package/lib/module/screens/chat-detail/PinnedMessagesSheetBackup.js +3 -1
- package/lib/module/screens/chat-detail/PinnedMessagesSheetBackup.js.map +1 -1
- package/lib/module/screens/chat-detail/legend/LegendChatMessage.js +11 -9
- package/lib/module/screens/chat-detail/legend/LegendChatMessage.js.map +1 -1
- package/lib/module/screens/chat-detail/messageToolbox/MessageToolboxOverlay.js +37 -4
- package/lib/module/screens/chat-detail/messageToolbox/MessageToolboxOverlay.js.map +1 -1
- package/lib/module/services/resourceCenter.js +45 -22
- package/lib/module/services/resourceCenter.js.map +1 -1
- package/lib/module/store/message.js +8 -1
- package/lib/module/store/message.js.map +1 -1
- package/lib/typescript/src/components/ThreadCard/ThreadCard.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/LinkifiedText.d.ts +11 -0
- package/lib/typescript/src/components/messages/LinkifiedText.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/quotedMessage/index.d.ts +1 -0
- package/lib/typescript/src/components/messages/quotedMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/textMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/hooks/message/useMessages.d.ts.map +1 -1
- package/lib/typescript/src/hooks/message/useSendMessage.d.ts.map +1 -1
- package/lib/typescript/src/screens/ResourceCenter/ResourceCenterTabScene.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/PinnedMessagesSheet.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/PinnedMessagesSheetBackup.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts +5 -3
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/messageToolbox/MessageToolboxOverlay.d.ts +2 -0
- package/lib/typescript/src/screens/chat-detail/messageToolbox/MessageToolboxOverlay.d.ts.map +1 -1
- package/lib/typescript/src/services/resourceCenter.d.ts.map +1 -1
- package/lib/typescript/src/store/message.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/ThreadCard/ThreadCard.tsx +0 -2
- package/src/components/messages/LinkifiedText.tsx +37 -0
- package/src/components/messages/quotedMessage/index.tsx +18 -2
- package/src/components/messages/textMessage/index.tsx +18 -27
- package/src/core/useChatListener.ts +2 -2
- package/src/hooks/message/useMessages.ts +6 -0
- package/src/hooks/message/useSendMessage.ts +7 -0
- package/src/screens/ResourceCenter/ResourceCenterTabScene.tsx +0 -1
- package/src/screens/chat-detail/ChatDetail.tsx +1 -0
- package/src/screens/chat-detail/ChatListLegend.tsx +236 -136
- package/src/screens/chat-detail/PinnedMessagesSheet.tsx +6 -1
- package/src/screens/chat-detail/PinnedMessagesSheetBackup.tsx +3 -1
- package/src/screens/chat-detail/legend/LegendChatMessage.tsx +16 -11
- package/src/screens/chat-detail/messageToolbox/MessageToolboxOverlay.tsx +47 -2
- package/src/services/resourceCenter.ts +77 -36
- package/src/store/message.ts +7 -1
|
@@ -6,7 +6,14 @@ import OpenIMSDK, { MessageType, ViewType } from '@droppii/openim-rn-client-sdk'
|
|
|
6
6
|
import { ChatEvent } from "../types/events.js";
|
|
7
7
|
import { mergeMessages } from "../utils/message.js";
|
|
8
8
|
import { useConversationStore } from "./conversation.js";
|
|
9
|
-
|
|
9
|
+
|
|
10
|
+
// Smaller than a typical "load more" page size elsewhere in the app on
|
|
11
|
+
// purpose: each page becomes a single prepend batch in ChatListLegend, and a
|
|
12
|
+
// smaller batch means fewer newly-inserted rows still unmeasured by the time
|
|
13
|
+
// native layout catches up — shrinks both the size and duration of the
|
|
14
|
+
// visible settle right after a history-prepend flush (see
|
|
15
|
+
// project_chatlistlegend_scroll_debugging memory for the full context).
|
|
16
|
+
const PAGE_SIZE = 15;
|
|
10
17
|
export const useMessageStore = create()((set, get) => ({
|
|
11
18
|
messages: [],
|
|
12
19
|
hasMoreOld: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["create","DeviceEventEmitter","OpenIMSDK","MessageType","ViewType","ChatEvent","mergeMessages","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","ScrollToMessage","clientMessageId","reset","markMessageRevoked","alreadyRevoked","some","contentType","RevokeMessage","MessageRevoked","revokeQuotedReferences","forEach","quoteElem","quoteMessage","atTextElem"],"sourceRoot":"../../../src","sources":["store/message.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,SAAS;AAChC,SAASC,kBAAkB,QAAQ,cAAc;AACjD,OAAOC,SAAS,IACdC,WAAW,EACXC,QAAQ,QACH,+BAA+B;AACtC,SAASC,SAAS,QAAQ,oBAAiB;AAO3C,SAASC,aAAa,QAAQ,qBAAkB;AAChD,SAASC,oBAAoB,QAAQ,mBAAgB;
|
|
1
|
+
{"version":3,"names":["create","DeviceEventEmitter","OpenIMSDK","MessageType","ViewType","ChatEvent","mergeMessages","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","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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadCard.d.ts","sourceRoot":"","sources":["../../../../../src/components/ThreadCard/ThreadCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAe1D,OAAO,EAIL,KAAK,gBAAgB,EAEtB,MAAM,+BAA+B,CAAC;AAMvC,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE;QACjB,IAAI,CAAC,EAAE,gBAAgB,CAAC;QACxB,KAAK,EAAE,qBAAqB,CAAC;KAC9B,KAAK,IAAI,CAAC;CACZ;AAED,QAAA,MAAM,UAAU,0DAA4B,eAAe,
|
|
1
|
+
{"version":3,"file":"ThreadCard.d.ts","sourceRoot":"","sources":["../../../../../src/components/ThreadCard/ThreadCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAe1D,OAAO,EAIL,KAAK,gBAAgB,EAEtB,MAAM,+BAA+B,CAAC;AAMvC,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE;QACjB,IAAI,CAAC,EAAE,gBAAgB,CAAC;QACxB,KAAK,EAAE,qBAAqB,CAAC;KAC9B,KAAK,IAAI,CAAC;CACZ;AAED,QAAA,MAAM,UAAU,0DAA4B,eAAe,iCA6KzD,CAAC;AAIH,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const urlTextStyle: {
|
|
2
|
+
color: any;
|
|
3
|
+
};
|
|
4
|
+
/**
|
|
5
|
+
* Splits `text` by `urls` and renders each part as plain or
|
|
6
|
+
* tappable/colored `<Text>` — shared by TextMessage (mention+URL combo)
|
|
7
|
+
* and QuotedMessage (quote+URL combo) so both stay in sync instead of
|
|
8
|
+
* drifting. Returns `<Text>{text}</Text>` unchanged when `urls` is empty.
|
|
9
|
+
*/
|
|
10
|
+
export declare function renderLinkifiedText(text: string, urls: string[], onPressUrl: ((url: string) => void) | undefined, keyPrefix: string): import("react").JSX.Element | import("react").JSX.Element[];
|
|
11
|
+
//# sourceMappingURL=LinkifiedText.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinkifiedText.d.ts","sourceRoot":"","sources":["../../../../../src/components/messages/LinkifiedText.tsx"],"names":[],"mappings":"AAQA,eAAO,MAAM,YAAY;;CAAoC,CAAC;AAE9D;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EAAE,EACd,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,EAC/C,SAAS,EAAE,MAAM,+DAgBlB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type BaseLegendMessageProps } from '../types';
|
|
2
2
|
interface QuotedMessageProps extends BaseLegendMessageProps {
|
|
3
|
+
onPressUrl?: (url: string) => void;
|
|
3
4
|
}
|
|
4
5
|
declare const QuotedMessage: import("react").MemoExoticComponent<(props: QuotedMessageProps) => import("react").JSX.Element>;
|
|
5
6
|
export default QuotedMessage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/messages/quotedMessage/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAqB,KAAK,sBAAsB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/messages/quotedMessage/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAqB,KAAK,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAwB1E,UAAU,kBAAmB,SAAQ,sBAAsB;IACzD,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,QAAA,MAAM,aAAa,8CAAgB,kBAAkB,iCAkJnD,CAAC;AAIH,eAAe,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/messages/textMessage/index.tsx"],"names":[],"mappings":"AASA,OAAO,EAAqB,KAAK,sBAAsB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/messages/textMessage/index.tsx"],"names":[],"mappings":"AASA,OAAO,EAAqB,KAAK,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAkB1E,eAAO,MAAM,WAAW,0IASnB,sBAAsB,GAAG;IAAE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,iCA6HnE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMessages.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/message/useMessages.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAKzD,UAAU,iBAAiB;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,GAAI,iDAIzB,iBAAiB;;mCA6CL,OAAO;mCAZP,OAAO;;;;;;
|
|
1
|
+
{"version":3,"file":"useMessages.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/message/useMessages.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAKzD,UAAU,iBAAiB;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,GAAI,iDAIzB,iBAAiB;;mCA6CL,OAAO;mCAZP,OAAO;;;;;;CA8DrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSendMessage.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/message/useSendMessage.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,WAAW,EACX,WAAW,EACX,cAAc,EAEf,MAAM,+BAA+B,CAAC;AAQvC,OAAO,EAEL,KAAK,oBAAoB,EAE1B,MAAM,kBAAkB,CAAC;AAM1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAGrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAqBnD,eAAO,MAAM,cAAc;uFA6CpB;QACD,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,YAAY,CAAC;QAC3B,IAAI,CAAC,EAAE,2BAA2B,CAAC;QACnC,aAAa,CAAC,EAAE,oBAAoB,CAAC;QACrC,OAAO,CAAC,EAAE,WAAW,CAAC;QACtB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;KACtB;
|
|
1
|
+
{"version":3,"file":"useSendMessage.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/message/useSendMessage.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,WAAW,EACX,WAAW,EACX,cAAc,EAEf,MAAM,+BAA+B,CAAC;AAQvC,OAAO,EAEL,KAAK,oBAAoB,EAE1B,MAAM,kBAAkB,CAAC;AAM1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAGrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAqBnD,eAAO,MAAM,cAAc;uFA6CpB;QACD,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,YAAY,CAAC;QAC3B,IAAI,CAAC,EAAE,2BAA2B,CAAC;QACnC,aAAa,CAAC,EAAE,oBAAoB,CAAC;QACrC,OAAO,CAAC,EAAE,WAAW,CAAC;QACtB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;KACtB;4BAoJe,WAAW;6BA8CqB,WAAW;CAmB9D,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,SAAS,WAAW,KA6BrD,WACN,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAU,MAAM,MAAM,iBAUnD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,MAAM,MAAM,EAAE,MAAM,MAAM,EAAE,iBActE,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,QAAQ,WAAW,iBAU5D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,QAAQ,eAAe,iBAUhE,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,QAAQ,cAAc,iBAU/D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,SAAS,MAAM,iBAUzD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceCenterTabScene.d.ts","sourceRoot":"","sources":["../../../../../src/screens/ResourceCenter/ResourceCenterTabScene.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAEhF,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC7B,WAAW,EAAE,0BAA0B,CAAC;IACxC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,cAAc,EAAE,SAAS,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;CAC1D;AAcD,eAAO,MAAM,sBAAsB,yHAS9B,KAAK,
|
|
1
|
+
{"version":3,"file":"ResourceCenterTabScene.d.ts","sourceRoot":"","sources":["../../../../../src/screens/ResourceCenter/ResourceCenterTabScene.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAEhF,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC7B,WAAW,EAAE,0BAA0B,CAAC;IACxC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,cAAc,EAAE,SAAS,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;CAC1D;AAcD,eAAO,MAAM,sBAAsB,yHAS9B,KAAK,iCAoFT,CAAC"}
|
|
@@ -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;AAkB/C,QAAA,MAAM,UAAU,wQAgBX,eAAe,
|
|
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;AAkB/C,QAAA,MAAM,UAAU,wQAgBX,eAAe,iCAgMnB,CAAC;AAIF,eAAe,UAAU,CAAC"}
|
|
@@ -11,6 +11,6 @@ interface ChatListLegendInternalProps extends ChatListProps {
|
|
|
11
11
|
}) => Promise<void>;
|
|
12
12
|
keyboardOffset: number;
|
|
13
13
|
}
|
|
14
|
-
export declare const ChatListLegend: import("react").MemoExoticComponent<({ messages, conversationId, customMessageItemFactory, onLoadMoreOld, moreOldLoading, hasMoreOld, onLoadMoreNew,
|
|
14
|
+
export declare const ChatListLegend: import("react").MemoExoticComponent<({ messages, conversationId, customMessageItemFactory, onLoadMoreOld, moreOldLoading, hasMoreOld, onLoadMoreNew, hasMoreNew, onMediaPress, onPressUrl, onLongPress, listRef, freeze, scrollMessageToEnd, keyboardOffset, isLoading, }: ChatListLegendInternalProps) => import("react").JSX.Element>;
|
|
15
15
|
export {};
|
|
16
16
|
//# sourceMappingURL=ChatListLegend.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatListLegend.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/ChatListLegend.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AASf,OAAiB,EAKf,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatListLegend.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/ChatListLegend.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AASf,OAAiB,EAKf,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,KAAK,aAAa,EAEnB,MAAM,8BAA8B,CAAC;AActC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA+C7C,UAAU,2BAA4B,SAAQ,aAAa;IACzD,OAAO,EAAE,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACzC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,kBAAkB,EAAE,CAAC,IAAI,EAAE;QACzB,QAAQ,EAAE,OAAO,CAAC;QAClB,aAAa,EAAE,OAAO,CAAC;KACxB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,cAAc,6QAkBtB,2BAA2B,iCA6qB/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PinnedMessagesSheet.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/PinnedMessagesSheet.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"PinnedMessagesSheet.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/PinnedMessagesSheet.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAuL9E,MAAM,WAAW,6BAA6B;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,wBAAwB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,SAAS,CAAC;IAC5D,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;CACjD;AAED,eAAO,MAAM,uBAAuB,GAAI,4EAKrC,6BAA6B,SAmB/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PinnedMessagesSheetBackup.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/PinnedMessagesSheetBackup.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"PinnedMessagesSheetBackup.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/PinnedMessagesSheetBackup.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAwNjE,MAAM,WAAW,6BAA6B;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,wBAAwB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,SAAS,CAAC;CAC7D;AAED,eAAO,MAAM,uBAAuB,GAAI,4DAIrC,6BAA6B,SAkB/B,CAAC"}
|
|
@@ -4,13 +4,15 @@ import type { MediaItem } from '../../../hooks/useMediaViewer';
|
|
|
4
4
|
import type { GroupPosition } from '../../../utils/legendListMessage';
|
|
5
5
|
interface LegendChatMessageProps {
|
|
6
6
|
message: MessageItem;
|
|
7
|
+
/** Stable per-row id (see getMessageRenderId) — bound into onPress/onLongPress locally so those callbacks stay referentially stable across unrelated list re-renders. */
|
|
8
|
+
messageId: string;
|
|
7
9
|
isOutgoing: boolean;
|
|
8
10
|
createdAtTime: number;
|
|
9
11
|
onMediaPress?: (items: MediaItem[], index?: number) => void;
|
|
10
12
|
onPressUrl?: (url: string) => void;
|
|
11
13
|
onRetry?: (message: MessageItem) => void;
|
|
12
|
-
onPress?: (
|
|
13
|
-
onLongPress?: () => void;
|
|
14
|
+
onPress?: (messageId: string) => void;
|
|
15
|
+
onLongPress?: (messageId: string, message: MessageItem) => void;
|
|
14
16
|
customMessageItemFactory?: (m: MessageItem) => ReactNode;
|
|
15
17
|
isHighlighted?: boolean;
|
|
16
18
|
isTimeRevealed?: boolean;
|
|
@@ -27,6 +29,6 @@ interface LegendChatMessageProps {
|
|
|
27
29
|
/** Position within its same-sender cluster — drives the bubble tail. */
|
|
28
30
|
groupPosition?: GroupPosition;
|
|
29
31
|
}
|
|
30
|
-
export declare const LegendChatMessage: import("react").MemoExoticComponent<({ message, isOutgoing, createdAtTime, onMediaPress, onPressUrl, onRetry, onPress, onLongPress, customMessageItemFactory, isHighlighted, isTimeRevealed, showName, showAvatar, showSenderGutter, groupPosition, }: LegendChatMessageProps) => string | number | bigint | true | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode>> | import("react").JSX.Element>;
|
|
32
|
+
export declare const LegendChatMessage: import("react").MemoExoticComponent<({ message, messageId, isOutgoing, createdAtTime, onMediaPress, onPressUrl, onRetry, onPress, onLongPress, customMessageItemFactory, isHighlighted, isTimeRevealed, showName, showAvatar, showSenderGutter, groupPosition, }: LegendChatMessageProps) => string | number | bigint | true | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode>> | import("react").JSX.Element>;
|
|
31
33
|
export {};
|
|
32
34
|
//# sourceMappingURL=LegendChatMessage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendChatMessage.d.ts","sourceRoot":"","sources":["../../../../../../src/screens/chat-detail/legend/LegendChatMessage.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAoC,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAe/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAStE,UAAU,sBAAsB;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"LegendChatMessage.d.ts","sourceRoot":"","sources":["../../../../../../src/screens/chat-detail/legend/LegendChatMessage.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAoC,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAe/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAStE,UAAU,sBAAsB;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,yKAAyK;IACzK,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAChE,wBAAwB,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,KAAK,SAAS,CAAC;IACzD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wEAAwE;IACxE,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAoCD,eAAO,MAAM,iBAAiB,oQAkBzB,sBAAsB,wRA2G1B,CAAC"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { MessageToolboxRef } from './types';
|
|
2
2
|
import type { ReactNode } from 'react';
|
|
3
|
+
import type { SharedValue } from 'react-native-reanimated';
|
|
3
4
|
import { type MessageItem } from '@droppii/openim-rn-client-sdk';
|
|
4
5
|
interface MessageToolboxOverlayProps {
|
|
5
6
|
currentUserId?: string;
|
|
6
7
|
customMessageItemFactory?: (item: MessageItem) => ReactNode;
|
|
7
8
|
onPinMessage?: (message: MessageItem) => void;
|
|
8
9
|
onUnpinMessage?: (message: MessageItem) => void;
|
|
10
|
+
freeze?: SharedValue<boolean>;
|
|
9
11
|
}
|
|
10
12
|
export declare const MessageToolboxOverlay: import("react").ForwardRefExoticComponent<MessageToolboxOverlayProps & import("react").RefAttributes<MessageToolboxRef>>;
|
|
11
13
|
export {};
|
package/lib/typescript/src/screens/chat-detail/messageToolbox/MessageToolboxOverlay.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageToolboxOverlay.d.ts","sourceRoot":"","sources":["../../../../../../src/screens/chat-detail/messageToolbox/MessageToolboxOverlay.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MessageToolboxOverlay.d.ts","sourceRoot":"","sources":["../../../../../../src/screens/chat-detail/messageToolbox/MessageToolboxOverlay.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAgB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,+BAA+B,CAAC;AAavC,UAAU,0BAA0B;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,SAAS,CAAC;IAC5D,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9C,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAIhD,MAAM,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAC/B;AAED,eAAO,MAAM,qBAAqB,0HA4LjC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resourceCenter.d.ts","sourceRoot":"","sources":["../../../../src/services/resourceCenter.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,eAAe,EAGpB,KAAK,sBAAsB,EAC5B,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"resourceCenter.d.ts","sourceRoot":"","sources":["../../../../src/services/resourceCenter.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,eAAe,EAGpB,KAAK,sBAAsB,EAC5B,MAAM,eAAe,CAAC;AAwJvB,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,oBAAoB,GAC/B,KAAK,sBAAsB,KAC1B,OAAO,CAAC;QAAE,KAAK,EAAE,eAAe,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAWtE,CAAC;CACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../src/store/message.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAGV,YAAY,EACb,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../src/store/message.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAGV,YAAY,EACb,MAAM,eAAe,CAAC;AAYvB,eAAO,MAAM,eAAe,2EAgMzB,CAAC;AAEJ,eAAO,MAAM,kBAAkB,GAAI,aAAa,MAAM,SAiBrD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@droppii-org/chat-mobile",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.90",
|
|
4
4
|
"description": "Droppii chat mobile",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
},
|
|
71
71
|
"dependencies": {
|
|
72
72
|
"@droppii/openim-rn-client-sdk": "git+ssh://git@github.com/droppii/open-im-sdk-reactnative.git#v1.0.0-rc39",
|
|
73
|
-
"@legendapp/list": "^3.
|
|
73
|
+
"@legendapp/list": "^3.3.10",
|
|
74
74
|
"axios": "^1.16.1",
|
|
75
75
|
"lodash": "^4.18.1",
|
|
76
76
|
"react-native-fs": "^2.20.0",
|
|
@@ -51,8 +51,6 @@ const ThreadCard = memo(({ item, onPress }: ThreadCardProps) => {
|
|
|
51
51
|
groupAtType,
|
|
52
52
|
} = conversation || {};
|
|
53
53
|
|
|
54
|
-
console.log('ThreadCard', conversation);
|
|
55
|
-
|
|
56
54
|
const { data: isJoinedGroup } = useIsJoinedGroup(groupID);
|
|
57
55
|
const isNotInGroup = groupID ? !isJoinedGroup : false;
|
|
58
56
|
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Text } from 'react-native';
|
|
2
|
+
import { KColors } from '@droppii/libs';
|
|
3
|
+
import { splitTextByUrls } from '../../utils/url';
|
|
4
|
+
|
|
5
|
+
// Same color LinkMessage uses for a URL substring — any message body that
|
|
6
|
+
// can contain a URL alongside other content (mention text, quote reply
|
|
7
|
+
// text) should look tappable/colored the same way a pure UrlTextMessage
|
|
8
|
+
// does.
|
|
9
|
+
export const urlTextStyle = { color: KColors.primary.normal };
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Splits `text` by `urls` and renders each part as plain or
|
|
13
|
+
* tappable/colored `<Text>` — shared by TextMessage (mention+URL combo)
|
|
14
|
+
* and QuotedMessage (quote+URL combo) so both stay in sync instead of
|
|
15
|
+
* drifting. Returns `<Text>{text}</Text>` unchanged when `urls` is empty.
|
|
16
|
+
*/
|
|
17
|
+
export function renderLinkifiedText(
|
|
18
|
+
text: string,
|
|
19
|
+
urls: string[],
|
|
20
|
+
onPressUrl: ((url: string) => void) | undefined,
|
|
21
|
+
keyPrefix: string
|
|
22
|
+
) {
|
|
23
|
+
if (!urls.length) return <Text key={keyPrefix}>{text}</Text>;
|
|
24
|
+
return splitTextByUrls(text, urls).map((part, i) =>
|
|
25
|
+
part.isUrl ? (
|
|
26
|
+
<Text
|
|
27
|
+
key={`${keyPrefix}-url-${i}`}
|
|
28
|
+
style={urlTextStyle}
|
|
29
|
+
onPress={() => onPressUrl?.(part.text)}
|
|
30
|
+
>
|
|
31
|
+
{part.text}
|
|
32
|
+
</Text>
|
|
33
|
+
) : (
|
|
34
|
+
<Text key={`${keyPrefix}-text-${i}`}>{part.text}</Text>
|
|
35
|
+
)
|
|
36
|
+
);
|
|
37
|
+
}
|
|
@@ -20,11 +20,15 @@ import {
|
|
|
20
20
|
parseUrlMetadata,
|
|
21
21
|
} from '../../../utils/messageUtils';
|
|
22
22
|
import { getFileIcon, getMimeType } from '../../../utils/imageUtils';
|
|
23
|
+
import { extractUrls } from '../../../utils/url';
|
|
24
|
+
import { renderLinkifiedText } from '../LinkifiedText';
|
|
23
25
|
import { useUserStore } from '../../../store';
|
|
24
26
|
import { useChatDetailContext } from '../../../context';
|
|
25
27
|
import { ChatEvent } from '../../../types/events';
|
|
26
28
|
|
|
27
|
-
interface QuotedMessageProps extends BaseLegendMessageProps {
|
|
29
|
+
interface QuotedMessageProps extends BaseLegendMessageProps {
|
|
30
|
+
onPressUrl?: (url: string) => void;
|
|
31
|
+
}
|
|
28
32
|
|
|
29
33
|
const QuotedMessage = memo((props: QuotedMessageProps) => {
|
|
30
34
|
const {
|
|
@@ -34,6 +38,7 @@ const QuotedMessage = memo((props: QuotedMessageProps) => {
|
|
|
34
38
|
isHighlighted,
|
|
35
39
|
isTimeRevealed,
|
|
36
40
|
groupPosition,
|
|
41
|
+
onPressUrl,
|
|
37
42
|
} = props || {};
|
|
38
43
|
|
|
39
44
|
const { conversation } = useChatDetailContext();
|
|
@@ -41,10 +46,21 @@ const QuotedMessage = memo((props: QuotedMessageProps) => {
|
|
|
41
46
|
const currentUserId = useUserStore((s) => s.user?.userID);
|
|
42
47
|
|
|
43
48
|
const quotedMessage = message?.quoteElem?.quoteMessage;
|
|
49
|
+
const replyText = message?.quoteElem?.text || '';
|
|
44
50
|
|
|
45
51
|
const messagePreview = getMessagePreviewParts(quotedMessage);
|
|
46
52
|
const timeLabel = formatMessageTime(createdAtTime);
|
|
47
53
|
|
|
54
|
+
// Same native-first/regex-fallback pattern as TextMessage's mention+URL
|
|
55
|
+
// combo — see useSendMessage.ts (this reply's own text, not the quoted
|
|
56
|
+
// message being previewed above it).
|
|
57
|
+
const urls = useMemo(() => {
|
|
58
|
+
const nativeUrls = message?.quoteElem?.urls;
|
|
59
|
+
return nativeUrls && nativeUrls.length > 0
|
|
60
|
+
? nativeUrls
|
|
61
|
+
: extractUrls(replyText);
|
|
62
|
+
}, [message?.quoteElem?.urls, replyText]);
|
|
63
|
+
|
|
48
64
|
const imageUrl = useMemo(() => {
|
|
49
65
|
switch (quotedMessage?.contentType) {
|
|
50
66
|
case MessageType.PictureMessage:
|
|
@@ -137,7 +153,7 @@ const QuotedMessage = memo((props: QuotedMessageProps) => {
|
|
|
137
153
|
</KContainer.View>
|
|
138
154
|
</KContainer.Touchable>
|
|
139
155
|
<KLabel.Text typo="TextMdNormal" color={CHAT_BUBBLE_COLORS.text}>
|
|
140
|
-
{
|
|
156
|
+
{renderLinkifiedText(replyText, urls, onPressUrl, 'reply')}
|
|
141
157
|
</KLabel.Text>
|
|
142
158
|
</KContainer.View>
|
|
143
159
|
</BubbleTailRow>
|
|
@@ -13,7 +13,8 @@ import { deserializeMentionRanges } from '../../../utils/mentionSerializer';
|
|
|
13
13
|
import type { IMessageItemEx } from '../../../types/chat';
|
|
14
14
|
import { QuotedMessagePreviewStrip } from '../quotedMessage/QuotedMessagePreviewStrip';
|
|
15
15
|
import { LinkPreviewCard } from '../linkMessage/LinkPreviewCard';
|
|
16
|
-
import { extractUrls
|
|
16
|
+
import { extractUrls } from '../../../utils/url';
|
|
17
|
+
import { renderLinkifiedText } from '../LinkifiedText';
|
|
17
18
|
|
|
18
19
|
const parseMessageEx = (ex?: string): IMessageItemEx | undefined => {
|
|
19
20
|
if (!ex) return undefined;
|
|
@@ -77,10 +78,20 @@ export const TextMessage = memo(
|
|
|
77
78
|
// `messageText` unchanged below, same as before this feature existed.
|
|
78
79
|
// Widening this to auto-linkify every TextMessage is a separate,
|
|
79
80
|
// deliberate product decision, not a side effect of this fix.
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
//
|
|
82
|
+
// Prefers the native `atTextElem.urls` (SDK rc39+, populated on send —
|
|
83
|
+
// see useSendMessage.ts) when present: it's the protocol-level source of
|
|
84
|
+
// truth, readable by any client, not just ours. Falls back to the
|
|
85
|
+
// client-side regex for messages from a sender that hasn't populated it
|
|
86
|
+
// yet (older app version, or another client that doesn't set it) —
|
|
87
|
+
// never a regression from the pre-native-field behavior.
|
|
88
|
+
const urls = useMemo(() => {
|
|
89
|
+
if (!segments) return [];
|
|
90
|
+
const nativeUrls = message.atTextElem?.urls;
|
|
91
|
+
return nativeUrls && nativeUrls.length > 0
|
|
92
|
+
? nativeUrls
|
|
93
|
+
: extractUrls(messageText);
|
|
94
|
+
}, [segments, messageText, message.atTextElem?.urls]);
|
|
84
95
|
|
|
85
96
|
if (!messageText?.trim()) {
|
|
86
97
|
return null;
|
|
@@ -90,22 +101,8 @@ export const TextMessage = memo(
|
|
|
90
101
|
// a URL — split further so it gets the same tappable/colored treatment
|
|
91
102
|
// LinkMessage gives a pure URL message, instead of sitting there as
|
|
92
103
|
// unstyled black text next to a colored mention.
|
|
93
|
-
const renderTextRun = (text: string, keyPrefix: string) =>
|
|
94
|
-
|
|
95
|
-
return splitTextByUrls(text, urls).map((part, i) =>
|
|
96
|
-
part.isUrl ? (
|
|
97
|
-
<Text
|
|
98
|
-
key={`${keyPrefix}-url-${i}`}
|
|
99
|
-
style={urlTextStyle}
|
|
100
|
-
onPress={() => onPressUrl?.(part.text)}
|
|
101
|
-
>
|
|
102
|
-
{part.text}
|
|
103
|
-
</Text>
|
|
104
|
-
) : (
|
|
105
|
-
<Text key={`${keyPrefix}-text-${i}`}>{part.text}</Text>
|
|
106
|
-
)
|
|
107
|
-
);
|
|
108
|
-
};
|
|
104
|
+
const renderTextRun = (text: string, keyPrefix: string) =>
|
|
105
|
+
renderLinkifiedText(text, urls, onPressUrl, keyPrefix);
|
|
109
106
|
|
|
110
107
|
return (
|
|
111
108
|
<>
|
|
@@ -177,9 +174,3 @@ const styles = StyleSheet.create({
|
|
|
177
174
|
// TextInput, so none of the nested-Text-in-TextInput bug class applies —
|
|
178
175
|
// nesting styled Text here is unconditionally safe.
|
|
179
176
|
const mentionTextStyle = { color: KColors.palette.primary.w400 };
|
|
180
|
-
|
|
181
|
-
// Same color LinkMessage uses for a URL substring — a mention message's
|
|
182
|
-
// plain-text run can contain a URL too (mention+URL combo, see
|
|
183
|
-
// useSendMessage.ts's doc comment), and it should look tappable/colored
|
|
184
|
-
// the same way there as it does in a pure UrlTextMessage.
|
|
185
|
-
const urlTextStyle = { color: KColors.primary.normal };
|
|
@@ -59,7 +59,7 @@ export const useChatListener = () => {
|
|
|
59
59
|
|
|
60
60
|
const onConversationChanged = useCallback(
|
|
61
61
|
(conversations: ConversationItem[]) => {
|
|
62
|
-
console.log('[Listener] OnConversationChanged', conversations);
|
|
62
|
+
// console.log('[Listener] OnConversationChanged', conversations);
|
|
63
63
|
|
|
64
64
|
// return; // TEMPORARILY DISABLED: OnConversationChanged/OnNewConversation can
|
|
65
65
|
const oldMap = useConversationStore.getState().map;
|
|
@@ -69,7 +69,7 @@ export const useChatListener = () => {
|
|
|
69
69
|
const latestMsg: MessageItem | null = conversation.latestMsg
|
|
70
70
|
? JSON.parse(conversation.latestMsg)
|
|
71
71
|
: null;
|
|
72
|
-
console.log('[latestMsg] OnConversationChanged', latestMsg);
|
|
72
|
+
// console.log('[latestMsg] OnConversationChanged', latestMsg);
|
|
73
73
|
|
|
74
74
|
// Same rule as useMessages: bot-flow automation noise (isInternal) or
|
|
75
75
|
// a group-notification content type in a Bot conversation must not
|
|
@@ -72,6 +72,12 @@ export const useMessages = ({
|
|
|
72
72
|
|
|
73
73
|
useEffect(() => {
|
|
74
74
|
if (!conversationId || !applicationType) return;
|
|
75
|
+
// Reset before fetching, not after — a prior conversation's
|
|
76
|
+
// messages/hasMoreOld/hasMoreNew must be cleared before this effect's
|
|
77
|
+
// own fetch starts, not left to hook-declaration-order luck relative to
|
|
78
|
+
// whatever else also runs on a conversationId change (e.g. ChatDetail's
|
|
79
|
+
// setCurrentConversation effect).
|
|
80
|
+
useMessageStore.getState().reset();
|
|
75
81
|
if (startClientMsgId) {
|
|
76
82
|
searchMessages({
|
|
77
83
|
applicationType,
|
|
@@ -165,12 +165,18 @@ export const useSendMessage = () => {
|
|
|
165
165
|
atUserIDList: serialized.atUserIDList,
|
|
166
166
|
atUsersInfo: serialized.atUsersInfo,
|
|
167
167
|
message: quotedMessage,
|
|
168
|
+
urls,
|
|
168
169
|
});
|
|
169
170
|
setQuotedMessage(undefined);
|
|
170
171
|
} else if (quotedMessage) {
|
|
172
|
+
// `urls` (native AtTextElem.urls-equivalent for QuoteElem, SDK
|
|
173
|
+
// rc39+) lets QuotedMessage's render side highlight/tap a link
|
|
174
|
+
// inside the reply text — previously this branch did zero URL
|
|
175
|
+
// detection at all, not even client-side.
|
|
171
176
|
message = await createQuotedMessage({
|
|
172
177
|
text: plainText || '',
|
|
173
178
|
message: quotedMessage,
|
|
179
|
+
urls,
|
|
174
180
|
});
|
|
175
181
|
setQuotedMessage(undefined);
|
|
176
182
|
} else if (hasMentions && groupID) {
|
|
@@ -185,6 +191,7 @@ export const useSendMessage = () => {
|
|
|
185
191
|
text: plainText || '',
|
|
186
192
|
atUserIDList: serialized.atUserIDList,
|
|
187
193
|
atUsersInfo: serialized.atUsersInfo,
|
|
194
|
+
urls,
|
|
188
195
|
});
|
|
189
196
|
} else if (isUrlMessage) {
|
|
190
197
|
message = await createUrlTextMessage(plainText || '', urls);
|