stream-chat-react-native-core 5.0.0-offline-support.0 → 5.0.0-offline-support.3

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 (57) hide show
  1. package/lib/commonjs/components/ChannelList/ChannelList.js +2 -2
  2. package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
  3. package/lib/commonjs/components/ChannelList/hooks/listeners/handleEventToSyncDB.js +2 -47
  4. package/lib/commonjs/components/ChannelList/hooks/listeners/handleEventToSyncDB.js.map +1 -1
  5. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +2 -2
  6. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  7. package/lib/commonjs/components/ChannelPreview/ChannelAvatar.js.map +1 -1
  8. package/lib/commonjs/components/MessageList/MessageList.js +1 -1
  9. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  10. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +12 -16
  11. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
  12. package/lib/commonjs/mock-builders/event/memberAdded.js.map +1 -1
  13. package/lib/commonjs/mock-builders/event/memberRemoved.js.map +1 -1
  14. package/lib/commonjs/mock-builders/event/memberUpdated.js.map +1 -1
  15. package/lib/commonjs/mock-builders/event/reactionDeleted.js.map +1 -1
  16. package/lib/commonjs/mock-builders/event/reactionNew.js.map +1 -1
  17. package/lib/commonjs/mock-builders/event/reactionUpdated.js.map +1 -1
  18. package/lib/commonjs/store/sqlite-utils/appendWhereCluase.js +2 -1
  19. package/lib/commonjs/store/sqlite-utils/appendWhereCluase.js.map +1 -1
  20. package/lib/commonjs/version.json +1 -1
  21. package/lib/module/components/ChannelList/ChannelList.js +2 -2
  22. package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
  23. package/lib/module/components/ChannelList/hooks/listeners/handleEventToSyncDB.js +2 -47
  24. package/lib/module/components/ChannelList/hooks/listeners/handleEventToSyncDB.js.map +1 -1
  25. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +2 -2
  26. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  27. package/lib/module/components/ChannelPreview/ChannelAvatar.js.map +1 -1
  28. package/lib/module/components/MessageList/MessageList.js +1 -1
  29. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  30. package/lib/module/contexts/overlayContext/OverlayProvider.js +12 -16
  31. package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
  32. package/lib/module/mock-builders/event/memberAdded.js.map +1 -1
  33. package/lib/module/mock-builders/event/memberRemoved.js.map +1 -1
  34. package/lib/module/mock-builders/event/memberUpdated.js.map +1 -1
  35. package/lib/module/mock-builders/event/reactionDeleted.js.map +1 -1
  36. package/lib/module/mock-builders/event/reactionNew.js.map +1 -1
  37. package/lib/module/mock-builders/event/reactionUpdated.js.map +1 -1
  38. package/lib/module/store/sqlite-utils/appendWhereCluase.js +2 -1
  39. package/lib/module/store/sqlite-utils/appendWhereCluase.js.map +1 -1
  40. package/lib/module/version.json +1 -1
  41. package/lib/typescript/components/ChannelList/hooks/usePaginatedChannels.d.ts +1 -1
  42. package/package.json +2 -2
  43. package/src/__tests__/offline-feature.test.js +149 -109
  44. package/src/components/ChannelList/ChannelList.tsx +1 -1
  45. package/src/components/ChannelList/hooks/listeners/handleEventToSyncDB.ts +15 -48
  46. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +1 -1
  47. package/src/components/ChannelPreview/ChannelAvatar.tsx +3 -3
  48. package/src/components/MessageList/MessageList.tsx +1 -1
  49. package/src/contexts/overlayContext/OverlayProvider.tsx +0 -3
  50. package/src/mock-builders/event/memberAdded.js +7 -8
  51. package/src/mock-builders/event/memberRemoved.js +7 -8
  52. package/src/mock-builders/event/memberUpdated.js +7 -8
  53. package/src/mock-builders/event/reactionDeleted.js +8 -9
  54. package/src/mock-builders/event/reactionNew.js +8 -9
  55. package/src/mock-builders/event/reactionUpdated.js +8 -9
  56. package/src/store/sqlite-utils/appendWhereCluase.ts +3 -1
  57. package/src/version.json +1 -1
@@ -14,9 +14,10 @@ var appendWhereClause = function appendWhereClause(selectQuery, whereCondition)
14
14
 
15
15
  for (var key in whereCondition) {
16
16
  var value = whereCondition[key];
17
+ if (value === undefined) continue;
17
18
 
18
19
  if (Array.isArray(value)) {
19
- if (!value || value.length === 0) continue;
20
+ if (value.length === 0) continue;
20
21
  var questionMarks = Array(Object.keys(value).length).fill('?').join(',');
21
22
  whereClause.push(key + " in (" + questionMarks + ")");
22
23
  whereParams.push.apply(whereParams, (0, _toConsumableArray2["default"])(value));
@@ -1 +1 @@
1
- {"version":3,"sources":["appendWhereCluase.ts"],"names":["appendWhereClause","selectQuery","whereCondition","whereClause","whereParams","key","value","Array","isArray","length","questionMarks","Object","keys","fill","join","push"],"mappings":";;;;;;;;;AAGO,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB,CAC/BC,WAD+B,EAE/BC,cAF+B,EAG5B;AACH,MAAI,CAACA,cAAL,EAAqB,OAAO,CAACD,WAAD,EAAc,EAAd,CAAP;AAErB,MAAME,WAAW,GAAG,EAApB;AACA,MAAMC,WAAsB,GAAG,EAA/B;;AAEA,OAAK,IAAMC,GAAX,IAAkBH,cAAlB,EAAkC;AAChC,QAAMI,KAAc,GAAGJ,cAAc,CAACG,GAAD,CAArC;;AACA,QAAIE,KAAK,CAACC,OAAN,CAAcF,KAAd,CAAJ,EAA0B;AACxB,UAAI,CAACA,KAAD,IAAUA,KAAK,CAACG,MAAN,KAAiB,CAA/B,EAAkC;AAClC,UAAMC,aAAa,GAAGH,KAAK,CAACI,MAAM,CAACC,IAAP,CAAYN,KAAZ,EAAmBG,MAApB,CAAL,CAAiCI,IAAjC,CAAsC,GAAtC,EAA2CC,IAA3C,CAAgD,GAAhD,CAAtB;AACAX,MAAAA,WAAW,CAACY,IAAZ,CAAoBV,GAApB,aAA+BK,aAA/B;AACAN,MAAAA,WAAW,CAACW,IAAZ,OAAAX,WAAW,sCAASE,KAAT,EAAX;AACD,KALD,MAKO;AACLH,MAAAA,WAAW,CAACY,IAAZ,CAAoBV,GAApB;AACAD,MAAAA,WAAW,CAACW,IAAZ,CAAiBT,KAAjB;AACD;AACF;;AAED,MAAI,CAACF,WAAW,CAACK,MAAjB,EAAyB;AACvB,WAAO,CAACR,WAAD,EAAc,EAAd,CAAP;AACD;;AAED,SAAO,CAAIA,WAAJ,eAAyBE,WAAW,CAACW,IAAZ,CAAiB,OAAjB,CAAzB,EAAsDV,WAAtD,CAAP;AACD,CA3BM","sourcesContent":["import type { Schema } from '../schema';\nimport type { PreparedQueries, TableColumnNames } from '../types';\n\nexport const appendWhereClause = <T extends keyof Schema>(\n selectQuery: string,\n whereCondition?: Partial<{ [k in TableColumnNames<T>]: any }>,\n) => {\n if (!whereCondition) return [selectQuery, []];\n\n const whereClause = [];\n const whereParams: unknown[] = [];\n\n for (const key in whereCondition) {\n const value: unknown = whereCondition[key];\n if (Array.isArray(value)) {\n if (!value || value.length === 0) continue;\n const questionMarks = Array(Object.keys(value).length).fill('?').join(',');\n whereClause.push(`${key} in (${questionMarks})`);\n whereParams.push(...value);\n } else {\n whereClause.push(`${key} = ?`);\n whereParams.push(value);\n }\n }\n\n if (!whereParams.length) {\n return [selectQuery, []];\n }\n\n return [`${selectQuery} WHERE ${whereClause.join(' AND ')}`, whereParams] as PreparedQueries;\n};\n"]}
1
+ {"version":3,"sources":["appendWhereCluase.ts"],"names":["appendWhereClause","selectQuery","whereCondition","whereClause","whereParams","key","value","undefined","Array","isArray","length","questionMarks","Object","keys","fill","join","push"],"mappings":";;;;;;;;;AAGO,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB,CAC/BC,WAD+B,EAE/BC,cAF+B,EAG5B;AACH,MAAI,CAACA,cAAL,EAAqB,OAAO,CAACD,WAAD,EAAc,EAAd,CAAP;AAErB,MAAME,WAAW,GAAG,EAApB;AACA,MAAMC,WAAsB,GAAG,EAA/B;;AAEA,OAAK,IAAMC,GAAX,IAAkBH,cAAlB,EAAkC;AAChC,QAAMI,KAAc,GAAGJ,cAAc,CAACG,GAAD,CAArC;AACA,QAAIC,KAAK,KAAKC,SAAd,EAAyB;;AAEzB,QAAIC,KAAK,CAACC,OAAN,CAAcH,KAAd,CAAJ,EAA0B;AACxB,UAAIA,KAAK,CAACI,MAAN,KAAiB,CAArB,EAAwB;AACxB,UAAMC,aAAa,GAAGH,KAAK,CAACI,MAAM,CAACC,IAAP,CAAYP,KAAZ,EAAmBI,MAApB,CAAL,CAAiCI,IAAjC,CAAsC,GAAtC,EAA2CC,IAA3C,CAAgD,GAAhD,CAAtB;AACAZ,MAAAA,WAAW,CAACa,IAAZ,CAAoBX,GAApB,aAA+BM,aAA/B;AACAP,MAAAA,WAAW,CAACY,IAAZ,OAAAZ,WAAW,sCAASE,KAAT,EAAX;AACD,KALD,MAKO;AACLH,MAAAA,WAAW,CAACa,IAAZ,CAAoBX,GAApB;AACAD,MAAAA,WAAW,CAACY,IAAZ,CAAiBV,KAAjB;AACD;AACF;;AAED,MAAI,CAACF,WAAW,CAACM,MAAjB,EAAyB;AACvB,WAAO,CAACT,WAAD,EAAc,EAAd,CAAP;AACD;;AAED,SAAO,CAAIA,WAAJ,eAAyBE,WAAW,CAACY,IAAZ,CAAiB,OAAjB,CAAzB,EAAsDX,WAAtD,CAAP;AACD,CA7BM","sourcesContent":["import type { Schema } from '../schema';\nimport type { PreparedQueries, TableColumnNames } from '../types';\n\nexport const appendWhereClause = <T extends keyof Schema>(\n selectQuery: string,\n whereCondition?: Partial<{ [k in TableColumnNames<T>]: any }>,\n) => {\n if (!whereCondition) return [selectQuery, []];\n\n const whereClause = [];\n const whereParams: unknown[] = [];\n\n for (const key in whereCondition) {\n const value: unknown = whereCondition[key];\n if (value === undefined) continue;\n\n if (Array.isArray(value)) {\n if (value.length === 0) continue;\n const questionMarks = Array(Object.keys(value).length).fill('?').join(',');\n whereClause.push(`${key} in (${questionMarks})`);\n whereParams.push(...value);\n } else {\n whereClause.push(`${key} = ?`);\n whereParams.push(value);\n }\n }\n\n if (!whereParams.length) {\n return [selectQuery, []];\n }\n\n return [`${selectQuery} WHERE ${whereClause.join(' AND ')}`, whereParams] as PreparedQueries;\n};\n"]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.0.0-offline-support.0"
2
+ "version": "5.0.0-offline-support.3"
3
3
  }
@@ -146,11 +146,11 @@ var ChannelList = function ChannelList(props) {
146
146
  loadingChannels = _usePaginatedChannels.loadingChannels,
147
147
  loadingNextPage = _usePaginatedChannels.loadingNextPage,
148
148
  loadNextPage = _usePaginatedChannels.loadNextPage,
149
- staticChannelsActive = _usePaginatedChannels.staticChannelsActive,
150
149
  refreshing = _usePaginatedChannels.refreshing,
151
150
  refreshList = _usePaginatedChannels.refreshList,
152
151
  reloadList = _usePaginatedChannels.reloadList,
153
- setChannels = _usePaginatedChannels.setChannels;
152
+ setChannels = _usePaginatedChannels.setChannels,
153
+ staticChannelsActive = _usePaginatedChannels.staticChannelsActive;
154
154
 
155
155
  (0, _useAddedToChannelNotification.useAddedToChannelNotification)({
156
156
  onAddedToChannel: onAddedToChannel,
@@ -1 +1 @@
1
- {"version":3,"sources":["ChannelList.tsx"],"names":["DEFAULT_FILTERS","DEFAULT_OPTIONS","DEFAULT_SORT","ChannelList","props","additionalFlatListProps","EmptyStateIndicator","EmptyStateIndicatorDefault","FooterLoadingIndicator","ChannelListFooterLoadingIndicator","filters","HeaderErrorIndicator","ChannelListHeaderErrorIndicator","HeaderNetworkDownIndicator","ChannelListHeaderNetworkDownIndicator","List","ChannelListMessenger","ListHeaderComponent","LoadingErrorIndicator","LoadingErrorIndicatorDefault","LoadingIndicator","ChannelListLoadingIndicator","loadMoreThreshold","lockChannelOrder","maxUnreadCount","numberOfSkeletons","onAddedToChannel","onChannelDeleted","onChannelHidden","onChannelVisible","onChannelTruncated","onChannelUpdated","onMessageNew","onRemovedFromChannel","onSelect","options","Preview","ChannelPreviewMessenger","PreviewAvatar","PreviewMessage","PreviewStatus","PreviewTitle","PreviewUnreadCount","setFlatListRef","Skeleton","SkeletonDefault","sort","forceUpdate","setForceUpdate","enableOfflineSupport","channels","error","hasNextPage","loadingChannels","loadingNextPage","loadNextPage","staticChannelsActive","refreshing","refreshList","reloadList","setChannels","channelIds","map","c","cid","channelIdsStr","join","cids","channelsContext","ref"],"mappings":";;;;;;;;;;;AAAA;;AAMA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAIA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;AA4JA,IAAMA,eAAe,GAAG,EAAxB;AACA,IAAMC,eAAe,GAAG,EAAxB;AACA,IAAMC,YAAY,GAAG,EAArB;;AASO,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAGzBC,KAHyB,EAItB;AACH,8BAmCIA,KAnCJ,CACEC,uBADF;AAAA,MACEA,uBADF,sCAC4B,EAD5B;AAAA,8BAmCID,KAnCJ,CAEEE,mBAFF;AAAA,MAEEA,mBAFF,sCAEwBC,wCAFxB;AAAA,8BAmCIH,KAnCJ,CAGEI,sBAHF;AAAA,MAGEA,sBAHF,sCAG2BC,oEAH3B;AAAA,uBAmCIL,KAnCJ,CAIEM,OAJF;AAAA,MAIEA,OAJF,+BAIYV,eAJZ;AAAA,8BAmCII,KAnCJ,CAKEO,oBALF;AAAA,MAKEA,oBALF,sCAKyBC,gEALzB;AAAA,8BAmCIR,KAnCJ,CAMES,0BANF;AAAA,MAMEA,0BANF,sCAM+BC,4EAN/B;AAAA,oBAmCIV,KAnCJ,CAOEW,IAPF;AAAA,MAOEA,IAPF,4BAOSC,0CAPT;AAAA,MAQEC,mBARF,GAmCIb,KAnCJ,CAQEa,mBARF;AAAA,8BAmCIb,KAnCJ,CASEc,qBATF;AAAA,MASEA,qBATF,sCAS0BC,4CAT1B;AAAA,8BAmCIf,KAnCJ,CAUEgB,gBAVF;AAAA,MAUEA,gBAVF,sCAUqBC,wDAVrB;AAAA,8BAmCIjB,KAnCJ,CAYEkB,iBAZF;AAAA,MAYEA,iBAZF,sCAYsB,CAZtB;AAAA,8BAmCIlB,KAnCJ,CAaEmB,gBAbF;AAAA,MAaEA,gBAbF,sCAaqB,KAbrB;AAAA,8BAmCInB,KAnCJ,CAcEoB,cAdF;AAAA,MAcEA,cAdF,sCAcmB,GAdnB;AAAA,8BAmCIpB,KAnCJ,CAeEqB,iBAfF;AAAA,MAeEA,iBAfF,sCAesB,CAftB;AAAA,MAgBEC,gBAhBF,GAmCItB,KAnCJ,CAgBEsB,gBAhBF;AAAA,MAiBEC,gBAjBF,GAmCIvB,KAnCJ,CAiBEuB,gBAjBF;AAAA,MAkBEC,eAlBF,GAmCIxB,KAnCJ,CAkBEwB,eAlBF;AAAA,MAmBEC,gBAnBF,GAmCIzB,KAnCJ,CAmBEyB,gBAnBF;AAAA,MAoBEC,kBApBF,GAmCI1B,KAnCJ,CAoBE0B,kBApBF;AAAA,MAqBEC,gBArBF,GAmCI3B,KAnCJ,CAqBE2B,gBArBF;AAAA,MAsBEC,YAtBF,GAmCI5B,KAnCJ,CAsBE4B,YAtBF;AAAA,MAuBEC,oBAvBF,GAmCI7B,KAnCJ,CAuBE6B,oBAvBF;AAAA,MAwBEC,QAxBF,GAmCI9B,KAnCJ,CAwBE8B,QAxBF;AAAA,uBAmCI9B,KAnCJ,CAyBE+B,OAzBF;AAAA,MAyBEA,OAzBF,+BAyBYlC,eAzBZ;AAAA,uBAmCIG,KAnCJ,CA0BEgC,OA1BF;AAAA,MA0BEA,OA1BF,+BA0BYC,gDA1BZ;AAAA,MA2BEC,aA3BF,GAmCIlC,KAnCJ,CA2BEkC,aA3BF;AAAA,MA4BEC,cA5BF,GAmCInC,KAnCJ,CA4BEmC,cA5BF;AAAA,MA6BEC,aA7BF,GAmCIpC,KAnCJ,CA6BEoC,aA7BF;AAAA,MA8BEC,YA9BF,GAmCIrC,KAnCJ,CA8BEqC,YA9BF;AAAA,MA+BEC,kBA/BF,GAmCItC,KAnCJ,CA+BEsC,kBA/BF;AAAA,MAgCEC,eAhCF,GAmCIvC,KAnCJ,CAgCEuC,cAhCF;AAAA,wBAmCIvC,KAnCJ,CAiCEwC,QAjCF;AAAA,MAiCEA,QAjCF,gCAiCaC,kBAjCb;AAAA,oBAmCIzC,KAnCJ,CAkCE0C,IAlCF;AAAA,MAkCEA,IAlCF,4BAkCS5C,YAlCT;;AAqCA,kBAAsC,qBAAS,CAAT,CAAtC;AAAA;AAAA,MAAO6C,WAAP;AAAA,MAAoBC,cAApB;;AACA,wBAAiC,kCAAjC;AAAA,MAAQC,oBAAR,mBAAQA,oBAAR;;AACA,8BAYI,iDAAyC;AAC3CA,IAAAA,oBAAoB,EAApBA,oBAD2C;AAE3CvC,IAAAA,OAAO,EAAPA,OAF2C;AAG3CyB,IAAAA,OAAO,EAAPA,OAH2C;AAI3CW,IAAAA,IAAI,EAAJA;AAJ2C,GAAzC,CAZJ;AAAA,MACEI,QADF,yBACEA,QADF;AAAA,MAEEC,KAFF,yBAEEA,KAFF;AAAA,MAGEC,WAHF,yBAGEA,WAHF;AAAA,MAIEC,eAJF,yBAIEA,eAJF;AAAA,MAKEC,eALF,yBAKEA,eALF;AAAA,MAMEC,YANF,yBAMEA,YANF;AAAA,MAOEC,oBAPF,yBAOEA,oBAPF;AAAA,MAQEC,UARF,yBAQEA,UARF;AAAA,MASEC,WATF,yBASEA,WATF;AAAA,MAUEC,UAVF,yBAUEA,UAVF;AAAA,MAWEC,WAXF,yBAWEA,WAXF;;AAoBA,oEAA8B;AAC5BlC,IAAAA,gBAAgB,EAAhBA,gBAD4B;AAE5BkC,IAAAA,WAAW,EAAXA;AAF4B,GAA9B;AAKA,4CAAkB;AAChBjC,IAAAA,gBAAgB,EAAhBA,gBADgB;AAEhBiC,IAAAA,WAAW,EAAXA;AAFgB,GAAlB;AAKA,0CAAiB;AACfhC,IAAAA,eAAe,EAAfA,eADe;AAEfgC,IAAAA,WAAW,EAAXA;AAFe,GAAjB;AAKA,gDAAoB;AAClB9B,IAAAA,kBAAkB,EAAlBA,kBADkB;AAElB4B,IAAAA,WAAW,EAAXA,WAFkB;AAGlBE,IAAAA,WAAW,EAAXA,WAHkB;AAIlBZ,IAAAA,cAAc,EAAdA;AAJkB,GAApB;AAOA,4CAAkB;AAChBjB,IAAAA,gBAAgB,EAAhBA,gBADgB;AAEhB6B,IAAAA,WAAW,EAAXA;AAFgB,GAAlB;AAKA,4CAAkB;AAChB/B,IAAAA,gBAAgB,EAAhBA,gBADgB;AAEhB+B,IAAAA,WAAW,EAAXA;AAFgB,GAAlB;AAKA,sDAA2C;AACzCX,IAAAA,oBAAoB,EAApBA,oBADyC;AAEzCS,IAAAA,WAAW,EAAXA,WAFyC;AAGzCV,IAAAA,cAAc,EAAdA;AAHyC,GAA3C;AAMA,oCAAc;AACZzB,IAAAA,gBAAgB,EAAhBA,gBADY;AAEZqC,IAAAA,WAAW,EAAXA;AAFY,GAAd;AAKA,4DAA0B;AACxB5B,IAAAA,YAAY,EAAZA,YADwB;AAExB4B,IAAAA,WAAW,EAAXA;AAFwB,GAA1B;AAKA,4EAAkC;AAChC3B,IAAAA,oBAAoB,EAApBA,oBADgC;AAEhC2B,IAAAA,WAAW,EAAXA;AAFgC,GAAlC;AAKA,wCAAgB;AACdA,IAAAA,WAAW,EAAXA;AADc,GAAhB;AAIA,wCAAgB;AACdX,IAAAA,oBAAoB,EAApBA;AADc,GAAhB;AAGA,MAAMY,UAAU,GAAGX,QAAQ,CAACY,GAAT,CAAa,UAACC,CAAD;AAAA,WAAOA,CAAC,CAACC,GAAT;AAAA,GAAb,CAAnB;AACA,MAAMC,aAAa,GAAGJ,UAAU,CAACK,IAAX,CAAgB,EAAhB,CAAtB;AAEA,wBAAU,YAAM;AACd,QAAIV,oBAAoB,IAAI,CAACP,oBAA7B,EAAmD;AACjD;AACD;;AACD,gDAAmB;AACjBkB,MAAAA,IAAI,EAAEN,UADW;AAEjBnD,MAAAA,OAAO,EAAPA,OAFiB;AAGjBoC,MAAAA,IAAI,EAAJA;AAHiB,KAAnB;AAKD,GATD,EASG,CAACmB,aAAD,EAAgBT,oBAAhB,CATH;AAWA,MAAMY,eAAe,GAAG,wDAAyB;AAC/C/D,IAAAA,uBAAuB,EAAvBA,uBAD+C;AAE/C6C,IAAAA,QAAQ,EAARA,QAF+C;AAG/C5C,IAAAA,mBAAmB,EAAnBA,mBAH+C;AAI/C6C,IAAAA,KAAK,EAALA,KAJ+C;AAK/C3C,IAAAA,sBAAsB,EAAtBA,sBAL+C;AAM/CuC,IAAAA,WAAW,EAAXA,WAN+C;AAO/CK,IAAAA,WAAW,EAAXA,WAP+C;AAQ/CzC,IAAAA,oBAAoB,EAApBA,oBAR+C;AAS/CE,IAAAA,0BAA0B,EAA1BA,0BAT+C;AAU/CI,IAAAA,mBAAmB,EAAnBA,mBAV+C;AAW/CoC,IAAAA,eAAe,EAAfA,eAX+C;AAY/CnC,IAAAA,qBAAqB,EAArBA,qBAZ+C;AAa/CE,IAAAA,gBAAgB,EAAhBA,gBAb+C;AAc/CkC,IAAAA,eAAe,EAAfA,eAd+C;AAe/ChC,IAAAA,iBAAiB,EAAjBA,iBAf+C;AAgB/CiC,IAAAA,YAAY,EAAZA,YAhB+C;AAiB/C/B,IAAAA,cAAc,EAAdA,cAjB+C;AAkB/CC,IAAAA,iBAAiB,EAAjBA,iBAlB+C;AAmB/CS,IAAAA,QAAQ,EAARA,QAnB+C;AAoB/CE,IAAAA,OAAO,EAAPA,OApB+C;AAqB/CE,IAAAA,aAAa,EAAbA,aArB+C;AAsB/CC,IAAAA,cAAc,EAAdA,cAtB+C;AAuB/CC,IAAAA,aAAa,EAAbA,aAvB+C;AAwB/CC,IAAAA,YAAY,EAAZA,YAxB+C;AAyB/CC,IAAAA,kBAAkB,EAAlBA,kBAzB+C;AA0B/Ce,IAAAA,UAAU,EAAVA,UA1B+C;AA2B/CC,IAAAA,WAAW,EAAXA,WA3B+C;AA4B/CC,IAAAA,UAAU,EAAVA,UA5B+C;AA6B/ChB,IAAAA,cAAc,EAAE,wBAAC0B,GAAD,EAAuD;AACrE,UAAI1B,eAAJ,EAAoB;AAClBA,QAAAA,eAAc,CAAC0B,GAAD,CAAd;AACD;AACF,KAjC8C;AAkC/CzB,IAAAA,QAAQ,EAARA;AAlC+C,GAAzB,CAAxB;AAqCA,SACE,gCAAC,iCAAD;AAAkB,IAAA,KAAK,EAAEwB,eAAzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,IAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,CADF;AAKD,CApLM","sourcesContent":["import React, { useEffect, useState } from 'react';\n\nimport type { FlatList } from 'react-native-gesture-handler';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort, Event } from 'stream-chat';\n\nimport { ChannelListFooterLoadingIndicator } from './ChannelListFooterLoadingIndicator';\nimport { ChannelListHeaderErrorIndicator } from './ChannelListHeaderErrorIndicator';\nimport { ChannelListHeaderNetworkDownIndicator } from './ChannelListHeaderNetworkDownIndicator';\nimport { ChannelListLoadingIndicator } from './ChannelListLoadingIndicator';\nimport { ChannelListMessenger, ChannelListMessengerProps } from './ChannelListMessenger';\nimport { useAddedToChannelNotification } from './hooks/listeners/useAddedToChannelNotification';\nimport { useChannelDeleted } from './hooks/listeners/useChannelDeleted';\nimport { useChannelHidden } from './hooks/listeners/useChannelHidden';\nimport { useChannelTruncated } from './hooks/listeners/useChannelTruncated';\nimport { useChannelUpdated } from './hooks/listeners/useChannelUpdated';\nimport { useChannelVisible } from './hooks/listeners/useChannelVisible';\nimport { useConnectionRecovered } from './hooks/listeners/useConnectionRecovered';\nimport { useNewMessage } from './hooks/listeners/useNewMessage';\nimport { useNewMessageNotification } from './hooks/listeners/useNewMessageNotification';\nimport { useRemovedFromChannelNotification } from './hooks/listeners/useRemovedFromChannelNotification';\nimport { useSyncDatabase } from './hooks/listeners/useSyncDatabase';\nimport { useUserPresence } from './hooks/listeners/useUserPresence';\nimport { useCreateChannelsContext } from './hooks/useCreateChannelsContext';\nimport { usePaginatedChannels } from './hooks/usePaginatedChannels';\nimport { Skeleton as SkeletonDefault } from './Skeleton';\n\nimport {\n ChannelsContextValue,\n ChannelsProvider,\n} from '../../contexts/channelsContext/ChannelsContext';\nimport { useChatContext } from '../../contexts/chatContext/ChatContext';\nimport { upsertCidsForQuery } from '../../store/apis/upsertCidsForQuery';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { ChannelPreviewMessenger } from '../ChannelPreview/ChannelPreviewMessenger';\nimport { EmptyStateIndicator as EmptyStateIndicatorDefault } from '../Indicators/EmptyStateIndicator';\nimport { LoadingErrorIndicator as LoadingErrorIndicatorDefault } from '../Indicators/LoadingErrorIndicator';\n\nexport type ChannelListProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<\n ChannelsContextValue<StreamChatGenerics>,\n | 'additionalFlatListProps'\n | 'EmptyStateIndicator'\n | 'FooterLoadingIndicator'\n | 'HeaderErrorIndicator'\n | 'HeaderNetworkDownIndicator'\n | 'LoadingErrorIndicator'\n | 'LoadingIndicator'\n | 'Preview'\n | 'setFlatListRef'\n | 'ListHeaderComponent'\n | 'onSelect'\n | 'PreviewAvatar'\n | 'PreviewMessage'\n | 'PreviewStatus'\n | 'PreviewTitle'\n | 'PreviewUnreadCount'\n | 'loadMoreThreshold'\n | 'Skeleton'\n | 'maxUnreadCount'\n | 'numberOfSkeletons'\n >\n> & {\n /**\n * Object containing channel query filters\n *\n * @see See [Channel query documentation](https://getstream.io/chat/docs/query_channels) for a list of available filter fields\n *\n * @overrideType object\n * */\n filters?: ChannelFilters<StreamChatGenerics>;\n /**\n * Custom UI component to display the list of channels\n *\n * Default: [ChannelListMessenger](https://getstream.io/chat/docs/sdk/reactnative/ui-components/channel-list-messenger/)\n */\n List?: React.ComponentType<ChannelListMessengerProps<StreamChatGenerics>>;\n /**\n * If set to true, channels won't dynamically sort by most recent message, defaults to false\n */\n lockChannelOrder?: boolean;\n /**\n * Function that overrides default behavior when a user gets added to a channel\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event Object](https://getstream.io/chat/docs/event_object) corresponding to `notification.added_to_channel` event\n *\n * @overrideType Function\n * */\n onAddedToChannel?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[]>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a channel gets deleted. In absence of this prop, the channel will be removed from the list.\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.deleted` event\n *\n * @overrideType Function\n * */\n onChannelDeleted?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[]>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a channel gets hidden. In absence of this prop, the channel will be removed from the list.\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.hidden` event\n *\n * @overrideType Function\n * */\n onChannelHidden?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[]>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function to customize behavior when a channel gets truncated\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.truncated` event\n *\n * @overrideType Function\n * */\n onChannelTruncated?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[]>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a channel gets updated\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.updated` event\n *\n * @overrideType Function\n * */\n onChannelUpdated?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[]>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a channel gets visible. In absence of this prop, the channel will be added to the list.\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.visible` event\n *\n * @overrideType Function\n * */\n onChannelVisible?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[]>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Override the default listener/handler for event `notification.message_new`\n * This event is received on channel, which is not being watched.\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `notification.message_new` event\n *\n * @overrideType Function\n * */\n onMessageNew?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[]>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a user gets removed from a channel\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `notification.removed_from_channel` event\n *\n * @overrideType Function\n * */\n onRemovedFromChannel?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[]>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Object containing channel query options\n * @see See [Channel query documentation](https://getstream.io/chat/docs/query_channels) for a list of available option fields\n * */\n options?: ChannelOptions;\n /**\n * Object containing channel sort parameters\n * @see See [Channel query documentation](https://getstream.io/chat/docs/query_channels) for a list of available sorting fields\n * */\n sort?: ChannelSort<StreamChatGenerics>;\n};\n\nconst DEFAULT_FILTERS = {};\nconst DEFAULT_OPTIONS = {};\nconst DEFAULT_SORT = {};\n\n/**\n * This component fetches a list of channels, allowing you to select the channel you want to open.\n * The ChannelList doesn't provide any UI for the underlying React Native FlatList. UI is determined by the `List` component which is\n * provided to the ChannelList component as a prop. By default, the ChannelListMessenger component is used as the list UI.\n *\n * @example ./ChannelList.md\n */\nexport const ChannelList = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelListProps<StreamChatGenerics>,\n) => {\n const {\n additionalFlatListProps = {},\n EmptyStateIndicator = EmptyStateIndicatorDefault,\n FooterLoadingIndicator = ChannelListFooterLoadingIndicator,\n filters = DEFAULT_FILTERS,\n HeaderErrorIndicator = ChannelListHeaderErrorIndicator,\n HeaderNetworkDownIndicator = ChannelListHeaderNetworkDownIndicator,\n List = ChannelListMessenger,\n ListHeaderComponent,\n LoadingErrorIndicator = LoadingErrorIndicatorDefault,\n LoadingIndicator = ChannelListLoadingIndicator,\n // https://github.com/facebook/react-native/blob/a7a7970e543959e9db5281914d5f132beb01db8d/Libraries/Lists/VirtualizedList.js#L466\n loadMoreThreshold = 2,\n lockChannelOrder = false,\n maxUnreadCount = 255,\n numberOfSkeletons = 6,\n onAddedToChannel,\n onChannelDeleted,\n onChannelHidden,\n onChannelVisible,\n onChannelTruncated,\n onChannelUpdated,\n onMessageNew,\n onRemovedFromChannel,\n onSelect,\n options = DEFAULT_OPTIONS,\n Preview = ChannelPreviewMessenger,\n PreviewAvatar,\n PreviewMessage,\n PreviewStatus,\n PreviewTitle,\n PreviewUnreadCount,\n setFlatListRef,\n Skeleton = SkeletonDefault,\n sort = DEFAULT_SORT,\n } = props;\n\n const [forceUpdate, setForceUpdate] = useState(0);\n const { enableOfflineSupport } = useChatContext();\n const {\n channels,\n error,\n hasNextPage,\n loadingChannels,\n loadingNextPage,\n loadNextPage,\n staticChannelsActive,\n refreshing,\n refreshList,\n reloadList,\n setChannels,\n } = usePaginatedChannels<StreamChatGenerics>({\n enableOfflineSupport,\n filters,\n options,\n sort,\n });\n\n // Setup event listeners\n useAddedToChannelNotification({\n onAddedToChannel,\n setChannels,\n });\n\n useChannelDeleted({\n onChannelDeleted,\n setChannels,\n });\n\n useChannelHidden({\n onChannelHidden,\n setChannels,\n });\n\n useChannelTruncated({\n onChannelTruncated,\n refreshList,\n setChannels,\n setForceUpdate,\n });\n\n useChannelUpdated({\n onChannelUpdated,\n setChannels,\n });\n\n useChannelVisible({\n onChannelVisible,\n setChannels,\n });\n\n useConnectionRecovered<StreamChatGenerics>({\n enableOfflineSupport,\n refreshList,\n setForceUpdate,\n });\n\n useNewMessage({\n lockChannelOrder,\n setChannels,\n });\n\n useNewMessageNotification({\n onMessageNew,\n setChannels,\n });\n\n useRemovedFromChannelNotification({\n onRemovedFromChannel,\n setChannels,\n });\n\n useUserPresence({\n setChannels,\n });\n\n useSyncDatabase({\n enableOfflineSupport,\n });\n const channelIds = channels.map((c) => c.cid);\n const channelIdsStr = channelIds.join('');\n\n useEffect(() => {\n if (staticChannelsActive || !enableOfflineSupport) {\n return;\n }\n upsertCidsForQuery({\n cids: channelIds,\n filters,\n sort,\n });\n }, [channelIdsStr, staticChannelsActive]);\n\n const channelsContext = useCreateChannelsContext({\n additionalFlatListProps,\n channels,\n EmptyStateIndicator,\n error,\n FooterLoadingIndicator,\n forceUpdate,\n hasNextPage,\n HeaderErrorIndicator,\n HeaderNetworkDownIndicator,\n ListHeaderComponent,\n loadingChannels,\n LoadingErrorIndicator,\n LoadingIndicator,\n loadingNextPage,\n loadMoreThreshold,\n loadNextPage,\n maxUnreadCount,\n numberOfSkeletons,\n onSelect,\n Preview,\n PreviewAvatar,\n PreviewMessage,\n PreviewStatus,\n PreviewTitle,\n PreviewUnreadCount,\n refreshing,\n refreshList,\n reloadList,\n setFlatListRef: (ref: FlatList<Channel<StreamChatGenerics>> | null) => {\n if (setFlatListRef) {\n setFlatListRef(ref);\n }\n },\n Skeleton,\n });\n\n return (\n <ChannelsProvider value={channelsContext}>\n <List<StreamChatGenerics> />\n </ChannelsProvider>\n );\n};\n"]}
1
+ {"version":3,"sources":["ChannelList.tsx"],"names":["DEFAULT_FILTERS","DEFAULT_OPTIONS","DEFAULT_SORT","ChannelList","props","additionalFlatListProps","EmptyStateIndicator","EmptyStateIndicatorDefault","FooterLoadingIndicator","ChannelListFooterLoadingIndicator","filters","HeaderErrorIndicator","ChannelListHeaderErrorIndicator","HeaderNetworkDownIndicator","ChannelListHeaderNetworkDownIndicator","List","ChannelListMessenger","ListHeaderComponent","LoadingErrorIndicator","LoadingErrorIndicatorDefault","LoadingIndicator","ChannelListLoadingIndicator","loadMoreThreshold","lockChannelOrder","maxUnreadCount","numberOfSkeletons","onAddedToChannel","onChannelDeleted","onChannelHidden","onChannelVisible","onChannelTruncated","onChannelUpdated","onMessageNew","onRemovedFromChannel","onSelect","options","Preview","ChannelPreviewMessenger","PreviewAvatar","PreviewMessage","PreviewStatus","PreviewTitle","PreviewUnreadCount","setFlatListRef","Skeleton","SkeletonDefault","sort","forceUpdate","setForceUpdate","enableOfflineSupport","channels","error","hasNextPage","loadingChannels","loadingNextPage","loadNextPage","refreshing","refreshList","reloadList","setChannels","staticChannelsActive","channelIds","map","c","cid","channelIdsStr","join","cids","channelsContext","ref"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\n\nimport type { FlatList } from 'react-native-gesture-handler';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort, Event } from 'stream-chat';\n\nimport { ChannelListFooterLoadingIndicator } from './ChannelListFooterLoadingIndicator';\nimport { ChannelListHeaderErrorIndicator } from './ChannelListHeaderErrorIndicator';\nimport { ChannelListHeaderNetworkDownIndicator } from './ChannelListHeaderNetworkDownIndicator';\nimport { ChannelListLoadingIndicator } from './ChannelListLoadingIndicator';\nimport { ChannelListMessenger, ChannelListMessengerProps } from './ChannelListMessenger';\nimport { useAddedToChannelNotification } from './hooks/listeners/useAddedToChannelNotification';\nimport { useChannelDeleted } from './hooks/listeners/useChannelDeleted';\nimport { useChannelHidden } from './hooks/listeners/useChannelHidden';\nimport { useChannelTruncated } from './hooks/listeners/useChannelTruncated';\nimport { useChannelUpdated } from './hooks/listeners/useChannelUpdated';\nimport { useChannelVisible } from './hooks/listeners/useChannelVisible';\nimport { useConnectionRecovered } from './hooks/listeners/useConnectionRecovered';\nimport { useNewMessage } from './hooks/listeners/useNewMessage';\nimport { useNewMessageNotification } from './hooks/listeners/useNewMessageNotification';\nimport { useRemovedFromChannelNotification } from './hooks/listeners/useRemovedFromChannelNotification';\nimport { useSyncDatabase } from './hooks/listeners/useSyncDatabase';\nimport { useUserPresence } from './hooks/listeners/useUserPresence';\nimport { useCreateChannelsContext } from './hooks/useCreateChannelsContext';\nimport { usePaginatedChannels } from './hooks/usePaginatedChannels';\nimport { Skeleton as SkeletonDefault } from './Skeleton';\n\nimport {\n ChannelsContextValue,\n ChannelsProvider,\n} from '../../contexts/channelsContext/ChannelsContext';\nimport { useChatContext } from '../../contexts/chatContext/ChatContext';\nimport { upsertCidsForQuery } from '../../store/apis/upsertCidsForQuery';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { ChannelPreviewMessenger } from '../ChannelPreview/ChannelPreviewMessenger';\nimport { EmptyStateIndicator as EmptyStateIndicatorDefault } from '../Indicators/EmptyStateIndicator';\nimport { LoadingErrorIndicator as LoadingErrorIndicatorDefault } from '../Indicators/LoadingErrorIndicator';\n\nexport type ChannelListProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<\n ChannelsContextValue<StreamChatGenerics>,\n | 'additionalFlatListProps'\n | 'EmptyStateIndicator'\n | 'FooterLoadingIndicator'\n | 'HeaderErrorIndicator'\n | 'HeaderNetworkDownIndicator'\n | 'LoadingErrorIndicator'\n | 'LoadingIndicator'\n | 'Preview'\n | 'setFlatListRef'\n | 'ListHeaderComponent'\n | 'onSelect'\n | 'PreviewAvatar'\n | 'PreviewMessage'\n | 'PreviewStatus'\n | 'PreviewTitle'\n | 'PreviewUnreadCount'\n | 'loadMoreThreshold'\n | 'Skeleton'\n | 'maxUnreadCount'\n | 'numberOfSkeletons'\n >\n> & {\n /**\n * Object containing channel query filters\n *\n * @see See [Channel query documentation](https://getstream.io/chat/docs/query_channels) for a list of available filter fields\n *\n * @overrideType object\n * */\n filters?: ChannelFilters<StreamChatGenerics>;\n /**\n * Custom UI component to display the list of channels\n *\n * Default: [ChannelListMessenger](https://getstream.io/chat/docs/sdk/reactnative/ui-components/channel-list-messenger/)\n */\n List?: React.ComponentType<ChannelListMessengerProps<StreamChatGenerics>>;\n /**\n * If set to true, channels won't dynamically sort by most recent message, defaults to false\n */\n lockChannelOrder?: boolean;\n /**\n * Function that overrides default behavior when a user gets added to a channel\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event Object](https://getstream.io/chat/docs/event_object) corresponding to `notification.added_to_channel` event\n *\n * @overrideType Function\n * */\n onAddedToChannel?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[]>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a channel gets deleted. In absence of this prop, the channel will be removed from the list.\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.deleted` event\n *\n * @overrideType Function\n * */\n onChannelDeleted?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[]>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a channel gets hidden. In absence of this prop, the channel will be removed from the list.\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.hidden` event\n *\n * @overrideType Function\n * */\n onChannelHidden?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[]>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function to customize behavior when a channel gets truncated\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.truncated` event\n *\n * @overrideType Function\n * */\n onChannelTruncated?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[]>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a channel gets updated\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.updated` event\n *\n * @overrideType Function\n * */\n onChannelUpdated?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[]>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a channel gets visible. In absence of this prop, the channel will be added to the list.\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.visible` event\n *\n * @overrideType Function\n * */\n onChannelVisible?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[]>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Override the default listener/handler for event `notification.message_new`\n * This event is received on channel, which is not being watched.\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `notification.message_new` event\n *\n * @overrideType Function\n * */\n onMessageNew?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[]>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a user gets removed from a channel\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `notification.removed_from_channel` event\n *\n * @overrideType Function\n * */\n onRemovedFromChannel?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[]>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Object containing channel query options\n * @see See [Channel query documentation](https://getstream.io/chat/docs/query_channels) for a list of available option fields\n * */\n options?: ChannelOptions;\n /**\n * Object containing channel sort parameters\n * @see See [Channel query documentation](https://getstream.io/chat/docs/query_channels) for a list of available sorting fields\n * */\n sort?: ChannelSort<StreamChatGenerics>;\n};\n\nconst DEFAULT_FILTERS = {};\nconst DEFAULT_OPTIONS = {};\nconst DEFAULT_SORT = {};\n\n/**\n * This component fetches a list of channels, allowing you to select the channel you want to open.\n * The ChannelList doesn't provide any UI for the underlying React Native FlatList. UI is determined by the `List` component which is\n * provided to the ChannelList component as a prop. By default, the ChannelListMessenger component is used as the list UI.\n *\n * @example ./ChannelList.md\n */\nexport const ChannelList = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelListProps<StreamChatGenerics>,\n) => {\n const {\n additionalFlatListProps = {},\n EmptyStateIndicator = EmptyStateIndicatorDefault,\n FooterLoadingIndicator = ChannelListFooterLoadingIndicator,\n filters = DEFAULT_FILTERS,\n HeaderErrorIndicator = ChannelListHeaderErrorIndicator,\n HeaderNetworkDownIndicator = ChannelListHeaderNetworkDownIndicator,\n List = ChannelListMessenger,\n ListHeaderComponent,\n LoadingErrorIndicator = LoadingErrorIndicatorDefault,\n LoadingIndicator = ChannelListLoadingIndicator,\n // https://github.com/facebook/react-native/blob/a7a7970e543959e9db5281914d5f132beb01db8d/Libraries/Lists/VirtualizedList.js#L466\n loadMoreThreshold = 2,\n lockChannelOrder = false,\n maxUnreadCount = 255,\n numberOfSkeletons = 6,\n onAddedToChannel,\n onChannelDeleted,\n onChannelHidden,\n onChannelVisible,\n onChannelTruncated,\n onChannelUpdated,\n onMessageNew,\n onRemovedFromChannel,\n onSelect,\n options = DEFAULT_OPTIONS,\n Preview = ChannelPreviewMessenger,\n PreviewAvatar,\n PreviewMessage,\n PreviewStatus,\n PreviewTitle,\n PreviewUnreadCount,\n setFlatListRef,\n Skeleton = SkeletonDefault,\n sort = DEFAULT_SORT,\n } = props;\n\n const [forceUpdate, setForceUpdate] = useState(0);\n const { enableOfflineSupport } = useChatContext();\n const {\n channels,\n error,\n hasNextPage,\n loadingChannels,\n loadingNextPage,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setChannels,\n staticChannelsActive,\n } = usePaginatedChannels<StreamChatGenerics>({\n enableOfflineSupport,\n filters,\n options,\n sort,\n });\n\n // Setup event listeners\n useAddedToChannelNotification({\n onAddedToChannel,\n setChannels,\n });\n\n useChannelDeleted({\n onChannelDeleted,\n setChannels,\n });\n\n useChannelHidden({\n onChannelHidden,\n setChannels,\n });\n\n useChannelTruncated({\n onChannelTruncated,\n refreshList,\n setChannels,\n setForceUpdate,\n });\n\n useChannelUpdated({\n onChannelUpdated,\n setChannels,\n });\n\n useChannelVisible({\n onChannelVisible,\n setChannels,\n });\n\n useConnectionRecovered<StreamChatGenerics>({\n enableOfflineSupport,\n refreshList,\n setForceUpdate,\n });\n\n useNewMessage({\n lockChannelOrder,\n setChannels,\n });\n\n useNewMessageNotification({\n onMessageNew,\n setChannels,\n });\n\n useRemovedFromChannelNotification({\n onRemovedFromChannel,\n setChannels,\n });\n\n useUserPresence({\n setChannels,\n });\n\n useSyncDatabase({\n enableOfflineSupport,\n });\n const channelIds = channels.map((c) => c.cid);\n const channelIdsStr = channelIds.join('');\n\n useEffect(() => {\n if (staticChannelsActive || !enableOfflineSupport) {\n return;\n }\n upsertCidsForQuery({\n cids: channelIds,\n filters,\n sort,\n });\n }, [channelIdsStr, staticChannelsActive]);\n\n const channelsContext = useCreateChannelsContext({\n additionalFlatListProps,\n channels,\n EmptyStateIndicator,\n error,\n FooterLoadingIndicator,\n forceUpdate,\n hasNextPage,\n HeaderErrorIndicator,\n HeaderNetworkDownIndicator,\n ListHeaderComponent,\n loadingChannels,\n LoadingErrorIndicator,\n LoadingIndicator,\n loadingNextPage,\n loadMoreThreshold,\n loadNextPage,\n maxUnreadCount,\n numberOfSkeletons,\n onSelect,\n Preview,\n PreviewAvatar,\n PreviewMessage,\n PreviewStatus,\n PreviewTitle,\n PreviewUnreadCount,\n refreshing,\n refreshList,\n reloadList,\n setFlatListRef: (ref: FlatList<Channel<StreamChatGenerics>> | null) => {\n if (setFlatListRef) {\n setFlatListRef(ref);\n }\n },\n Skeleton,\n });\n\n return (\n <ChannelsProvider value={channelsContext}>\n <List<StreamChatGenerics> />\n </ChannelsProvider>\n );\n};\n"]}
@@ -76,7 +76,7 @@ var handleEventToSyncDB = function handleEventToSyncDB(event, flush) {
76
76
  }
77
77
  }
78
78
 
79
- if (type === 'channel.updated') {
79
+ if (type === 'channel.updated' || type === 'channel.visible' || type === 'notification.added_to_channel' || type === 'notification.message_new') {
80
80
  if (event.channel) {
81
81
  return (0, _upsertChannelData.upsertChannelData)({
82
82
  channel: event.channel,
@@ -85,7 +85,7 @@ var handleEventToSyncDB = function handleEventToSyncDB(event, flush) {
85
85
  }
86
86
  }
87
87
 
88
- if (type === 'channel.hidden') {
88
+ if (type === 'channel.hidden' || type === 'channel.deleted' || type === 'notification.removed_from_channel') {
89
89
  if (event.channel) {
90
90
  return (0, _deleteChannel.deleteChannel)({
91
91
  cid: event.channel.cid,
@@ -94,15 +94,6 @@ var handleEventToSyncDB = function handleEventToSyncDB(event, flush) {
94
94
  }
95
95
  }
96
96
 
97
- if (type === 'channel.visible') {
98
- if (event.channel) {
99
- return (0, _upsertChannelData.upsertChannelData)({
100
- channel: event.channel,
101
- flush: flush
102
- });
103
- }
104
- }
105
-
106
97
  if (type === 'channel.truncated') {
107
98
  if (event.channel) {
108
99
  return (0, _deleteMessagesForChannel.deleteMessagesForChannel)({
@@ -112,15 +103,6 @@ var handleEventToSyncDB = function handleEventToSyncDB(event, flush) {
112
103
  }
113
104
  }
114
105
 
115
- if (type === 'channel.deleted') {
116
- if (event.channel) {
117
- return (0, _deleteChannel.deleteChannel)({
118
- cid: event.channel.cid,
119
- flush: flush
120
- });
121
- }
122
- }
123
-
124
106
  if (type === 'channels.queried') {
125
107
  if (event.queriedChannels) {
126
108
  var _event$queriedChannel, _event$queriedChannel2;
@@ -153,33 +135,6 @@ var handleEventToSyncDB = function handleEventToSyncDB(event, flush) {
153
135
  }
154
136
  }
155
137
 
156
- if (type === 'notification.added_to_channel') {
157
- if (event.channel) {
158
- return (0, _upsertChannelData.upsertChannelData)({
159
- channel: event.channel,
160
- flush: flush
161
- });
162
- }
163
- }
164
-
165
- if (type === 'notification.removed_from_channel') {
166
- if (event.channel) {
167
- return (0, _deleteChannel.deleteChannel)({
168
- cid: event.channel.cid,
169
- flush: flush
170
- });
171
- }
172
- }
173
-
174
- if (type === 'notification.message_new') {
175
- if (event.channel) {
176
- return (0, _upsertChannelData.upsertChannelData)({
177
- channel: event.channel,
178
- flush: flush
179
- });
180
- }
181
- }
182
-
183
138
  return [];
184
139
  };
185
140
 
@@ -1 +1 @@
1
- {"version":3,"sources":["handleEventToSyncDB.ts"],"names":["handleEventToSyncDB","event","flush","type","user","id","cid","reads","last_read","received_at","unread_messages","message","parent_id","messages","reaction","channel","queriedChannels","channels","isLatestMessagesSet","isLatestMessageSet","member","members"],"mappings":"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","sourcesContent":["import type { Event } from 'stream-chat';\n\nimport { deleteChannel } from '../../../../store/apis/deleteChannel';\nimport { deleteMember } from '../../../../store/apis/deleteMember';\nimport { deleteMessagesForChannel } from '../../../../store/apis/deleteMessagesForChannel';\nimport { updateMessage } from '../../../../store/apis/updateMessage';\nimport { upsertChannelData } from '../../../../store/apis/upsertChannelData';\nimport { upsertChannels } from '../../../../store/apis/upsertChannels';\nimport { upsertMembers } from '../../../../store/apis/upsertMembers';\nimport { upsertMessages } from '../../../../store/apis/upsertMessages';\nimport { upsertReads } from '../../../../store/apis/upsertReads';\n\nexport const handleEventToSyncDB = (event: Event, flush?: boolean) => {\n const { type } = event;\n\n if (type === 'message.read') {\n if (event.user?.id && event.cid) {\n return upsertReads({\n cid: event.cid,\n flush,\n reads: [\n {\n last_read: event.received_at as string,\n unread_messages: 0,\n user: event.user,\n },\n ],\n });\n }\n }\n\n if (type === 'message.new') {\n if (event.message && !event.message.parent_id) {\n return upsertMessages({\n flush,\n messages: [event.message],\n });\n }\n }\n\n if (type === 'message.updated' || type === 'message.deleted') {\n if (event.message && !event.message.parent_id) {\n // Update only if it exists, otherwise event could be related\n // to a message which is not related to existing messages with database.\n return updateMessage({\n flush,\n message: event.message,\n });\n }\n }\n if (type === 'reaction.updated') {\n if (event.message && event.reaction) {\n updateMessage({\n flush,\n message: event.message,\n });\n }\n }\n\n if (type === 'reaction.new' || type === 'reaction.deleted') {\n if (event.message && !event.message.parent_id) {\n // Here we are relying on the fact message.latest_reactions always includes\n // the new reaction. So we first delete all the existing reactions and populate\n // the reactions table with message.latest_reactions\n return updateMessage({\n flush,\n message: event.message,\n });\n }\n }\n\n if (type === 'channel.updated') {\n if (event.channel) {\n return upsertChannelData({\n channel: event.channel,\n flush,\n });\n }\n }\n\n if (type === 'channel.hidden') {\n if (event.channel) {\n return deleteChannel({\n cid: event.channel.cid,\n flush,\n });\n }\n }\n\n if (type === 'channel.visible') {\n if (event.channel) {\n return upsertChannelData({\n channel: event.channel,\n flush,\n });\n }\n }\n\n if (type === 'channel.truncated') {\n if (event.channel) {\n return deleteMessagesForChannel({\n cid: event.channel.cid,\n flush,\n });\n }\n }\n\n if (type === 'channel.deleted') {\n if (event.channel) {\n return deleteChannel({\n cid: event.channel.cid,\n flush,\n });\n }\n }\n\n if (type === 'channels.queried') {\n if (event.queriedChannels) {\n return upsertChannels({\n channels: event.queriedChannels?.channels,\n flush,\n isLatestMessagesSet: event.queriedChannels?.isLatestMessageSet,\n });\n }\n }\n\n if (type === 'member.added' || type === 'member.updated') {\n if (event.member && event.cid) {\n return upsertMembers({\n cid: event.cid,\n flush,\n members: [event.member],\n });\n }\n }\n\n if (type === 'member.removed') {\n if (event.member && event.cid) {\n return deleteMember({\n cid: event.cid,\n flush,\n member: event.member,\n });\n }\n }\n\n if (type === 'notification.added_to_channel') {\n if (event.channel) {\n return upsertChannelData({\n channel: event.channel,\n flush,\n });\n }\n }\n\n if (type === 'notification.removed_from_channel') {\n if (event.channel) {\n return deleteChannel({\n cid: event.channel.cid,\n flush,\n });\n }\n }\n\n if (type === 'notification.message_new') {\n if (event.channel) {\n return upsertChannelData({\n channel: event.channel,\n flush,\n });\n }\n }\n\n return [];\n};\n"]}
1
+ {"version":3,"sources":["handleEventToSyncDB.ts"],"names":["handleEventToSyncDB","event","flush","type","user","id","cid","reads","last_read","received_at","unread_messages","message","parent_id","messages","reaction","channel","queriedChannels","channels","isLatestMessagesSet","isLatestMessageSet","member","members"],"mappings":"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","sourcesContent":["import type { Event } from 'stream-chat';\n\nimport { deleteChannel } from '../../../../store/apis/deleteChannel';\nimport { deleteMember } from '../../../../store/apis/deleteMember';\nimport { deleteMessagesForChannel } from '../../../../store/apis/deleteMessagesForChannel';\nimport { updateMessage } from '../../../../store/apis/updateMessage';\nimport { upsertChannelData } from '../../../../store/apis/upsertChannelData';\nimport { upsertChannels } from '../../../../store/apis/upsertChannels';\nimport { upsertMembers } from '../../../../store/apis/upsertMembers';\nimport { upsertMessages } from '../../../../store/apis/upsertMessages';\nimport { upsertReads } from '../../../../store/apis/upsertReads';\n\nexport const handleEventToSyncDB = (event: Event, flush?: boolean) => {\n const { type } = event;\n\n if (type === 'message.read') {\n if (event.user?.id && event.cid) {\n return upsertReads({\n cid: event.cid,\n flush,\n reads: [\n {\n last_read: event.received_at as string,\n unread_messages: 0,\n user: event.user,\n },\n ],\n });\n }\n }\n\n if (type === 'message.new') {\n if (event.message && !event.message.parent_id) {\n return upsertMessages({\n flush,\n messages: [event.message],\n });\n }\n }\n\n if (type === 'message.updated' || type === 'message.deleted') {\n if (event.message && !event.message.parent_id) {\n // Update only if it exists, otherwise event could be related\n // to a message which is not in database.\n return updateMessage({\n flush,\n message: event.message,\n });\n }\n }\n\n if (type === 'reaction.updated') {\n if (event.message && event.reaction) {\n // We update the entire message to make sure we also update\n // reaction_counts.\n updateMessage({\n flush,\n message: event.message,\n });\n }\n }\n\n if (type === 'reaction.new' || type === 'reaction.deleted') {\n if (event.message && !event.message.parent_id) {\n // Here we are relying on the fact message.latest_reactions always includes\n // the new reaction. So we first delete all the existing reactions and populate\n // the reactions table with message.latest_reactions\n return updateMessage({\n flush,\n message: event.message,\n });\n }\n }\n\n if (\n type === 'channel.updated' ||\n type === 'channel.visible' ||\n type === 'notification.added_to_channel' ||\n type === 'notification.message_new'\n ) {\n if (event.channel) {\n return upsertChannelData({\n channel: event.channel,\n flush,\n });\n }\n }\n\n if (\n type === 'channel.hidden' ||\n type === 'channel.deleted' ||\n type === 'notification.removed_from_channel'\n ) {\n if (event.channel) {\n return deleteChannel({\n cid: event.channel.cid,\n flush,\n });\n }\n }\n\n if (type === 'channel.truncated') {\n if (event.channel) {\n return deleteMessagesForChannel({\n cid: event.channel.cid,\n flush,\n });\n }\n }\n\n if (type === 'channels.queried') {\n if (event.queriedChannels) {\n return upsertChannels({\n channels: event.queriedChannels?.channels,\n flush,\n isLatestMessagesSet: event.queriedChannels?.isLatestMessageSet,\n });\n }\n }\n\n if (type === 'member.added' || type === 'member.updated') {\n if (event.member && event.cid) {\n return upsertMembers({\n cid: event.cid,\n flush,\n members: [event.member],\n });\n }\n }\n\n if (type === 'member.removed') {\n if (event.member && event.cid) {\n return deleteMember({\n cid: event.cid,\n flush,\n member: event.member,\n });\n }\n }\n\n return [];\n};\n"]}
@@ -269,11 +269,11 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
269
269
  loadingChannels: activeQueryType === 'queryLocalDB' ? true : activeQueryType === 'reload' && channels.length === 0,
270
270
  loadingNextPage: activeQueryType === 'loadChannels',
271
271
  loadNextPage: loadNextPage,
272
- staticChannelsActive: staticChannelsActive,
273
272
  refreshing: activeQueryType === 'refresh',
274
273
  refreshList: refreshList,
275
274
  reloadList: reloadList,
276
- setChannels: setChannels
275
+ setChannels: setChannels,
276
+ staticChannelsActive: staticChannelsActive
277
277
  };
278
278
  };
279
279
 
@@ -1 +1 @@
1
- {"version":3,"sources":["usePaginatedChannels.ts"],"names":["waitSeconds","seconds","Promise","resolve","setTimeout","ONE_SECOND_IN_MS","DEFAULT_OPTIONS","message_limit","MAX_NUMBER_OF_RETRIES","RETRY_INTERVAL_IN_MS","usePaginatedChannels","enableOfflineSupport","filters","options","sort","client","channels","setChannels","staticChannelsActive","setStaticChannelsActive","activeChannels","error","setError","hasNextPage","setHasNextPage","lastRefresh","Date","now","isQueryingRef","activeQueryType","setActiveQueryType","isMountedRef","filtersRef","sortRef","activeRequestId","queryChannels","queryType","retryCount","current","hasUpdatedData","JSON","stringify","some","Boolean","isQueryStale","currentRequestId","undefined","newOptions","limit","MAX_QUERY_CHANNELS_LIMIT","offset","length","skipInitialization","channelQueryResponse","newChannels","console","warn","Error","loadNextPage","refreshList","reloadList","filterStr","sortStr","user","id","channelsFromDB","currentUserId","hydrateActiveChannels","staticState","e","loadingChannels","loadingNextPage","refreshing"],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';\n\nimport { useActiveChannelsRefContext } from '../../../contexts/activeChannelsRefContext/ActiveChannelsRefContext';\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport { useIsMountedRef } from '../../../hooks/useIsMountedRef';\n\nimport { getChannels } from '../../../store/apis/getChannels';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { ONE_SECOND_IN_MS } from '../../../utils/date';\nimport { MAX_QUERY_CHANNELS_LIMIT } from '../utils';\n\nconst waitSeconds = (seconds: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, seconds * ONE_SECOND_IN_MS);\n });\n\ntype Parameters<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n {\n enableOfflineSupport: boolean;\n filters: ChannelFilters<StreamChatGenerics>;\n options: ChannelOptions;\n sort: ChannelSort<StreamChatGenerics>;\n };\n\nconst DEFAULT_OPTIONS = {\n message_limit: 10,\n};\n\nconst MAX_NUMBER_OF_RETRIES = 3;\nconst RETRY_INTERVAL_IN_MS = 5000;\n\ntype QueryType = 'queryLocalDB' | 'reload' | 'refresh' | 'loadChannels';\n\nexport type QueryChannels = (queryType?: QueryType, retryCount?: number) => Promise<void>;\n\nexport const usePaginatedChannels = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n enableOfflineSupport,\n filters = {},\n options = DEFAULT_OPTIONS,\n sort = {},\n}: Parameters<StreamChatGenerics>) => {\n const { client } = useChatContext<StreamChatGenerics>();\n\n const [channels, setChannels] = useState<Channel<StreamChatGenerics>[]>([]);\n const [staticChannelsActive, setStaticChannelsActive] = useState<boolean>(true);\n const activeChannels = useActiveChannelsRefContext();\n\n const [error, setError] = useState<Error>();\n const [hasNextPage, setHasNextPage] = useState(true);\n const lastRefresh = useRef(Date.now());\n const isQueryingRef = useRef(false);\n const [activeQueryType, setActiveQueryType] = useState<QueryType | null>('queryLocalDB');\n const isMountedRef = useIsMountedRef();\n const filtersRef = useRef<typeof filters | null>(null);\n const sortRef = useRef<typeof sort | null>(null);\n const activeRequestId = useRef<number>(0);\n\n const queryChannels: QueryChannels = async (\n queryType: QueryType = 'loadChannels',\n retryCount = 0,\n ): Promise<void> => {\n if (!client || !isMountedRef.current) return;\n\n const hasUpdatedData =\n queryType === 'loadChannels' ||\n queryType === 'refresh' ||\n [\n JSON.stringify(filtersRef.current) !== JSON.stringify(filters),\n JSON.stringify(sortRef.current) !== JSON.stringify(sort),\n ].some(Boolean);\n\n const isQueryStale = () => !isMountedRef || activeRequestId.current !== currentRequestId;\n\n /**\n * We don't need to make another call to query channels if we don't\n * have new data for the query to include\n * */\n if (!hasUpdatedData) {\n if (activeQueryType === null) return;\n }\n\n filtersRef.current = filters;\n sortRef.current = sort;\n isQueryingRef.current = true;\n setError(undefined);\n activeRequestId.current++;\n const currentRequestId = activeRequestId.current;\n setActiveQueryType(queryType);\n\n const newOptions = {\n limit: options?.limit ?? MAX_QUERY_CHANNELS_LIMIT,\n offset: queryType === 'loadChannels' && !staticChannelsActive ? channels.length : 0,\n ...options,\n };\n\n try {\n const channelQueryResponse = await client.queryChannels(filters, sort, newOptions, {\n skipInitialization: activeChannels.current,\n });\n\n if (isQueryStale() || !isMountedRef.current) {\n return;\n }\n const newChannels =\n queryType === 'loadChannels' && !staticChannelsActive\n ? [...channels, ...channelQueryResponse]\n : channelQueryResponse;\n\n setChannels(newChannels);\n setStaticChannelsActive(false);\n setHasNextPage(channelQueryResponse.length >= newOptions.limit);\n setError(undefined);\n isQueryingRef.current = false;\n } catch (err: unknown) {\n isQueryingRef.current = false;\n await waitSeconds(2);\n\n if (isQueryStale()) {\n return;\n }\n\n // querying.current check is needed in order to make sure the next query call doesnt flick an error\n // state and then succeed (reconnect case)\n if (retryCount === MAX_NUMBER_OF_RETRIES && !isQueryingRef.current) {\n setActiveQueryType(null);\n console.warn(err);\n\n setError(\n new Error(\n `Maximum number of retries reached in queryChannels. Last error message is: ${err}`,\n ),\n );\n return;\n }\n\n return queryChannels(queryType, retryCount + 1);\n }\n\n setActiveQueryType(null);\n };\n\n const loadNextPage = hasNextPage ? queryChannels : undefined;\n\n const refreshList = () => {\n const now = Date.now();\n // Only allow pull-to-refresh 5 seconds after last successful refresh.\n if (now - lastRefresh.current < RETRY_INTERVAL_IN_MS && error === undefined) {\n return;\n }\n\n lastRefresh.current = Date.now();\n return queryChannels('refresh');\n };\n\n const reloadList = () => queryChannels('reload');\n\n /**\n * Equality check using stringified filters/sort ensure that we don't make un-necessary queryChannels api calls\n * for the scenario:\n *\n * <ChannelList\n * filters={{\n * members: { $in: ['vishal'] }\n * }}\n * ...\n * />\n *\n * Here we have passed filters as inline object, which means on every re-render of\n * parent component, ChannelList will receive new object reference (even though value is same), which\n * in return will trigger useEffect. To avoid this, we can add a value check.\n */\n const filterStr = useMemo(() => JSON.stringify(filters), [filters]);\n const sortStr = useMemo(() => JSON.stringify(sort), [sort]);\n\n useEffect(() => {\n if (client?.user?.id) {\n if (enableOfflineSupport) {\n try {\n const channelsFromDB = getChannels({ currentUserId: client.user.id, filters, sort });\n setChannels(\n client.hydrateActiveChannels(channelsFromDB, {\n staticState: true,\n }),\n );\n } catch (e) {\n console.warn('Failed to get channels from database: ', e);\n }\n }\n\n reloadList();\n }\n }, [filterStr, sortStr, client]);\n\n return {\n channels,\n error,\n hasNextPage,\n loadingChannels:\n activeQueryType === 'queryLocalDB'\n ? true\n : activeQueryType === 'reload' && channels.length === 0,\n loadingNextPage: activeQueryType === 'loadChannels',\n loadNextPage,\n staticChannelsActive,\n refreshing: activeQueryType === 'refresh',\n refreshList,\n reloadList,\n setChannels,\n };\n};\n"]}
1
+ {"version":3,"sources":["usePaginatedChannels.ts"],"names":["waitSeconds","seconds","Promise","resolve","setTimeout","ONE_SECOND_IN_MS","DEFAULT_OPTIONS","message_limit","MAX_NUMBER_OF_RETRIES","RETRY_INTERVAL_IN_MS","usePaginatedChannels","enableOfflineSupport","filters","options","sort","client","channels","setChannels","staticChannelsActive","setStaticChannelsActive","activeChannels","error","setError","hasNextPage","setHasNextPage","lastRefresh","Date","now","isQueryingRef","activeQueryType","setActiveQueryType","isMountedRef","filtersRef","sortRef","activeRequestId","queryChannels","queryType","retryCount","current","hasUpdatedData","JSON","stringify","some","Boolean","isQueryStale","currentRequestId","undefined","newOptions","limit","MAX_QUERY_CHANNELS_LIMIT","offset","length","skipInitialization","channelQueryResponse","newChannels","console","warn","Error","loadNextPage","refreshList","reloadList","filterStr","sortStr","user","id","channelsFromDB","currentUserId","hydrateActiveChannels","staticState","e","loadingChannels","loadingNextPage","refreshing"],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';\n\nimport { useActiveChannelsRefContext } from '../../../contexts/activeChannelsRefContext/ActiveChannelsRefContext';\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport { useIsMountedRef } from '../../../hooks/useIsMountedRef';\n\nimport { getChannels } from '../../../store/apis/getChannels';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { ONE_SECOND_IN_MS } from '../../../utils/date';\nimport { MAX_QUERY_CHANNELS_LIMIT } from '../utils';\n\nconst waitSeconds = (seconds: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, seconds * ONE_SECOND_IN_MS);\n });\n\ntype Parameters<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n {\n enableOfflineSupport: boolean;\n filters: ChannelFilters<StreamChatGenerics>;\n options: ChannelOptions;\n sort: ChannelSort<StreamChatGenerics>;\n };\n\nconst DEFAULT_OPTIONS = {\n message_limit: 10,\n};\n\nconst MAX_NUMBER_OF_RETRIES = 3;\nconst RETRY_INTERVAL_IN_MS = 5000;\n\ntype QueryType = 'queryLocalDB' | 'reload' | 'refresh' | 'loadChannels';\n\nexport type QueryChannels = (queryType?: QueryType, retryCount?: number) => Promise<void>;\n\nexport const usePaginatedChannels = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n enableOfflineSupport,\n filters = {},\n options = DEFAULT_OPTIONS,\n sort = {},\n}: Parameters<StreamChatGenerics>) => {\n const { client } = useChatContext<StreamChatGenerics>();\n\n const [channels, setChannels] = useState<Channel<StreamChatGenerics>[]>([]);\n const [staticChannelsActive, setStaticChannelsActive] = useState<boolean>(true);\n const activeChannels = useActiveChannelsRefContext();\n\n const [error, setError] = useState<Error>();\n const [hasNextPage, setHasNextPage] = useState(true);\n const lastRefresh = useRef(Date.now());\n const isQueryingRef = useRef(false);\n const [activeQueryType, setActiveQueryType] = useState<QueryType | null>('queryLocalDB');\n const isMountedRef = useIsMountedRef();\n const filtersRef = useRef<typeof filters | null>(null);\n const sortRef = useRef<typeof sort | null>(null);\n const activeRequestId = useRef<number>(0);\n\n const queryChannels: QueryChannels = async (\n queryType: QueryType = 'loadChannels',\n retryCount = 0,\n ): Promise<void> => {\n if (!client || !isMountedRef.current) return;\n\n const hasUpdatedData =\n queryType === 'loadChannels' ||\n queryType === 'refresh' ||\n [\n JSON.stringify(filtersRef.current) !== JSON.stringify(filters),\n JSON.stringify(sortRef.current) !== JSON.stringify(sort),\n ].some(Boolean);\n\n const isQueryStale = () => !isMountedRef || activeRequestId.current !== currentRequestId;\n\n /**\n * We don't need to make another call to query channels if we don't\n * have new data for the query to include\n * */\n if (!hasUpdatedData) {\n if (activeQueryType === null) return;\n }\n\n filtersRef.current = filters;\n sortRef.current = sort;\n isQueryingRef.current = true;\n setError(undefined);\n activeRequestId.current++;\n const currentRequestId = activeRequestId.current;\n setActiveQueryType(queryType);\n\n const newOptions = {\n limit: options?.limit ?? MAX_QUERY_CHANNELS_LIMIT,\n offset: queryType === 'loadChannels' && !staticChannelsActive ? channels.length : 0,\n ...options,\n };\n\n try {\n const channelQueryResponse = await client.queryChannels(filters, sort, newOptions, {\n skipInitialization: activeChannels.current,\n });\n\n if (isQueryStale() || !isMountedRef.current) {\n return;\n }\n const newChannels =\n queryType === 'loadChannels' && !staticChannelsActive\n ? [...channels, ...channelQueryResponse]\n : channelQueryResponse;\n\n setChannels(newChannels);\n setStaticChannelsActive(false);\n setHasNextPage(channelQueryResponse.length >= newOptions.limit);\n setError(undefined);\n isQueryingRef.current = false;\n } catch (err: unknown) {\n isQueryingRef.current = false;\n await waitSeconds(2);\n\n if (isQueryStale()) {\n return;\n }\n\n // querying.current check is needed in order to make sure the next query call doesnt flick an error\n // state and then succeed (reconnect case)\n if (retryCount === MAX_NUMBER_OF_RETRIES && !isQueryingRef.current) {\n setActiveQueryType(null);\n console.warn(err);\n\n setError(\n new Error(\n `Maximum number of retries reached in queryChannels. Last error message is: ${err}`,\n ),\n );\n return;\n }\n\n return queryChannels(queryType, retryCount + 1);\n }\n\n setActiveQueryType(null);\n };\n\n const loadNextPage = hasNextPage ? queryChannels : undefined;\n\n const refreshList = () => {\n const now = Date.now();\n // Only allow pull-to-refresh 5 seconds after last successful refresh.\n if (now - lastRefresh.current < RETRY_INTERVAL_IN_MS && error === undefined) {\n return;\n }\n\n lastRefresh.current = Date.now();\n return queryChannels('refresh');\n };\n\n const reloadList = () => queryChannels('reload');\n\n /**\n * Equality check using stringified filters/sort ensure that we don't make un-necessary queryChannels api calls\n * for the scenario:\n *\n * <ChannelList\n * filters={{\n * members: { $in: ['vishal'] }\n * }}\n * ...\n * />\n *\n * Here we have passed filters as inline object, which means on every re-render of\n * parent component, ChannelList will receive new object reference (even though value is same), which\n * in return will trigger useEffect. To avoid this, we can add a value check.\n */\n const filterStr = useMemo(() => JSON.stringify(filters), [filters]);\n const sortStr = useMemo(() => JSON.stringify(sort), [sort]);\n\n useEffect(() => {\n if (client?.user?.id) {\n if (enableOfflineSupport) {\n try {\n const channelsFromDB = getChannels({ currentUserId: client.user.id, filters, sort });\n setChannels(\n client.hydrateActiveChannels(channelsFromDB, {\n staticState: true,\n }),\n );\n } catch (e) {\n console.warn('Failed to get channels from database: ', e);\n }\n }\n\n reloadList();\n }\n }, [filterStr, sortStr, client]);\n\n return {\n channels,\n error,\n hasNextPage,\n loadingChannels:\n activeQueryType === 'queryLocalDB'\n ? true\n : activeQueryType === 'reload' && channels.length === 0,\n loadingNextPage: activeQueryType === 'loadChannels',\n loadNextPage,\n refreshing: activeQueryType === 'refresh',\n refreshList,\n reloadList,\n setChannels,\n staticChannelsActive,\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["ChannelAvatar.tsx"],"names":["ChannelAvatar","props","channel","displayAvatar","displayPresence","images","names","image","name"],"mappings":";;;;;;;AAAA;;AAGA;;AACA;;AAGA;;AACA;;;;;AASO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAGzBC,KAHyB,EAIxB;AACH,MAAQC,OAAR,GAAoBD,KAApB,CAAQC,OAAR;AAEA,MAAMC,aAAa,GAAG,oEAA+BD,OAA/B,CAAtB;AACA,MAAME,eAAe,GAAG,wEAAiCF,OAAjC,CAAxB;;AAEA,MAAIC,aAAa,CAACE,MAAlB,EAA0B;AACxB,WAAO,gCAAC,wBAAD;AAAa,MAAA,MAAM,EAAEF,aAAa,CAACE,MAAnC;AAA2C,MAAA,KAAK,EAAEF,aAAa,CAACG,KAAhE;AAAuE,MAAA,IAAI,EAAE,EAA7E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAP;AACD;;AAED,SACE,gCAAC,cAAD;AACE,IAAA,KAAK,EAAEH,aAAa,CAACI,KADvB;AAEE,IAAA,IAAI,EAAEJ,aAAa,CAACK,IAFtB;AAGE,IAAA,MAAM,EAAEJ,eAHV;AAIE,IAAA,IAAI,EAAE,EAJR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF;AAQD,CAtBM","sourcesContent":["import React from 'react';\n\nimport type { ChannelPreviewProps } from './ChannelPreview';\nimport { useChannelPreviewDisplayAvatar } from './hooks/useChannelPreviewDisplayAvatar';\nimport { useChannelPreviewDisplayPresence } from './hooks/useChannelPreviewDisplayPresence';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { Avatar } from '../Avatar/Avatar';\nimport { GroupAvatar } from '../Avatar/GroupAvatar';\n\nexport type ChannelAvatarProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n > = Pick<ChannelPreviewProps<StreamChatGenerics>, 'channel'>;\n\n/**\n * This UI component displays an avatar for a particular channel.\n */\nexport const ChannelAvatar = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n >(\n props: ChannelAvatarProps<StreamChatGenerics>,\n) => {\n const { channel } = props;\n\n const displayAvatar = useChannelPreviewDisplayAvatar(channel);\n const displayPresence = useChannelPreviewDisplayPresence(channel);\n\n if (displayAvatar.images) {\n return <GroupAvatar images={displayAvatar.images} names={displayAvatar.names} size={40} />;\n }\n\n return (\n <Avatar\n image={displayAvatar.image}\n name={displayAvatar.name}\n online={displayPresence}\n size={40}\n />\n );\n};\n"]}
1
+ {"version":3,"sources":["ChannelAvatar.tsx"],"names":["ChannelAvatar","props","channel","displayAvatar","displayPresence","images","names","image","name"],"mappings":";;;;;;;AAAA;;AAGA;;AACA;;AAGA;;AACA;;;;;AASO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAG3BC,KAH2B,EAIxB;AACH,MAAQC,OAAR,GAAoBD,KAApB,CAAQC,OAAR;AAEA,MAAMC,aAAa,GAAG,oEAA+BD,OAA/B,CAAtB;AACA,MAAME,eAAe,GAAG,wEAAiCF,OAAjC,CAAxB;;AAEA,MAAIC,aAAa,CAACE,MAAlB,EAA0B;AACxB,WAAO,gCAAC,wBAAD;AAAa,MAAA,MAAM,EAAEF,aAAa,CAACE,MAAnC;AAA2C,MAAA,KAAK,EAAEF,aAAa,CAACG,KAAhE;AAAuE,MAAA,IAAI,EAAE,EAA7E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAP;AACD;;AAED,SACE,gCAAC,cAAD;AACE,IAAA,KAAK,EAAEH,aAAa,CAACI,KADvB;AAEE,IAAA,IAAI,EAAEJ,aAAa,CAACK,IAFtB;AAGE,IAAA,MAAM,EAAEJ,eAHV;AAIE,IAAA,IAAI,EAAE,EAJR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF;AAQD,CAtBM","sourcesContent":["import React from 'react';\n\nimport type { ChannelPreviewProps } from './ChannelPreview';\nimport { useChannelPreviewDisplayAvatar } from './hooks/useChannelPreviewDisplayAvatar';\nimport { useChannelPreviewDisplayPresence } from './hooks/useChannelPreviewDisplayPresence';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { Avatar } from '../Avatar/Avatar';\nimport { GroupAvatar } from '../Avatar/GroupAvatar';\n\nexport type ChannelAvatarProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChannelPreviewProps<StreamChatGenerics>, 'channel'>;\n\n/**\n * This UI component displays an avatar for a particular channel.\n */\nexport const ChannelAvatar = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelAvatarProps<StreamChatGenerics>,\n) => {\n const { channel } = props;\n\n const displayAvatar = useChannelPreviewDisplayAvatar(channel);\n const displayPresence = useChannelPreviewDisplayPresence(channel);\n\n if (displayAvatar.images) {\n return <GroupAvatar images={displayAvatar.images} names={displayAvatar.names} size={40} />;\n }\n\n return (\n <Avatar\n image={displayAvatar.image}\n name={displayAvatar.name}\n online={displayPresence}\n size={40}\n />\n );\n};\n"]}
@@ -322,7 +322,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
322
322
 
323
323
  var index = _ref2.index,
324
324
  message = _ref2.item;
325
- if (!channel || !channel.initialized) return null;
325
+ if (!channel || !channel.initialized && !channel.staticState) return null;
326
326
  var lastRead = channel.lastRead();
327
327
  var lastMessage = messageList == null ? void 0 : messageList[index + 1];
328
328
  var showUnreadUnderlay = !!isUnreadMessageRef.current(message, lastRead) && scrollToBottomButtonVisible;