@viewberapp/chat 0.1.10 → 0.1.11

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 (65) hide show
  1. package/LICENSE +20 -20
  2. package/dist/API.d.ts +91 -91
  3. package/dist/API.js +241 -241
  4. package/dist/CachedChat.d.ts +64 -64
  5. package/dist/CachedChat.js +241 -241
  6. package/dist/Chat.d.ts +66 -66
  7. package/dist/Chat.js +270 -270
  8. package/dist/ChatError.d.ts +4 -4
  9. package/dist/ChatError.js +2 -2
  10. package/dist/ChatSubscription.d.ts +82 -82
  11. package/dist/ChatSubscription.js +128 -128
  12. package/dist/Message.d.ts +25 -25
  13. package/dist/Message.js +35 -35
  14. package/dist/OnlineUser.d.ts +8 -8
  15. package/dist/OnlineUser.js +9 -9
  16. package/dist/PendingMessage.d.ts +23 -23
  17. package/dist/PendingMessage.js +23 -23
  18. package/dist/index.d.ts +8 -8
  19. package/dist/index.js +27 -27
  20. package/dist/logger/ConsoleLogger.d.ts +8 -8
  21. package/dist/logger/ConsoleLogger.js +20 -20
  22. package/dist/logger/NullLogger.d.ts +8 -8
  23. package/dist/logger/NullLogger.js +10 -10
  24. package/dist/logger/RollbarLogger.d.ts +11 -11
  25. package/dist/logger/RollbarLogger.js +23 -23
  26. package/dist/logger/index.d.ts +12 -12
  27. package/dist/logger/index.js +12 -12
  28. package/dist/react/components/AdminMessage.d.ts +6 -6
  29. package/dist/react/components/AdminMessage.js +59 -59
  30. package/dist/react/components/ConnectionAndChannelStatusLabel.d.ts +7 -7
  31. package/dist/react/components/ConnectionAndChannelStatusLabel.js +59 -59
  32. package/dist/react/components/Message.d.ts +23 -23
  33. package/dist/react/components/Message.js +87 -87
  34. package/dist/react/components/MessageDateTime.d.ts +8 -8
  35. package/dist/react/components/MessageDateTime.js +31 -31
  36. package/dist/react/components/MessageList.d.ts +46 -46
  37. package/dist/react/components/MessageList.js +107 -107
  38. package/dist/react/components/MessageRow.d.ts +5 -5
  39. package/dist/react/components/MessageRow.js +34 -34
  40. package/dist/react/components/index.d.ts +6 -6
  41. package/dist/react/components/index.js +13 -13
  42. package/dist/react/index.d.ts +3 -3
  43. package/dist/react/index.js +16 -16
  44. package/dist/react/useAppointmentChat.d.ts +3 -3
  45. package/dist/react/useAppointmentChat.js +10 -10
  46. package/dist/react/useChat.d.ts +38 -38
  47. package/dist/react/useChat.js +125 -125
  48. package/dist/react/useRealtimeTotalUserUnreadChatMessages.d.ts +12 -12
  49. package/dist/react/useRealtimeTotalUserUnreadChatMessages.js +137 -137
  50. package/dist/util/getLatestMessage.d.ts +3 -3
  51. package/dist/util/getLatestMessage.js +17 -17
  52. package/dist/util/getLatestMessageId.d.ts +3 -0
  53. package/dist/util/getLatestMessageId.js +18 -0
  54. package/dist/util/getLatestMessageId.js.map +1 -0
  55. package/dist/util/groupMessages.d.ts +8 -8
  56. package/dist/util/groupMessages.js +30 -30
  57. package/dist/util/index.d.ts +4 -4
  58. package/dist/util/index.js +9 -9
  59. package/dist/util/isNil.d.ts +1 -1
  60. package/dist/util/isNil.js +7 -7
  61. package/dist/util/jwtTokenChanged.d.ts +1 -1
  62. package/dist/util/jwtTokenChanged.js +10 -10
  63. package/dist/util/useIsMounted.d.ts +1 -1
  64. package/dist/util/useIsMounted.js +13 -13
  65. package/package.json +2 -2
@@ -1,23 +1,23 @@
1
- import * as React from 'react';
2
- import PropTypes from 'prop-types';
3
- import MessageModel from "../../Message";
4
- import PendingMessage from '../../PendingMessage';
5
- export interface MessageProps {
6
- message: MessageModel | PendingMessage;
7
- isCurrentUser: boolean;
8
- failedPendingMessageIconClassName?: string;
9
- failedPendingMessageDescriptionStyles?: React.CSSProperties;
10
- failedPendingMessageDescriptionClassName?: string;
11
- onFailedPendingMessageClick?: (pendingMessage: PendingMessage) => void;
12
- }
13
- export declare const Message: {
14
- ({ message, isCurrentUser, failedPendingMessageIconClassName, failedPendingMessageDescriptionStyles, failedPendingMessageDescriptionClassName, onFailedPendingMessageClick }: MessageProps): JSX.Element;
15
- propTypes: {
16
- message: PropTypes.Requireable<object>;
17
- isCurrentUser: PropTypes.Requireable<boolean>;
18
- failedPendingMessageIconClassName: PropTypes.Requireable<string>;
19
- failedPendingMessageDescriptionStyles: PropTypes.Requireable<object>;
20
- failedPendingMessageDescriptionClassName: PropTypes.Requireable<string>;
21
- onFailedPendingMessageClick: PropTypes.Requireable<(...args: any[]) => any>;
22
- };
23
- };
1
+ import * as React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import MessageModel from "../../Message";
4
+ import PendingMessage from '../../PendingMessage';
5
+ export interface MessageProps {
6
+ message: MessageModel | PendingMessage;
7
+ isCurrentUser: boolean;
8
+ failedPendingMessageIconClassName?: string;
9
+ failedPendingMessageDescriptionStyles?: React.CSSProperties;
10
+ failedPendingMessageDescriptionClassName?: string;
11
+ onFailedPendingMessageClick?: (pendingMessage: PendingMessage) => void;
12
+ }
13
+ export declare const Message: {
14
+ ({ message, isCurrentUser, failedPendingMessageIconClassName, failedPendingMessageDescriptionStyles, failedPendingMessageDescriptionClassName, onFailedPendingMessageClick }: MessageProps): JSX.Element;
15
+ propTypes: {
16
+ message: PropTypes.Requireable<object>;
17
+ isCurrentUser: PropTypes.Requireable<boolean>;
18
+ failedPendingMessageIconClassName: PropTypes.Requireable<string>;
19
+ failedPendingMessageDescriptionStyles: PropTypes.Requireable<object>;
20
+ failedPendingMessageDescriptionClassName: PropTypes.Requireable<string>;
21
+ onFailedPendingMessageClick: PropTypes.Requireable<(...args: any[]) => any>;
22
+ };
23
+ };
@@ -1,88 +1,88 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.Message = void 0;
30
- const React = __importStar(require("react"));
31
- const prop_types_1 = __importDefault(require("prop-types"));
32
- const PendingMessage_1 = require("../../PendingMessage");
33
- const MessageDateTime_1 = require("./MessageDateTime");
34
- const util_1 = require("../../util");
35
- const Message = ({ message, isCurrentUser, failedPendingMessageIconClassName, failedPendingMessageDescriptionStyles, failedPendingMessageDescriptionClassName, onFailedPendingMessageClick }) => {
36
- const [dateTimeIsShowing, setDateTimeIsShowing] = React.useState(false);
37
- const isFailedPendingMessage = ((0, PendingMessage_1.isPendingMessage)(message)
38
- && message.status === 'failed');
39
- const handleMessageClick = () => {
40
- if (!isFailedPendingMessage) {
41
- setDateTimeIsShowing(!dateTimeIsShowing);
42
- return;
43
- }
44
- if (onFailedPendingMessageClick) {
45
- onFailedPendingMessageClick(message);
46
- }
47
- };
48
- const containerStyles = {
49
- display: 'inline-block',
50
- maxWidth: '300px',
51
- margin: '0.125rem 0.5rem'
52
- };
53
- const messageStyles = {
54
- display: 'inline-block',
55
- borderRadius: '0.675rem',
56
- backgroundColor: isCurrentUser
57
- ? '#218aff'
58
- : '#d8d8d8',
59
- color: isCurrentUser
60
- ? '#fff'
61
- : undefined,
62
- padding: '0.25rem 1rem',
63
- };
64
- return (React.createElement("div", { style: containerStyles },
65
- React.createElement("div", null,
66
- React.createElement("div", { style: messageStyles, onClick: handleMessageClick },
67
- React.createElement("span", null, message.message)),
68
- isFailedPendingMessage && !(0, util_1.isNil)(failedPendingMessageIconClassName) &&
69
- React.createElement("div", { style: { display: 'inline-block' } },
70
- React.createElement("i", { className: failedPendingMessageIconClassName })),
71
- isFailedPendingMessage &&
72
- React.createElement("div", { className: failedPendingMessageDescriptionClassName, style: failedPendingMessageDescriptionStyles }, (0, util_1.isNil)(onFailedPendingMessageClick)
73
- ? 'This message failed to send'
74
- : 'This message failed to send. Click to retry'),
75
- dateTimeIsShowing &&
76
- React.createElement("div", null,
77
- React.createElement(MessageDateTime_1.MessageDateTime, { date: message.createdAt, style: { display: 'block' } })))));
78
- };
79
- exports.Message = Message;
80
- exports.Message.propTypes = {
81
- message: prop_types_1.default.object,
82
- isCurrentUser: prop_types_1.default.bool,
83
- failedPendingMessageIconClassName: prop_types_1.default.string,
84
- failedPendingMessageDescriptionStyles: prop_types_1.default.object,
85
- failedPendingMessageDescriptionClassName: prop_types_1.default.string,
86
- onFailedPendingMessageClick: prop_types_1.default.func
87
- };
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.Message = void 0;
30
+ const React = __importStar(require("react"));
31
+ const prop_types_1 = __importDefault(require("prop-types"));
32
+ const PendingMessage_1 = require("../../PendingMessage");
33
+ const MessageDateTime_1 = require("./MessageDateTime");
34
+ const util_1 = require("../../util");
35
+ const Message = ({ message, isCurrentUser, failedPendingMessageIconClassName, failedPendingMessageDescriptionStyles, failedPendingMessageDescriptionClassName, onFailedPendingMessageClick }) => {
36
+ const [dateTimeIsShowing, setDateTimeIsShowing] = React.useState(false);
37
+ const isFailedPendingMessage = ((0, PendingMessage_1.isPendingMessage)(message)
38
+ && message.status === 'failed');
39
+ const handleMessageClick = () => {
40
+ if (!isFailedPendingMessage) {
41
+ setDateTimeIsShowing(!dateTimeIsShowing);
42
+ return;
43
+ }
44
+ if (onFailedPendingMessageClick) {
45
+ onFailedPendingMessageClick(message);
46
+ }
47
+ };
48
+ const containerStyles = {
49
+ display: 'inline-block',
50
+ maxWidth: '300px',
51
+ margin: '0.125rem 0.5rem'
52
+ };
53
+ const messageStyles = {
54
+ display: 'inline-block',
55
+ borderRadius: '0.675rem',
56
+ backgroundColor: isCurrentUser
57
+ ? '#218aff'
58
+ : '#d8d8d8',
59
+ color: isCurrentUser
60
+ ? '#fff'
61
+ : undefined,
62
+ padding: '0.25rem 1rem',
63
+ };
64
+ return (React.createElement("div", { style: containerStyles },
65
+ React.createElement("div", null,
66
+ React.createElement("div", { style: messageStyles, onClick: handleMessageClick },
67
+ React.createElement("span", null, message.message)),
68
+ isFailedPendingMessage && !(0, util_1.isNil)(failedPendingMessageIconClassName) &&
69
+ React.createElement("div", { style: { display: 'inline-block' } },
70
+ React.createElement("i", { className: failedPendingMessageIconClassName })),
71
+ isFailedPendingMessage &&
72
+ React.createElement("div", { className: failedPendingMessageDescriptionClassName, style: failedPendingMessageDescriptionStyles }, (0, util_1.isNil)(onFailedPendingMessageClick)
73
+ ? 'This message failed to send'
74
+ : 'This message failed to send. Click to retry'),
75
+ dateTimeIsShowing &&
76
+ React.createElement("div", null,
77
+ React.createElement(MessageDateTime_1.MessageDateTime, { date: message.createdAt, style: { display: 'block' } })))));
78
+ };
79
+ exports.Message = Message;
80
+ exports.Message.propTypes = {
81
+ message: prop_types_1.default.object,
82
+ isCurrentUser: prop_types_1.default.bool,
83
+ failedPendingMessageIconClassName: prop_types_1.default.string,
84
+ failedPendingMessageDescriptionStyles: prop_types_1.default.object,
85
+ failedPendingMessageDescriptionClassName: prop_types_1.default.string,
86
+ onFailedPendingMessageClick: prop_types_1.default.func
87
+ };
88
88
  //# sourceMappingURL=Message.js.map
@@ -1,8 +1,8 @@
1
- import * as React from 'react';
2
- interface MessageDateTimeProps {
3
- date?: Date | null;
4
- style?: React.CSSProperties;
5
- className?: string;
6
- }
7
- export declare const MessageDateTime: ({ date, style, className }: MessageDateTimeProps) => JSX.Element;
8
- export {};
1
+ import * as React from 'react';
2
+ interface MessageDateTimeProps {
3
+ date?: Date | null;
4
+ style?: React.CSSProperties;
5
+ className?: string;
6
+ }
7
+ export declare const MessageDateTime: ({ date, style, className }: MessageDateTimeProps) => JSX.Element;
8
+ export {};
@@ -1,32 +1,32 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.MessageDateTime = void 0;
27
- const React = __importStar(require("react"));
28
- const MessageDateTime = ({ date, style, className }) => {
29
- return (React.createElement("small", { style: style, className: className }, date === null || date === void 0 ? void 0 : date.toLocaleString()));
30
- };
31
- exports.MessageDateTime = MessageDateTime;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.MessageDateTime = void 0;
27
+ const React = __importStar(require("react"));
28
+ const MessageDateTime = ({ date, style, className }) => {
29
+ return (React.createElement("small", { style: style, className: className }, date === null || date === void 0 ? void 0 : date.toLocaleString()));
30
+ };
31
+ exports.MessageDateTime = MessageDateTime;
32
32
  //# sourceMappingURL=MessageDateTime.js.map
@@ -1,46 +1,46 @@
1
- import * as React from 'react';
2
- import PropTypes from 'prop-types';
3
- import ChatError from '../../ChatError';
4
- import MessageModel from '../../Message';
5
- import { GetLatestMessagesStatus, Messages } from '../../CachedChat';
6
- import PendingMessage from '../../PendingMessage';
7
- export interface MessageListProps {
8
- messages: Messages;
9
- currentUserId: number;
10
- messagesScrollContainerId: string;
11
- messagesContainerClassName?: string;
12
- failedPendingMessageIconClassName?: string;
13
- failedPendingMessageDescriptionStyles?: React.CSSProperties;
14
- failedPendingMessageDescriptionClassName?: string;
15
- onFailedPendingMessageClick?: (pendingMessage: PendingMessage) => void;
16
- getLatestMessagesStatus: GetLatestMessagesStatus;
17
- markMessagesReadUpTo(message: MessageModel): Promise<{
18
- error: ChatError | undefined;
19
- }>;
20
- shouldMarkMessagesAsRead: boolean;
21
- loadingContent: React.ReactNode;
22
- retryContent: React.ReactNode;
23
- noMessagesContent: React.ReactNode;
24
- onMessagesMarkedAsRead?: () => void;
25
- onRequestScrollToBottomOfMessagesScrollContainer: () => void;
26
- }
27
- export declare const MessageList: {
28
- ({ messages, currentUserId, messagesScrollContainerId, messagesContainerClassName, failedPendingMessageIconClassName, failedPendingMessageDescriptionStyles, failedPendingMessageDescriptionClassName, onFailedPendingMessageClick, getLatestMessagesStatus, markMessagesReadUpTo, shouldMarkMessagesAsRead, loadingContent, retryContent, noMessagesContent, onMessagesMarkedAsRead, onRequestScrollToBottomOfMessagesScrollContainer }: MessageListProps): React.ReactNode;
29
- propTypes: {
30
- messages: PropTypes.Validator<(object | null | undefined)[]>;
31
- currentUserId: PropTypes.Validator<number>;
32
- messagesScrollContainerId: PropTypes.Validator<string>;
33
- messagesContainerClassName: PropTypes.Requireable<string>;
34
- failedPendingMessageIconClassName: PropTypes.Requireable<string>;
35
- failedPendingMessageDescriptionStyles: PropTypes.Requireable<object>;
36
- failedPendingMessageDescriptionClassName: PropTypes.Requireable<string>;
37
- onFailedPendingMessageClick: PropTypes.Requireable<(...args: any[]) => any>;
38
- getLatestMessagesStatus: PropTypes.Requireable<string>;
39
- markMessagesReadUpTo: PropTypes.Validator<(...args: any[]) => any>;
40
- shouldMarkMessagesAsRead: PropTypes.Validator<boolean>;
41
- loadingContent: PropTypes.Validator<string | number | boolean | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
42
- retryContent: PropTypes.Validator<string | number | boolean | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
43
- noMessagesContent: PropTypes.Validator<string | number | boolean | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
44
- onRequestScrollToBottomOfMessagesScrollContainer: PropTypes.Validator<(...args: any[]) => any>;
45
- };
46
- };
1
+ import * as React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import ChatError from '../../ChatError';
4
+ import MessageModel from '../../Message';
5
+ import { GetLatestMessagesStatus, Messages } from '../../CachedChat';
6
+ import PendingMessage from '../../PendingMessage';
7
+ export interface MessageListProps {
8
+ messages: Messages;
9
+ currentUserId: number;
10
+ messagesScrollContainerId: string;
11
+ messagesContainerClassName?: string;
12
+ failedPendingMessageIconClassName?: string;
13
+ failedPendingMessageDescriptionStyles?: React.CSSProperties;
14
+ failedPendingMessageDescriptionClassName?: string;
15
+ onFailedPendingMessageClick?: (pendingMessage: PendingMessage) => void;
16
+ getLatestMessagesStatus: GetLatestMessagesStatus;
17
+ markMessagesReadUpTo(message: MessageModel): Promise<{
18
+ error: ChatError | undefined;
19
+ }>;
20
+ shouldMarkMessagesAsRead: boolean;
21
+ loadingContent: React.ReactNode;
22
+ retryContent: React.ReactNode;
23
+ noMessagesContent: React.ReactNode;
24
+ onMessagesMarkedAsRead?: () => void;
25
+ onRequestScrollToBottomOfMessagesScrollContainer: () => void;
26
+ }
27
+ export declare const MessageList: {
28
+ ({ messages, currentUserId, messagesScrollContainerId, messagesContainerClassName, failedPendingMessageIconClassName, failedPendingMessageDescriptionStyles, failedPendingMessageDescriptionClassName, onFailedPendingMessageClick, getLatestMessagesStatus, markMessagesReadUpTo, shouldMarkMessagesAsRead, loadingContent, retryContent, noMessagesContent, onMessagesMarkedAsRead, onRequestScrollToBottomOfMessagesScrollContainer }: MessageListProps): React.ReactNode;
29
+ propTypes: {
30
+ messages: PropTypes.Validator<(object | null | undefined)[]>;
31
+ currentUserId: PropTypes.Validator<number>;
32
+ messagesScrollContainerId: PropTypes.Validator<string>;
33
+ messagesContainerClassName: PropTypes.Requireable<string>;
34
+ failedPendingMessageIconClassName: PropTypes.Requireable<string>;
35
+ failedPendingMessageDescriptionStyles: PropTypes.Requireable<object>;
36
+ failedPendingMessageDescriptionClassName: PropTypes.Requireable<string>;
37
+ onFailedPendingMessageClick: PropTypes.Requireable<(...args: any[]) => any>;
38
+ getLatestMessagesStatus: PropTypes.Requireable<string>;
39
+ markMessagesReadUpTo: PropTypes.Validator<(...args: any[]) => any>;
40
+ shouldMarkMessagesAsRead: PropTypes.Validator<boolean>;
41
+ loadingContent: PropTypes.Validator<string | number | boolean | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
42
+ retryContent: PropTypes.Validator<string | number | boolean | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
43
+ noMessagesContent: PropTypes.Validator<string | number | boolean | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
44
+ onRequestScrollToBottomOfMessagesScrollContainer: PropTypes.Validator<(...args: any[]) => any>;
45
+ };
46
+ };
@@ -1,108 +1,108 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.MessageList = void 0;
30
- const React = __importStar(require("react"));
31
- const prop_types_1 = __importDefault(require("prop-types"));
32
- const MessageRow_1 = require("./MessageRow");
33
- const AdminMessage_1 = require("./AdminMessage");
34
- const Message_1 = require("./Message");
35
- const PendingMessage_1 = require("../../PendingMessage");
36
- const util_1 = require("../../util");
37
- const MessageList = ({ messages, currentUserId, messagesScrollContainerId, messagesContainerClassName, failedPendingMessageIconClassName, failedPendingMessageDescriptionStyles, failedPendingMessageDescriptionClassName, onFailedPendingMessageClick, getLatestMessagesStatus, markMessagesReadUpTo, shouldMarkMessagesAsRead, loadingContent, retryContent, noMessagesContent, onMessagesMarkedAsRead, onRequestScrollToBottomOfMessagesScrollContainer }) => {
38
- const [lastMessageMarkedAsReadUpTo, setLastMessageMarkedAsReadUpTo] = React.useState();
39
- React.useEffect(() => {
40
- if (getLatestMessagesStatus === 'success') {
41
- onRequestScrollToBottomOfMessagesScrollContainer();
42
- }
43
- }, [messages, getLatestMessagesStatus]);
44
- React.useEffect(() => {
45
- if (!messages.length || !shouldMarkMessagesAsRead) {
46
- return;
47
- }
48
- let latestMessage = (0, util_1.getLatestMessage)(messages);
49
- if ((0, util_1.isNil)(latestMessage)) {
50
- return;
51
- }
52
- if (((0, util_1.isNil)(lastMessageMarkedAsReadUpTo) || lastMessageMarkedAsReadUpTo < latestMessage.id)) {
53
- markMessagesReadUpTo(latestMessage).then(result => {
54
- if (!result.error) {
55
- setLastMessageMarkedAsReadUpTo(latestMessage === null || latestMessage === void 0 ? void 0 : latestMessage.id);
56
- if (onMessagesMarkedAsRead) {
57
- onMessagesMarkedAsRead();
58
- }
59
- }
60
- }).catch(() => {
61
- });
62
- }
63
- }, [messages, shouldMarkMessagesAsRead]);
64
- if (getLatestMessagesStatus === 'failed') {
65
- return retryContent;
66
- }
67
- else if (!getLatestMessagesStatus
68
- || getLatestMessagesStatus === 'initialized'
69
- || getLatestMessagesStatus === 'fetching'
70
- || getLatestMessagesStatus !== 'success') {
71
- return loadingContent;
72
- }
73
- return (React.createElement("div", { id: messagesScrollContainerId, className: messagesContainerClassName, style: { maxHeight: '500px', overflowY: 'auto' } }, messages.length === 0
74
- ? noMessagesContent
75
- : messages.map(message => {
76
- if ((0, PendingMessage_1.isPendingMessage)(message) || (!(0, PendingMessage_1.isPendingMessage)(message) && message.senderId === currentUserId)) {
77
- return (React.createElement(MessageRow_1.MessageRow, { key: message.id, isCurrentUser: true },
78
- React.createElement(Message_1.Message, { message: message, isCurrentUser: true, failedPendingMessageIconClassName: failedPendingMessageIconClassName, failedPendingMessageDescriptionStyles: failedPendingMessageDescriptionStyles, failedPendingMessageDescriptionClassName: failedPendingMessageDescriptionClassName, onFailedPendingMessageClick: onFailedPendingMessageClick })));
79
- }
80
- else if (message.isAdminMessage) {
81
- return (React.createElement(MessageRow_1.MessageRow, { key: message.id, isCurrentUser: false },
82
- React.createElement(AdminMessage_1.AdminMessage, { message: message })));
83
- }
84
- else {
85
- return (React.createElement(MessageRow_1.MessageRow, { key: message.id, isCurrentUser: false },
86
- React.createElement(Message_1.Message, { message: message, isCurrentUser: false })));
87
- }
88
- })));
89
- };
90
- exports.MessageList = MessageList;
91
- exports.MessageList.propTypes = {
92
- messages: prop_types_1.default.arrayOf(prop_types_1.default.object).isRequired,
93
- currentUserId: prop_types_1.default.number.isRequired,
94
- messagesScrollContainerId: prop_types_1.default.string.isRequired,
95
- messagesContainerClassName: prop_types_1.default.string,
96
- failedPendingMessageIconClassName: prop_types_1.default.string,
97
- failedPendingMessageDescriptionStyles: prop_types_1.default.object,
98
- failedPendingMessageDescriptionClassName: prop_types_1.default.string,
99
- onFailedPendingMessageClick: prop_types_1.default.func,
100
- getLatestMessagesStatus: prop_types_1.default.oneOf(['initialized', 'fetching', 'success', 'failed']),
101
- markMessagesReadUpTo: prop_types_1.default.func.isRequired,
102
- shouldMarkMessagesAsRead: prop_types_1.default.bool.isRequired,
103
- loadingContent: prop_types_1.default.node.isRequired,
104
- retryContent: prop_types_1.default.node.isRequired,
105
- noMessagesContent: prop_types_1.default.node.isRequired,
106
- onRequestScrollToBottomOfMessagesScrollContainer: prop_types_1.default.func.isRequired
107
- };
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.MessageList = void 0;
30
+ const React = __importStar(require("react"));
31
+ const prop_types_1 = __importDefault(require("prop-types"));
32
+ const MessageRow_1 = require("./MessageRow");
33
+ const AdminMessage_1 = require("./AdminMessage");
34
+ const Message_1 = require("./Message");
35
+ const PendingMessage_1 = require("../../PendingMessage");
36
+ const util_1 = require("../../util");
37
+ const MessageList = ({ messages, currentUserId, messagesScrollContainerId, messagesContainerClassName, failedPendingMessageIconClassName, failedPendingMessageDescriptionStyles, failedPendingMessageDescriptionClassName, onFailedPendingMessageClick, getLatestMessagesStatus, markMessagesReadUpTo, shouldMarkMessagesAsRead, loadingContent, retryContent, noMessagesContent, onMessagesMarkedAsRead, onRequestScrollToBottomOfMessagesScrollContainer }) => {
38
+ const [lastMessageMarkedAsReadUpTo, setLastMessageMarkedAsReadUpTo] = React.useState();
39
+ React.useEffect(() => {
40
+ if (getLatestMessagesStatus === 'success') {
41
+ onRequestScrollToBottomOfMessagesScrollContainer();
42
+ }
43
+ }, [messages, getLatestMessagesStatus]);
44
+ React.useEffect(() => {
45
+ if (!messages.length || !shouldMarkMessagesAsRead) {
46
+ return;
47
+ }
48
+ let latestMessage = (0, util_1.getLatestMessage)(messages);
49
+ if ((0, util_1.isNil)(latestMessage)) {
50
+ return;
51
+ }
52
+ if (((0, util_1.isNil)(lastMessageMarkedAsReadUpTo) || lastMessageMarkedAsReadUpTo < latestMessage.id)) {
53
+ markMessagesReadUpTo(latestMessage).then(result => {
54
+ if (!result.error) {
55
+ setLastMessageMarkedAsReadUpTo(latestMessage === null || latestMessage === void 0 ? void 0 : latestMessage.id);
56
+ if (onMessagesMarkedAsRead) {
57
+ onMessagesMarkedAsRead();
58
+ }
59
+ }
60
+ }).catch(() => {
61
+ });
62
+ }
63
+ }, [messages, shouldMarkMessagesAsRead]);
64
+ if (getLatestMessagesStatus === 'failed') {
65
+ return retryContent;
66
+ }
67
+ else if (!getLatestMessagesStatus
68
+ || getLatestMessagesStatus === 'initialized'
69
+ || getLatestMessagesStatus === 'fetching'
70
+ || getLatestMessagesStatus !== 'success') {
71
+ return loadingContent;
72
+ }
73
+ return (React.createElement("div", { id: messagesScrollContainerId, className: messagesContainerClassName, style: { maxHeight: '500px', overflowY: 'auto' } }, messages.length === 0
74
+ ? noMessagesContent
75
+ : messages.map(message => {
76
+ if ((0, PendingMessage_1.isPendingMessage)(message) || (!(0, PendingMessage_1.isPendingMessage)(message) && message.senderId === currentUserId)) {
77
+ return (React.createElement(MessageRow_1.MessageRow, { key: message.id, isCurrentUser: true },
78
+ React.createElement(Message_1.Message, { message: message, isCurrentUser: true, failedPendingMessageIconClassName: failedPendingMessageIconClassName, failedPendingMessageDescriptionStyles: failedPendingMessageDescriptionStyles, failedPendingMessageDescriptionClassName: failedPendingMessageDescriptionClassName, onFailedPendingMessageClick: onFailedPendingMessageClick })));
79
+ }
80
+ else if (message.isAdminMessage) {
81
+ return (React.createElement(MessageRow_1.MessageRow, { key: message.id, isCurrentUser: false },
82
+ React.createElement(AdminMessage_1.AdminMessage, { message: message })));
83
+ }
84
+ else {
85
+ return (React.createElement(MessageRow_1.MessageRow, { key: message.id, isCurrentUser: false },
86
+ React.createElement(Message_1.Message, { message: message, isCurrentUser: false })));
87
+ }
88
+ })));
89
+ };
90
+ exports.MessageList = MessageList;
91
+ exports.MessageList.propTypes = {
92
+ messages: prop_types_1.default.arrayOf(prop_types_1.default.object).isRequired,
93
+ currentUserId: prop_types_1.default.number.isRequired,
94
+ messagesScrollContainerId: prop_types_1.default.string.isRequired,
95
+ messagesContainerClassName: prop_types_1.default.string,
96
+ failedPendingMessageIconClassName: prop_types_1.default.string,
97
+ failedPendingMessageDescriptionStyles: prop_types_1.default.object,
98
+ failedPendingMessageDescriptionClassName: prop_types_1.default.string,
99
+ onFailedPendingMessageClick: prop_types_1.default.func,
100
+ getLatestMessagesStatus: prop_types_1.default.oneOf(['initialized', 'fetching', 'success', 'failed']),
101
+ markMessagesReadUpTo: prop_types_1.default.func.isRequired,
102
+ shouldMarkMessagesAsRead: prop_types_1.default.bool.isRequired,
103
+ loadingContent: prop_types_1.default.node.isRequired,
104
+ retryContent: prop_types_1.default.node.isRequired,
105
+ noMessagesContent: prop_types_1.default.node.isRequired,
106
+ onRequestScrollToBottomOfMessagesScrollContainer: prop_types_1.default.func.isRequired
107
+ };
108
108
  //# sourceMappingURL=MessageList.js.map
@@ -1,5 +1,5 @@
1
- import * as React from 'react';
2
- export interface MessageRowProps {
3
- isCurrentUser: boolean;
4
- }
5
- export declare const MessageRow: ({ isCurrentUser, children }: React.PropsWithChildren<MessageRowProps>) => JSX.Element;
1
+ import * as React from 'react';
2
+ export interface MessageRowProps {
3
+ isCurrentUser: boolean;
4
+ }
5
+ export declare const MessageRow: ({ isCurrentUser, children }: React.PropsWithChildren<MessageRowProps>) => JSX.Element;