stream-chat-react-native-core 5.12.0-beta.3 → 5.12.0
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/commonjs/components/Channel/Channel.js +40 -24
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useTargetedMessage.js +3 -3
- package/lib/commonjs/components/Channel/hooks/useTargetedMessage.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +9 -2
- package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageList.js +84 -77
- package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
- package/lib/commonjs/components/MessageList/utils/getReadStates.js +9 -4
- package/lib/commonjs/components/MessageList/utils/getReadStates.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Channel/Channel.js +40 -24
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/components/Channel/hooks/useTargetedMessage.js +3 -3
- package/lib/module/components/Channel/hooks/useTargetedMessage.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreview.js +9 -2
- package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
- package/lib/module/components/MessageList/MessageList.js +84 -77
- package/lib/module/components/MessageList/MessageList.js.map +1 -1
- package/lib/module/components/MessageList/utils/getReadStates.js +9 -4
- package/lib/module/components/MessageList/utils/getReadStates.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/package.json +1 -1
- package/src/components/Channel/Channel.tsx +35 -15
- package/src/components/Channel/hooks/useTargetedMessage.ts +3 -3
- package/src/components/ChannelPreview/ChannelPreview.tsx +7 -0
- package/src/components/MessageList/MessageList.tsx +57 -56
- package/src/components/MessageList/utils/getReadStates.ts +3 -4
- package/src/version.json +1 -1
|
@@ -19,15 +19,15 @@ var useTargetedMessage = function useTargetedMessage(messageId) {
|
|
|
19
19
|
clearTargetedMessageCall.current && clearTimeout(clearTargetedMessageCall.current);
|
|
20
20
|
};
|
|
21
21
|
}, []);
|
|
22
|
-
var
|
|
22
|
+
var setTargetedMessageTimeoutRef = (0, _react.useRef)(function (messageId) {
|
|
23
23
|
clearTargetedMessageCall.current && clearTimeout(clearTargetedMessageCall.current);
|
|
24
24
|
clearTargetedMessageCall.current = setTimeout(function () {
|
|
25
25
|
setTargetedMessage(undefined);
|
|
26
26
|
}, 3000);
|
|
27
27
|
setTargetedMessage(messageId);
|
|
28
|
-
};
|
|
28
|
+
});
|
|
29
29
|
return {
|
|
30
|
-
setTargetedMessage:
|
|
30
|
+
setTargetedMessage: setTargetedMessageTimeoutRef.current,
|
|
31
31
|
targetedMessage: targetedMessage
|
|
32
32
|
};
|
|
33
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","useTargetedMessage","messageId","clearTargetedMessageCall","useRef","_useState","useState","_useState2","_slicedToArray2","targetedMessage","setTargetedMessage","useEffect","current","setTimeout","undefined","clearTimeout","
|
|
1
|
+
{"version":3,"names":["_react","require","useTargetedMessage","messageId","clearTargetedMessageCall","useRef","_useState","useState","_useState2","_slicedToArray2","targetedMessage","setTargetedMessage","useEffect","current","setTimeout","undefined","clearTimeout","setTargetedMessageTimeoutRef","exports"],"sources":["useTargetedMessage.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nexport const useTargetedMessage = (messageId?: string) => {\n const clearTargetedMessageCall = useRef<ReturnType<typeof setTimeout>>();\n const [targetedMessage, setTargetedMessage] = useState(messageId);\n\n useEffect(() => {\n clearTargetedMessageCall.current = setTimeout(() => {\n setTargetedMessage(undefined);\n }, 3000);\n\n return () => {\n clearTargetedMessageCall.current && clearTimeout(clearTargetedMessageCall.current);\n };\n }, []);\n\n const setTargetedMessageTimeoutRef = useRef((messageId: string) => {\n clearTargetedMessageCall.current && clearTimeout(clearTargetedMessageCall.current);\n\n clearTargetedMessageCall.current = setTimeout(() => {\n setTargetedMessage(undefined);\n }, 3000);\n\n setTargetedMessage(messageId);\n });\n\n return {\n setTargetedMessage: setTargetedMessageTimeoutRef.current,\n targetedMessage,\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEO,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIC,SAAkB,EAAK;EACxD,IAAMC,wBAAwB,GAAG,IAAAC,aAAM,GAAiC;EACxE,IAAAC,SAAA,GAA8C,IAAAC,eAAQ,EAACJ,SAAS,CAAC;IAAAK,UAAA,OAAAC,eAAA,aAAAH,SAAA;IAA1DI,eAAe,GAAAF,UAAA;IAAEG,kBAAkB,GAAAH,UAAA;EAE1C,IAAAI,gBAAS,EAAC,YAAM;IACdR,wBAAwB,CAACS,OAAO,GAAGC,UAAU,CAAC,YAAM;MAClDH,kBAAkB,CAACI,SAAS,CAAC;IAC/B,CAAC,EAAE,IAAI,CAAC;IAER,OAAO,YAAM;MACXX,wBAAwB,CAACS,OAAO,IAAIG,YAAY,CAACZ,wBAAwB,CAACS,OAAO,CAAC;IACpF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMI,4BAA4B,GAAG,IAAAZ,aAAM,EAAC,UAACF,SAAiB,EAAK;IACjEC,wBAAwB,CAACS,OAAO,IAAIG,YAAY,CAACZ,wBAAwB,CAACS,OAAO,CAAC;IAElFT,wBAAwB,CAACS,OAAO,GAAGC,UAAU,CAAC,YAAM;MAClDH,kBAAkB,CAACI,SAAS,CAAC;IAC/B,CAAC,EAAE,IAAI,CAAC;IAERJ,kBAAkB,CAACR,SAAS,CAAC;EAC/B,CAAC,CAAC;EAEF,OAAO;IACLQ,kBAAkB,EAAEM,4BAA4B,CAACJ,OAAO;IACxDH,eAAe,EAAfA;EACF,CAAC;AACH,CAAC;AAACQ,OAAA,CAAAhB,kBAAA,GAAAA,kBAAA"}
|
|
@@ -35,6 +35,13 @@ var ChannelPreviewWithContext = function ChannelPreviewWithContext(props) {
|
|
|
35
35
|
var latestMessagePreview = (0, _useLatestMessagePreview.useLatestMessagePreview)(channel, forceUpdate, translatedLastMessage);
|
|
36
36
|
var channelLastMessage = channel.lastMessage();
|
|
37
37
|
var channelLastMessageString = "" + (channelLastMessage == null ? void 0 : channelLastMessage.id) + (channelLastMessage == null ? void 0 : channelLastMessage.updated_at);
|
|
38
|
+
(0, _react.useEffect)(function () {
|
|
39
|
+
var _client$on = client.on('notification.mark_read', function () {
|
|
40
|
+
setUnread(channel.countUnread());
|
|
41
|
+
}),
|
|
42
|
+
unsubscribe = _client$on.unsubscribe;
|
|
43
|
+
return unsubscribe;
|
|
44
|
+
}, []);
|
|
38
45
|
(0, _react.useEffect)(function () {
|
|
39
46
|
if (channelLastMessage && (channelLastMessage.id !== (lastMessage == null ? void 0 : lastMessage.id) || channelLastMessage.updated_at !== (lastMessage == null ? void 0 : lastMessage.updated_at))) {
|
|
40
47
|
setLastMessage(channelLastMessage);
|
|
@@ -89,7 +96,7 @@ var ChannelPreviewWithContext = function ChannelPreviewWithContext(props) {
|
|
|
89
96
|
__self: _this,
|
|
90
97
|
__source: {
|
|
91
98
|
fileName: _jsxFileName,
|
|
92
|
-
lineNumber:
|
|
99
|
+
lineNumber: 115,
|
|
93
100
|
columnNumber: 10
|
|
94
101
|
}
|
|
95
102
|
});
|
|
@@ -106,7 +113,7 @@ var ChannelPreview = function ChannelPreview(props) {
|
|
|
106
113
|
__self: _this,
|
|
107
114
|
__source: {
|
|
108
115
|
fileName: _jsxFileName,
|
|
109
|
-
lineNumber:
|
|
116
|
+
lineNumber: 131,
|
|
110
117
|
columnNumber: 10
|
|
111
118
|
}
|
|
112
119
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_useLatestMessagePreview","_ChannelsContext","_ChatContext","_useTranslatedMessage","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ChannelPreviewWithContext","props","channel","client","Preview","_useState","useState","state","messages","length","_useState2","_slicedToArray2","lastMessage","setLastMessage","translatedLastMessage","useTranslatedMessage","_useState3","_useState4","forceUpdate","setForceUpdate","_useState5","countUnread","_useState6","unread","setUnread","latestMessagePreview","useLatestMessagePreview","channelLastMessage","channelLastMessageString","id","updated_at","useEffect","newUnreadCount","handleNewMessageEvent","event","message","parent_id","show_in_channel","handleUpdatedOrDeletedMessage","prevLastMessage","_event$message","listeners","on","forEach","l","unsubscribe","handleReadEvent","_event$user","_event$user2","user","userID","prev","listener","createElement","__self","__source","fileName","lineNumber","columnNumber","ChannelPreview","_useChatContext","useChatContext","_useChannelsContext","useChannelsContext","_extends2","exports"],"sources":["ChannelPreview.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\n\nimport type { Channel, ChannelState, Event, MessageResponse } from 'stream-chat';\n\nimport { useLatestMessagePreview } from './hooks/useLatestMessagePreview';\n\nimport {\n ChannelsContextValue,\n useChannelsContext,\n} from '../../contexts/channelsContext/ChannelsContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\n\nimport { useTranslatedMessage } from '../../hooks/useTranslatedMessage';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nexport type ChannelPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<ChannelsContextValue<StreamChatGenerics>, 'Preview'> & {\n /**\n * The previewed channel\n */\n channel: Channel<StreamChatGenerics>;\n };\n\n/**\n * This component manages state for the ChannelPreviewMessenger UI component and receives\n * all props from the ChannelListMessenger component.\n */\nconst ChannelPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { channel, client, Preview } = props;\n\n const [lastMessage, setLastMessage] = useState<\n | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>\n | MessageResponse<StreamChatGenerics>\n | undefined\n >(channel.state.messages[channel.state.messages.length - 1]);\n\n const translatedLastMessage = useTranslatedMessage<StreamChatGenerics>(\n lastMessage || ({} as MessageResponse<StreamChatGenerics>),\n );\n\n const [forceUpdate, setForceUpdate] = useState(0);\n const [unread, setUnread] = useState(channel.countUnread());\n\n const latestMessagePreview = useLatestMessagePreview(channel, forceUpdate, translatedLastMessage);\n\n const channelLastMessage = channel.lastMessage();\n const channelLastMessageString = `${channelLastMessage?.id}${channelLastMessage?.updated_at}`;\n\n useEffect(() => {\n if (\n channelLastMessage &&\n (channelLastMessage.id !== lastMessage?.id ||\n channelLastMessage.updated_at !== lastMessage?.updated_at)\n ) {\n setLastMessage(channelLastMessage);\n }\n\n const newUnreadCount = channel.countUnread();\n setUnread(newUnreadCount);\n }, [channelLastMessageString]);\n\n useEffect(() => {\n const handleNewMessageEvent = (event: Event<StreamChatGenerics>) => {\n const message = event.message;\n if (message && (!message.parent_id || message.show_in_channel)) {\n setLastMessage(event.message);\n setUnread(channel.countUnread());\n }\n };\n\n const handleUpdatedOrDeletedMessage = (event: Event<StreamChatGenerics>) => {\n setLastMessage((prevLastMessage) => {\n if (prevLastMessage?.id === event.message?.id) {\n return event.message;\n }\n return prevLastMessage;\n });\n };\n\n const listeners = [\n channel.on('message.new', handleNewMessageEvent),\n channel.on('message.updated', handleUpdatedOrDeletedMessage),\n channel.on('message.deleted', handleUpdatedOrDeletedMessage),\n ];\n\n return () => listeners.forEach((l) => l.unsubscribe());\n }, []);\n\n useEffect(() => {\n const handleReadEvent = (event: Event<StreamChatGenerics>) => {\n if (event.user?.id === client.userID) {\n setUnread(0);\n } else if (event.user?.id) {\n setForceUpdate((prev) => prev + 1);\n }\n };\n\n const listener = channel.on('message.read', handleReadEvent);\n return () => listener.unsubscribe();\n }, []);\n\n return <Preview channel={channel} latestMessagePreview={latestMessagePreview} unread={unread} />;\n};\n\nexport type ChannelPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<ChannelPreviewPropsWithContext<StreamChatGenerics>, 'channel'>> &\n Pick<ChannelPreviewPropsWithContext<StreamChatGenerics>, 'channel'>;\n\nexport const ChannelPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelPreviewProps<StreamChatGenerics>,\n) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const { Preview } = useChannelsContext<StreamChatGenerics>();\n\n return <ChannelPreviewWithContext {...{ client, Preview }} {...props} />;\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAIA,IAAAC,wBAAA,GAAAD,OAAA;AAEA,IAAAE,gBAAA,GAAAF,OAAA;AAIA,IAAAG,YAAA,GAAAH,OAAA;AAEA,IAAAI,qBAAA,GAAAJ,OAAA;AAAwE,IAAAK,KAAA;EAAAC,YAAA;AAAA,SAAAC,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAT,wBAAAa,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,aAAAE,OAAA,CAAAF,GAAA,yBAAAA,GAAA,uCAAAA,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,cAAAN,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAiBxE,IAAMW,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAG7BC,KAAyD,EACtD;EACH,IAAQC,OAAO,GAAsBD,KAAK,CAAlCC,OAAO;IAAEC,MAAM,GAAcF,KAAK,CAAzBE,MAAM;IAAEC,OAAO,GAAKH,KAAK,CAAjBG,OAAO;EAEhC,IAAAC,SAAA,GAAsC,IAAAC,eAAQ,EAI5CJ,OAAO,CAACK,KAAK,CAACC,QAAQ,CAACN,OAAO,CAACK,KAAK,CAACC,QAAQ,CAACC,MAAM,GAAG,CAAC,CAAC,CAAC;IAAAC,UAAA,OAAAC,eAAA,aAAAN,SAAA;IAJrDO,WAAW,GAAAF,UAAA;IAAEG,cAAc,GAAAH,UAAA;EAMlC,IAAMI,qBAAqB,GAAG,IAAAC,0CAAoB,EAChDH,WAAW,IAAK,CAAC,CAAyC,CAC3D;EAED,IAAAI,UAAA,GAAsC,IAAAV,eAAQ,EAAC,CAAC,CAAC;IAAAW,UAAA,OAAAN,eAAA,aAAAK,UAAA;IAA1CE,WAAW,GAAAD,UAAA;IAAEE,cAAc,GAAAF,UAAA;EAClC,IAAAG,UAAA,GAA4B,IAAAd,eAAQ,EAACJ,OAAO,CAACmB,WAAW,EAAE,CAAC;IAAAC,UAAA,OAAAX,eAAA,aAAAS,UAAA;IAApDG,MAAM,GAAAD,UAAA;IAAEE,SAAS,GAAAF,UAAA;EAExB,IAAMG,oBAAoB,GAAG,IAAAC,gDAAuB,EAACxB,OAAO,EAAEgB,WAAW,EAAEJ,qBAAqB,CAAC;EAEjG,IAAMa,kBAAkB,GAAGzB,OAAO,CAACU,WAAW,EAAE;EAChD,IAAMgB,wBAAwB,SAAMD,kBAAkB,oBAAlBA,kBAAkB,CAAEE,EAAE,KAAGF,kBAAkB,oBAAlBA,kBAAkB,CAAEG,UAAU,CAAE;EAE7F,IAAAC,gBAAS,EAAC,YAAM;IACd,IACEJ,kBAAkB,KACjBA,kBAAkB,CAACE,EAAE,MAAKjB,WAAW,oBAAXA,WAAW,CAAEiB,EAAE,KACxCF,kBAAkB,CAACG,UAAU,MAAKlB,WAAW,oBAAXA,WAAW,CAAEkB,UAAU,EAAC,EAC5D;MACAjB,cAAc,CAACc,kBAAkB,CAAC;IACpC;IAEA,IAAMK,cAAc,GAAG9B,OAAO,CAACmB,WAAW,EAAE;IAC5CG,SAAS,CAACQ,cAAc,CAAC;EAC3B,CAAC,EAAE,CAACJ,wBAAwB,CAAC,CAAC;EAE9B,IAAAG,gBAAS,EAAC,YAAM;IACd,IAAME,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAIC,KAAgC,EAAK;MAClE,IAAMC,OAAO,GAAGD,KAAK,CAACC,OAAO;MAC7B,IAAIA,OAAO,KAAK,CAACA,OAAO,CAACC,SAAS,IAAID,OAAO,CAACE,eAAe,CAAC,EAAE;QAC9DxB,cAAc,CAACqB,KAAK,CAACC,OAAO,CAAC;QAC7BX,SAAS,CAACtB,OAAO,CAACmB,WAAW,EAAE,CAAC;MAClC;IACF,CAAC;IAED,IAAMiB,6BAA6B,GAAG,SAAhCA,6BAA6BA,CAAIJ,KAAgC,EAAK;MAC1ErB,cAAc,CAAC,UAAC0B,eAAe,EAAK;QAAA,IAAAC,cAAA;QAClC,IAAI,CAAAD,eAAe,oBAAfA,eAAe,CAAEV,EAAE,QAAAW,cAAA,GAAKN,KAAK,CAACC,OAAO,qBAAbK,cAAA,CAAeX,EAAE,GAAE;UAC7C,OAAOK,KAAK,CAACC,OAAO;QACtB;QACA,OAAOI,eAAe;MACxB,CAAC,CAAC;IACJ,CAAC;IAED,IAAME,SAAS,GAAG,CAChBvC,OAAO,CAACwC,EAAE,CAAC,aAAa,EAAET,qBAAqB,CAAC,EAChD/B,OAAO,CAACwC,EAAE,CAAC,iBAAiB,EAAEJ,6BAA6B,CAAC,EAC5DpC,OAAO,CAACwC,EAAE,CAAC,iBAAiB,EAAEJ,6BAA6B,CAAC,CAC7D;IAED,OAAO;MAAA,OAAMG,SAAS,CAACE,OAAO,CAAC,UAACC,CAAC;QAAA,OAAKA,CAAC,CAACC,WAAW,EAAE;MAAA,EAAC;IAAA;EACxD,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAd,gBAAS,EAAC,YAAM;IACd,IAAMe,eAAe,GAAG,SAAlBA,eAAeA,CAAIZ,KAAgC,EAAK;MAAA,IAAAa,WAAA,EAAAC,YAAA;MAC5D,IAAI,EAAAD,WAAA,GAAAb,KAAK,CAACe,IAAI,qBAAVF,WAAA,CAAYlB,EAAE,MAAK1B,MAAM,CAAC+C,MAAM,EAAE;QACpC1B,SAAS,CAAC,CAAC,CAAC;MACd,CAAC,MAAM,KAAAwB,YAAA,GAAId,KAAK,CAACe,IAAI,aAAVD,YAAA,CAAYnB,EAAE,EAAE;QACzBV,cAAc,CAAC,UAACgC,IAAI;UAAA,OAAKA,IAAI,GAAG,CAAC;QAAA,EAAC;MACpC;IACF,CAAC;IAED,IAAMC,QAAQ,GAAGlD,OAAO,CAACwC,EAAE,CAAC,cAAc,EAAEI,eAAe,CAAC;IAC5D,OAAO;MAAA,OAAMM,QAAQ,CAACP,WAAW,EAAE;IAAA;EACrC,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO5E,MAAA,YAAAoF,aAAA,CAACjD,OAAO;IAACF,OAAO,EAAEA,OAAQ;IAACuB,oBAAoB,EAAEA,oBAAqB;IAACF,MAAM,EAAEA,MAAO;IAAA+B,MAAA,EAAA9E,KAAA;IAAA+E,QAAA;MAAAC,QAAA,EAAA/E,YAAA;MAAAgF,UAAA;MAAAC,YAAA;IAAA;EAAA,EAAG;AAClG,CAAC;AAOM,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAGzB1D,KAA8C,EAC3C;EACH,IAAA2D,eAAA,GAAmB,IAAAC,2BAAc,GAAsB;IAA/C1D,MAAM,GAAAyD,eAAA,CAANzD,MAAM;EACd,IAAA2D,mBAAA,GAAoB,IAAAC,mCAAkB,GAAsB;IAApD3D,OAAO,GAAA0D,mBAAA,CAAP1D,OAAO;EAEf,OAAOnC,MAAA,YAAAoF,aAAA,CAACrD,yBAAyB,MAAAgE,SAAA;IAAO7D,MAAM,EAANA,MAAM;IAAEC,OAAO,EAAPA;EAAO,GAAQH,KAAK;IAAAqD,MAAA,EAAA9E,KAAA;IAAA+E,QAAA;MAAAC,QAAA,EAAA/E,YAAA;MAAAgF,UAAA;MAAAC,YAAA;IAAA;EAAA,GAAI;AAC1E,CAAC;AAACO,OAAA,CAAAN,cAAA,GAAAA,cAAA"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_useLatestMessagePreview","_ChannelsContext","_ChatContext","_useTranslatedMessage","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ChannelPreviewWithContext","props","channel","client","Preview","_useState","useState","state","messages","length","_useState2","_slicedToArray2","lastMessage","setLastMessage","translatedLastMessage","useTranslatedMessage","_useState3","_useState4","forceUpdate","setForceUpdate","_useState5","countUnread","_useState6","unread","setUnread","latestMessagePreview","useLatestMessagePreview","channelLastMessage","channelLastMessageString","id","updated_at","useEffect","_client$on","on","unsubscribe","newUnreadCount","handleNewMessageEvent","event","message","parent_id","show_in_channel","handleUpdatedOrDeletedMessage","prevLastMessage","_event$message","listeners","forEach","l","handleReadEvent","_event$user","_event$user2","user","userID","prev","listener","createElement","__self","__source","fileName","lineNumber","columnNumber","ChannelPreview","_useChatContext","useChatContext","_useChannelsContext","useChannelsContext","_extends2","exports"],"sources":["ChannelPreview.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\n\nimport type { Channel, ChannelState, Event, MessageResponse } from 'stream-chat';\n\nimport { useLatestMessagePreview } from './hooks/useLatestMessagePreview';\n\nimport {\n ChannelsContextValue,\n useChannelsContext,\n} from '../../contexts/channelsContext/ChannelsContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\n\nimport { useTranslatedMessage } from '../../hooks/useTranslatedMessage';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nexport type ChannelPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<ChannelsContextValue<StreamChatGenerics>, 'Preview'> & {\n /**\n * The previewed channel\n */\n channel: Channel<StreamChatGenerics>;\n };\n\n/**\n * This component manages state for the ChannelPreviewMessenger UI component and receives\n * all props from the ChannelListMessenger component.\n */\nconst ChannelPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { channel, client, Preview } = props;\n\n const [lastMessage, setLastMessage] = useState<\n | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>\n | MessageResponse<StreamChatGenerics>\n | undefined\n >(channel.state.messages[channel.state.messages.length - 1]);\n\n const translatedLastMessage = useTranslatedMessage<StreamChatGenerics>(\n lastMessage || ({} as MessageResponse<StreamChatGenerics>),\n );\n\n const [forceUpdate, setForceUpdate] = useState(0);\n const [unread, setUnread] = useState(channel.countUnread());\n\n const latestMessagePreview = useLatestMessagePreview(channel, forceUpdate, translatedLastMessage);\n\n const channelLastMessage = channel.lastMessage();\n const channelLastMessageString = `${channelLastMessage?.id}${channelLastMessage?.updated_at}`;\n\n useEffect(() => {\n const { unsubscribe } = client.on('notification.mark_read', () => {\n setUnread(channel.countUnread());\n });\n return unsubscribe;\n }, []);\n\n useEffect(() => {\n if (\n channelLastMessage &&\n (channelLastMessage.id !== lastMessage?.id ||\n channelLastMessage.updated_at !== lastMessage?.updated_at)\n ) {\n setLastMessage(channelLastMessage);\n }\n\n const newUnreadCount = channel.countUnread();\n setUnread(newUnreadCount);\n }, [channelLastMessageString]);\n\n useEffect(() => {\n const handleNewMessageEvent = (event: Event<StreamChatGenerics>) => {\n const message = event.message;\n if (message && (!message.parent_id || message.show_in_channel)) {\n setLastMessage(event.message);\n setUnread(channel.countUnread());\n }\n };\n\n const handleUpdatedOrDeletedMessage = (event: Event<StreamChatGenerics>) => {\n setLastMessage((prevLastMessage) => {\n if (prevLastMessage?.id === event.message?.id) {\n return event.message;\n }\n return prevLastMessage;\n });\n };\n\n const listeners = [\n channel.on('message.new', handleNewMessageEvent),\n channel.on('message.updated', handleUpdatedOrDeletedMessage),\n channel.on('message.deleted', handleUpdatedOrDeletedMessage),\n ];\n\n return () => listeners.forEach((l) => l.unsubscribe());\n }, []);\n\n useEffect(() => {\n const handleReadEvent = (event: Event<StreamChatGenerics>) => {\n if (event.user?.id === client.userID) {\n setUnread(0);\n } else if (event.user?.id) {\n setForceUpdate((prev) => prev + 1);\n }\n };\n\n const listener = channel.on('message.read', handleReadEvent);\n return () => listener.unsubscribe();\n }, []);\n\n return <Preview channel={channel} latestMessagePreview={latestMessagePreview} unread={unread} />;\n};\n\nexport type ChannelPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<ChannelPreviewPropsWithContext<StreamChatGenerics>, 'channel'>> &\n Pick<ChannelPreviewPropsWithContext<StreamChatGenerics>, 'channel'>;\n\nexport const ChannelPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelPreviewProps<StreamChatGenerics>,\n) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const { Preview } = useChannelsContext<StreamChatGenerics>();\n\n return <ChannelPreviewWithContext {...{ client, Preview }} {...props} />;\n};\n"],"mappings":"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"}
|
|
@@ -131,7 +131,6 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
131
131
|
overlay = props.overlay,
|
|
132
132
|
reloadChannel = props.reloadChannel,
|
|
133
133
|
ScrollToBottomButton = props.ScrollToBottomButton,
|
|
134
|
-
scrollToFirstUnreadThreshold = props.scrollToFirstUnreadThreshold,
|
|
135
134
|
selectedPicker = props.selectedPicker,
|
|
136
135
|
setFlatListRef = props.setFlatListRef,
|
|
137
136
|
setMessages = props.setMessages,
|
|
@@ -175,27 +174,31 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
175
174
|
var onStartReachedInPromise = (0, _react.useRef)(null);
|
|
176
175
|
var onEndReachedInPromise = (0, _react.useRef)(null);
|
|
177
176
|
var flatListRef = (0, _react.useRef)(null);
|
|
178
|
-
var
|
|
177
|
+
var _useState3 = (0, _react.useState)(!initialScrollToFirstUnreadMessage),
|
|
178
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
179
|
+
isInitialScrollDone = _useState4[0],
|
|
180
|
+
setInitialScrollDone = _useState4[1];
|
|
179
181
|
var channelResyncScrollSet = (0, _react.useRef)(true);
|
|
180
182
|
var scrollToDebounceTimeoutRef = (0, _react.useRef)();
|
|
183
|
+
var initialScrollSettingTimeoutRef = (0, _react.useRef)();
|
|
181
184
|
var messageIdToScrollToRef = (0, _react.useRef)();
|
|
182
185
|
var messageIdLastScrolledToRef = (0, _react.useRef)();
|
|
183
|
-
var
|
|
184
|
-
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
185
|
-
hasMoved = _useState4[0],
|
|
186
|
-
setHasMoved = _useState4[1];
|
|
187
|
-
var _useState5 = (0, _react.useState)((_getLastReceivedMessa = (0, _getLastReceivedMessage.getLastReceivedMessage)(messageList)) == null ? void 0 : _getLastReceivedMessa.id),
|
|
186
|
+
var _useState5 = (0, _react.useState)(false),
|
|
188
187
|
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
var _useState7 = (0, _react.useState)(
|
|
188
|
+
hasMoved = _useState6[0],
|
|
189
|
+
setHasMoved = _useState6[1];
|
|
190
|
+
var _useState7 = (0, _react.useState)((_getLastReceivedMessa = (0, _getLastReceivedMessage.getLastReceivedMessage)(messageList)) == null ? void 0 : _getLastReceivedMessa.id),
|
|
192
191
|
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
var _useState9 = (0, _react.useState)(),
|
|
192
|
+
lastReceivedId = _useState8[0],
|
|
193
|
+
setLastReceivedId = _useState8[1];
|
|
194
|
+
var _useState9 = (0, _react.useState)(false),
|
|
196
195
|
_useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
197
|
-
|
|
198
|
-
|
|
196
|
+
scrollToBottomButtonVisible = _useState10[0],
|
|
197
|
+
setScrollToBottomButtonVisible = _useState10[1];
|
|
198
|
+
var _useState11 = (0, _react.useState)(),
|
|
199
|
+
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
|
200
|
+
stickyHeaderDate = _useState12[0],
|
|
201
|
+
setStickyHeaderDate = _useState12[1];
|
|
199
202
|
var stickyHeaderDateRef = (0, _react.useRef)();
|
|
200
203
|
var channelRef = (0, _react.useRef)(channel);
|
|
201
204
|
channelRef.current = channel;
|
|
@@ -227,11 +230,23 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
227
230
|
setScrollToBottomButtonVisible(false);
|
|
228
231
|
}, [disabled]);
|
|
229
232
|
(0, _react.useEffect)(function () {
|
|
230
|
-
var
|
|
231
|
-
|
|
233
|
+
var getShouldMarkReadAutomatically = function getShouldMarkReadAutomatically() {
|
|
234
|
+
if (loading || !channel) {
|
|
235
|
+
return false;
|
|
236
|
+
} else if (channel.countUnread() > 0) {
|
|
237
|
+
if (!initialScrollToFirstUnreadMessage) {
|
|
238
|
+
return true;
|
|
239
|
+
} else {
|
|
240
|
+
if (scrollToBottomButtonVisible) return false;
|
|
241
|
+
return isInitialScrollDone;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return false;
|
|
245
|
+
};
|
|
246
|
+
if (getShouldMarkReadAutomatically()) {
|
|
232
247
|
markRead();
|
|
233
248
|
}
|
|
234
|
-
}, [loading]);
|
|
249
|
+
}, [loading, scrollToBottomButtonVisible, isInitialScrollDone]);
|
|
235
250
|
(0, _react.useEffect)(function () {
|
|
236
251
|
var _lastReceivedMessage$;
|
|
237
252
|
var lastReceivedMessage = (0, _getLastReceivedMessage.getLastReceivedMessage)(messageList);
|
|
@@ -263,7 +278,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
263
278
|
};
|
|
264
279
|
if (threadList || hasNoMoreRecentMessagesToLoad) {
|
|
265
280
|
scrollToBottomIfNeeded();
|
|
266
|
-
} else
|
|
281
|
+
} else {
|
|
267
282
|
setScrollToBottomButtonVisible(true);
|
|
268
283
|
}
|
|
269
284
|
if (!hasNoMoreRecentMessagesToLoad && flatListRef.current && messageListLengthBeforeUpdate.current === 0 && messageListLengthAfterUpdate < 10) {
|
|
@@ -282,28 +297,23 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
282
297
|
message = _ref2.item;
|
|
283
298
|
if (!channel || !channel.initialized && !channel.offlineMode) return null;
|
|
284
299
|
var lastRead = channel.lastRead();
|
|
285
|
-
var countUnread = channel.countUnread();
|
|
286
300
|
function isMessageUnread(messageArrayIndex) {
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
var isLatestMessageSetShown = !!channel.state.messageSets.find(function (set) {
|
|
291
|
-
return set.isCurrent && set.isLatest;
|
|
292
|
-
});
|
|
293
|
-
return isLatestMessageSetShown && messageArrayIndex <= countUnread - 1;
|
|
301
|
+
var msg = messageList == null ? void 0 : messageList[messageArrayIndex];
|
|
302
|
+
if (lastRead && msg != null && msg.created_at) {
|
|
303
|
+
return lastRead < msg.created_at;
|
|
294
304
|
}
|
|
305
|
+
return false;
|
|
295
306
|
}
|
|
296
307
|
var isCurrentMessageUnread = isMessageUnread(index);
|
|
297
|
-
var isLastMessageUnread = isMessageUnread(index + 1);
|
|
298
308
|
var showUnreadUnderlay = isCurrentMessageUnread && scrollToBottomButtonVisible;
|
|
299
|
-
var insertInlineUnreadIndicator = showUnreadUnderlay && !
|
|
309
|
+
var insertInlineUnreadIndicator = showUnreadUnderlay && !isMessageUnread(index + 1);
|
|
300
310
|
if (message.type === 'system') {
|
|
301
311
|
return _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_reactNative.View, {
|
|
302
312
|
testID: "message-list-item-" + index,
|
|
303
313
|
__self: _this,
|
|
304
314
|
__source: {
|
|
305
315
|
fileName: _jsxFileName,
|
|
306
|
-
lineNumber:
|
|
316
|
+
lineNumber: 560,
|
|
307
317
|
columnNumber: 11
|
|
308
318
|
}
|
|
309
319
|
}, _react["default"].createElement(MessageSystem, {
|
|
@@ -312,14 +322,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
312
322
|
__self: _this,
|
|
313
323
|
__source: {
|
|
314
324
|
fileName: _jsxFileName,
|
|
315
|
-
lineNumber:
|
|
325
|
+
lineNumber: 561,
|
|
316
326
|
columnNumber: 13
|
|
317
327
|
}
|
|
318
328
|
})), insertInlineUnreadIndicator && _react["default"].createElement(InlineUnreadIndicator, {
|
|
319
329
|
__self: _this,
|
|
320
330
|
__source: {
|
|
321
331
|
fileName: _jsxFileName,
|
|
322
|
-
lineNumber:
|
|
332
|
+
lineNumber: 563,
|
|
323
333
|
columnNumber: 43
|
|
324
334
|
}
|
|
325
335
|
}));
|
|
@@ -330,7 +340,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
330
340
|
__self: _this,
|
|
331
341
|
__source: {
|
|
332
342
|
fileName: _jsxFileName,
|
|
333
|
-
lineNumber:
|
|
343
|
+
lineNumber: 573,
|
|
334
344
|
columnNumber: 36
|
|
335
345
|
}
|
|
336
346
|
}), _react["default"].createElement(_ThemeContext.ThemeProvider, {
|
|
@@ -338,7 +348,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
338
348
|
__self: _this,
|
|
339
349
|
__source: {
|
|
340
350
|
fileName: _jsxFileName,
|
|
341
|
-
lineNumber:
|
|
351
|
+
lineNumber: 574,
|
|
342
352
|
columnNumber: 9
|
|
343
353
|
}
|
|
344
354
|
}, _react["default"].createElement(_reactNative.View, {
|
|
@@ -346,7 +356,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
346
356
|
__self: _this,
|
|
347
357
|
__source: {
|
|
348
358
|
fileName: _jsxFileName,
|
|
349
|
-
lineNumber:
|
|
359
|
+
lineNumber: 575,
|
|
350
360
|
columnNumber: 11
|
|
351
361
|
}
|
|
352
362
|
}, _react["default"].createElement(Message, {
|
|
@@ -362,7 +372,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
362
372
|
__self: _this,
|
|
363
373
|
__source: {
|
|
364
374
|
fileName: _jsxFileName,
|
|
365
|
-
lineNumber:
|
|
375
|
+
lineNumber: 576,
|
|
366
376
|
columnNumber: 13
|
|
367
377
|
}
|
|
368
378
|
}))), !shouldApplyAndroidWorkaround && (0, _useMessageList.isMessageWithStylesReadByAndDateSeparator)(message) && message.dateSeparator && _react["default"].createElement(InlineDateSeparator, {
|
|
@@ -370,14 +380,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
370
380
|
__self: _this,
|
|
371
381
|
__source: {
|
|
372
382
|
fileName: _jsxFileName,
|
|
373
|
-
lineNumber:
|
|
383
|
+
lineNumber: 593,
|
|
374
384
|
columnNumber: 36
|
|
375
385
|
}
|
|
376
386
|
}), insertInlineUnreadIndicator && _react["default"].createElement(InlineUnreadIndicator, {
|
|
377
387
|
__self: _this,
|
|
378
388
|
__source: {
|
|
379
389
|
fileName: _jsxFileName,
|
|
380
|
-
lineNumber:
|
|
390
|
+
lineNumber: 595,
|
|
381
391
|
columnNumber: 41
|
|
382
392
|
}
|
|
383
393
|
})) : _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_reactNative.View, {
|
|
@@ -385,7 +395,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
385
395
|
__self: _this,
|
|
386
396
|
__source: {
|
|
387
397
|
fileName: _jsxFileName,
|
|
388
|
-
lineNumber:
|
|
398
|
+
lineNumber: 599,
|
|
389
399
|
columnNumber: 9
|
|
390
400
|
}
|
|
391
401
|
}, shouldApplyAndroidWorkaround && (0, _useMessageList.isMessageWithStylesReadByAndDateSeparator)(message) && message.dateSeparator && _react["default"].createElement(InlineDateSeparator, {
|
|
@@ -393,7 +403,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
393
403
|
__self: _this,
|
|
394
404
|
__source: {
|
|
395
405
|
fileName: _jsxFileName,
|
|
396
|
-
lineNumber:
|
|
406
|
+
lineNumber: 602,
|
|
397
407
|
columnNumber: 38
|
|
398
408
|
}
|
|
399
409
|
}), _react["default"].createElement(Message, {
|
|
@@ -409,7 +419,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
409
419
|
__self: _this,
|
|
410
420
|
__source: {
|
|
411
421
|
fileName: _jsxFileName,
|
|
412
|
-
lineNumber:
|
|
422
|
+
lineNumber: 603,
|
|
413
423
|
columnNumber: 11
|
|
414
424
|
}
|
|
415
425
|
})), !shouldApplyAndroidWorkaround && (0, _useMessageList.isMessageWithStylesReadByAndDateSeparator)(message) && message.dateSeparator && _react["default"].createElement(InlineDateSeparator, {
|
|
@@ -417,14 +427,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
417
427
|
__self: _this,
|
|
418
428
|
__source: {
|
|
419
429
|
fileName: _jsxFileName,
|
|
420
|
-
lineNumber:
|
|
430
|
+
lineNumber: 623,
|
|
421
431
|
columnNumber: 36
|
|
422
432
|
}
|
|
423
433
|
}), insertInlineUnreadIndicator && _react["default"].createElement(InlineUnreadIndicator, {
|
|
424
434
|
__self: _this,
|
|
425
435
|
__source: {
|
|
426
436
|
fileName: _jsxFileName,
|
|
427
|
-
lineNumber:
|
|
437
|
+
lineNumber: 625,
|
|
428
438
|
columnNumber: 41
|
|
429
439
|
}
|
|
430
440
|
}));
|
|
@@ -536,7 +546,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
536
546
|
if (isScrollAtEnd) {
|
|
537
547
|
maybeCallOnEndReached();
|
|
538
548
|
}
|
|
539
|
-
var isScrollAtBottom = offset <=
|
|
549
|
+
var isScrollAtBottom = offset <= 150;
|
|
540
550
|
var showScrollToBottomButton = !isScrollAtBottom || !hasNoMoreRecentMessagesToLoad;
|
|
541
551
|
var shouldMarkRead = !threadList && offset <= 0 && hasNoMoreRecentMessagesToLoad && channel.countUnread() > 0;
|
|
542
552
|
if (shouldMarkRead) {
|
|
@@ -623,16 +633,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
623
633
|
resetPaginationTrackersRef.current();
|
|
624
634
|
}, [messageList]);
|
|
625
635
|
(0, _react.useEffect)(function () {
|
|
626
|
-
if (scrollToDebounceTimeoutRef.current) clearTimeout(scrollToDebounceTimeoutRef.current);
|
|
627
636
|
scrollToDebounceTimeoutRef.current = setTimeout(function () {
|
|
628
|
-
|
|
637
|
+
if (initialScrollToFirstUnreadMessage) {
|
|
638
|
+
initialScrollSettingTimeoutRef.current = setTimeout(function () {
|
|
639
|
+
setInitialScrollDone(true);
|
|
640
|
+
}, 500);
|
|
641
|
+
}
|
|
629
642
|
var messageIdToScroll = messageIdToScrollToRef.current;
|
|
630
|
-
|
|
631
|
-
if (!initialScrollSet.current && initialScrollToFirstUnreadMessage && countUnread > scrollToFirstUnreadThreshold) {
|
|
632
|
-
if (messageList.length >= countUnread) {
|
|
633
|
-
messageIdToScroll = messageList[countUnread - 1].id;
|
|
634
|
-
}
|
|
635
|
-
} else if (targetedMessage && messageIdLastScrolledToRef.current !== targetedMessage) {
|
|
643
|
+
if (targetedMessage && messageIdLastScrolledToRef.current !== targetedMessage) {
|
|
636
644
|
messageIdToScroll = targetedMessage;
|
|
637
645
|
}
|
|
638
646
|
if (!messageIdToScroll) return;
|
|
@@ -647,14 +655,13 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
647
655
|
});
|
|
648
656
|
messageIdToScrollToRef.current = undefined;
|
|
649
657
|
messageIdLastScrolledToRef.current = messageIdToScroll;
|
|
650
|
-
if (!initialScrollSet.current && initialScrollToFirstUnreadMessage) {
|
|
651
|
-
initialScrollSet.current = true;
|
|
652
|
-
} else {
|
|
653
|
-
setTargetedMessage(messageIdToScroll);
|
|
654
|
-
}
|
|
655
658
|
}
|
|
656
659
|
}, 150);
|
|
657
|
-
|
|
660
|
+
return function () {
|
|
661
|
+
clearTimeout(scrollToDebounceTimeoutRef.current);
|
|
662
|
+
clearTimeout(initialScrollSettingTimeoutRef.current);
|
|
663
|
+
};
|
|
664
|
+
}, [targetedMessage, initialScrollToFirstUnreadMessage, messageList]);
|
|
658
665
|
var messagesWithImages = legacyImageViewerSwipeBehaviour && messageList.filter(function (message) {
|
|
659
666
|
var isMessageTypeDeleted = message.type === 'deleted';
|
|
660
667
|
if (!isMessageTypeDeleted && message.attachments) {
|
|
@@ -718,7 +725,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
718
725
|
__self: _this,
|
|
719
726
|
__source: {
|
|
720
727
|
fileName: _jsxFileName,
|
|
721
|
-
lineNumber:
|
|
728
|
+
lineNumber: 971,
|
|
722
729
|
columnNumber: 7
|
|
723
730
|
}
|
|
724
731
|
}, _react["default"].createElement(EmptyStateIndicator, {
|
|
@@ -726,7 +733,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
726
733
|
__self: _this,
|
|
727
734
|
__source: {
|
|
728
735
|
fileName: _jsxFileName,
|
|
729
|
-
lineNumber:
|
|
736
|
+
lineNumber: 975,
|
|
730
737
|
columnNumber: 9
|
|
731
738
|
}
|
|
732
739
|
}));
|
|
@@ -737,14 +744,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
737
744
|
__self: _this,
|
|
738
745
|
__source: {
|
|
739
746
|
fileName: _jsxFileName,
|
|
740
|
-
lineNumber:
|
|
747
|
+
lineNumber: 983,
|
|
741
748
|
columnNumber: 7
|
|
742
749
|
}
|
|
743
750
|
}, _react["default"].createElement(FooterComponent, {
|
|
744
751
|
__self: _this,
|
|
745
752
|
__source: {
|
|
746
753
|
fileName: _jsxFileName,
|
|
747
|
-
lineNumber:
|
|
754
|
+
lineNumber: 984,
|
|
748
755
|
columnNumber: 9
|
|
749
756
|
}
|
|
750
757
|
}));
|
|
@@ -755,14 +762,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
755
762
|
__self: _this,
|
|
756
763
|
__source: {
|
|
757
764
|
fileName: _jsxFileName,
|
|
758
|
-
lineNumber:
|
|
765
|
+
lineNumber: 992,
|
|
759
766
|
columnNumber: 7
|
|
760
767
|
}
|
|
761
768
|
}, _react["default"].createElement(HeaderComponent, {
|
|
762
769
|
__self: _this,
|
|
763
770
|
__source: {
|
|
764
771
|
fileName: _jsxFileName,
|
|
765
|
-
lineNumber:
|
|
772
|
+
lineNumber: 993,
|
|
766
773
|
columnNumber: 9
|
|
767
774
|
}
|
|
768
775
|
}));
|
|
@@ -774,7 +781,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
774
781
|
__self: _this,
|
|
775
782
|
__source: {
|
|
776
783
|
fileName: _jsxFileName,
|
|
777
|
-
lineNumber:
|
|
784
|
+
lineNumber: 1003,
|
|
778
785
|
columnNumber: 7
|
|
779
786
|
}
|
|
780
787
|
}, _react["default"].createElement(LoadingIndicator, {
|
|
@@ -782,7 +789,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
782
789
|
__self: _this,
|
|
783
790
|
__source: {
|
|
784
791
|
fileName: _jsxFileName,
|
|
785
|
-
lineNumber:
|
|
792
|
+
lineNumber: 1004,
|
|
786
793
|
columnNumber: 9
|
|
787
794
|
}
|
|
788
795
|
}));
|
|
@@ -794,7 +801,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
794
801
|
__self: _this,
|
|
795
802
|
__source: {
|
|
796
803
|
fileName: _jsxFileName,
|
|
797
|
-
lineNumber:
|
|
804
|
+
lineNumber: 1011,
|
|
798
805
|
columnNumber: 30
|
|
799
806
|
}
|
|
800
807
|
});
|
|
@@ -803,7 +810,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
803
810
|
__self: _this,
|
|
804
811
|
__source: {
|
|
805
812
|
fileName: _jsxFileName,
|
|
806
|
-
lineNumber:
|
|
813
|
+
lineNumber: 1012,
|
|
807
814
|
columnNumber: 46
|
|
808
815
|
}
|
|
809
816
|
});
|
|
@@ -824,7 +831,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
824
831
|
__self: _this,
|
|
825
832
|
__source: {
|
|
826
833
|
fileName: _jsxFileName,
|
|
827
|
-
lineNumber:
|
|
834
|
+
lineNumber: 1028,
|
|
828
835
|
columnNumber: 5
|
|
829
836
|
}
|
|
830
837
|
}, _react["default"].createElement(FlatList, (0, _extends2["default"])({
|
|
@@ -860,7 +867,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
860
867
|
__self: _this,
|
|
861
868
|
__source: {
|
|
862
869
|
fileName: _jsxFileName,
|
|
863
|
-
lineNumber:
|
|
870
|
+
lineNumber: 1032,
|
|
864
871
|
columnNumber: 7
|
|
865
872
|
}
|
|
866
873
|
})), !loading && _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_reactNative.View, {
|
|
@@ -868,28 +875,28 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
868
875
|
__self: _this,
|
|
869
876
|
__source: {
|
|
870
877
|
fileName: _jsxFileName,
|
|
871
|
-
lineNumber:
|
|
878
|
+
lineNumber: 1077,
|
|
872
879
|
columnNumber: 11
|
|
873
880
|
}
|
|
874
881
|
}, _react["default"].createElement(StickyHeaderComponent, {
|
|
875
882
|
__self: _this,
|
|
876
883
|
__source: {
|
|
877
884
|
fileName: _jsxFileName,
|
|
878
|
-
lineNumber:
|
|
885
|
+
lineNumber: 1078,
|
|
879
886
|
columnNumber: 13
|
|
880
887
|
}
|
|
881
888
|
})), !disableTypingIndicator && TypingIndicator && _react["default"].createElement(TypingIndicatorContainer, {
|
|
882
889
|
__self: _this,
|
|
883
890
|
__source: {
|
|
884
891
|
fileName: _jsxFileName,
|
|
885
|
-
lineNumber:
|
|
892
|
+
lineNumber: 1081,
|
|
886
893
|
columnNumber: 13
|
|
887
894
|
}
|
|
888
895
|
}, _react["default"].createElement(TypingIndicator, {
|
|
889
896
|
__self: _this,
|
|
890
897
|
__source: {
|
|
891
898
|
fileName: _jsxFileName,
|
|
892
|
-
lineNumber:
|
|
899
|
+
lineNumber: 1082,
|
|
893
900
|
columnNumber: 15
|
|
894
901
|
}
|
|
895
902
|
})), _react["default"].createElement(ScrollToBottomButton, {
|
|
@@ -899,14 +906,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
899
906
|
__self: _this,
|
|
900
907
|
__source: {
|
|
901
908
|
fileName: _jsxFileName,
|
|
902
|
-
lineNumber:
|
|
909
|
+
lineNumber: 1085,
|
|
903
910
|
columnNumber: 11
|
|
904
911
|
}
|
|
905
912
|
})), _react["default"].createElement(NetworkDownIndicator, {
|
|
906
913
|
__self: _this,
|
|
907
914
|
__source: {
|
|
908
915
|
fileName: _jsxFileName,
|
|
909
|
-
lineNumber:
|
|
916
|
+
lineNumber: 1092,
|
|
910
917
|
columnNumber: 7
|
|
911
918
|
}
|
|
912
919
|
}));
|
|
@@ -1013,7 +1020,7 @@ var MessageList = function MessageList(props) {
|
|
|
1013
1020
|
__self: _this,
|
|
1014
1021
|
__source: {
|
|
1015
1022
|
fileName: _jsxFileName,
|
|
1016
|
-
lineNumber:
|
|
1023
|
+
lineNumber: 1150,
|
|
1017
1024
|
columnNumber: 5
|
|
1018
1025
|
}
|
|
1019
1026
|
}));
|