@@ -238,75 +238,79 @@ export const useDiscussionMessagesById = ({
238238 setIsBatchLoading ( true ) ;
239239 }
240240
241- DiscussionMessageService . subscribeToDiscussionMessagesByDiscussionId (
242- discussionId ,
243- lastVisible && lastVisible [ discussionId ] ,
244- async (
245- addedDiscussionMessages ,
246- modifiedDiscussionMessages ,
247- removedDiscussionMessages ,
248- lastVisibleDocument ,
249- ) => {
250- const updatedDiscussionMessages = [
251- ...addedDiscussionMessages ,
252- ...modifiedDiscussionMessages ,
253- ] ;
254- setLastVisible ( ( prevVisible ) => ( {
255- ...prevVisible ,
256- [ discussionId ] : lastVisibleDocument ,
257- } ) ) ;
258-
259- const hasLastVisibleDocument = ! ! lastVisibleDocument ?. data ( ) ;
260-
261- const discussionsWithText = await Promise . all (
262- updatedDiscussionMessages . map ( async ( discussionMessage ) => {
263- const isUserDiscussionMessage =
264- checkIsUserDiscussionMessage ( discussionMessage ) ;
265- const isSystemMessage =
266- checkIsSystemDiscussionMessage ( discussionMessage ) ;
267-
268- const parsedText = await getTextFromTextEditorString ( {
269- userId,
270- ownerId : isUserDiscussionMessage
271- ? discussionMessage . ownerId
272- : null ,
273- textEditorString : discussionMessage . text ,
274- users,
275- commonId : discussionMessage . commonId ,
276- systemMessage : isSystemMessage ? discussionMessage : undefined ,
277- getCommonPagePath,
278- getCommonPageAboutTabPath,
279- directParent,
280- onUserClick,
281- onFeedItemClick,
282- onInternalLinkClick,
283- } ) ;
284-
285- return {
286- ...discussionMessage ,
287- parsedText,
288- } ;
289- } ) ,
290- ) ;
291- if (
292- discussionsWithText . length < MESSAGES_NUMBER_IN_BATCH &&
293- ! hasLastVisibleDocument
294- ) {
295- setIsEndOfList ( ( prevIsEndOfList ) => ( {
296- ...prevIsEndOfList ,
297- [ discussionId ] : true ,
241+ try {
242+ DiscussionMessageService . subscribeToDiscussionMessagesByDiscussionId (
243+ discussionId ,
244+ lastVisible && lastVisible [ discussionId ] ,
245+ async (
246+ addedDiscussionMessages ,
247+ modifiedDiscussionMessages ,
248+ removedDiscussionMessages ,
249+ lastVisibleDocument ,
250+ ) => {
251+ const updatedDiscussionMessages = [
252+ ...addedDiscussionMessages ,
253+ ...modifiedDiscussionMessages ,
254+ ] ;
255+ setLastVisible ( ( prevVisible ) => ( {
256+ ...prevVisible ,
257+ [ discussionId ] : lastVisibleDocument ,
298258 } ) ) ;
299- }
300- dispatch (
301- cacheActions . updateDiscussionMessagesStateByDiscussionId ( {
302- discussionId,
303- removedDiscussionMessages,
304- updatedDiscussionMessages : discussionsWithText ,
305- } ) ,
306- ) ;
307- setIsBatchLoading ( false ) ;
308- } ,
309- ) ;
259+
260+ const hasLastVisibleDocument = ! ! lastVisibleDocument ?. data ( ) ;
261+
262+ const discussionsWithText = await Promise . all (
263+ updatedDiscussionMessages . map ( async ( discussionMessage ) => {
264+ const isUserDiscussionMessage =
265+ checkIsUserDiscussionMessage ( discussionMessage ) ;
266+ const isSystemMessage =
267+ checkIsSystemDiscussionMessage ( discussionMessage ) ;
268+
269+ const parsedText = await getTextFromTextEditorString ( {
270+ userId,
271+ ownerId : isUserDiscussionMessage
272+ ? discussionMessage . ownerId
273+ : null ,
274+ textEditorString : discussionMessage . text ,
275+ users,
276+ commonId : discussionMessage . commonId ,
277+ systemMessage : isSystemMessage ? discussionMessage : undefined ,
278+ getCommonPagePath,
279+ getCommonPageAboutTabPath,
280+ directParent,
281+ onUserClick,
282+ onFeedItemClick,
283+ onInternalLinkClick,
284+ } ) ;
285+
286+ return {
287+ ...discussionMessage ,
288+ parsedText,
289+ } ;
290+ } ) ,
291+ ) ;
292+ if (
293+ discussionsWithText . length < MESSAGES_NUMBER_IN_BATCH &&
294+ ! hasLastVisibleDocument
295+ ) {
296+ setIsEndOfList ( ( prevIsEndOfList ) => ( {
297+ ...prevIsEndOfList ,
298+ [ discussionId ] : true ,
299+ } ) ) ;
300+ }
301+ dispatch (
302+ cacheActions . updateDiscussionMessagesStateByDiscussionId ( {
303+ discussionId,
304+ removedDiscussionMessages,
305+ updatedDiscussionMessages : discussionsWithText ,
306+ } ) ,
307+ ) ;
308+ setIsBatchLoading ( false ) ;
309+ } ,
310+ ) ;
311+ } catch ( err ) {
312+ setIsBatchLoading ( false ) ;
313+ }
310314 } ;
311315
312316 useDeepCompareEffect ( ( ) => {
@@ -324,70 +328,74 @@ export const useDiscussionMessagesById = ({
324328 return ;
325329 }
326330
327- const discussionMessages = [ ...state . data ] ;
328-
329- // if (discussionMessages.length > 0 && users.length === 0) {
330- // return;
331- // }
331+ try {
332+ const discussionMessages = [ ...state . data ] ;
332333
333- const filteredMessages = discussionMessages . filter (
334- ( { moderation } ) =>
335- moderation ?. flag !== ModerationFlags . Hidden || hasPermissionToHide ,
336- ) ;
337- const loadedDiscussionMessages = await Promise . all (
338- filteredMessages . map ( async ( d ) => {
339- const newDiscussionMessage = { ...d } ;
340- const parentMessage = filteredMessages . find (
341- ( { id } ) => id === d . parentId ,
342- ) ;
343- if (
344- checkIsUserDiscussionMessage ( d ) &&
345- checkIsUserDiscussionMessage ( newDiscussionMessage )
346- ) {
347- const commonMemberMessageOwner = [
348- AI_USER ,
349- AI_PRO_USER ,
350- ...users ,
351- ...externalCommonUsers ,
352- ] . find ( ( o ) => o . uid === d . ownerId ) ;
353- const messageOwner =
354- commonMemberMessageOwner ||
355- ( await UserService . getUserById ( d . ownerId ) ) ;
356- newDiscussionMessage . owner = messageOwner ;
357- if ( ! commonMemberMessageOwner && messageOwner ) {
358- dispatch (
359- cacheActions . addUserToExternalCommonUsers ( {
360- user : messageOwner ,
361- } ) ,
362- ) ;
363- }
364- }
365- newDiscussionMessage . parentMessage = parentMessage
366- ? {
367- id : parentMessage . id ,
368- text : parentMessage . text ,
369- ownerName : parentMessage ?. ownerName ,
370- ...( checkIsUserDiscussionMessage ( parentMessage ) && {
371- ownerId : parentMessage . ownerId ,
372- } ) ,
373- moderation : parentMessage ?. moderation ,
374- images : parentMessage ?. images ,
375- files : parentMessage ?. files ,
376- createdAt : parentMessage . createdAt ,
334+ const filteredMessages = discussionMessages . filter (
335+ ( { moderation } ) =>
336+ moderation ?. flag !== ModerationFlags . Hidden || hasPermissionToHide ,
337+ ) ;
338+ const loadedDiscussionMessages = await Promise . all (
339+ filteredMessages . map ( async ( d ) => {
340+ const newDiscussionMessage = { ...d } ;
341+ const parentMessage = filteredMessages . find (
342+ ( { id } ) => id === d . parentId ,
343+ ) ;
344+ if (
345+ checkIsUserDiscussionMessage ( d ) &&
346+ checkIsUserDiscussionMessage ( newDiscussionMessage )
347+ ) {
348+ const commonMemberMessageOwner = [
349+ AI_USER ,
350+ AI_PRO_USER ,
351+ ...users ,
352+ ...externalCommonUsers ,
353+ ] . find ( ( o ) => o . uid === d . ownerId ) ;
354+ const messageOwner =
355+ commonMemberMessageOwner ||
356+ ( await UserService . getUserById ( d . ownerId ) ) ;
357+ newDiscussionMessage . owner = messageOwner ;
358+ if ( ! commonMemberMessageOwner && messageOwner ) {
359+ dispatch (
360+ cacheActions . addUserToExternalCommonUsers ( {
361+ user : messageOwner ,
362+ } ) ,
363+ ) ;
377364 }
378- : null ;
379-
380- return newDiscussionMessage ;
381- } ) ,
382- ) ;
383-
384- setDiscussionMessagesWithOwners ( loadedDiscussionMessages ) ;
385- setIsFirstBatchLoaded ( ( prev ) => ( {
386- ...prev ,
387- [ discussionId ] : true ,
388- } ) ) ;
365+ }
366+ newDiscussionMessage . parentMessage = parentMessage
367+ ? {
368+ id : parentMessage . id ,
369+ text : parentMessage . text ,
370+ ownerName : parentMessage ?. ownerName ,
371+ ...( checkIsUserDiscussionMessage ( parentMessage ) && {
372+ ownerId : parentMessage . ownerId ,
373+ } ) ,
374+ moderation : parentMessage ?. moderation ,
375+ images : parentMessage ?. images ,
376+ files : parentMessage ?. files ,
377+ createdAt : parentMessage . createdAt ,
378+ }
379+ : null ;
380+
381+ return newDiscussionMessage ;
382+ } ) ,
383+ ) ;
384+
385+ setDiscussionMessagesWithOwners ( loadedDiscussionMessages ) ;
386+ setIsFirstBatchLoaded ( ( prev ) => ( {
387+ ...prev ,
388+ [ discussionId ] : true ,
389+ } ) ) ;
390+ } catch ( err ) {
391+ setDiscussionMessagesWithOwners ( [ ] ) ;
392+ setIsFirstBatchLoaded ( ( prev ) => ( {
393+ ...prev ,
394+ [ discussionId ] : true ,
395+ } ) ) ;
396+ }
389397 } ) ( ) ;
390- } , [ state . data , hasPermissionToHide , users , externalCommonUsers ] ) ;
398+ } , [ state . data , hasPermissionToHide , users , externalCommonUsers , discussionId ] ) ;
391399
392400 return {
393401 ...state ,
0 commit comments