@sendbird/uikit-chat-hooks 1.0.0 → 1.1.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/channel/useGroupChannelListWithCollection.js +1 -1
- package/lib/commonjs/channel/useGroupChannelListWithCollection.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelListWithQuery.js +1 -1
- package/lib/commonjs/channel/useGroupChannelListWithQuery.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +1 -2
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
- package/lib/commonjs/common/useAppFeatures.js +8 -28
- package/lib/commonjs/common/useAppFeatures.js.map +1 -1
- package/lib/commonjs/handler/useChannelHandler.js +16 -5
- package/lib/commonjs/handler/useChannelHandler.js.map +1 -1
- package/lib/module/channel/useGroupChannelListWithCollection.js +1 -1
- package/lib/module/channel/useGroupChannelListWithCollection.js.map +1 -1
- package/lib/module/channel/useGroupChannelListWithQuery.js +1 -1
- package/lib/module/channel/useGroupChannelListWithQuery.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +1 -2
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +1 -1
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
- package/lib/module/common/useAppFeatures.js +8 -27
- package/lib/module/common/useAppFeatures.js.map +1 -1
- package/lib/module/handler/useChannelHandler.js +17 -6
- package/lib/module/handler/useChannelHandler.js.map +1 -1
- package/lib/typescript/src/handler/useChannelHandler.d.ts +1 -2
- package/package.json +4 -4
- package/src/channel/useGroupChannelListWithCollection.ts +6 -11
- package/src/channel/useGroupChannelListWithQuery.ts +17 -22
- package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +11 -17
- package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +46 -51
- package/src/common/useAppFeatures.ts +5 -22
- package/src/handler/useChannelHandler.ts +11 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useMemo","useRef","useState","arrayToMap","useAsyncEffect","useAppFeatures","useChannelHandler","HOOK_NAME","createGroupChannelListQuery","sdk","queryCreator","passedQuery","defaultQuery","GroupChannel","createMyGroupChannelListQuery","limit","useGroupChannelListWithQuery","userId","options","deliveryReceiptEnabled","queryRef","loading","setLoading","refreshing","setRefreshing","groupChannelMap","setGroupChannelMap","groupChannels","channels","Object","values","sortComparator","sort","updateChannels","clearPrev","filter","c","isGroupChannel","prev","forEach","channel","markAsDelivered","url","deleteChannels","channelUrls","draft","init","uid","current","hasNext","next","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelMemberCountChanged","onChannelDeleted","onUserJoined","onUserLeft","user","isMe","onUserBanned","refresh","update"],"sources":["useGroupChannelListWithQuery.ts"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react';\nimport type Sendbird from 'sendbird';\n\nimport type { SendbirdChannel, SendbirdChatSDK, SendbirdGroupChannel } from '@sendbird/uikit-utils';\nimport { arrayToMap, useAsyncEffect } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../common/useAppFeatures';\nimport { useChannelHandler } from '../handler/useChannelHandler';\nimport type { UseGroupChannelList, UseGroupChannelListOptions } from '../types';\n\ntype GroupChannelMap = Record<string, SendbirdGroupChannel>;\n\nconst HOOK_NAME = 'useGroupChannelListWithQuery';\nconst createGroupChannelListQuery = (\n sdk: SendbirdChatSDK,\n queryCreator: UseGroupChannelListOptions['queryCreator'],\n) => {\n const passedQuery = queryCreator?.();\n if (passedQuery) return passedQuery;\n\n const defaultQuery = sdk.GroupChannel.createMyGroupChannelListQuery();\n defaultQuery.limit = 20;\n return defaultQuery;\n};\n\nexport const useGroupChannelListWithQuery: UseGroupChannelList = (sdk, userId, options) => {\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n const queryRef = useRef<Sendbird.GroupChannelListQuery>();\n const [loading, setLoading] = useState(false);\n const [refreshing, setRefreshing] = useState(false);\n\n const [groupChannelMap, setGroupChannelMap] = useState<GroupChannelMap>({});\n const groupChannels = useMemo(() => {\n const channels = Object.values(groupChannelMap);\n if (options?.sortComparator) return channels.sort(options?.sortComparator);\n return channels;\n }, [groupChannelMap, options?.sortComparator]);\n\n // ---------- internal methods ---------- //\n const updateChannels = (channels: SendbirdChannel[], clearPrev: boolean) => {\n const groupChannels = channels.filter((c): c is SendbirdGroupChannel => c.isGroupChannel());\n if (clearPrev) setGroupChannelMap(arrayToMap(groupChannels, 'url'));\n else setGroupChannelMap((prev) => ({ ...prev, ...arrayToMap(groupChannels, 'url') }));\n\n if (deliveryReceiptEnabled) groupChannels.forEach((channel) => sdk.markAsDelivered(channel.url));\n };\n const deleteChannels = (channelUrls: string[]) => {\n setGroupChannelMap(({ ...draft }) => {\n channelUrls.forEach((url) => delete draft[url]);\n return draft;\n });\n };\n const init = useCallback(\n async (uid?: string) => {\n if (uid) {\n queryRef.current = createGroupChannelListQuery(sdk, options?.queryCreator);\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n updateChannels(channels, true);\n }\n }\n },\n [sdk, options?.queryCreator],\n );\n // ---------- internal methods ends ---------- //\n\n // ---------- internal hooks ---------- //\n useAsyncEffect(async () => {\n setLoading(true);\n await init(userId);\n setLoading(false);\n }, [init, userId]);\n\n useChannelHandler(\n sdk,\n HOOK_NAME,\n {\n onChannelChanged: (channel) => updateChannels([channel], false),\n onChannelFrozen: (channel) => updateChannels([channel], false),\n onChannelUnfrozen: (channel) => updateChannels([channel], false),\n onChannelMemberCountChanged: (channels) => updateChannels(channels, false),\n onChannelDeleted: (url) => deleteChannels([url]),\n onUserJoined: (channel) => updateChannels([channel], false),\n onUserLeft: (channel, user) => {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannels([channel], false);\n },\n onUserBanned(channel, user) {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannels([channel], false);\n },\n },\n [sdk, userId],\n );\n // ---------- internal hooks ends ---------- //\n\n // ---------- returns methods ---------- //\n const refresh = useCallback(async () => {\n setRefreshing(true);\n await init(userId);\n setRefreshing(false);\n }, [init, userId]);\n\n const update = useCallback(\n (channel: SendbirdGroupChannel) => {\n if (deliveryReceiptEnabled) sdk.markAsDelivered(channel.url);\n setGroupChannelMap((prev) => ({ ...prev, [channel.url]: channel }));\n },\n [sdk],\n );\n\n const next = useCallback(async () => {\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n setGroupChannelMap((prev) => ({ ...prev, ...arrayToMap(channels, 'url') }));\n if (deliveryReceiptEnabled) channels.forEach((channel) => sdk.markAsDelivered(channel.url));\n }\n }, [sdk]);\n // ---------- returns methods ends ---------- //\n\n return { loading, groupChannels, update, refresh, refreshing, next };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["useCallback","useMemo","useRef","useState","arrayToMap","useAsyncEffect","useAppFeatures","useChannelHandler","HOOK_NAME","createGroupChannelListQuery","sdk","queryCreator","passedQuery","defaultQuery","GroupChannel","createMyGroupChannelListQuery","limit","useGroupChannelListWithQuery","userId","options","deliveryReceiptEnabled","queryRef","loading","setLoading","refreshing","setRefreshing","groupChannelMap","setGroupChannelMap","groupChannels","channels","Object","values","sortComparator","sort","updateChannels","clearPrev","filter","c","isGroupChannel","prev","forEach","channel","markAsDelivered","url","deleteChannels","channelUrls","draft","init","uid","current","hasNext","next","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelMemberCountChanged","onChannelDeleted","onUserJoined","onUserLeft","user","isMe","onUserBanned","refresh","update"],"sources":["useGroupChannelListWithQuery.ts"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react';\nimport type Sendbird from 'sendbird';\n\nimport type { SendbirdChannel, SendbirdChatSDK, SendbirdGroupChannel } from '@sendbird/uikit-utils';\nimport { arrayToMap, useAsyncEffect } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../common/useAppFeatures';\nimport { useChannelHandler } from '../handler/useChannelHandler';\nimport type { UseGroupChannelList, UseGroupChannelListOptions } from '../types';\n\ntype GroupChannelMap = Record<string, SendbirdGroupChannel>;\n\nconst HOOK_NAME = 'useGroupChannelListWithQuery';\nconst createGroupChannelListQuery = (\n sdk: SendbirdChatSDK,\n queryCreator: UseGroupChannelListOptions['queryCreator'],\n) => {\n const passedQuery = queryCreator?.();\n if (passedQuery) return passedQuery;\n\n const defaultQuery = sdk.GroupChannel.createMyGroupChannelListQuery();\n defaultQuery.limit = 20;\n return defaultQuery;\n};\n\nexport const useGroupChannelListWithQuery: UseGroupChannelList = (sdk, userId, options) => {\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n const queryRef = useRef<Sendbird.GroupChannelListQuery>();\n const [loading, setLoading] = useState(false);\n const [refreshing, setRefreshing] = useState(false);\n\n const [groupChannelMap, setGroupChannelMap] = useState<GroupChannelMap>({});\n const groupChannels = useMemo(() => {\n const channels = Object.values(groupChannelMap);\n if (options?.sortComparator) return channels.sort(options?.sortComparator);\n return channels;\n }, [groupChannelMap, options?.sortComparator]);\n\n // ---------- internal methods ---------- //\n const updateChannels = (channels: SendbirdChannel[], clearPrev: boolean) => {\n const groupChannels = channels.filter((c): c is SendbirdGroupChannel => c.isGroupChannel());\n if (clearPrev) setGroupChannelMap(arrayToMap(groupChannels, 'url'));\n else setGroupChannelMap((prev) => ({ ...prev, ...arrayToMap(groupChannels, 'url') }));\n\n if (deliveryReceiptEnabled) groupChannels.forEach((channel) => sdk.markAsDelivered(channel.url));\n };\n const deleteChannels = (channelUrls: string[]) => {\n setGroupChannelMap(({ ...draft }) => {\n channelUrls.forEach((url) => delete draft[url]);\n return draft;\n });\n };\n const init = useCallback(\n async (uid?: string) => {\n if (uid) {\n queryRef.current = createGroupChannelListQuery(sdk, options?.queryCreator);\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n updateChannels(channels, true);\n }\n }\n },\n [sdk, options?.queryCreator],\n );\n // ---------- internal methods ends ---------- //\n\n // ---------- internal hooks ---------- //\n useAsyncEffect(async () => {\n setLoading(true);\n await init(userId);\n setLoading(false);\n }, [init, userId]);\n\n useChannelHandler(sdk, HOOK_NAME, {\n onChannelChanged: (channel) => updateChannels([channel], false),\n onChannelFrozen: (channel) => updateChannels([channel], false),\n onChannelUnfrozen: (channel) => updateChannels([channel], false),\n onChannelMemberCountChanged: (channels) => updateChannels(channels, false),\n onChannelDeleted: (url) => deleteChannels([url]),\n onUserJoined: (channel) => updateChannels([channel], false),\n onUserLeft: (channel, user) => {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannels([channel], false);\n },\n onUserBanned(channel, user) {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannels([channel], false);\n },\n });\n // ---------- internal hooks ends ---------- //\n\n // ---------- returns methods ---------- //\n const refresh = useCallback(async () => {\n setRefreshing(true);\n await init(userId);\n setRefreshing(false);\n }, [init, userId]);\n\n const update = useCallback(\n (channel: SendbirdGroupChannel) => {\n if (deliveryReceiptEnabled) sdk.markAsDelivered(channel.url);\n setGroupChannelMap((prev) => ({ ...prev, [channel.url]: channel }));\n },\n [sdk],\n );\n\n const next = useCallback(async () => {\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n setGroupChannelMap((prev) => ({ ...prev, ...arrayToMap(channels, 'url') }));\n if (deliveryReceiptEnabled) channels.forEach((channel) => sdk.markAsDelivered(channel.url));\n }\n }, [sdk]);\n // ---------- returns methods ends ---------- //\n\n return { loading, groupChannels, update, refresh, refreshing, next };\n};\n"],"mappings":"AAAA,SAASA,WAAT,EAAsBC,OAAtB,EAA+BC,MAA/B,EAAuCC,QAAvC,QAAuD,OAAvD;AAIA,SAASC,UAAT,EAAqBC,cAArB,QAA2C,uBAA3C;AAEA,SAASC,cAAT,QAA+B,0BAA/B;AACA,SAASC,iBAAT,QAAkC,8BAAlC;AAKA,MAAMC,SAAS,GAAG,8BAAlB;;AACA,MAAMC,2BAA2B,GAAG,CAClCC,GADkC,EAElCC,YAFkC,KAG/B;EACH,MAAMC,WAAW,GAAGD,YAAH,aAAGA,YAAH,uBAAGA,YAAY,EAAhC;EACA,IAAIC,WAAJ,EAAiB,OAAOA,WAAP;EAEjB,MAAMC,YAAY,GAAGH,GAAG,CAACI,YAAJ,CAAiBC,6BAAjB,EAArB;EACAF,YAAY,CAACG,KAAb,GAAqB,EAArB;EACA,OAAOH,YAAP;AACD,CAVD;;AAYA,OAAO,MAAMI,4BAAiD,GAAG,CAACP,GAAD,EAAMQ,MAAN,EAAcC,OAAd,KAA0B;EACzF,MAAM;IAAEC;EAAF,IAA6Bd,cAAc,CAACI,GAAD,CAAjD;EACA,MAAMW,QAAQ,GAAGnB,MAAM,EAAvB;EACA,MAAM,CAACoB,OAAD,EAAUC,UAAV,IAAwBpB,QAAQ,CAAC,KAAD,CAAtC;EACA,MAAM,CAACqB,UAAD,EAAaC,aAAb,IAA8BtB,QAAQ,CAAC,KAAD,CAA5C;EAEA,MAAM,CAACuB,eAAD,EAAkBC,kBAAlB,IAAwCxB,QAAQ,CAAkB,EAAlB,CAAtD;EACA,MAAMyB,aAAa,GAAG3B,OAAO,CAAC,MAAM;IAClC,MAAM4B,QAAQ,GAAGC,MAAM,CAACC,MAAP,CAAcL,eAAd,CAAjB;IACA,IAAIP,OAAJ,aAAIA,OAAJ,eAAIA,OAAO,CAAEa,cAAb,EAA6B,OAAOH,QAAQ,CAACI,IAAT,CAAcd,OAAd,aAAcA,OAAd,uBAAcA,OAAO,CAAEa,cAAvB,CAAP;IAC7B,OAAOH,QAAP;EACD,CAJ4B,EAI1B,CAACH,eAAD,EAAkBP,OAAlB,aAAkBA,OAAlB,uBAAkBA,OAAO,CAAEa,cAA3B,CAJ0B,CAA7B,CAPyF,CAazF;;EACA,MAAME,cAAc,GAAG,CAACL,QAAD,EAA8BM,SAA9B,KAAqD;IAC1E,MAAMP,aAAa,GAAGC,QAAQ,CAACO,MAAT,CAAiBC,CAAD,IAAkCA,CAAC,CAACC,cAAF,EAAlD,CAAtB;IACA,IAAIH,SAAJ,EAAeR,kBAAkB,CAACvB,UAAU,CAACwB,aAAD,EAAgB,KAAhB,CAAX,CAAlB,CAAf,KACKD,kBAAkB,CAAEY,IAAD,KAAW,EAAE,GAAGA,IAAL;MAAW,GAAGnC,UAAU,CAACwB,aAAD,EAAgB,KAAhB;IAAxB,CAAX,CAAD,CAAlB;IAEL,IAAIR,sBAAJ,EAA4BQ,aAAa,CAACY,OAAd,CAAuBC,OAAD,IAAa/B,GAAG,CAACgC,eAAJ,CAAoBD,OAAO,CAACE,GAA5B,CAAnC;EAC7B,CAND;;EAOA,MAAMC,cAAc,GAAIC,WAAD,IAA2B;IAChDlB,kBAAkB,CAAC,QAAkB;MAAA,IAAjB,EAAE,GAAGmB;MAAL,CAAiB;MACnCD,WAAW,CAACL,OAAZ,CAAqBG,GAAD,IAAS,OAAOG,KAAK,CAACH,GAAD,CAAzC;MACA,OAAOG,KAAP;IACD,CAHiB,CAAlB;EAID,CALD;;EAMA,MAAMC,IAAI,GAAG/C,WAAW,CACtB,MAAOgD,GAAP,IAAwB;IACtB,IAAIA,GAAJ,EAAS;MAAA;;MACP3B,QAAQ,CAAC4B,OAAT,GAAmBxC,2BAA2B,CAACC,GAAD,EAAMS,OAAN,aAAMA,OAAN,uBAAMA,OAAO,CAAER,YAAf,CAA9C;;MACA,yBAAIU,QAAQ,CAAC4B,OAAb,8CAAI,kBAAkBC,OAAtB,EAA+B;QAC7B,MAAMrB,QAAQ,GAAG,MAAMR,QAAQ,CAAC4B,OAAT,CAAiBE,IAAjB,EAAvB;QACAjB,cAAc,CAACL,QAAD,EAAW,IAAX,CAAd;MACD;IACF;EACF,CATqB,EAUtB,CAACnB,GAAD,EAAMS,OAAN,aAAMA,OAAN,uBAAMA,OAAO,CAAER,YAAf,CAVsB,CAAxB,CA3ByF,CAuCzF;EAEA;;EACAN,cAAc,CAAC,YAAY;IACzBkB,UAAU,CAAC,IAAD,CAAV;IACA,MAAMwB,IAAI,CAAC7B,MAAD,CAAV;IACAK,UAAU,CAAC,KAAD,CAAV;EACD,CAJa,EAIX,CAACwB,IAAD,EAAO7B,MAAP,CAJW,CAAd;EAMAX,iBAAiB,CAACG,GAAD,EAAMF,SAAN,EAAiB;IAChC4C,gBAAgB,EAAGX,OAAD,IAAaP,cAAc,CAAC,CAACO,OAAD,CAAD,EAAY,KAAZ,CADb;IAEhCY,eAAe,EAAGZ,OAAD,IAAaP,cAAc,CAAC,CAACO,OAAD,CAAD,EAAY,KAAZ,CAFZ;IAGhCa,iBAAiB,EAAGb,OAAD,IAAaP,cAAc,CAAC,CAACO,OAAD,CAAD,EAAY,KAAZ,CAHd;IAIhCc,2BAA2B,EAAG1B,QAAD,IAAcK,cAAc,CAACL,QAAD,EAAW,KAAX,CAJzB;IAKhC2B,gBAAgB,EAAGb,GAAD,IAASC,cAAc,CAAC,CAACD,GAAD,CAAD,CALT;IAMhCc,YAAY,EAAGhB,OAAD,IAAaP,cAAc,CAAC,CAACO,OAAD,CAAD,EAAY,KAAZ,CANT;IAOhCiB,UAAU,EAAE,CAACjB,OAAD,EAAUkB,IAAV,KAAmB;MAC7B,MAAMC,IAAI,GAAGD,IAAI,CAACzC,MAAL,KAAgBA,MAA7B;MACA,IAAI0C,IAAJ,EAAUhB,cAAc,CAAC,CAACH,OAAO,CAACE,GAAT,CAAD,CAAd,CAAV,KACKT,cAAc,CAAC,CAACO,OAAD,CAAD,EAAY,KAAZ,CAAd;IACN,CAX+B;;IAYhCoB,YAAY,CAACpB,OAAD,EAAUkB,IAAV,EAAgB;MAC1B,MAAMC,IAAI,GAAGD,IAAI,CAACzC,MAAL,KAAgBA,MAA7B;MACA,IAAI0C,IAAJ,EAAUhB,cAAc,CAAC,CAACH,OAAO,CAACE,GAAT,CAAD,CAAd,CAAV,KACKT,cAAc,CAAC,CAACO,OAAD,CAAD,EAAY,KAAZ,CAAd;IACN;;EAhB+B,CAAjB,CAAjB,CAhDyF,CAkEzF;EAEA;;EACA,MAAMqB,OAAO,GAAG9D,WAAW,CAAC,YAAY;IACtCyB,aAAa,CAAC,IAAD,CAAb;IACA,MAAMsB,IAAI,CAAC7B,MAAD,CAAV;IACAO,aAAa,CAAC,KAAD,CAAb;EACD,CAJ0B,EAIxB,CAACsB,IAAD,EAAO7B,MAAP,CAJwB,CAA3B;EAMA,MAAM6C,MAAM,GAAG/D,WAAW,CACvByC,OAAD,IAAmC;IACjC,IAAIrB,sBAAJ,EAA4BV,GAAG,CAACgC,eAAJ,CAAoBD,OAAO,CAACE,GAA5B;IAC5BhB,kBAAkB,CAAEY,IAAD,KAAW,EAAE,GAAGA,IAAL;MAAW,CAACE,OAAO,CAACE,GAAT,GAAeF;IAA1B,CAAX,CAAD,CAAlB;EACD,CAJuB,EAKxB,CAAC/B,GAAD,CALwB,CAA1B;EAQA,MAAMyC,IAAI,GAAGnD,WAAW,CAAC,YAAY;IAAA;;IACnC,0BAAIqB,QAAQ,CAAC4B,OAAb,+CAAI,mBAAkBC,OAAtB,EAA+B;MAC7B,MAAMrB,QAAQ,GAAG,MAAMR,QAAQ,CAAC4B,OAAT,CAAiBE,IAAjB,EAAvB;MACAxB,kBAAkB,CAAEY,IAAD,KAAW,EAAE,GAAGA,IAAL;QAAW,GAAGnC,UAAU,CAACyB,QAAD,EAAW,KAAX;MAAxB,CAAX,CAAD,CAAlB;MACA,IAAIT,sBAAJ,EAA4BS,QAAQ,CAACW,OAAT,CAAkBC,OAAD,IAAa/B,GAAG,CAACgC,eAAJ,CAAoBD,OAAO,CAACE,GAA5B,CAA9B;IAC7B;EACF,CANuB,EAMrB,CAACjC,GAAD,CANqB,CAAxB,CAnFyF,CA0FzF;;EAEA,OAAO;IAAEY,OAAF;IAAWM,aAAX;IAA0BmC,MAA1B;IAAkCD,OAAlC;IAA2CtC,UAA3C;IAAuD2B;EAAvD,CAAP;AACD,CA7FM"}
|
|
@@ -61,7 +61,6 @@ export const useGroupChannelMessagesWithCollection = (sdk, channel, userId, opti
|
|
|
61
61
|
|
|
62
62
|
const updateChannel = channel => {
|
|
63
63
|
if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {
|
|
64
|
-
setActiveChannel(channel);
|
|
65
64
|
forceUpdate();
|
|
66
65
|
}
|
|
67
66
|
};
|
|
@@ -158,7 +157,7 @@ export const useGroupChannelMessagesWithCollection = (sdk, channel, userId, opti
|
|
|
158
157
|
}
|
|
159
158
|
}
|
|
160
159
|
|
|
161
|
-
}
|
|
160
|
+
});
|
|
162
161
|
useEffect(() => {
|
|
163
162
|
// NOTE: Cache read is heavy synchronous task, and it prevents smooth ui transition
|
|
164
163
|
setTimeout(async () => {
|
package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useRef","Logger","NOOP","isDifferentChannel","useForceUpdate","useIsMountedRef","useAppFeatures","useChannelHandler","useActiveGroupChannel","useGroupChannelMessagesReducer","createMessageCollection","sdk","channel","creator","collection","filter","MessageFilter","setLimit","setFilter","build","HOOK_NAME","useGroupChannelMessagesWithCollection","userId","options","isMounted","disposeManuallyAfterUnmounted","current","collectionRef","dispose","deliveryReceiptEnabled","activeChannel","setActiveChannel","forceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAs","markAsDelivered","url","e","error","markAsReadWithChannelUrls","updateChannel","isGroupChannel","init","uid","callback","collectionCreator","currentUser","initialize","MessageCollection","MessageCollectionInitPolicy","CACHE_AND_REPLACE_BY_API","onCacheResult","err","isCacheEnabled","debug","length","pendingMessages","failedMessages","onApiResult","setMessageCollectionHandler","onMessagesAdded","_","onMessagesUpdated","onMessagesDeleted","msgIds","map","m","messageId","reqIds","reqId","onChannelDeleted","onChannelUpdated","onHugeGapDetected","onUserBanned","bannedUser","setTimeout","refresh","prev","hasPrevious","list","loadPrevious","next","hasNext","fetchedList","loadNext","push","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","sentMessage","sendFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","message","isUserMessage","resendUserMessage","isFileMessage","resendFileMessage","deleteMessage","sendingStatus","removeFailedMessages"],"sources":["useGroupChannelMessagesWithCollection.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nimport type {\n SendbirdChannel,\n SendbirdChatSDK,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessageCollection,\n SendbirdUserMessage,\n} from '@sendbird/uikit-utils';\nimport { Logger, NOOP, isDifferentChannel, useForceUpdate, useIsMountedRef } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useActiveGroupChannel } from '../useActiveGroupChannel';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageCollection = (\n sdk: SendbirdChatSDK,\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['collectionCreator'],\n) => {\n if (creator) return creator();\n const collection = channel.createMessageCollection();\n const filter = new sdk.MessageFilter();\n return collection.setLimit(100).setFilter(filter).build();\n};\n\nconst HOOK_NAME = 'useGroupChannelMessagesWithCollection';\n\n// FIXME: MessageCollection event handler bug, initialize(run async addObserver) -> dispose -> removeObserver -> addObserver called\nexport const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const isMounted = useIsMountedRef();\n const disposeManuallyAfterUnmounted = () => {\n if (!isMounted.current && collectionRef.current) collectionRef.current.dispose();\n };\n\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const collectionRef = useRef<SendbirdMessageCollection>();\n\n // NOTE: We cannot determine the channel object of Sendbird SDK is stale or not, so force update af\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAs = async () => {\n try {\n if (deliveryReceiptEnabled) sdk.markAsDelivered(activeChannel.url);\n } catch (e) {\n Logger.error(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);\n }\n try {\n await sdk.markAsReadWithChannelUrls([activeChannel.url]);\n } catch (e) {\n Logger.error(`[${HOOK_NAME}/channelMarkAs/Read]`, e);\n }\n };\n\n const updateChannel = (channel: SendbirdChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n setActiveChannel(channel);\n forceUpdate();\n }\n };\n\n const init = useCallback(\n async (uid?: string, callback?: () => void) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createMessageCollection(sdk, activeChannel, options?.collectionCreator);\n updateNextMessages([], true, sdk.currentUser.userId);\n channelMarkAs();\n\n collectionRef.current\n .initialize(sdk.MessageCollection.MessageCollectionInitPolicy.CACHE_AND_REPLACE_BY_API)\n .onCacheResult((err, messages) => {\n if (err) sdk.isCacheEnabled && Logger.error(`[${HOOK_NAME}/onCacheResult]`, err);\n else {\n Logger.debug(`[${HOOK_NAME}/onCacheResult]`, 'message length:', messages.length);\n updateMessages(messages, true, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n if (messages?.length) callback?.();\n }\n })\n .onApiResult((err, messages) => {\n if (err) Logger.error(`[${HOOK_NAME}/onApiResult]`, err);\n else {\n Logger.debug(`[${HOOK_NAME}/onApiResult]`, 'message length:', messages.length);\n updateMessages(messages, true, sdk.currentUser.userId);\n if (sdk.isCacheEnabled) {\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n }\n }\n callback?.();\n });\n\n collectionRef.current.setMessageCollectionHandler({\n onMessagesAdded(_, channel, messages) {\n disposeManuallyAfterUnmounted();\n channelMarkAs();\n updateNextMessages(messages, false, sdk.currentUser.userId);\n updateChannel(channel);\n },\n onMessagesUpdated(_, channel, messages) {\n disposeManuallyAfterUnmounted();\n updateMessages(messages, false, sdk.currentUser.userId);\n updateChannel(channel);\n },\n onMessagesDeleted(_, channel, messages) {\n disposeManuallyAfterUnmounted();\n const msgIds = messages.map((m) => m.messageId);\n const reqIds = messages\n .filter((m): m is SendbirdUserMessage | SendbirdFileMessage => 'reqId' in m)\n .map((m) => m.reqId);\n\n deleteMessages(msgIds, reqIds);\n deleteNextMessages(msgIds, reqIds);\n updateChannel(channel);\n },\n onChannelDeleted() {\n disposeManuallyAfterUnmounted();\n options?.onChannelDeleted?.();\n },\n onChannelUpdated(_, channel) {\n disposeManuallyAfterUnmounted();\n updateChannel(channel);\n },\n onHugeGapDetected() {\n disposeManuallyAfterUnmounted();\n init(uid);\n },\n });\n }\n },\n [sdk, activeChannel.url, options?.collectionCreator],\n );\n\n useChannelHandler(\n sdk,\n HOOK_NAME,\n {\n onUserBanned(channel, bannedUser) {\n disposeManuallyAfterUnmounted();\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n setActiveChannel(channel);\n forceUpdate();\n }\n }\n },\n },\n [sdk],\n );\n\n useEffect(() => {\n // NOTE: Cache read is heavy synchronous task, and it prevents smooth ui transition\n setTimeout(async () => {\n updateLoading(true);\n init(userId, () => updateLoading(false));\n }, 0);\n }, [init, userId]);\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useCallback(async () => {\n updateRefreshing(true);\n init(userId, () => updateRefreshing(false));\n }, [init, userId]);\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useCallback(async () => {\n if (collectionRef.current && collectionRef.current?.hasPrevious) {\n try {\n const list = await collectionRef.current?.loadPrevious();\n updateMessages(list, false, sdk.currentUser.userId);\n } catch {}\n }\n }, []);\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useCallback(async () => {\n const list = [];\n if (collectionRef.current && collectionRef.current?.hasNext) {\n try {\n const fetchedList = await collectionRef.current?.loadNext();\n list.push(...fetchedList);\n } catch {}\n }\n if (nextMessages.length > 0) {\n list.push(...nextMessages);\n }\n if (list.length > 0) {\n updateMessages(list, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n }, [nextMessages.length]);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n const pendingMessage = activeChannel.sendUserMessage(params, (sentMessage, error) => {\n if (error) reject(error);\n else {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n });\n\n onPending?.(pendingMessage);\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n });\n },\n [activeChannel],\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n const pendingMessage = activeChannel.sendFileMessage(params, (sentMessage, error) => {\n if (error) reject(error);\n else {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage as SendbirdFileMessage);\n }\n });\n\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n });\n },\n [activeChannel],\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateUserMessage(messageId, params, NOOP);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateFileMessage(messageId, params, NOOP);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return activeChannel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return activeChannel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateMessages([message], false, sdk.currentUser.userId);\n },\n [activeChannel],\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useCallback(\n async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await activeChannel.deleteMessage(message);\n if (message.isFileMessage()) await activeChannel.deleteMessage(message);\n } else {\n try {\n await collectionRef.current?.removeFailedMessages([message]);\n } finally {\n deleteMessages([message.messageId], [message.reqId]);\n }\n }\n },\n [activeChannel],\n );\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n activeChannel,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useRef","Logger","NOOP","isDifferentChannel","useForceUpdate","useIsMountedRef","useAppFeatures","useChannelHandler","useActiveGroupChannel","useGroupChannelMessagesReducer","createMessageCollection","sdk","channel","creator","collection","filter","MessageFilter","setLimit","setFilter","build","HOOK_NAME","useGroupChannelMessagesWithCollection","userId","options","isMounted","disposeManuallyAfterUnmounted","current","collectionRef","dispose","deliveryReceiptEnabled","activeChannel","setActiveChannel","forceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAs","markAsDelivered","url","e","error","markAsReadWithChannelUrls","updateChannel","isGroupChannel","init","uid","callback","collectionCreator","currentUser","initialize","MessageCollection","MessageCollectionInitPolicy","CACHE_AND_REPLACE_BY_API","onCacheResult","err","isCacheEnabled","debug","length","pendingMessages","failedMessages","onApiResult","setMessageCollectionHandler","onMessagesAdded","_","onMessagesUpdated","onMessagesDeleted","msgIds","map","m","messageId","reqIds","reqId","onChannelDeleted","onChannelUpdated","onHugeGapDetected","onUserBanned","bannedUser","setTimeout","refresh","prev","hasPrevious","list","loadPrevious","next","hasNext","fetchedList","loadNext","push","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","sentMessage","sendFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","message","isUserMessage","resendUserMessage","isFileMessage","resendFileMessage","deleteMessage","sendingStatus","removeFailedMessages"],"sources":["useGroupChannelMessagesWithCollection.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nimport type {\n SendbirdChannel,\n SendbirdChatSDK,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessageCollection,\n SendbirdUserMessage,\n} from '@sendbird/uikit-utils';\nimport { Logger, NOOP, isDifferentChannel, useForceUpdate, useIsMountedRef } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useActiveGroupChannel } from '../useActiveGroupChannel';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageCollection = (\n sdk: SendbirdChatSDK,\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['collectionCreator'],\n) => {\n if (creator) return creator();\n const collection = channel.createMessageCollection();\n const filter = new sdk.MessageFilter();\n return collection.setLimit(100).setFilter(filter).build();\n};\n\nconst HOOK_NAME = 'useGroupChannelMessagesWithCollection';\n\n// FIXME: MessageCollection event handler bug, initialize(run async addObserver) -> dispose -> removeObserver -> addObserver called\nexport const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const isMounted = useIsMountedRef();\n const disposeManuallyAfterUnmounted = () => {\n if (!isMounted.current && collectionRef.current) collectionRef.current.dispose();\n };\n\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const collectionRef = useRef<SendbirdMessageCollection>();\n\n // NOTE: We cannot determine the channel object of Sendbird SDK is stale or not, so force update af\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAs = async () => {\n try {\n if (deliveryReceiptEnabled) sdk.markAsDelivered(activeChannel.url);\n } catch (e) {\n Logger.error(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);\n }\n try {\n await sdk.markAsReadWithChannelUrls([activeChannel.url]);\n } catch (e) {\n Logger.error(`[${HOOK_NAME}/channelMarkAs/Read]`, e);\n }\n };\n\n const updateChannel = (channel: SendbirdChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n forceUpdate();\n }\n };\n\n const init = useCallback(\n async (uid?: string, callback?: () => void) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createMessageCollection(sdk, activeChannel, options?.collectionCreator);\n updateNextMessages([], true, sdk.currentUser.userId);\n channelMarkAs();\n\n collectionRef.current\n .initialize(sdk.MessageCollection.MessageCollectionInitPolicy.CACHE_AND_REPLACE_BY_API)\n .onCacheResult((err, messages) => {\n if (err) sdk.isCacheEnabled && Logger.error(`[${HOOK_NAME}/onCacheResult]`, err);\n else {\n Logger.debug(`[${HOOK_NAME}/onCacheResult]`, 'message length:', messages.length);\n updateMessages(messages, true, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n if (messages?.length) callback?.();\n }\n })\n .onApiResult((err, messages) => {\n if (err) Logger.error(`[${HOOK_NAME}/onApiResult]`, err);\n else {\n Logger.debug(`[${HOOK_NAME}/onApiResult]`, 'message length:', messages.length);\n updateMessages(messages, true, sdk.currentUser.userId);\n if (sdk.isCacheEnabled) {\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n }\n }\n callback?.();\n });\n\n collectionRef.current.setMessageCollectionHandler({\n onMessagesAdded(_, channel, messages) {\n disposeManuallyAfterUnmounted();\n channelMarkAs();\n updateNextMessages(messages, false, sdk.currentUser.userId);\n updateChannel(channel);\n },\n onMessagesUpdated(_, channel, messages) {\n disposeManuallyAfterUnmounted();\n updateMessages(messages, false, sdk.currentUser.userId);\n updateChannel(channel);\n },\n onMessagesDeleted(_, channel, messages) {\n disposeManuallyAfterUnmounted();\n const msgIds = messages.map((m) => m.messageId);\n const reqIds = messages\n .filter((m): m is SendbirdUserMessage | SendbirdFileMessage => 'reqId' in m)\n .map((m) => m.reqId);\n\n deleteMessages(msgIds, reqIds);\n deleteNextMessages(msgIds, reqIds);\n updateChannel(channel);\n },\n onChannelDeleted() {\n disposeManuallyAfterUnmounted();\n options?.onChannelDeleted?.();\n },\n onChannelUpdated(_, channel) {\n disposeManuallyAfterUnmounted();\n updateChannel(channel);\n },\n onHugeGapDetected() {\n disposeManuallyAfterUnmounted();\n init(uid);\n },\n });\n }\n },\n [sdk, activeChannel.url, options?.collectionCreator],\n );\n\n useChannelHandler(sdk, HOOK_NAME, {\n onUserBanned(channel, bannedUser) {\n disposeManuallyAfterUnmounted();\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n setActiveChannel(channel);\n forceUpdate();\n }\n }\n },\n });\n\n useEffect(() => {\n // NOTE: Cache read is heavy synchronous task, and it prevents smooth ui transition\n setTimeout(async () => {\n updateLoading(true);\n init(userId, () => updateLoading(false));\n }, 0);\n }, [init, userId]);\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useCallback(async () => {\n updateRefreshing(true);\n init(userId, () => updateRefreshing(false));\n }, [init, userId]);\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useCallback(async () => {\n if (collectionRef.current && collectionRef.current?.hasPrevious) {\n try {\n const list = await collectionRef.current?.loadPrevious();\n updateMessages(list, false, sdk.currentUser.userId);\n } catch {}\n }\n }, []);\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useCallback(async () => {\n const list = [];\n if (collectionRef.current && collectionRef.current?.hasNext) {\n try {\n const fetchedList = await collectionRef.current?.loadNext();\n list.push(...fetchedList);\n } catch {}\n }\n if (nextMessages.length > 0) {\n list.push(...nextMessages);\n }\n if (list.length > 0) {\n updateMessages(list, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n }, [nextMessages.length]);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n const pendingMessage = activeChannel.sendUserMessage(params, (sentMessage, error) => {\n if (error) reject(error);\n else {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n });\n\n onPending?.(pendingMessage);\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n });\n },\n [activeChannel],\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n const pendingMessage = activeChannel.sendFileMessage(params, (sentMessage, error) => {\n if (error) reject(error);\n else {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage as SendbirdFileMessage);\n }\n });\n\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n });\n },\n [activeChannel],\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateUserMessage(messageId, params, NOOP);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateFileMessage(messageId, params, NOOP);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return activeChannel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return activeChannel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateMessages([message], false, sdk.currentUser.userId);\n },\n [activeChannel],\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useCallback(\n async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await activeChannel.deleteMessage(message);\n if (message.isFileMessage()) await activeChannel.deleteMessage(message);\n } else {\n try {\n await collectionRef.current?.removeFailedMessages([message]);\n } finally {\n deleteMessages([message.messageId], [message.reqId]);\n }\n }\n },\n [activeChannel],\n );\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n activeChannel,\n };\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useRef","Logger","isDifferentChannel","useAsyncEffect","useForceUpdate","useAppFeatures","useChannelHandler","useActiveGroupChannel","useGroupChannelMessagesReducer","createMessageQuery","channel","creator","query","createPreviousMessageListQuery","limit","reverse","HOOK_NAME","useGroupChannelMessagesWithQuery","sdk","userId","options","deliveryReceiptEnabled","queryRef","activeChannel","setActiveChannel","forceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAs","markAsDelivered","url","e","error","markAsReadWithChannelUrls","init","uid","current","queryCreator","hasMore","list","load","currentUser","channelUpdater","isGroupChannel","onMessageReceived","eventChannel","message","onMessageUpdated","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelHidden","onChannelMemberCountChanged","channels","find","c","onChannelDeleted","channelUrl","onOperatorUpdated","onUserLeft","onUserEntered","onUserExited","onUserJoined","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","refresh","prev","next","length","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","sentMessage","sendFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","isUserMessage","resendUserMessage","isFileMessage","resendFileMessage","deleteMessage","sendingStatus","reqId"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\nimport type Sendbird from 'sendbird';\n\nimport type { SendbirdFileMessage, SendbirdGroupChannel, SendbirdOpenChannel } from '@sendbird/uikit-utils';\nimport { Logger, isDifferentChannel, useAsyncEffect, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useActiveGroupChannel } from '../useActiveGroupChannel';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageQuery = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['queryCreator'],\n) => {\n if (creator) return creator();\n const query = channel.createPreviousMessageListQuery();\n query.limit = 100;\n query.reverse = true;\n return query;\n};\n\nconst HOOK_NAME = 'useGroupChannelMessagesWithQuery';\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const queryRef = useRef<Sendbird.PreviousMessageListQuery>();\n\n // NOTE: We cannot determine the channel object of Sendbird SDK is stale or not, so force update after setActiveChannel\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAs = async () => {\n try {\n if (deliveryReceiptEnabled) sdk.markAsDelivered(activeChannel.url);\n } catch (e) {\n Logger.error(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);\n }\n try {\n await sdk.markAsReadWithChannelUrls([activeChannel.url]);\n } catch (e) {\n Logger.error(`[${HOOK_NAME}/channelMarkAs/Read]`, e);\n }\n };\n\n const init = useCallback(\n async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(activeChannel, options?.queryCreator);\n channelMarkAs();\n if (queryRef.current?.hasMore) {\n const list = await queryRef.current?.load();\n updateMessages(list, true, sdk.currentUser.userId);\n }\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n },\n [sdk, activeChannel.url, options?.queryCreator],\n );\n\n const channelUpdater = (channel: SendbirdGroupChannel | SendbirdOpenChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n setActiveChannel(channel);\n forceUpdate();\n }\n };\n\n useChannelHandler(\n sdk,\n HOOK_NAME,\n {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n channelMarkAs();\n updateNextMessages([message], false, sdk.currentUser.userId);\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNextMessages([messageId], []);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelHidden: channelUpdater,\n onChannelMemberCountChanged(channels) {\n const channel = channels.find((c) => !isDifferentChannel(c, activeChannel));\n if (channel) channelUpdater(channel);\n },\n onChannelDeleted(channelUrl: string) {\n if (activeChannel.url === channelUrl) options?.onChannelDeleted?.();\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserLeft: channelUpdater,\n onUserEntered: channelUpdater,\n onUserExited: channelUpdater,\n onUserJoined: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n },\n [sdk],\n );\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [init, userId]);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n }, [init, userId]);\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useCallback(async () => {\n if (queryRef.current && queryRef.current?.hasMore) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser.userId);\n }\n }, []);\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useCallback(async () => {\n if (nextMessages.length > 0) {\n updateMessages(nextMessages, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n }, [nextMessages.length]);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n const pendingMessage = activeChannel.sendUserMessage(params, (sentMessage, error) => {\n if (error) reject(error);\n else {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n });\n updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n });\n },\n [activeChannel],\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n const pendingMessage = activeChannel.sendFileMessage(params, (sentMessage, error) => {\n if (error) reject(error);\n else {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage as SendbirdFileMessage);\n }\n });\n updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n });\n },\n [activeChannel],\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return activeChannel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return activeChannel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateNextMessages([message], false, sdk.currentUser.userId);\n },\n [activeChannel],\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useCallback(\n async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await activeChannel.deleteMessage(message);\n if (message.isFileMessage()) await activeChannel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n },\n [activeChannel],\n );\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n activeChannel,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["useCallback","useRef","Logger","isDifferentChannel","useAsyncEffect","useForceUpdate","useAppFeatures","useChannelHandler","useActiveGroupChannel","useGroupChannelMessagesReducer","createMessageQuery","channel","creator","query","createPreviousMessageListQuery","limit","reverse","HOOK_NAME","useGroupChannelMessagesWithQuery","sdk","userId","options","deliveryReceiptEnabled","queryRef","activeChannel","setActiveChannel","forceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAs","markAsDelivered","url","e","error","markAsReadWithChannelUrls","init","uid","current","queryCreator","hasMore","list","load","currentUser","channelUpdater","isGroupChannel","onMessageReceived","eventChannel","message","onMessageUpdated","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelHidden","onChannelMemberCountChanged","channels","find","c","onChannelDeleted","channelUrl","onOperatorUpdated","onUserLeft","onUserEntered","onUserExited","onUserJoined","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","refresh","prev","next","length","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","sentMessage","sendFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","isUserMessage","resendUserMessage","isFileMessage","resendFileMessage","deleteMessage","sendingStatus","reqId"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\nimport type Sendbird from 'sendbird';\n\nimport type { SendbirdFileMessage, SendbirdGroupChannel, SendbirdOpenChannel } from '@sendbird/uikit-utils';\nimport { Logger, isDifferentChannel, useAsyncEffect, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useActiveGroupChannel } from '../useActiveGroupChannel';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageQuery = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['queryCreator'],\n) => {\n if (creator) return creator();\n const query = channel.createPreviousMessageListQuery();\n query.limit = 100;\n query.reverse = true;\n return query;\n};\n\nconst HOOK_NAME = 'useGroupChannelMessagesWithQuery';\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const queryRef = useRef<Sendbird.PreviousMessageListQuery>();\n\n // NOTE: We cannot determine the channel object of Sendbird SDK is stale or not, so force update after setActiveChannel\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAs = async () => {\n try {\n if (deliveryReceiptEnabled) sdk.markAsDelivered(activeChannel.url);\n } catch (e) {\n Logger.error(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);\n }\n try {\n await sdk.markAsReadWithChannelUrls([activeChannel.url]);\n } catch (e) {\n Logger.error(`[${HOOK_NAME}/channelMarkAs/Read]`, e);\n }\n };\n\n const init = useCallback(\n async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(activeChannel, options?.queryCreator);\n channelMarkAs();\n if (queryRef.current?.hasMore) {\n const list = await queryRef.current?.load();\n updateMessages(list, true, sdk.currentUser.userId);\n }\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n },\n [sdk, activeChannel.url, options?.queryCreator],\n );\n\n const channelUpdater = (channel: SendbirdGroupChannel | SendbirdOpenChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n setActiveChannel(channel);\n forceUpdate();\n }\n };\n\n useChannelHandler(sdk, HOOK_NAME, {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n channelMarkAs();\n updateNextMessages([message], false, sdk.currentUser.userId);\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNextMessages([messageId], []);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelHidden: channelUpdater,\n onChannelMemberCountChanged(channels) {\n const channel = channels.find((c) => !isDifferentChannel(c, activeChannel));\n if (channel) channelUpdater(channel);\n },\n onChannelDeleted(channelUrl: string) {\n if (activeChannel.url === channelUrl) options?.onChannelDeleted?.();\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserLeft: channelUpdater,\n onUserEntered: channelUpdater,\n onUserExited: channelUpdater,\n onUserJoined: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n });\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [init, userId]);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n }, [init, userId]);\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useCallback(async () => {\n if (queryRef.current && queryRef.current?.hasMore) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser.userId);\n }\n }, []);\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useCallback(async () => {\n if (nextMessages.length > 0) {\n updateMessages(nextMessages, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n }, [nextMessages.length]);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n const pendingMessage = activeChannel.sendUserMessage(params, (sentMessage, error) => {\n if (error) reject(error);\n else {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n });\n updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n });\n },\n [activeChannel],\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n const pendingMessage = activeChannel.sendFileMessage(params, (sentMessage, error) => {\n if (error) reject(error);\n else {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage as SendbirdFileMessage);\n }\n });\n updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n });\n },\n [activeChannel],\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return activeChannel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return activeChannel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateNextMessages([message], false, sdk.currentUser.userId);\n },\n [activeChannel],\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useCallback(\n async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await activeChannel.deleteMessage(message);\n if (message.isFileMessage()) await activeChannel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n },\n [activeChannel],\n );\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n activeChannel,\n };\n};\n"],"mappings":"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"}
|
|
@@ -1,33 +1,14 @@
|
|
|
1
|
-
import { useMemo } from 'react';
|
|
2
1
|
import { ApplicationAttributes, PremiumFeatures } from '@sendbird/uikit-utils';
|
|
3
2
|
export const useAppFeatures = sdk => {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return Boolean((_sdk$appInfo = sdk.appInfo) === null || _sdk$appInfo === void 0 ? void 0 : (_sdk$appInfo$premiumF = _sdk$appInfo.premiumFeatureList) === null || _sdk$appInfo$premiumF === void 0 ? void 0 : (_sdk$appInfo$premiumF2 = _sdk$appInfo$premiumF.includes) === null || _sdk$appInfo$premiumF2 === void 0 ? void 0 : _sdk$appInfo$premiumF2.call(_sdk$appInfo$premiumF, PremiumFeatures.delivery_receipt));
|
|
10
|
-
}, [(_sdk$appInfo2 = sdk.appInfo) === null || _sdk$appInfo2 === void 0 ? void 0 : _sdk$appInfo2.premiumFeatureList]);
|
|
11
|
-
const broadcastChannelEnabled = useMemo(() => {
|
|
12
|
-
var _sdk$appInfo3, _sdk$appInfo3$applica, _sdk$appInfo3$applica2;
|
|
13
|
-
|
|
14
|
-
return Boolean((_sdk$appInfo3 = sdk.appInfo) === null || _sdk$appInfo3 === void 0 ? void 0 : (_sdk$appInfo3$applica = _sdk$appInfo3.applicationAttributes) === null || _sdk$appInfo3$applica === void 0 ? void 0 : (_sdk$appInfo3$applica2 = _sdk$appInfo3$applica.includes) === null || _sdk$appInfo3$applica2 === void 0 ? void 0 : _sdk$appInfo3$applica2.call(_sdk$appInfo3$applica, ApplicationAttributes.allow_broadcast_channel));
|
|
15
|
-
}, [(_sdk$appInfo4 = sdk.appInfo) === null || _sdk$appInfo4 === void 0 ? void 0 : _sdk$appInfo4.applicationAttributes]);
|
|
16
|
-
const superGroupChannelEnabled = useMemo(() => {
|
|
17
|
-
var _sdk$appInfo5, _sdk$appInfo5$applica, _sdk$appInfo5$applica2;
|
|
18
|
-
|
|
19
|
-
return Boolean((_sdk$appInfo5 = sdk.appInfo) === null || _sdk$appInfo5 === void 0 ? void 0 : (_sdk$appInfo5$applica = _sdk$appInfo5.applicationAttributes) === null || _sdk$appInfo5$applica === void 0 ? void 0 : (_sdk$appInfo5$applica2 = _sdk$appInfo5$applica.includes) === null || _sdk$appInfo5$applica2 === void 0 ? void 0 : _sdk$appInfo5$applica2.call(_sdk$appInfo5$applica, ApplicationAttributes.allow_super_group_channel));
|
|
20
|
-
}, [(_sdk$appInfo6 = sdk.appInfo) === null || _sdk$appInfo6 === void 0 ? void 0 : _sdk$appInfo6.applicationAttributes]);
|
|
21
|
-
const reactionEnabled = useMemo(() => {
|
|
22
|
-
var _sdk$appInfo7, _sdk$appInfo7$applica, _sdk$appInfo7$applica2;
|
|
23
|
-
|
|
24
|
-
return Boolean((_sdk$appInfo7 = sdk.appInfo) === null || _sdk$appInfo7 === void 0 ? void 0 : (_sdk$appInfo7$applica = _sdk$appInfo7.applicationAttributes) === null || _sdk$appInfo7$applica === void 0 ? void 0 : (_sdk$appInfo7$applica2 = _sdk$appInfo7$applica.includes) === null || _sdk$appInfo7$applica2 === void 0 ? void 0 : _sdk$appInfo7$applica2.call(_sdk$appInfo7$applica, ApplicationAttributes.reactions));
|
|
25
|
-
}, [(_sdk$appInfo8 = sdk.appInfo) === null || _sdk$appInfo8 === void 0 ? void 0 : _sdk$appInfo8.applicationAttributes]);
|
|
3
|
+
const {
|
|
4
|
+
premiumFeatureList = [],
|
|
5
|
+
applicationAttributes = []
|
|
6
|
+
} = sdk.appInfo ?? {};
|
|
26
7
|
return {
|
|
27
|
-
deliveryReceiptEnabled,
|
|
28
|
-
broadcastChannelEnabled,
|
|
29
|
-
superGroupChannelEnabled,
|
|
30
|
-
reactionEnabled
|
|
8
|
+
deliveryReceiptEnabled: Boolean(premiumFeatureList.includes(PremiumFeatures.delivery_receipt)),
|
|
9
|
+
broadcastChannelEnabled: Boolean(applicationAttributes.includes(ApplicationAttributes.allow_broadcast_channel)),
|
|
10
|
+
superGroupChannelEnabled: Boolean(applicationAttributes.includes(ApplicationAttributes.allow_super_group_channel)),
|
|
11
|
+
reactionEnabled: Boolean(applicationAttributes.includes(ApplicationAttributes.reactions))
|
|
31
12
|
};
|
|
32
13
|
};
|
|
33
14
|
//# sourceMappingURL=useAppFeatures.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["ApplicationAttributes","PremiumFeatures","useAppFeatures","sdk","premiumFeatureList","applicationAttributes","appInfo","deliveryReceiptEnabled","Boolean","includes","delivery_receipt","broadcastChannelEnabled","allow_broadcast_channel","superGroupChannelEnabled","allow_super_group_channel","reactionEnabled","reactions"],"sources":["useAppFeatures.ts"],"sourcesContent":["import { ApplicationAttributes, PremiumFeatures, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nexport const useAppFeatures = (sdk: SendbirdChatSDK) => {\n const { premiumFeatureList = [], applicationAttributes = [] } = sdk.appInfo ?? {};\n return {\n deliveryReceiptEnabled: Boolean(premiumFeatureList.includes(PremiumFeatures.delivery_receipt)),\n broadcastChannelEnabled: Boolean(applicationAttributes.includes(ApplicationAttributes.allow_broadcast_channel)),\n superGroupChannelEnabled: Boolean(applicationAttributes.includes(ApplicationAttributes.allow_super_group_channel)),\n reactionEnabled: Boolean(applicationAttributes.includes(ApplicationAttributes.reactions)),\n };\n};\n"],"mappings":"AAAA,SAASA,qBAAT,EAAgCC,eAAhC,QAAwE,uBAAxE;AAEA,OAAO,MAAMC,cAAc,GAAIC,GAAD,IAA0B;EACtD,MAAM;IAAEC,kBAAkB,GAAG,EAAvB;IAA2BC,qBAAqB,GAAG;EAAnD,IAA0DF,GAAG,CAACG,OAAJ,IAAe,EAA/E;EACA,OAAO;IACLC,sBAAsB,EAAEC,OAAO,CAACJ,kBAAkB,CAACK,QAAnB,CAA4BR,eAAe,CAACS,gBAA5C,CAAD,CAD1B;IAELC,uBAAuB,EAAEH,OAAO,CAACH,qBAAqB,CAACI,QAAtB,CAA+BT,qBAAqB,CAACY,uBAArD,CAAD,CAF3B;IAGLC,wBAAwB,EAAEL,OAAO,CAACH,qBAAqB,CAACI,QAAtB,CAA+BT,qBAAqB,CAACc,yBAArD,CAAD,CAH5B;IAILC,eAAe,EAAEP,OAAO,CAACH,qBAAqB,CAACI,QAAtB,CAA+BT,qBAAqB,CAACgB,SAArD,CAAD;EAJnB,CAAP;AAMD,CARM"}
|
|
@@ -1,17 +1,28 @@
|
|
|
1
|
-
import { useEffect } from 'react';
|
|
1
|
+
import { useEffect, useLayoutEffect, useRef } from 'react';
|
|
2
2
|
import { Logger } from '@sendbird/uikit-utils';
|
|
3
|
-
export const useChannelHandler =
|
|
4
|
-
|
|
3
|
+
export const useChannelHandler = (sdk, handlerId, hookHandler) => {
|
|
4
|
+
const handlerRef = useRef(hookHandler);
|
|
5
|
+
useLayoutEffect(() => {
|
|
6
|
+
handlerRef.current = hookHandler;
|
|
7
|
+
});
|
|
5
8
|
useEffect(() => {
|
|
6
9
|
Logger.debug('[useChannelHandler] hook called by', handlerId);
|
|
7
10
|
const handler = new sdk.ChannelHandler();
|
|
8
11
|
const handlerKeys = Object.keys(handler);
|
|
9
12
|
handlerKeys.forEach(key => {
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
handler[key] = function () {
|
|
14
|
+
var _handlerRef$current$k, _handlerRef$current;
|
|
15
|
+
|
|
16
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
17
|
+
args[_key] = arguments[_key];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// @ts-ignore
|
|
21
|
+
(_handlerRef$current$k = (_handlerRef$current = handlerRef.current)[key]) === null || _handlerRef$current$k === void 0 ? void 0 : _handlerRef$current$k.call(_handlerRef$current, ...args);
|
|
22
|
+
};
|
|
12
23
|
});
|
|
13
24
|
sdk.addChannelHandler(handlerId, handler);
|
|
14
25
|
return () => sdk.removeChannelHandler(handlerId);
|
|
15
|
-
}, [sdk, handlerId
|
|
26
|
+
}, [sdk, handlerId]);
|
|
16
27
|
};
|
|
17
28
|
//# sourceMappingURL=useChannelHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","Logger","useChannelHandler","sdk","handlerId","hookHandler","
|
|
1
|
+
{"version":3,"names":["useEffect","useLayoutEffect","useRef","Logger","useChannelHandler","sdk","handlerId","hookHandler","handlerRef","current","debug","handler","ChannelHandler","handlerKeys","Object","keys","forEach","key","args","addChannelHandler","removeChannelHandler"],"sources":["useChannelHandler.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from 'react';\nimport type Sendbird from 'sendbird';\n\nimport { Logger, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nexport const useChannelHandler = (\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<Sendbird.ChannelHandler>,\n) => {\n const handlerRef = useRef(hookHandler);\n useLayoutEffect(() => {\n handlerRef.current = hookHandler;\n });\n\n useEffect(() => {\n Logger.debug('[useChannelHandler] hook called by', handlerId);\n\n const handler = new sdk.ChannelHandler();\n const handlerKeys = Object.keys(handler) as (keyof typeof handler)[];\n handlerKeys.forEach((key) => {\n handler[key] = (...args: unknown[]) => {\n // @ts-ignore\n handlerRef.current[key]?.(...args);\n };\n });\n\n sdk.addChannelHandler(handlerId, handler);\n return () => sdk.removeChannelHandler(handlerId);\n }, [sdk, handlerId]);\n};\n"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,eAApB,EAAqCC,MAArC,QAAmD,OAAnD;AAGA,SAASC,MAAT,QAAwC,uBAAxC;AAEA,OAAO,MAAMC,iBAAiB,GAAG,CAC/BC,GAD+B,EAE/BC,SAF+B,EAG/BC,WAH+B,KAI5B;EACH,MAAMC,UAAU,GAAGN,MAAM,CAACK,WAAD,CAAzB;EACAN,eAAe,CAAC,MAAM;IACpBO,UAAU,CAACC,OAAX,GAAqBF,WAArB;EACD,CAFc,CAAf;EAIAP,SAAS,CAAC,MAAM;IACdG,MAAM,CAACO,KAAP,CAAa,oCAAb,EAAmDJ,SAAnD;IAEA,MAAMK,OAAO,GAAG,IAAIN,GAAG,CAACO,cAAR,EAAhB;IACA,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYJ,OAAZ,CAApB;IACAE,WAAW,CAACG,OAAZ,CAAqBC,GAAD,IAAS;MAC3BN,OAAO,CAACM,GAAD,CAAP,GAAe,YAAwB;QAAA;;QAAA,kCAApBC,IAAoB;UAApBA,IAAoB;QAAA;;QACrC;QACA,gDAAAV,UAAU,CAACC,OAAX,EAAmBQ,GAAnB,2GAA0B,GAAGC,IAA7B;MACD,CAHD;IAID,CALD;IAOAb,GAAG,CAACc,iBAAJ,CAAsBb,SAAtB,EAAiCK,OAAjC;IACA,OAAO,MAAMN,GAAG,CAACe,oBAAJ,CAAyBd,SAAzB,CAAb;EACD,CAdQ,EAcN,CAACD,GAAD,EAAMC,SAAN,CAdM,CAAT;AAeD,CAzBM"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import type Sendbird from 'sendbird';
|
|
3
2
|
import { SendbirdChatSDK } from '@sendbird/uikit-utils';
|
|
4
|
-
export declare const useChannelHandler: (sdk: SendbirdChatSDK, handlerId: string, hookHandler: Partial<Sendbird.ChannelHandler
|
|
3
|
+
export declare const useChannelHandler: (sdk: SendbirdChatSDK, handlerId: string, hookHandler: Partial<Sendbird.ChannelHandler>) => void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sendbird/uikit-chat-hooks",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "React hooks that built with SendbirdChat SDK",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -38,10 +38,10 @@
|
|
|
38
38
|
"access": "public"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@sendbird/uikit-utils": "1.
|
|
41
|
+
"@sendbird/uikit-utils": "1.1.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@types/react": "
|
|
44
|
+
"@types/react": "*",
|
|
45
45
|
"react": "^16.13.1",
|
|
46
46
|
"react-native-builder-bob": "^0.18.0",
|
|
47
47
|
"typescript": "^4.1.3"
|
|
@@ -69,5 +69,5 @@
|
|
|
69
69
|
"readmeFile": "./README.md",
|
|
70
70
|
"displayName": "@sendbird/uikit-chat-hooks"
|
|
71
71
|
},
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "787ef6d52fec5d01e9b831d7a6f17e33614e2d09"
|
|
73
73
|
}
|
|
@@ -95,18 +95,13 @@ export const useGroupChannelListWithCollection: UseGroupChannelList = (sdk, user
|
|
|
95
95
|
setLoading(false);
|
|
96
96
|
}, [init, userId]);
|
|
97
97
|
|
|
98
|
-
useChannelHandler(
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
const isMe = user.userId === userId;
|
|
104
|
-
if (isMe) deleteChannels([channel.url]);
|
|
105
|
-
else updateChannels([channel], false);
|
|
106
|
-
},
|
|
98
|
+
useChannelHandler(sdk, `${HOOK_NAME}_${id}`, {
|
|
99
|
+
onUserBanned: (channel, user) => {
|
|
100
|
+
const isMe = user.userId === userId;
|
|
101
|
+
if (isMe) deleteChannels([channel.url]);
|
|
102
|
+
else updateChannels([channel], false);
|
|
107
103
|
},
|
|
108
|
-
|
|
109
|
-
);
|
|
104
|
+
});
|
|
110
105
|
// ---------- internal hooks ends ---------- //
|
|
111
106
|
|
|
112
107
|
// ---------- returns methods ---------- //
|
|
@@ -71,29 +71,24 @@ export const useGroupChannelListWithQuery: UseGroupChannelList = (sdk, userId, o
|
|
|
71
71
|
setLoading(false);
|
|
72
72
|
}, [init, userId]);
|
|
73
73
|
|
|
74
|
-
useChannelHandler(
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
const isMe = user.userId === userId;
|
|
86
|
-
if (isMe) deleteChannels([channel.url]);
|
|
87
|
-
else updateChannels([channel], false);
|
|
88
|
-
},
|
|
89
|
-
onUserBanned(channel, user) {
|
|
90
|
-
const isMe = user.userId === userId;
|
|
91
|
-
if (isMe) deleteChannels([channel.url]);
|
|
92
|
-
else updateChannels([channel], false);
|
|
93
|
-
},
|
|
74
|
+
useChannelHandler(sdk, HOOK_NAME, {
|
|
75
|
+
onChannelChanged: (channel) => updateChannels([channel], false),
|
|
76
|
+
onChannelFrozen: (channel) => updateChannels([channel], false),
|
|
77
|
+
onChannelUnfrozen: (channel) => updateChannels([channel], false),
|
|
78
|
+
onChannelMemberCountChanged: (channels) => updateChannels(channels, false),
|
|
79
|
+
onChannelDeleted: (url) => deleteChannels([url]),
|
|
80
|
+
onUserJoined: (channel) => updateChannels([channel], false),
|
|
81
|
+
onUserLeft: (channel, user) => {
|
|
82
|
+
const isMe = user.userId === userId;
|
|
83
|
+
if (isMe) deleteChannels([channel.url]);
|
|
84
|
+
else updateChannels([channel], false);
|
|
94
85
|
},
|
|
95
|
-
|
|
96
|
-
|
|
86
|
+
onUserBanned(channel, user) {
|
|
87
|
+
const isMe = user.userId === userId;
|
|
88
|
+
if (isMe) deleteChannels([channel.url]);
|
|
89
|
+
else updateChannels([channel], false);
|
|
90
|
+
},
|
|
91
|
+
});
|
|
97
92
|
// ---------- internal hooks ends ---------- //
|
|
98
93
|
|
|
99
94
|
// ---------- returns methods ---------- //
|
|
@@ -73,7 +73,6 @@ export const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (s
|
|
|
73
73
|
|
|
74
74
|
const updateChannel = (channel: SendbirdChannel) => {
|
|
75
75
|
if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {
|
|
76
|
-
setActiveChannel(channel);
|
|
77
76
|
forceUpdate();
|
|
78
77
|
}
|
|
79
78
|
};
|
|
@@ -153,24 +152,19 @@ export const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (s
|
|
|
153
152
|
[sdk, activeChannel.url, options?.collectionCreator],
|
|
154
153
|
);
|
|
155
154
|
|
|
156
|
-
useChannelHandler(
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
} else {
|
|
166
|
-
setActiveChannel(channel);
|
|
167
|
-
forceUpdate();
|
|
168
|
-
}
|
|
155
|
+
useChannelHandler(sdk, HOOK_NAME, {
|
|
156
|
+
onUserBanned(channel, bannedUser) {
|
|
157
|
+
disposeManuallyAfterUnmounted();
|
|
158
|
+
if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {
|
|
159
|
+
if (bannedUser.userId === sdk.currentUser.userId) {
|
|
160
|
+
options?.onChannelDeleted?.();
|
|
161
|
+
} else {
|
|
162
|
+
setActiveChannel(channel);
|
|
163
|
+
forceUpdate();
|
|
169
164
|
}
|
|
170
|
-
}
|
|
165
|
+
}
|
|
171
166
|
},
|
|
172
|
-
|
|
173
|
-
);
|
|
167
|
+
});
|
|
174
168
|
|
|
175
169
|
useEffect(() => {
|
|
176
170
|
// NOTE: Cache read is heavy synchronous task, and it prevents smooth ui transition
|