stream-chat-react-native-core 4.13.0-beta.2 → 4.13.1-beta.1
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/ChannelList/hooks/listeners/useNewMessage.js +16 -4
- package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
- package/lib/commonjs/mock-builders/event/messageNew.js +2 -0
- package/lib/commonjs/mock-builders/event/messageNew.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js +16 -4
- package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
- package/lib/module/mock-builders/event/messageNew.js +2 -0
- package/lib/module/mock-builders/event/messageNew.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/package.json +2 -2
- package/src/components/ChannelList/__tests__/ChannelList.test.js +28 -0
- package/src/components/ChannelList/hooks/listeners/useNewMessage.ts +19 -5
- package/src/mock-builders/event/messageNew.js +2 -0
- package/src/version.json +1 -1
|
@@ -23,11 +23,23 @@ var useNewMessage = function useNewMessage(_ref) {
|
|
|
23
23
|
(0, _react.useEffect)(function () {
|
|
24
24
|
var handleEvent = function handleEvent(event) {
|
|
25
25
|
setChannels(function (channels) {
|
|
26
|
-
if (!lockChannelOrder && event.cid) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
cid: event.cid
|
|
26
|
+
if (!lockChannelOrder && event.cid && event.channel_type && event.channel_id) {
|
|
27
|
+
var targetChannelIndex = channels.findIndex(function (c) {
|
|
28
|
+
return c.cid === event.cid;
|
|
30
29
|
});
|
|
30
|
+
|
|
31
|
+
if (targetChannelIndex >= 0) {
|
|
32
|
+
return (0, _utils.moveChannelUp)({
|
|
33
|
+
channels: channels,
|
|
34
|
+
cid: event.cid
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
var channel = client.channel(event.channel_type, event.channel_id);
|
|
39
|
+
|
|
40
|
+
if (channel.initialized) {
|
|
41
|
+
return [channel].concat((0, _toConsumableArray2["default"])(channels));
|
|
42
|
+
}
|
|
31
43
|
}
|
|
32
44
|
|
|
33
45
|
return (0, _toConsumableArray2["default"])(channels);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useNewMessage.ts"],"names":["useNewMessage","lockChannelOrder","setChannels","client","handleEvent","event","channels","cid","on","off"],"mappings":";;;;;;;;;AAAA;;AAIA;;AAGA;;AAQO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,OAKS;AAAA,MAFpCC,gBAEoC,QAFpCA,gBAEoC;AAAA,MADpCC,WACoC,QADpCA,WACoC;;AACpC,wBAAmB,kCAAnB;AAAA,MAAQC,MAAR,mBAAQA,MAAR;;AAEA,wBAAU,YAAM;AACd,QAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD,EAAsC;AACxDH,MAAAA,WAAW,CAAC,UAACI,QAAD,EAAc;AACxB,YAAI,CAACL,gBAAD,IAAqBI,KAAK,CAACE,
|
|
1
|
+
{"version":3,"sources":["useNewMessage.ts"],"names":["useNewMessage","lockChannelOrder","setChannels","client","handleEvent","event","channels","cid","channel_type","channel_id","targetChannelIndex","findIndex","c","channel","initialized","on","off"],"mappings":";;;;;;;;;AAAA;;AAIA;;AAGA;;AAQO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,OAKS;AAAA,MAFpCC,gBAEoC,QAFpCA,gBAEoC;AAAA,MADpCC,WACoC,QADpCA,WACoC;;AACpC,wBAAmB,kCAAnB;AAAA,MAAQC,MAAR,mBAAQA,MAAR;;AAEA,wBAAU,YAAM;AACd,QAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD,EAAsC;AACxDH,MAAAA,WAAW,CAAC,UAACI,QAAD,EAAc;AACxB,YAAI,CAACL,gBAAD,IAAqBI,KAAK,CAACE,GAA3B,IAAkCF,KAAK,CAACG,YAAxC,IAAwDH,KAAK,CAACI,UAAlE,EAA8E;AAC5E,cAAMC,kBAAkB,GAAGJ,QAAQ,CAACK,SAAT,CAAmB,UAACC,CAAD;AAAA,mBAAOA,CAAC,CAACL,GAAF,KAAUF,KAAK,CAACE,GAAvB;AAAA,WAAnB,CAA3B;;AAEA,cAAIG,kBAAkB,IAAI,CAA1B,EAA6B;AAC3B,mBAAO,0BAAkC;AACvCJ,cAAAA,QAAQ,EAARA,QADuC;AAEvCC,cAAAA,GAAG,EAAEF,KAAK,CAACE;AAF4B,aAAlC,CAAP;AAID;;AAKD,cAAMM,OAAO,GAAGV,MAAM,CAACU,OAAP,CAAeR,KAAK,CAACG,YAArB,EAAmCH,KAAK,CAACI,UAAzC,CAAhB;;AAEA,cAAII,OAAO,CAACC,WAAZ,EAAyB;AACvB,oBAAQD,OAAR,6CAAoBP,QAApB;AACD;AACF;;AAED,mDAAWA,QAAX;AACD,OAtBU,CAAX;AAuBD,KAxBD;;AA0BAH,IAAAA,MAAM,CAACY,EAAP,CAAU,aAAV,EAAyBX,WAAzB;AACA,WAAO;AAAA,aAAMD,MAAM,CAACa,GAAP,CAAW,aAAX,EAA0BZ,WAA1B,CAAN;AAAA,KAAP;AACD,GA7BD,EA6BG,EA7BH;AA8BD,CAtCM","sourcesContent":["import { useEffect } from 'react';\n\nimport type { Channel, Event } from 'stream-chat';\n\nimport { useChatContext } from '../../../../contexts/chatContext/ChatContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport { moveChannelUp } from '../../utils';\n\ntype Parameters<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n {\n lockChannelOrder: boolean;\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[]>>;\n };\n\nexport const useNewMessage = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n lockChannelOrder,\n setChannels,\n}: Parameters<StreamChatGenerics>) => {\n const { client } = useChatContext<StreamChatGenerics>();\n\n useEffect(() => {\n const handleEvent = (event: Event<StreamChatGenerics>) => {\n setChannels((channels) => {\n if (!lockChannelOrder && event.cid && event.channel_type && event.channel_id) {\n const targetChannelIndex = channels.findIndex((c) => c.cid === event.cid);\n\n if (targetChannelIndex >= 0) {\n return moveChannelUp<StreamChatGenerics>({\n channels,\n cid: event.cid,\n });\n }\n\n // If channel doesn't exist in existing list, check in activeChannels as well.\n // It may happen that channel was hidden using channel.hide(). In that case\n // We remove it from `channels` state, but its still being watched and exists in client.activeChannels.\n const channel = client.channel(event.channel_type, event.channel_id);\n\n if (channel.initialized) {\n return [channel, ...channels];\n }\n }\n\n return [...channels];\n });\n };\n\n client.on('message.new', handleEvent);\n return () => client.off('message.new', handleEvent);\n }, []);\n};\n"]}
|
|
@@ -7,6 +7,8 @@ var _default = function _default(client, newMessage) {
|
|
|
7
7
|
var channel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
8
8
|
client.dispatchEvent({
|
|
9
9
|
channel: channel,
|
|
10
|
+
channel_id: channel.id,
|
|
11
|
+
channel_type: channel.type,
|
|
10
12
|
cid: channel.cid,
|
|
11
13
|
message: newMessage,
|
|
12
14
|
type: 'message.new'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["messageNew.js"],"names":["client","newMessage","channel","dispatchEvent","
|
|
1
|
+
{"version":3,"sources":["messageNew.js"],"names":["client","newMessage","channel","dispatchEvent","channel_id","id","channel_type","type","cid","message"],"mappings":";;;;;eAAe,kBAACA,MAAD,EAASC,UAAT,EAAsC;AAAA,MAAjBC,OAAiB,uEAAP,EAAO;AACnDF,EAAAA,MAAM,CAACG,aAAP,CAAqB;AACnBD,IAAAA,OAAO,EAAPA,OADmB;AAEnBE,IAAAA,UAAU,EAAEF,OAAO,CAACG,EAFD;AAGnBC,IAAAA,YAAY,EAAEJ,OAAO,CAACK,IAHH;AAInBC,IAAAA,GAAG,EAAEN,OAAO,CAACM,GAJM;AAKnBC,IAAAA,OAAO,EAAER,UALU;AAMnBM,IAAAA,IAAI,EAAE;AANa,GAArB;AAQD,C","sourcesContent":["export default (client, newMessage, channel = {}) => {\n client.dispatchEvent({\n channel,\n channel_id: channel.id,\n channel_type: channel.type,\n cid: channel.cid,\n message: newMessage,\n type: 'message.new',\n });\n};\n"]}
|
|
@@ -23,11 +23,23 @@ var useNewMessage = function useNewMessage(_ref) {
|
|
|
23
23
|
(0, _react.useEffect)(function () {
|
|
24
24
|
var handleEvent = function handleEvent(event) {
|
|
25
25
|
setChannels(function (channels) {
|
|
26
|
-
if (!lockChannelOrder && event.cid) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
cid: event.cid
|
|
26
|
+
if (!lockChannelOrder && event.cid && event.channel_type && event.channel_id) {
|
|
27
|
+
var targetChannelIndex = channels.findIndex(function (c) {
|
|
28
|
+
return c.cid === event.cid;
|
|
30
29
|
});
|
|
30
|
+
|
|
31
|
+
if (targetChannelIndex >= 0) {
|
|
32
|
+
return (0, _utils.moveChannelUp)({
|
|
33
|
+
channels: channels,
|
|
34
|
+
cid: event.cid
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
var channel = client.channel(event.channel_type, event.channel_id);
|
|
39
|
+
|
|
40
|
+
if (channel.initialized) {
|
|
41
|
+
return [channel].concat((0, _toConsumableArray2["default"])(channels));
|
|
42
|
+
}
|
|
31
43
|
}
|
|
32
44
|
|
|
33
45
|
return (0, _toConsumableArray2["default"])(channels);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useNewMessage.ts"],"names":["useNewMessage","lockChannelOrder","setChannels","client","handleEvent","event","channels","cid","on","off"],"mappings":";;;;;;;;;AAAA;;AAIA;;AAGA;;AAQO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,OAKS;AAAA,MAFpCC,gBAEoC,QAFpCA,gBAEoC;AAAA,MADpCC,WACoC,QADpCA,WACoC;;AACpC,wBAAmB,kCAAnB;AAAA,MAAQC,MAAR,mBAAQA,MAAR;;AAEA,wBAAU,YAAM;AACd,QAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD,EAAsC;AACxDH,MAAAA,WAAW,CAAC,UAACI,QAAD,EAAc;AACxB,YAAI,CAACL,gBAAD,IAAqBI,KAAK,CAACE,
|
|
1
|
+
{"version":3,"sources":["useNewMessage.ts"],"names":["useNewMessage","lockChannelOrder","setChannels","client","handleEvent","event","channels","cid","channel_type","channel_id","targetChannelIndex","findIndex","c","channel","initialized","on","off"],"mappings":";;;;;;;;;AAAA;;AAIA;;AAGA;;AAQO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,OAKS;AAAA,MAFpCC,gBAEoC,QAFpCA,gBAEoC;AAAA,MADpCC,WACoC,QADpCA,WACoC;;AACpC,wBAAmB,kCAAnB;AAAA,MAAQC,MAAR,mBAAQA,MAAR;;AAEA,wBAAU,YAAM;AACd,QAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD,EAAsC;AACxDH,MAAAA,WAAW,CAAC,UAACI,QAAD,EAAc;AACxB,YAAI,CAACL,gBAAD,IAAqBI,KAAK,CAACE,GAA3B,IAAkCF,KAAK,CAACG,YAAxC,IAAwDH,KAAK,CAACI,UAAlE,EAA8E;AAC5E,cAAMC,kBAAkB,GAAGJ,QAAQ,CAACK,SAAT,CAAmB,UAACC,CAAD;AAAA,mBAAOA,CAAC,CAACL,GAAF,KAAUF,KAAK,CAACE,GAAvB;AAAA,WAAnB,CAA3B;;AAEA,cAAIG,kBAAkB,IAAI,CAA1B,EAA6B;AAC3B,mBAAO,0BAAkC;AACvCJ,cAAAA,QAAQ,EAARA,QADuC;AAEvCC,cAAAA,GAAG,EAAEF,KAAK,CAACE;AAF4B,aAAlC,CAAP;AAID;;AAKD,cAAMM,OAAO,GAAGV,MAAM,CAACU,OAAP,CAAeR,KAAK,CAACG,YAArB,EAAmCH,KAAK,CAACI,UAAzC,CAAhB;;AAEA,cAAII,OAAO,CAACC,WAAZ,EAAyB;AACvB,oBAAQD,OAAR,6CAAoBP,QAApB;AACD;AACF;;AAED,mDAAWA,QAAX;AACD,OAtBU,CAAX;AAuBD,KAxBD;;AA0BAH,IAAAA,MAAM,CAACY,EAAP,CAAU,aAAV,EAAyBX,WAAzB;AACA,WAAO;AAAA,aAAMD,MAAM,CAACa,GAAP,CAAW,aAAX,EAA0BZ,WAA1B,CAAN;AAAA,KAAP;AACD,GA7BD,EA6BG,EA7BH;AA8BD,CAtCM","sourcesContent":["import { useEffect } from 'react';\n\nimport type { Channel, Event } from 'stream-chat';\n\nimport { useChatContext } from '../../../../contexts/chatContext/ChatContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport { moveChannelUp } from '../../utils';\n\ntype Parameters<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n {\n lockChannelOrder: boolean;\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[]>>;\n };\n\nexport const useNewMessage = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n lockChannelOrder,\n setChannels,\n}: Parameters<StreamChatGenerics>) => {\n const { client } = useChatContext<StreamChatGenerics>();\n\n useEffect(() => {\n const handleEvent = (event: Event<StreamChatGenerics>) => {\n setChannels((channels) => {\n if (!lockChannelOrder && event.cid && event.channel_type && event.channel_id) {\n const targetChannelIndex = channels.findIndex((c) => c.cid === event.cid);\n\n if (targetChannelIndex >= 0) {\n return moveChannelUp<StreamChatGenerics>({\n channels,\n cid: event.cid,\n });\n }\n\n // If channel doesn't exist in existing list, check in activeChannels as well.\n // It may happen that channel was hidden using channel.hide(). In that case\n // We remove it from `channels` state, but its still being watched and exists in client.activeChannels.\n const channel = client.channel(event.channel_type, event.channel_id);\n\n if (channel.initialized) {\n return [channel, ...channels];\n }\n }\n\n return [...channels];\n });\n };\n\n client.on('message.new', handleEvent);\n return () => client.off('message.new', handleEvent);\n }, []);\n};\n"]}
|
|
@@ -7,6 +7,8 @@ var _default = function _default(client, newMessage) {
|
|
|
7
7
|
var channel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
8
8
|
client.dispatchEvent({
|
|
9
9
|
channel: channel,
|
|
10
|
+
channel_id: channel.id,
|
|
11
|
+
channel_type: channel.type,
|
|
10
12
|
cid: channel.cid,
|
|
11
13
|
message: newMessage,
|
|
12
14
|
type: 'message.new'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["messageNew.js"],"names":["client","newMessage","channel","dispatchEvent","
|
|
1
|
+
{"version":3,"sources":["messageNew.js"],"names":["client","newMessage","channel","dispatchEvent","channel_id","id","channel_type","type","cid","message"],"mappings":";;;;;eAAe,kBAACA,MAAD,EAASC,UAAT,EAAsC;AAAA,MAAjBC,OAAiB,uEAAP,EAAO;AACnDF,EAAAA,MAAM,CAACG,aAAP,CAAqB;AACnBD,IAAAA,OAAO,EAAPA,OADmB;AAEnBE,IAAAA,UAAU,EAAEF,OAAO,CAACG,EAFD;AAGnBC,IAAAA,YAAY,EAAEJ,OAAO,CAACK,IAHH;AAInBC,IAAAA,GAAG,EAAEN,OAAO,CAACM,GAJM;AAKnBC,IAAAA,OAAO,EAAER,UALU;AAMnBM,IAAAA,IAAI,EAAE;AANa,GAArB;AAQD,C","sourcesContent":["export default (client, newMessage, channel = {}) => {\n client.dispatchEvent({\n channel,\n channel_id: channel.id,\n channel_type: channel.type,\n cid: channel.cid,\n message: newMessage,\n type: 'message.new',\n });\n};\n"]}
|
package/lib/module/version.json
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stream-chat-react-native-core",
|
|
3
3
|
"description": "The official React Native and Expo components for Stream Chat, a service for building chat applications",
|
|
4
|
-
"version": "4.13.
|
|
4
|
+
"version": "4.13.1-beta.1",
|
|
5
5
|
"author": {
|
|
6
6
|
"company": "Stream.io Inc",
|
|
7
7
|
"name": "Stream.io Inc"
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"mime-types": "^2.1.34",
|
|
79
79
|
"path": "0.12.7",
|
|
80
80
|
"react-art": "^17.0.2",
|
|
81
|
-
"react-native-markdown-package": "1.8.
|
|
81
|
+
"react-native-markdown-package": "1.8.2",
|
|
82
82
|
"react-native-url-polyfill": "^1.3.0",
|
|
83
83
|
"stream-chat": "6.7.0"
|
|
84
84
|
},
|
|
@@ -246,6 +246,34 @@ describe('ChannelList', () => {
|
|
|
246
246
|
});
|
|
247
247
|
});
|
|
248
248
|
|
|
249
|
+
it('should add channel to top if channel is hidden from the list', async () => {
|
|
250
|
+
const { getAllByRole, getByTestId, getByText } = render(
|
|
251
|
+
<Chat client={chatClient}>
|
|
252
|
+
<ChannelList {...props} />
|
|
253
|
+
</Chat>,
|
|
254
|
+
);
|
|
255
|
+
|
|
256
|
+
await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
|
|
257
|
+
act(() => dispatchChannelHiddenEvent(chatClient, testChannel3.channel));
|
|
258
|
+
|
|
259
|
+
const newItems = getAllByRole('list-item');
|
|
260
|
+
await waitFor(() => {
|
|
261
|
+
expect(newItems).toHaveLength(2);
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
const newMessage = sendNewMessageOnChannel3();
|
|
265
|
+
|
|
266
|
+
await waitFor(() => {
|
|
267
|
+
expect(getByText(newMessage.text)).toBeTruthy();
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
const items = getAllByRole('list-item');
|
|
271
|
+
|
|
272
|
+
await waitFor(() => {
|
|
273
|
+
expect(within(items[0]).getByText(newMessage.text)).toBeTruthy();
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
|
|
249
277
|
it('should not alter order if `lockChannelOrder` prop is true', async () => {
|
|
250
278
|
const { getAllByRole, getByTestId, getByText } = render(
|
|
251
279
|
<Chat client={chatClient}>
|
|
@@ -24,12 +24,26 @@ export const useNewMessage = <
|
|
|
24
24
|
useEffect(() => {
|
|
25
25
|
const handleEvent = (event: Event<StreamChatGenerics>) => {
|
|
26
26
|
setChannels((channels) => {
|
|
27
|
-
if (!lockChannelOrder && event.cid) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
if (!lockChannelOrder && event.cid && event.channel_type && event.channel_id) {
|
|
28
|
+
const targetChannelIndex = channels.findIndex((c) => c.cid === event.cid);
|
|
29
|
+
|
|
30
|
+
if (targetChannelIndex >= 0) {
|
|
31
|
+
return moveChannelUp<StreamChatGenerics>({
|
|
32
|
+
channels,
|
|
33
|
+
cid: event.cid,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// If channel doesn't exist in existing list, check in activeChannels as well.
|
|
38
|
+
// It may happen that channel was hidden using channel.hide(). In that case
|
|
39
|
+
// We remove it from `channels` state, but its still being watched and exists in client.activeChannels.
|
|
40
|
+
const channel = client.channel(event.channel_type, event.channel_id);
|
|
41
|
+
|
|
42
|
+
if (channel.initialized) {
|
|
43
|
+
return [channel, ...channels];
|
|
44
|
+
}
|
|
32
45
|
}
|
|
46
|
+
|
|
33
47
|
return [...channels];
|
|
34
48
|
});
|
|
35
49
|
};
|
package/src/version.json
CHANGED