@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.
Files changed (32) hide show
  1. package/lib/commonjs/channel/useGroupChannelListWithCollection.js +1 -1
  2. package/lib/commonjs/channel/useGroupChannelListWithCollection.js.map +1 -1
  3. package/lib/commonjs/channel/useGroupChannelListWithQuery.js +1 -1
  4. package/lib/commonjs/channel/useGroupChannelListWithQuery.js.map +1 -1
  5. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +1 -2
  6. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  7. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +1 -1
  8. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  9. package/lib/commonjs/common/useAppFeatures.js +8 -28
  10. package/lib/commonjs/common/useAppFeatures.js.map +1 -1
  11. package/lib/commonjs/handler/useChannelHandler.js +16 -5
  12. package/lib/commonjs/handler/useChannelHandler.js.map +1 -1
  13. package/lib/module/channel/useGroupChannelListWithCollection.js +1 -1
  14. package/lib/module/channel/useGroupChannelListWithCollection.js.map +1 -1
  15. package/lib/module/channel/useGroupChannelListWithQuery.js +1 -1
  16. package/lib/module/channel/useGroupChannelListWithQuery.js.map +1 -1
  17. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +1 -2
  18. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  19. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +1 -1
  20. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  21. package/lib/module/common/useAppFeatures.js +8 -27
  22. package/lib/module/common/useAppFeatures.js.map +1 -1
  23. package/lib/module/handler/useChannelHandler.js +17 -6
  24. package/lib/module/handler/useChannelHandler.js.map +1 -1
  25. package/lib/typescript/src/handler/useChannelHandler.d.ts +1 -2
  26. package/package.json +4 -4
  27. package/src/channel/useGroupChannelListWithCollection.ts +6 -11
  28. package/src/channel/useGroupChannelListWithQuery.ts +17 -22
  29. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +11 -17
  30. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +46 -51
  31. package/src/common/useAppFeatures.ts +5 -22
  32. package/src/handler/useChannelHandler.ts +11 -5
@@ -106,7 +106,7 @@ const useGroupChannelListWithCollection = (sdk, userId, options) => {
106
106
  const isMe = user.userId === userId;
107
107
  if (isMe) deleteChannels([channel.url]);else updateChannels([channel], false);
108
108
  }
109
- }, [sdk, userId]); // ---------- internal hooks ends ---------- //
109
+ }); // ---------- internal hooks ends ---------- //
110
110
  // ---------- returns methods ---------- //
111
111
 
112
112
  const refresh = (0, _react.useCallback)(async () => {
@@ -1 +1 @@
1
- {"version":3,"names":["HOOK_NAME","createGroupChannelListCollection","sdk","collectionCreator","passedCollection","defaultCollection","GroupChannel","createGroupChannelCollection","filter","GroupChannelFilter","setLimit","setFilter","build","useGroupChannelListWithCollection","userId","options","id","useUniqId","deliveryReceiptEnabled","useAppFeatures","collectionRef","useRef","loading","setLoading","useState","refreshing","setRefreshing","groupChannelMap","setGroupChannelMap","groupChannels","useMemo","channels","Object","values","sortComparator","sort","updateChannels","clearPrev","c","isGroupChannel","arrayToMap","prev","forEach","channel","markAsDelivered","url","deleteChannels","channelUrls","draft","init","useCallback","uid","current","dispose","hasMore","loadMore","setGroupChannelCollectionHandler","onChannelsAdded","_","onChannelsUpdated","onChannelsDeleted","useEffect","useAsyncEffect","useChannelHandler","onUserBanned","user","isMe","refresh","update","next"],"sources":["useGroupChannelListWithCollection.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport type {\n SendbirdChannel,\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdGroupChannelCollection,\n} from '@sendbird/uikit-utils';\nimport { arrayToMap, useAsyncEffect, useUniqId } 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 = 'useGroupChannelListWithCollection';\nconst createGroupChannelListCollection = (\n sdk: SendbirdChatSDK,\n collectionCreator: UseGroupChannelListOptions['collectionCreator'],\n) => {\n const passedCollection = collectionCreator?.();\n if (passedCollection) return passedCollection;\n\n const defaultCollection = sdk.GroupChannel.createGroupChannelCollection();\n const filter = new sdk.GroupChannelFilter();\n return defaultCollection.setLimit(20).setFilter(filter).build();\n};\n\nexport const useGroupChannelListWithCollection: UseGroupChannelList = (sdk, userId, options) => {\n const id = useUniqId(HOOK_NAME);\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const collectionRef = useRef<SendbirdGroupChannelCollection>();\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 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 (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createGroupChannelListCollection(sdk, options?.collectionCreator);\n if (collectionRef.current?.hasMore) {\n updateChannels(await collectionRef.current?.loadMore(), true);\n }\n\n collectionRef.current?.setGroupChannelCollectionHandler({\n onChannelsAdded(_, channels) {\n updateChannels(channels, false);\n },\n onChannelsUpdated(_, channels) {\n updateChannels(channels, false);\n },\n onChannelsDeleted(_, channelUrls) {\n deleteChannels(channelUrls);\n },\n });\n }\n },\n [sdk, options?.collectionCreator],\n );\n // ---------- internal methods ends ---------- //\n\n // ---------- internal hooks ---------- //\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n useAsyncEffect(async () => {\n setLoading(true);\n await init(userId);\n setLoading(false);\n }, [init, userId]);\n\n useChannelHandler(\n sdk,\n `${HOOK_NAME}_${id}`,\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 (collectionRef.current?.hasMore) {\n const channels = await collectionRef.current?.loadMore();\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 {\n loading,\n groupChannels,\n refresh,\n refreshing,\n next,\n update,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["HOOK_NAME","createGroupChannelListCollection","sdk","collectionCreator","passedCollection","defaultCollection","GroupChannel","createGroupChannelCollection","filter","GroupChannelFilter","setLimit","setFilter","build","useGroupChannelListWithCollection","userId","options","id","useUniqId","deliveryReceiptEnabled","useAppFeatures","collectionRef","useRef","loading","setLoading","useState","refreshing","setRefreshing","groupChannelMap","setGroupChannelMap","groupChannels","useMemo","channels","Object","values","sortComparator","sort","updateChannels","clearPrev","c","isGroupChannel","arrayToMap","prev","forEach","channel","markAsDelivered","url","deleteChannels","channelUrls","draft","init","useCallback","uid","current","dispose","hasMore","loadMore","setGroupChannelCollectionHandler","onChannelsAdded","_","onChannelsUpdated","onChannelsDeleted","useEffect","useAsyncEffect","useChannelHandler","onUserBanned","user","isMe","refresh","update","next"],"sources":["useGroupChannelListWithCollection.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport type {\n SendbirdChannel,\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdGroupChannelCollection,\n} from '@sendbird/uikit-utils';\nimport { arrayToMap, useAsyncEffect, useUniqId } 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 = 'useGroupChannelListWithCollection';\nconst createGroupChannelListCollection = (\n sdk: SendbirdChatSDK,\n collectionCreator: UseGroupChannelListOptions['collectionCreator'],\n) => {\n const passedCollection = collectionCreator?.();\n if (passedCollection) return passedCollection;\n\n const defaultCollection = sdk.GroupChannel.createGroupChannelCollection();\n const filter = new sdk.GroupChannelFilter();\n return defaultCollection.setLimit(20).setFilter(filter).build();\n};\n\nexport const useGroupChannelListWithCollection: UseGroupChannelList = (sdk, userId, options) => {\n const id = useUniqId(HOOK_NAME);\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const collectionRef = useRef<SendbirdGroupChannelCollection>();\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 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 (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createGroupChannelListCollection(sdk, options?.collectionCreator);\n if (collectionRef.current?.hasMore) {\n updateChannels(await collectionRef.current?.loadMore(), true);\n }\n\n collectionRef.current?.setGroupChannelCollectionHandler({\n onChannelsAdded(_, channels) {\n updateChannels(channels, false);\n },\n onChannelsUpdated(_, channels) {\n updateChannels(channels, false);\n },\n onChannelsDeleted(_, channelUrls) {\n deleteChannels(channelUrls);\n },\n });\n }\n },\n [sdk, options?.collectionCreator],\n );\n // ---------- internal methods ends ---------- //\n\n // ---------- internal hooks ---------- //\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n useAsyncEffect(async () => {\n setLoading(true);\n await init(userId);\n setLoading(false);\n }, [init, userId]);\n\n useChannelHandler(sdk, `${HOOK_NAME}_${id}`, {\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 (collectionRef.current?.hasMore) {\n const channels = await collectionRef.current?.loadMore();\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 {\n loading,\n groupChannels,\n refresh,\n refreshing,\n next,\n update,\n };\n};\n"],"mappings":";;;;;;;AAAA;;AAQA;;AAEA;;AACA;;AAKA,MAAMA,SAAS,GAAG,mCAAlB;;AACA,MAAMC,gCAAgC,GAAG,CACvCC,GADuC,EAEvCC,iBAFuC,KAGpC;EACH,MAAMC,gBAAgB,GAAGD,iBAAH,aAAGA,iBAAH,uBAAGA,iBAAiB,EAA1C;EACA,IAAIC,gBAAJ,EAAsB,OAAOA,gBAAP;EAEtB,MAAMC,iBAAiB,GAAGH,GAAG,CAACI,YAAJ,CAAiBC,4BAAjB,EAA1B;EACA,MAAMC,MAAM,GAAG,IAAIN,GAAG,CAACO,kBAAR,EAAf;EACA,OAAOJ,iBAAiB,CAACK,QAAlB,CAA2B,EAA3B,EAA+BC,SAA/B,CAAyCH,MAAzC,EAAiDI,KAAjD,EAAP;AACD,CAVD;;AAYO,MAAMC,iCAAsD,GAAG,CAACX,GAAD,EAAMY,MAAN,EAAcC,OAAd,KAA0B;EAC9F,MAAMC,EAAE,GAAG,IAAAC,qBAAA,EAAUjB,SAAV,CAAX;EACA,MAAM;IAAEkB;EAAF,IAA6B,IAAAC,8BAAA,EAAejB,GAAf,CAAnC;EAEA,MAAMkB,aAAa,GAAG,IAAAC,aAAA,GAAtB;EACA,MAAM,CAACC,OAAD,EAAUC,UAAV,IAAwB,IAAAC,eAAA,EAAS,KAAT,CAA9B;EACA,MAAM,CAACC,UAAD,EAAaC,aAAb,IAA8B,IAAAF,eAAA,EAAS,KAAT,CAApC;EAEA,MAAM,CAACG,eAAD,EAAkBC,kBAAlB,IAAwC,IAAAJ,eAAA,EAA0B,EAA1B,CAA9C;EACA,MAAMK,aAAa,GAAG,IAAAC,cAAA,EAAQ,MAAM;IAClC,MAAMC,QAAQ,GAAGC,MAAM,CAACC,MAAP,CAAcN,eAAd,CAAjB;IACA,IAAIZ,OAAJ,aAAIA,OAAJ,eAAIA,OAAO,CAAEmB,cAAb,EAA6B,OAAOH,QAAQ,CAACI,IAAT,CAAcpB,OAAd,aAAcA,OAAd,uBAAcA,OAAO,CAAEmB,cAAvB,CAAP;IAC7B,OAAOH,QAAP;EACD,CAJqB,EAInB,CAACJ,eAAD,EAAkBZ,OAAlB,aAAkBA,OAAlB,uBAAkBA,OAAO,CAAEmB,cAA3B,CAJmB,CAAtB,CAT8F,CAe9F;;EACA,MAAME,cAAc,GAAG,CAACL,QAAD,EAA8BM,SAA9B,KAAqD;IAC1E,MAAMR,aAAa,GAAGE,QAAQ,CAACvB,MAAT,CAAiB8B,CAAD,IAAkCA,CAAC,CAACC,cAAF,EAAlD,CAAtB;IACA,IAAIF,SAAJ,EAAeT,kBAAkB,CAAC,IAAAY,sBAAA,EAAWX,aAAX,EAA0B,KAA1B,CAAD,CAAlB,CAAf,KACKD,kBAAkB,CAAEa,IAAD,KAAW,EAAE,GAAGA,IAAL;MAAW,GAAG,IAAAD,sBAAA,EAAWX,aAAX,EAA0B,KAA1B;IAAd,CAAX,CAAD,CAAlB;IACL,IAAIX,sBAAJ,EAA4BW,aAAa,CAACa,OAAd,CAAuBC,OAAD,IAAazC,GAAG,CAAC0C,eAAJ,CAAoBD,OAAO,CAACE,GAA5B,CAAnC;EAC7B,CALD;;EAMA,MAAMC,cAAc,GAAIC,WAAD,IAA2B;IAChDnB,kBAAkB,CAAC,QAAkB;MAAA,IAAjB,EAAE,GAAGoB;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,IAAAC,kBAAA,EACX,MAAOC,GAAP,IAAwB;IAAA;;IACtB,IAAI/B,aAAa,CAACgC,OAAlB,EAA2B,yBAAAhC,aAAa,CAACgC,OAAd,gFAAuBC,OAAvB;;IAE3B,IAAIF,GAAJ,EAAS;MAAA;;MACP/B,aAAa,CAACgC,OAAd,GAAwBnD,gCAAgC,CAACC,GAAD,EAAMa,OAAN,aAAMA,OAAN,uBAAMA,OAAO,CAAEZ,iBAAf,CAAxD;;MACA,8BAAIiB,aAAa,CAACgC,OAAlB,mDAAI,uBAAuBE,OAA3B,EAAoC;QAAA;;QAClClB,cAAc,CAAC,iCAAMhB,aAAa,CAACgC,OAApB,2DAAM,uBAAuBG,QAAvB,EAAN,CAAD,EAA0C,IAA1C,CAAd;MACD;;MAED,0BAAAnC,aAAa,CAACgC,OAAd,kFAAuBI,gCAAvB,CAAwD;QACtDC,eAAe,CAACC,CAAD,EAAI3B,QAAJ,EAAc;UAC3BK,cAAc,CAACL,QAAD,EAAW,KAAX,CAAd;QACD,CAHqD;;QAItD4B,iBAAiB,CAACD,CAAD,EAAI3B,QAAJ,EAAc;UAC7BK,cAAc,CAACL,QAAD,EAAW,KAAX,CAAd;QACD,CANqD;;QAOtD6B,iBAAiB,CAACF,CAAD,EAAIX,WAAJ,EAAiB;UAChCD,cAAc,CAACC,WAAD,CAAd;QACD;;MATqD,CAAxD;IAWD;EACF,CAtBU,EAuBX,CAAC7C,GAAD,EAAMa,OAAN,aAAMA,OAAN,uBAAMA,OAAO,CAAEZ,iBAAf,CAvBW,CAAb,CA5B8F,CAqD9F;EAEA;;EACA,IAAA0D,gBAAA,EAAU,MAAM;IACd,OAAO,MAAM;MAAA;;MACX,IAAIzC,aAAa,CAACgC,OAAlB,EAA2B,0BAAAhC,aAAa,CAACgC,OAAd,kFAAuBC,OAAvB;IAC5B,CAFD;EAGD,CAJD,EAIG,EAJH;EAMA,IAAAS,0BAAA,EAAe,YAAY;IACzBvC,UAAU,CAAC,IAAD,CAAV;IACA,MAAM0B,IAAI,CAACnC,MAAD,CAAV;IACAS,UAAU,CAAC,KAAD,CAAV;EACD,CAJD,EAIG,CAAC0B,IAAD,EAAOnC,MAAP,CAJH;EAMA,IAAAiD,oCAAA,EAAkB7D,GAAlB,EAAwB,GAAEF,SAAU,IAAGgB,EAAG,EAA1C,EAA6C;IAC3CgD,YAAY,EAAE,CAACrB,OAAD,EAAUsB,IAAV,KAAmB;MAC/B,MAAMC,IAAI,GAAGD,IAAI,CAACnD,MAAL,KAAgBA,MAA7B;MACA,IAAIoD,IAAJ,EAAUpB,cAAc,CAAC,CAACH,OAAO,CAACE,GAAT,CAAD,CAAd,CAAV,KACKT,cAAc,CAAC,CAACO,OAAD,CAAD,EAAY,KAAZ,CAAd;IACN;EAL0C,CAA7C,EApE8F,CA2E9F;EAEA;;EACA,MAAMwB,OAAO,GAAG,IAAAjB,kBAAA,EAAY,YAAY;IACtCxB,aAAa,CAAC,IAAD,CAAb;IACA,MAAMuB,IAAI,CAACnC,MAAD,CAAV;IACAY,aAAa,CAAC,KAAD,CAAb;EACD,CAJe,EAIb,CAACuB,IAAD,EAAOnC,MAAP,CAJa,CAAhB;EAMA,MAAMsD,MAAM,GAAG,IAAAlB,kBAAA,EACZP,OAAD,IAAmC;IACjC,IAAIzB,sBAAJ,EAA4BhB,GAAG,CAAC0C,eAAJ,CAAoBD,OAAO,CAACE,GAA5B;IAC5BjB,kBAAkB,CAAEa,IAAD,KAAW,EAAE,GAAGA,IAAL;MAAW,CAACE,OAAO,CAACE,GAAT,GAAeF;IAA1B,CAAX,CAAD,CAAlB;EACD,CAJY,EAKb,CAACzC,GAAD,CALa,CAAf;EAQA,MAAMmE,IAAI,GAAG,IAAAnB,kBAAA,EAAY,YAAY;IAAA;;IACnC,8BAAI9B,aAAa,CAACgC,OAAlB,mDAAI,uBAAuBE,OAA3B,EAAoC;MAAA;;MAClC,MAAMvB,QAAQ,GAAG,iCAAMX,aAAa,CAACgC,OAApB,2DAAM,uBAAuBG,QAAvB,EAAN,CAAjB;MACA3B,kBAAkB,CAAEa,IAAD,KAAW,EAAE,GAAGA,IAAL;QAAW,GAAG,IAAAD,sBAAA,EAAWT,QAAX,EAAqB,KAArB;MAAd,CAAX,CAAD,CAAlB;MACA,IAAIb,sBAAJ,EAA4Ba,QAAQ,CAACW,OAAT,CAAkBC,OAAD,IAAazC,GAAG,CAAC0C,eAAJ,CAAoBD,OAAO,CAACE,GAA5B,CAA9B;IAC7B;EACF,CANY,EAMV,CAAC3C,GAAD,CANU,CAAb,CA5F8F,CAmG9F;;EAEA,OAAO;IACLoB,OADK;IAELO,aAFK;IAGLsC,OAHK;IAIL1C,UAJK;IAKL4C,IALK;IAMLD;EANK,CAAP;AAQD,CA7GM"}
@@ -90,7 +90,7 @@ const useGroupChannelListWithQuery = (sdk, userId, options) => {
90
90
  if (isMe) deleteChannels([channel.url]);else updateChannels([channel], false);
91
91
  }
92
92
 
93
- }, [sdk, userId]); // ---------- internal hooks ends ---------- //
93
+ }); // ---------- internal hooks ends ---------- //
94
94
  // ---------- returns methods ---------- //
95
95
 
96
96
  const refresh = (0, _react.useCallback)(async () => {
@@ -1 +1 @@
1
- {"version":3,"names":["HOOK_NAME","createGroupChannelListQuery","sdk","queryCreator","passedQuery","defaultQuery","GroupChannel","createMyGroupChannelListQuery","limit","useGroupChannelListWithQuery","userId","options","deliveryReceiptEnabled","useAppFeatures","queryRef","useRef","loading","setLoading","useState","refreshing","setRefreshing","groupChannelMap","setGroupChannelMap","groupChannels","useMemo","channels","Object","values","sortComparator","sort","updateChannels","clearPrev","filter","c","isGroupChannel","arrayToMap","prev","forEach","channel","markAsDelivered","url","deleteChannels","channelUrls","draft","init","useCallback","uid","current","hasNext","next","useAsyncEffect","useChannelHandler","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":["HOOK_NAME","createGroupChannelListQuery","sdk","queryCreator","passedQuery","defaultQuery","GroupChannel","createMyGroupChannelListQuery","limit","useGroupChannelListWithQuery","userId","options","deliveryReceiptEnabled","useAppFeatures","queryRef","useRef","loading","setLoading","useState","refreshing","setRefreshing","groupChannelMap","setGroupChannelMap","groupChannels","useMemo","channels","Object","values","sortComparator","sort","updateChannels","clearPrev","filter","c","isGroupChannel","arrayToMap","prev","forEach","channel","markAsDelivered","url","deleteChannels","channelUrls","draft","init","useCallback","uid","current","hasNext","next","useAsyncEffect","useChannelHandler","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":"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"}
@@ -73,7 +73,6 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
73
73
 
74
74
  const updateChannel = channel => {
75
75
  if (channel.isGroupChannel() && !(0, _uikitUtils.isDifferentChannel)(channel, activeChannel)) {
76
- setActiveChannel(channel);
77
76
  forceUpdate();
78
77
  }
79
78
  };
@@ -172,7 +171,7 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
172
171
  }
173
172
  }
174
173
 
175
- }, [sdk]);
174
+ });
176
175
  (0, _react.useEffect)(() => {
177
176
  // NOTE: Cache read is heavy synchronous task, and it prevents smooth ui transition
178
177
  setTimeout(async () => {
@@ -1 +1 @@
1
- {"version":3,"names":["createMessageCollection","sdk","channel","creator","collection","filter","MessageFilter","setLimit","setFilter","build","HOOK_NAME","useGroupChannelMessagesWithCollection","userId","options","isMounted","useIsMountedRef","disposeManuallyAfterUnmounted","current","collectionRef","dispose","deliveryReceiptEnabled","useAppFeatures","useRef","activeChannel","setActiveChannel","useActiveGroupChannel","forceUpdate","useForceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","useGroupChannelMessagesReducer","sortComparator","channelMarkAs","markAsDelivered","url","e","Logger","error","markAsReadWithChannelUrls","updateChannel","isGroupChannel","isDifferentChannel","init","useCallback","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","useChannelHandler","onUserBanned","bannedUser","useEffect","setTimeout","refresh","prev","hasPrevious","list","loadPrevious","next","hasNext","fetchedList","loadNext","push","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","sentMessage","sendFileMessage","updateUserMessage","updatedMessage","NOOP","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":["createMessageCollection","sdk","channel","creator","collection","filter","MessageFilter","setLimit","setFilter","build","HOOK_NAME","useGroupChannelMessagesWithCollection","userId","options","isMounted","useIsMountedRef","disposeManuallyAfterUnmounted","current","collectionRef","dispose","deliveryReceiptEnabled","useAppFeatures","useRef","activeChannel","setActiveChannel","useActiveGroupChannel","forceUpdate","useForceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","useGroupChannelMessagesReducer","sortComparator","channelMarkAs","markAsDelivered","url","e","Logger","error","markAsReadWithChannelUrls","updateChannel","isGroupChannel","isDifferentChannel","init","useCallback","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","useChannelHandler","onUserBanned","bannedUser","useEffect","setTimeout","refresh","prev","hasPrevious","list","loadPrevious","next","hasNext","fetchedList","loadNext","push","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","sentMessage","sendFileMessage","updateUserMessage","updatedMessage","NOOP","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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"}
@@ -149,7 +149,7 @@ const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options) => {
149
149
  }
150
150
  }
151
151
 
152
- }, [sdk]);
152
+ });
153
153
  (0, _uikitUtils.useAsyncEffect)(async () => {
154
154
  updateLoading(true);
155
155
  await init(userId);
@@ -1 +1 @@
1
- {"version":3,"names":["createMessageQuery","channel","creator","query","createPreviousMessageListQuery","limit","reverse","HOOK_NAME","useGroupChannelMessagesWithQuery","sdk","userId","options","deliveryReceiptEnabled","useAppFeatures","queryRef","useRef","activeChannel","setActiveChannel","useActiveGroupChannel","forceUpdate","useForceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","useGroupChannelMessagesReducer","sortComparator","channelMarkAs","markAsDelivered","url","e","Logger","error","markAsReadWithChannelUrls","init","useCallback","uid","current","queryCreator","hasMore","list","load","currentUser","channelUpdater","isGroupChannel","isDifferentChannel","useChannelHandler","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","useAsyncEffect","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":["createMessageQuery","channel","creator","query","createPreviousMessageListQuery","limit","reverse","HOOK_NAME","useGroupChannelMessagesWithQuery","sdk","userId","options","deliveryReceiptEnabled","useAppFeatures","queryRef","useRef","activeChannel","setActiveChannel","useActiveGroupChannel","forceUpdate","useForceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","useGroupChannelMessagesReducer","sortComparator","channelMarkAs","markAsDelivered","url","e","Logger","error","markAsReadWithChannelUrls","init","useCallback","uid","current","queryCreator","hasMore","list","load","currentUser","channelUpdater","isGroupChannel","isDifferentChannel","useChannelHandler","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","useAsyncEffect","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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"}
@@ -5,38 +5,18 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useAppFeatures = void 0;
7
7
 
8
- var _react = require("react");
9
-
10
8
  var _uikitUtils = require("@sendbird/uikit-utils");
11
9
 
12
10
  const useAppFeatures = sdk => {
13
- var _sdk$appInfo2, _sdk$appInfo4, _sdk$appInfo6, _sdk$appInfo8;
14
-
15
- const deliveryReceiptEnabled = (0, _react.useMemo)(() => {
16
- var _sdk$appInfo, _sdk$appInfo$premiumF, _sdk$appInfo$premiumF2;
17
-
18
- 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, _uikitUtils.PremiumFeatures.delivery_receipt));
19
- }, [(_sdk$appInfo2 = sdk.appInfo) === null || _sdk$appInfo2 === void 0 ? void 0 : _sdk$appInfo2.premiumFeatureList]);
20
- const broadcastChannelEnabled = (0, _react.useMemo)(() => {
21
- var _sdk$appInfo3, _sdk$appInfo3$applica, _sdk$appInfo3$applica2;
22
-
23
- 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, _uikitUtils.ApplicationAttributes.allow_broadcast_channel));
24
- }, [(_sdk$appInfo4 = sdk.appInfo) === null || _sdk$appInfo4 === void 0 ? void 0 : _sdk$appInfo4.applicationAttributes]);
25
- const superGroupChannelEnabled = (0, _react.useMemo)(() => {
26
- var _sdk$appInfo5, _sdk$appInfo5$applica, _sdk$appInfo5$applica2;
27
-
28
- 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, _uikitUtils.ApplicationAttributes.allow_super_group_channel));
29
- }, [(_sdk$appInfo6 = sdk.appInfo) === null || _sdk$appInfo6 === void 0 ? void 0 : _sdk$appInfo6.applicationAttributes]);
30
- const reactionEnabled = (0, _react.useMemo)(() => {
31
- var _sdk$appInfo7, _sdk$appInfo7$applica, _sdk$appInfo7$applica2;
32
-
33
- 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, _uikitUtils.ApplicationAttributes.reactions));
34
- }, [(_sdk$appInfo8 = sdk.appInfo) === null || _sdk$appInfo8 === void 0 ? void 0 : _sdk$appInfo8.applicationAttributes]);
11
+ const {
12
+ premiumFeatureList = [],
13
+ applicationAttributes = []
14
+ } = sdk.appInfo ?? {};
35
15
  return {
36
- deliveryReceiptEnabled,
37
- broadcastChannelEnabled,
38
- superGroupChannelEnabled,
39
- reactionEnabled
16
+ deliveryReceiptEnabled: Boolean(premiumFeatureList.includes(_uikitUtils.PremiumFeatures.delivery_receipt)),
17
+ broadcastChannelEnabled: Boolean(applicationAttributes.includes(_uikitUtils.ApplicationAttributes.allow_broadcast_channel)),
18
+ superGroupChannelEnabled: Boolean(applicationAttributes.includes(_uikitUtils.ApplicationAttributes.allow_super_group_channel)),
19
+ reactionEnabled: Boolean(applicationAttributes.includes(_uikitUtils.ApplicationAttributes.reactions))
40
20
  };
41
21
  };
42
22
 
@@ -1 +1 @@
1
- {"version":3,"names":["useAppFeatures","sdk","deliveryReceiptEnabled","useMemo","Boolean","appInfo","premiumFeatureList","includes","PremiumFeatures","delivery_receipt","broadcastChannelEnabled","applicationAttributes","ApplicationAttributes","allow_broadcast_channel","superGroupChannelEnabled","allow_super_group_channel","reactionEnabled","reactions"],"sources":["useAppFeatures.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { ApplicationAttributes, PremiumFeatures, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nexport const useAppFeatures = (sdk: SendbirdChatSDK) => {\n const deliveryReceiptEnabled = useMemo(() => {\n return Boolean(sdk.appInfo?.premiumFeatureList?.includes?.(PremiumFeatures.delivery_receipt));\n }, [sdk.appInfo?.premiumFeatureList]);\n\n const broadcastChannelEnabled = useMemo(() => {\n return Boolean(sdk.appInfo?.applicationAttributes?.includes?.(ApplicationAttributes.allow_broadcast_channel));\n }, [sdk.appInfo?.applicationAttributes]);\n\n const superGroupChannelEnabled = useMemo(() => {\n return Boolean(sdk.appInfo?.applicationAttributes?.includes?.(ApplicationAttributes.allow_super_group_channel));\n }, [sdk.appInfo?.applicationAttributes]);\n\n const reactionEnabled = useMemo(() => {\n return Boolean(sdk.appInfo?.applicationAttributes?.includes?.(ApplicationAttributes.reactions));\n }, [sdk.appInfo?.applicationAttributes]);\n\n return {\n deliveryReceiptEnabled,\n broadcastChannelEnabled,\n superGroupChannelEnabled,\n reactionEnabled,\n };\n};\n"],"mappings":";;;;;;;AAAA;;AAEA;;AAEO,MAAMA,cAAc,GAAIC,GAAD,IAA0B;EAAA;;EACtD,MAAMC,sBAAsB,GAAG,IAAAC,cAAA,EAAQ,MAAM;IAAA;;IAC3C,OAAOC,OAAO,iBAACH,GAAG,CAACI,OAAL,0EAAC,aAAaC,kBAAd,oFAAC,sBAAiCC,QAAlC,2DAAC,mDAA4CC,2BAAA,CAAgBC,gBAA5D,CAAD,CAAd;EACD,CAF8B,EAE5B,kBAACR,GAAG,CAACI,OAAL,kDAAC,cAAaC,kBAAd,CAF4B,CAA/B;EAIA,MAAMI,uBAAuB,GAAG,IAAAP,cAAA,EAAQ,MAAM;IAAA;;IAC5C,OAAOC,OAAO,kBAACH,GAAG,CAACI,OAAL,2EAAC,cAAaM,qBAAd,oFAAC,sBAAoCJ,QAArC,2DAAC,mDAA+CK,iCAAA,CAAsBC,uBAArE,CAAD,CAAd;EACD,CAF+B,EAE7B,kBAACZ,GAAG,CAACI,OAAL,kDAAC,cAAaM,qBAAd,CAF6B,CAAhC;EAIA,MAAMG,wBAAwB,GAAG,IAAAX,cAAA,EAAQ,MAAM;IAAA;;IAC7C,OAAOC,OAAO,kBAACH,GAAG,CAACI,OAAL,2EAAC,cAAaM,qBAAd,oFAAC,sBAAoCJ,QAArC,2DAAC,mDAA+CK,iCAAA,CAAsBG,yBAArE,CAAD,CAAd;EACD,CAFgC,EAE9B,kBAACd,GAAG,CAACI,OAAL,kDAAC,cAAaM,qBAAd,CAF8B,CAAjC;EAIA,MAAMK,eAAe,GAAG,IAAAb,cAAA,EAAQ,MAAM;IAAA;;IACpC,OAAOC,OAAO,kBAACH,GAAG,CAACI,OAAL,2EAAC,cAAaM,qBAAd,oFAAC,sBAAoCJ,QAArC,2DAAC,mDAA+CK,iCAAA,CAAsBK,SAArE,CAAD,CAAd;EACD,CAFuB,EAErB,kBAAChB,GAAG,CAACI,OAAL,kDAAC,cAAaM,qBAAd,CAFqB,CAAxB;EAIA,OAAO;IACLT,sBADK;IAELQ,uBAFK;IAGLI,wBAHK;IAILE;EAJK,CAAP;AAMD,CAvBM"}
1
+ {"version":3,"names":["useAppFeatures","sdk","premiumFeatureList","applicationAttributes","appInfo","deliveryReceiptEnabled","Boolean","includes","PremiumFeatures","delivery_receipt","broadcastChannelEnabled","ApplicationAttributes","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;;AAEO,MAAMA,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,CAA4BC,2BAAA,CAAgBC,gBAA5C,CAAD,CAD1B;IAELC,uBAAuB,EAAEJ,OAAO,CAACH,qBAAqB,CAACI,QAAtB,CAA+BI,iCAAA,CAAsBC,uBAArD,CAAD,CAF3B;IAGLC,wBAAwB,EAAEP,OAAO,CAACH,qBAAqB,CAACI,QAAtB,CAA+BI,iCAAA,CAAsBG,yBAArD,CAAD,CAH5B;IAILC,eAAe,EAAET,OAAO,CAACH,qBAAqB,CAACI,QAAtB,CAA+BI,iCAAA,CAAsBK,SAArD,CAAD;EAJnB,CAAP;AAMD,CARM"}
@@ -9,20 +9,31 @@ var _react = require("react");
9
9
 
10
10
  var _uikitUtils = require("@sendbird/uikit-utils");
11
11
 
12
- const useChannelHandler = function (sdk, handlerId, hookHandler) {
13
- let deps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
12
+ const useChannelHandler = (sdk, handlerId, hookHandler) => {
13
+ const handlerRef = (0, _react.useRef)(hookHandler);
14
+ (0, _react.useLayoutEffect)(() => {
15
+ handlerRef.current = hookHandler;
16
+ });
14
17
  (0, _react.useEffect)(() => {
15
18
  _uikitUtils.Logger.debug('[useChannelHandler] hook called by', handlerId);
16
19
 
17
20
  const handler = new sdk.ChannelHandler();
18
21
  const handlerKeys = Object.keys(handler);
19
22
  handlerKeys.forEach(key => {
20
- const hookHandlerFn = hookHandler[key];
21
- if (hookHandlerFn) handler[key] = hookHandlerFn;
23
+ handler[key] = function () {
24
+ var _handlerRef$current$k, _handlerRef$current;
25
+
26
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
27
+ args[_key] = arguments[_key];
28
+ }
29
+
30
+ // @ts-ignore
31
+ (_handlerRef$current$k = (_handlerRef$current = handlerRef.current)[key]) === null || _handlerRef$current$k === void 0 ? void 0 : _handlerRef$current$k.call(_handlerRef$current, ...args);
32
+ };
22
33
  });
23
34
  sdk.addChannelHandler(handlerId, handler);
24
35
  return () => sdk.removeChannelHandler(handlerId);
25
- }, [sdk, handlerId, ...deps]);
36
+ }, [sdk, handlerId]);
26
37
  };
27
38
 
28
39
  exports.useChannelHandler = useChannelHandler;
@@ -1 +1 @@
1
- {"version":3,"names":["useChannelHandler","sdk","handlerId","hookHandler","deps","useEffect","Logger","debug","handler","ChannelHandler","handlerKeys","Object","keys","forEach","key","hookHandlerFn","addChannelHandler","removeChannelHandler"],"sources":["useChannelHandler.ts"],"sourcesContent":["import React, { useEffect } 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 deps: React.DependencyList = [],\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 const hookHandlerFn = hookHandler[key];\n if (hookHandlerFn) handler[key] = hookHandlerFn as () => unknown;\n });\n\n sdk.addChannelHandler(handlerId, handler);\n return () => sdk.removeChannelHandler(handlerId);\n }, [sdk, handlerId, ...deps]);\n};\n"],"mappings":";;;;;;;AAAA;;AAGA;;AAEO,MAAMA,iBAAiB,GAAG,UAC/BC,GAD+B,EAE/BC,SAF+B,EAG/BC,WAH+B,EAK5B;EAAA,IADHC,IACG,uEAD0B,EAC1B;EACH,IAAAC,gBAAA,EAAU,MAAM;IACdC,kBAAA,CAAOC,KAAP,CAAa,oCAAb,EAAmDL,SAAnD;;IAEA,MAAMM,OAAO,GAAG,IAAIP,GAAG,CAACQ,cAAR,EAAhB;IACA,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYJ,OAAZ,CAApB;IACAE,WAAW,CAACG,OAAZ,CAAqBC,GAAD,IAAS;MAC3B,MAAMC,aAAa,GAAGZ,WAAW,CAACW,GAAD,CAAjC;MACA,IAAIC,aAAJ,EAAmBP,OAAO,CAACM,GAAD,CAAP,GAAeC,aAAf;IACpB,CAHD;IAKAd,GAAG,CAACe,iBAAJ,CAAsBd,SAAtB,EAAiCM,OAAjC;IACA,OAAO,MAAMP,GAAG,CAACgB,oBAAJ,CAAyBf,SAAzB,CAAb;EACD,CAZD,EAYG,CAACD,GAAD,EAAMC,SAAN,EAAiB,GAAGE,IAApB,CAZH;AAaD,CAnBM"}
1
+ {"version":3,"names":["useChannelHandler","sdk","handlerId","hookHandler","handlerRef","useRef","useLayoutEffect","current","useEffect","Logger","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;;AAGA;;AAEO,MAAMA,iBAAiB,GAAG,CAC/BC,GAD+B,EAE/BC,SAF+B,EAG/BC,WAH+B,KAI5B;EACH,MAAMC,UAAU,GAAG,IAAAC,aAAA,EAAOF,WAAP,CAAnB;EACA,IAAAG,sBAAA,EAAgB,MAAM;IACpBF,UAAU,CAACG,OAAX,GAAqBJ,WAArB;EACD,CAFD;EAIA,IAAAK,gBAAA,EAAU,MAAM;IACdC,kBAAA,CAAOC,KAAP,CAAa,oCAAb,EAAmDR,SAAnD;;IAEA,MAAMS,OAAO,GAAG,IAAIV,GAAG,CAACW,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,gDAAAd,UAAU,CAACG,OAAX,EAAmBU,GAAnB,2GAA0B,GAAGC,IAA7B;MACD,CAHD;IAID,CALD;IAOAjB,GAAG,CAACkB,iBAAJ,CAAsBjB,SAAtB,EAAiCS,OAAjC;IACA,OAAO,MAAMV,GAAG,CAACmB,oBAAJ,CAAyBlB,SAAzB,CAAb;EACD,CAdD,EAcG,CAACD,GAAD,EAAMC,SAAN,CAdH;AAeD,CAzBM"}
@@ -95,7 +95,7 @@ export const useGroupChannelListWithCollection = (sdk, userId, options) => {
95
95
  const isMe = user.userId === userId;
96
96
  if (isMe) deleteChannels([channel.url]);else updateChannels([channel], false);
97
97
  }
98
- }, [sdk, userId]); // ---------- internal hooks ends ---------- //
98
+ }); // ---------- internal hooks ends ---------- //
99
99
  // ---------- returns methods ---------- //
100
100
 
101
101
  const refresh = useCallback(async () => {
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","arrayToMap","useAsyncEffect","useUniqId","useAppFeatures","useChannelHandler","HOOK_NAME","createGroupChannelListCollection","sdk","collectionCreator","passedCollection","defaultCollection","GroupChannel","createGroupChannelCollection","filter","GroupChannelFilter","setLimit","setFilter","build","useGroupChannelListWithCollection","userId","options","id","deliveryReceiptEnabled","collectionRef","loading","setLoading","refreshing","setRefreshing","groupChannelMap","setGroupChannelMap","groupChannels","channels","Object","values","sortComparator","sort","updateChannels","clearPrev","c","isGroupChannel","prev","forEach","channel","markAsDelivered","url","deleteChannels","channelUrls","draft","init","uid","current","dispose","hasMore","loadMore","setGroupChannelCollectionHandler","onChannelsAdded","_","onChannelsUpdated","onChannelsDeleted","onUserBanned","user","isMe","refresh","update","next"],"sources":["useGroupChannelListWithCollection.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport type {\n SendbirdChannel,\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdGroupChannelCollection,\n} from '@sendbird/uikit-utils';\nimport { arrayToMap, useAsyncEffect, useUniqId } 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 = 'useGroupChannelListWithCollection';\nconst createGroupChannelListCollection = (\n sdk: SendbirdChatSDK,\n collectionCreator: UseGroupChannelListOptions['collectionCreator'],\n) => {\n const passedCollection = collectionCreator?.();\n if (passedCollection) return passedCollection;\n\n const defaultCollection = sdk.GroupChannel.createGroupChannelCollection();\n const filter = new sdk.GroupChannelFilter();\n return defaultCollection.setLimit(20).setFilter(filter).build();\n};\n\nexport const useGroupChannelListWithCollection: UseGroupChannelList = (sdk, userId, options) => {\n const id = useUniqId(HOOK_NAME);\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const collectionRef = useRef<SendbirdGroupChannelCollection>();\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 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 (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createGroupChannelListCollection(sdk, options?.collectionCreator);\n if (collectionRef.current?.hasMore) {\n updateChannels(await collectionRef.current?.loadMore(), true);\n }\n\n collectionRef.current?.setGroupChannelCollectionHandler({\n onChannelsAdded(_, channels) {\n updateChannels(channels, false);\n },\n onChannelsUpdated(_, channels) {\n updateChannels(channels, false);\n },\n onChannelsDeleted(_, channelUrls) {\n deleteChannels(channelUrls);\n },\n });\n }\n },\n [sdk, options?.collectionCreator],\n );\n // ---------- internal methods ends ---------- //\n\n // ---------- internal hooks ---------- //\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n useAsyncEffect(async () => {\n setLoading(true);\n await init(userId);\n setLoading(false);\n }, [init, userId]);\n\n useChannelHandler(\n sdk,\n `${HOOK_NAME}_${id}`,\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 (collectionRef.current?.hasMore) {\n const channels = await collectionRef.current?.loadMore();\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 {\n loading,\n groupChannels,\n refresh,\n refreshing,\n next,\n update,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","arrayToMap","useAsyncEffect","useUniqId","useAppFeatures","useChannelHandler","HOOK_NAME","createGroupChannelListCollection","sdk","collectionCreator","passedCollection","defaultCollection","GroupChannel","createGroupChannelCollection","filter","GroupChannelFilter","setLimit","setFilter","build","useGroupChannelListWithCollection","userId","options","id","deliveryReceiptEnabled","collectionRef","loading","setLoading","refreshing","setRefreshing","groupChannelMap","setGroupChannelMap","groupChannels","channels","Object","values","sortComparator","sort","updateChannels","clearPrev","c","isGroupChannel","prev","forEach","channel","markAsDelivered","url","deleteChannels","channelUrls","draft","init","uid","current","dispose","hasMore","loadMore","setGroupChannelCollectionHandler","onChannelsAdded","_","onChannelsUpdated","onChannelsDeleted","onUserBanned","user","isMe","refresh","update","next"],"sources":["useGroupChannelListWithCollection.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport type {\n SendbirdChannel,\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdGroupChannelCollection,\n} from '@sendbird/uikit-utils';\nimport { arrayToMap, useAsyncEffect, useUniqId } 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 = 'useGroupChannelListWithCollection';\nconst createGroupChannelListCollection = (\n sdk: SendbirdChatSDK,\n collectionCreator: UseGroupChannelListOptions['collectionCreator'],\n) => {\n const passedCollection = collectionCreator?.();\n if (passedCollection) return passedCollection;\n\n const defaultCollection = sdk.GroupChannel.createGroupChannelCollection();\n const filter = new sdk.GroupChannelFilter();\n return defaultCollection.setLimit(20).setFilter(filter).build();\n};\n\nexport const useGroupChannelListWithCollection: UseGroupChannelList = (sdk, userId, options) => {\n const id = useUniqId(HOOK_NAME);\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const collectionRef = useRef<SendbirdGroupChannelCollection>();\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 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 (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createGroupChannelListCollection(sdk, options?.collectionCreator);\n if (collectionRef.current?.hasMore) {\n updateChannels(await collectionRef.current?.loadMore(), true);\n }\n\n collectionRef.current?.setGroupChannelCollectionHandler({\n onChannelsAdded(_, channels) {\n updateChannels(channels, false);\n },\n onChannelsUpdated(_, channels) {\n updateChannels(channels, false);\n },\n onChannelsDeleted(_, channelUrls) {\n deleteChannels(channelUrls);\n },\n });\n }\n },\n [sdk, options?.collectionCreator],\n );\n // ---------- internal methods ends ---------- //\n\n // ---------- internal hooks ---------- //\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n useAsyncEffect(async () => {\n setLoading(true);\n await init(userId);\n setLoading(false);\n }, [init, userId]);\n\n useChannelHandler(sdk, `${HOOK_NAME}_${id}`, {\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 (collectionRef.current?.hasMore) {\n const channels = await collectionRef.current?.loadMore();\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 {\n loading,\n groupChannels,\n refresh,\n refreshing,\n next,\n update,\n };\n};\n"],"mappings":"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"}
@@ -79,7 +79,7 @@ export const useGroupChannelListWithQuery = (sdk, userId, options) => {
79
79
  if (isMe) deleteChannels([channel.url]);else updateChannels([channel], false);
80
80
  }
81
81
 
82
- }, [sdk, userId]); // ---------- internal hooks ends ---------- //
82
+ }); // ---------- internal hooks ends ---------- //
83
83
  // ---------- returns methods ---------- //
84
84
 
85
85
  const refresh = useCallback(async () => {