@selfcommunity/react-ui 0.7.9-alpha.15 → 0.7.9-alpha.17

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/cjs/components/ChangeGroupPicture/ChangeGroupPicture.js +13 -10
  2. package/lib/cjs/components/Composer/Composer.js +1 -1
  3. package/lib/cjs/components/Composer/Layer/AudienceLayer/AudienceLayer.js +4 -4
  4. package/lib/cjs/components/FeedObject/FeedObject.d.ts +1 -0
  5. package/lib/cjs/components/FeedObject/FeedObject.js +17 -5
  6. package/lib/cjs/components/Group/Group.js +3 -2
  7. package/lib/cjs/components/GroupForm/GroupForm.js +3 -3
  8. package/lib/cjs/components/GroupHeader/GroupHeader.js +2 -2
  9. package/lib/cjs/components/PrivateMessageComponent/PrivateMessageComponent.d.ts +1 -1
  10. package/lib/cjs/components/PrivateMessageComponent/PrivateMessageComponent.js +10 -7
  11. package/lib/cjs/components/PrivateMessageSnippetItem/PrivateMessageSnippetItem.js +11 -6
  12. package/lib/cjs/components/PrivateMessageSnippets/PrivateMessageSnippets.d.ts +3 -3
  13. package/lib/cjs/components/PrivateMessageSnippets/PrivateMessageSnippets.js +19 -5
  14. package/lib/cjs/components/PrivateMessageThread/PrivateMessageThread.d.ts +6 -1
  15. package/lib/cjs/components/PrivateMessageThread/PrivateMessageThread.js +33 -16
  16. package/lib/esm/components/ChangeGroupPicture/ChangeGroupPicture.js +13 -10
  17. package/lib/esm/components/Composer/Composer.js +1 -1
  18. package/lib/esm/components/Composer/Layer/AudienceLayer/AudienceLayer.js +4 -4
  19. package/lib/esm/components/FeedObject/FeedObject.d.ts +1 -0
  20. package/lib/esm/components/FeedObject/FeedObject.js +18 -6
  21. package/lib/esm/components/Group/Group.js +3 -2
  22. package/lib/esm/components/GroupForm/GroupForm.js +3 -3
  23. package/lib/esm/components/GroupHeader/GroupHeader.js +2 -2
  24. package/lib/esm/components/PrivateMessageComponent/PrivateMessageComponent.d.ts +1 -1
  25. package/lib/esm/components/PrivateMessageComponent/PrivateMessageComponent.js +11 -8
  26. package/lib/esm/components/PrivateMessageSnippetItem/PrivateMessageSnippetItem.js +11 -6
  27. package/lib/esm/components/PrivateMessageSnippets/PrivateMessageSnippets.d.ts +3 -3
  28. package/lib/esm/components/PrivateMessageSnippets/PrivateMessageSnippets.js +21 -7
  29. package/lib/esm/components/PrivateMessageThread/PrivateMessageThread.d.ts +6 -1
  30. package/lib/esm/components/PrivateMessageThread/PrivateMessageThread.js +34 -17
  31. package/lib/umd/react-ui.js +1 -1
  32. package/package.json +6 -6
@@ -3,7 +3,7 @@ import React, { useCallback, useContext, useEffect, useMemo, useRef, useState }
3
3
  import { styled } from '@mui/material/styles';
4
4
  import { Endpoints, http, PrivateMessageService } from '@selfcommunity/api-services';
5
5
  import { SCUserContext, UserUtils, useSCFetchUser } from '@selfcommunity/react-core';
6
- import { SCNotificationTopicType, SCNotificationTypologyType, SCPrivateMessageStatusType } from '@selfcommunity/types';
6
+ import { SCNotificationTopicType, SCNotificationTypologyType, SCPrivateMessageStatusType, SCPrivateMessageType } from '@selfcommunity/types';
7
7
  import PrivateMessageThreadItem, { PrivateMessageThreadItemSkeleton } from '../PrivateMessageThreadItem';
8
8
  import PubSub from 'pubsub-js';
9
9
  import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
@@ -93,7 +93,7 @@ export default function PrivateMessageThread(inProps) {
93
93
  props: inProps,
94
94
  name: PREFIX
95
95
  });
96
- const { userObj, openNewMessage = false, onNewMessageClose = null, onNewMessageSent = null, onSingleMessageOpen = null, className } = props, rest = __rest(props, ["userObj", "openNewMessage", "onNewMessageClose", "onNewMessageSent", "onSingleMessageOpen", "className"]);
96
+ const { threadObj, openNewMessage = false, onNewMessageClose = null, onNewMessageSent = null, onSingleMessageOpen = null, className, type } = props, rest = __rest(props, ["threadObj", "openNewMessage", "onNewMessageClose", "onNewMessageSent", "onSingleMessageOpen", "className", "type"]);
97
97
  // CONTEXT
98
98
  const scUserContext = useContext(SCUserContext);
99
99
  // STATE
@@ -104,7 +104,7 @@ export default function PrivateMessageThread(inProps) {
104
104
  const [loading, setLoading] = useState(false);
105
105
  const [isHovered, setIsHovered] = useState({});
106
106
  const [followers, setFollowers] = useState([]);
107
- const isNew = userObj && userObj === SCPrivateMessageStatusType.NEW;
107
+ const isNew = threadObj && threadObj === SCPrivateMessageStatusType.NEW;
108
108
  const authUserId = scUserContext.user ? scUserContext.user.id : null;
109
109
  const [singleMessageUser, setSingleMessageUser] = useState(null);
110
110
  const [receiver, setReceiver] = useState(null);
@@ -113,7 +113,7 @@ export default function PrivateMessageThread(inProps) {
113
113
  const [openDeleteMessageDialog, setOpenDeleteMessageDialog] = useState(false);
114
114
  const [recipients, setRecipients] = useState([]);
115
115
  const { enqueueSnackbar, closeSnackbar } = useSnackbar();
116
- const isNumber = typeof userObj === 'number';
116
+ const isNumber = typeof threadObj === 'number';
117
117
  const messageReceiver = (item, loggedUserId) => {
118
118
  var _a, _b, _c;
119
119
  return ((_a = item === null || item === void 0 ? void 0 : item.receiver) === null || _a === void 0 ? void 0 : _a.id) !== loggedUserId ? (_b = item === null || item === void 0 ? void 0 : item.receiver) === null || _b === void 0 ? void 0 : _b.id : (_c = item === null || item === void 0 ? void 0 : item.sender) === null || _c === void 0 ? void 0 : _c.id;
@@ -126,7 +126,7 @@ export default function PrivateMessageThread(inProps) {
126
126
  // HOOKS
127
127
  // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
128
128
  // @ts-ignore
129
- const { scUser } = useSCFetchUser({ id: userObj, userObj });
129
+ const { scUser } = useSCFetchUser({ id: threadObj, threadObj });
130
130
  const messagesEndRef = useRef(null);
131
131
  const scrollToBottom = () => {
132
132
  var _a;
@@ -254,9 +254,9 @@ export default function PrivateMessageThread(inProps) {
254
254
  * Fetches thread
255
255
  */
256
256
  function fetchThread() {
257
- if (userObj && typeof userObj !== 'string') {
257
+ if (threadObj && typeof threadObj !== 'string' && type !== SCPrivateMessageType.GROUP) {
258
258
  setLoadingMessageObjs(true);
259
- const _userObjId = isNumber ? userObj : messageReceiver(userObj, authUserId);
259
+ const _userObjId = isNumber ? threadObj : messageReceiver(threadObj, authUserId);
260
260
  PrivateMessageService.getAThread({ user: _userObjId, limit: 10 })
261
261
  .then((res) => {
262
262
  setMessageObjs(res.results);
@@ -289,6 +289,19 @@ export default function PrivateMessageThread(inProps) {
289
289
  Logger.error(SCOPE_SC_UI, { error });
290
290
  });
291
291
  }
292
+ else if (type === SCPrivateMessageType.GROUP) {
293
+ PrivateMessageService.getAThread({ group: isNumber ? threadObj : threadObj.group.id, limit: 10 })
294
+ .then((res) => {
295
+ setMessageObjs(res.results);
296
+ setPrevious(res.next && updateAndDeleteURLParameters(res.next, 'before_message', res.results[0].id, 'offset'));
297
+ setLoadingMessageObjs(false);
298
+ })
299
+ .catch((error) => {
300
+ setLoadingMessageObjs(false);
301
+ console.log(error);
302
+ Logger.error(SCOPE_SC_UI, { error });
303
+ });
304
+ }
292
305
  }
293
306
  const isNewerThan60Seconds = (creationTime) => {
294
307
  const date = new Date(creationTime);
@@ -353,11 +366,15 @@ export default function PrivateMessageThread(inProps) {
353
366
  .request({
354
367
  url: Endpoints.SendMessage.url(),
355
368
  method: Endpoints.SendMessage.method,
356
- data: {
357
- recipients: openNewMessage || isNew || singleMessageThread ? ids : [isNumber && userObj ? userObj : messageReceiver(userObj, authUserId)],
358
- message: message,
359
- file_uuid: file && !message ? file : null
360
- }
369
+ data: Object.assign(Object.assign({}, (type === SCPrivateMessageType.GROUP
370
+ ? { group: isNumber ? threadObj : threadObj.group.id }
371
+ : {
372
+ recipients: openNewMessage || isNew || singleMessageThread
373
+ ? ids
374
+ : [isNumber && threadObj ? threadObj : messageReceiver(threadObj, authUserId)]
375
+ })), {
376
+ // recipients: openNewMessage || isNew || singleMessageThread ? ids : [isNumber && threadObj ? threadObj : messageReceiver(threadObj, authUserId)],
377
+ message: message, file_uuid: file && !message ? file : null })
361
378
  })
362
379
  .then((res) => {
363
380
  const isOne = res.data.length <= 1;
@@ -403,13 +420,13 @@ export default function PrivateMessageThread(inProps) {
403
420
  if (!authUserId) {
404
421
  return;
405
422
  }
406
- if (userObj) {
423
+ if (threadObj) {
407
424
  fetchThread();
408
425
  }
409
426
  else {
410
427
  reset();
411
428
  }
412
- }, [userObj, authUserId, scUser]);
429
+ }, [threadObj, authUserId, scUser]);
413
430
  /**
414
431
  * Notification subscriber
415
432
  */
@@ -424,7 +441,7 @@ export default function PrivateMessageThread(inProps) {
424
441
  if (index !== -1) {
425
442
  setMessageObjs((prev) => [...prev, res.notification_obj.message]);
426
443
  }
427
- if (isNumber ? userObj === res.thread_id : userObj.id === res.thread_id) {
444
+ if (isNumber ? threadObj === res.thread_id : threadObj.id === res.thread_id) {
428
445
  scrollToBottom();
429
446
  }
430
447
  };
@@ -455,7 +472,7 @@ export default function PrivateMessageThread(inProps) {
455
472
  onMouseEnter: () => handleMouseEnter(msg.id),
456
473
  onMouseLeave: () => handleMouseLeave(msg.id)
457
474
  }, isHovering: isHovered[msg.id], showMenuIcon: authUserId === msg.sender.id, onMenuIconClick: () => handleOpenDeleteMessageDialog(msg) }))))))))),
458
- React.createElement(PrivateMessageEditor, { className: classes.editor, send: handleSend, autoHide: !(scUser === null || scUser === void 0 ? void 0 : scUser.can_send_pm_to), autoHideDeletion: (receiver === null || receiver === void 0 ? void 0 : receiver.deleted) || (scUser === null || scUser === void 0 ? void 0 : scUser.deleted), onThreadChangeId: isNumber ? userObj : userObj.receiver.id, error: error, onErrorRemove: () => setError(false) }),
475
+ React.createElement(PrivateMessageEditor, { className: classes.editor, send: handleSend, autoHide: type === SCPrivateMessageType.USER && !(scUser === null || scUser === void 0 ? void 0 : scUser.can_send_pm_to), autoHideDeletion: type === SCPrivateMessageType.USER && ((receiver === null || receiver === void 0 ? void 0 : receiver.deleted) || (scUser === null || scUser === void 0 ? void 0 : scUser.deleted)), onThreadChangeId: isNumber ? threadObj : type === SCPrivateMessageType.USER ? threadObj.receiver.id : threadObj.group.id, error: error, onErrorRemove: () => setError(false) }),
459
476
  openDeleteMessageDialog && (React.createElement(ConfirmDialog, { open: openDeleteMessageDialog, title: React.createElement(FormattedMessage, { id: "ui.privateMessage.component.delete.message.dialog.msg", defaultMessage: "ui.privateMessage.component.delete.message.dialog.msg" }), btnConfirm: React.createElement(FormattedMessage, { id: "ui.privateMessage.component.delete.message.dialog.confirm", defaultMessage: "ui.privateMessage.component.delete.message.dialog.confirm" }), onConfirm: handleDeleteMessage, onClose: handleCloseDeleteMessageDialog }))));
460
477
  }
461
478
  /**
@@ -483,5 +500,5 @@ export default function PrivateMessageThread(inProps) {
483
500
  /**
484
501
  * Renders the component
485
502
  */
486
- return (React.createElement(Root, Object.assign({}, rest, { className: classNames(classes.root, className) }), userObj !== null && !isNew && !singleMessageThread ? renderThread() : renderNewOrNoMessageBox()));
503
+ return (React.createElement(Root, Object.assign({}, rest, { className: classNames(classes.root, className) }), threadObj !== null && !isNew && !singleMessageThread ? renderThread() : renderNewOrNoMessageBox()));
487
504
  }