@churchapps/apphelper 0.4.17 → 0.4.19
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.
- package/dist/components/DisplayBox.js +1 -1
- package/dist/components/DisplayBox.js.map +1 -1
- package/dist/components/FormCardPayment.js +2 -2
- package/dist/components/FormCardPayment.js.map +1 -1
- package/dist/components/FormSubmissionEdit.d.ts.map +1 -1
- package/dist/components/FormSubmissionEdit.js +4 -5
- package/dist/components/FormSubmissionEdit.js.map +1 -1
- package/dist/components/InputBox.js +1 -1
- package/dist/components/InputBox.js.map +1 -1
- package/dist/components/Loading.js +1 -1
- package/dist/components/Loading.js.map +1 -1
- package/dist/components/PageHeader.d.ts +15 -0
- package/dist/components/PageHeader.d.ts.map +1 -0
- package/dist/components/PageHeader.js +41 -0
- package/dist/components/PageHeader.js.map +1 -0
- package/dist/components/PersonAvatar.d.ts +12 -0
- package/dist/components/PersonAvatar.d.ts.map +1 -0
- package/dist/components/PersonAvatar.js +55 -0
- package/dist/components/PersonAvatar.js.map +1 -0
- package/dist/components/header/SiteHeader.d.ts +2 -1
- package/dist/components/header/SiteHeader.d.ts.map +1 -1
- package/dist/components/header/SiteHeader.js +100 -4
- package/dist/components/header/SiteHeader.js.map +1 -1
- package/dist/components/header/SupportDrawer.js.map +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/notes/AddNote.d.ts.map +1 -1
- package/dist/components/notes/AddNote.js +45 -7
- package/dist/components/notes/AddNote.js.map +1 -1
- package/dist/components/notes/Note.d.ts.map +1 -1
- package/dist/components/notes/Note.js +6 -6
- package/dist/components/notes/Note.js.map +1 -1
- package/dist/components/notes/Notes.d.ts.map +1 -1
- package/dist/components/notes/Notes.js +120 -20
- package/dist/components/notes/Notes.js.map +1 -1
- package/dist/components/wrapper/ChurchList.d.ts.map +1 -1
- package/dist/components/wrapper/ChurchList.js +44 -6
- package/dist/components/wrapper/ChurchList.js.map +1 -1
- package/dist/components/wrapper/NewPrivateMessage.d.ts.map +1 -1
- package/dist/components/wrapper/NewPrivateMessage.js +28 -21
- package/dist/components/wrapper/NewPrivateMessage.js.map +1 -1
- package/dist/components/wrapper/Notifications.d.ts.map +1 -1
- package/dist/components/wrapper/Notifications.js +47 -20
- package/dist/components/wrapper/Notifications.js.map +1 -1
- package/dist/components/wrapper/PrivateMessageDetails.d.ts +1 -0
- package/dist/components/wrapper/PrivateMessageDetails.d.ts.map +1 -1
- package/dist/components/wrapper/PrivateMessageDetails.js +53 -4
- package/dist/components/wrapper/PrivateMessageDetails.js.map +1 -1
- package/dist/components/wrapper/PrivateMessages.d.ts.map +1 -1
- package/dist/components/wrapper/PrivateMessages.js +360 -41
- package/dist/components/wrapper/PrivateMessages.js.map +1 -1
- package/dist/components/wrapper/UserMenu.d.ts.map +1 -1
- package/dist/components/wrapper/UserMenu.js +164 -27
- package/dist/components/wrapper/UserMenu.js.map +1 -1
- package/dist/components/wrapper/index.d.ts +2 -1
- package/dist/components/wrapper/index.d.ts.map +1 -1
- package/dist/components/wrapper/index.js +2 -1
- package/dist/components/wrapper/index.js.map +1 -1
- package/dist/helpers/ArrayHelper.d.ts.map +1 -1
- package/dist/helpers/ArrayHelper.js +0 -1
- package/dist/helpers/ArrayHelper.js.map +1 -1
- package/dist/helpers/ErrorHelper.js +1 -1
- package/dist/helpers/ErrorHelper.js.map +1 -1
- package/dist/helpers/EventHelper.d.ts.map +1 -1
- package/dist/helpers/EventHelper.js +0 -3
- package/dist/helpers/EventHelper.js.map +1 -1
- package/dist/helpers/Locale.d.ts +1 -1
- package/dist/helpers/Locale.d.ts.map +1 -1
- package/dist/helpers/Locale.js +7 -2
- package/dist/helpers/Locale.js.map +1 -1
- package/dist/helpers/NotificationService.d.ts +56 -0
- package/dist/helpers/NotificationService.d.ts.map +1 -0
- package/dist/helpers/NotificationService.js +176 -0
- package/dist/helpers/NotificationService.js.map +1 -0
- package/dist/helpers/SocketHelper.d.ts.map +1 -1
- package/dist/helpers/SocketHelper.js +22 -17
- package/dist/helpers/SocketHelper.js.map +1 -1
- package/dist/helpers/UserHelper.js +2 -2
- package/dist/helpers/UserHelper.js.map +1 -1
- package/dist/helpers/index.d.ts +2 -0
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +1 -0
- package/dist/helpers/index.js.map +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useNotifications.d.ts +30 -0
- package/dist/hooks/useNotifications.d.ts.map +1 -0
- package/dist/hooks/useNotifications.js +79 -0
- package/dist/hooks/useNotifications.js.map +1 -0
- package/dist/public/css/styles.css +6 -2
- package/package.json +1 -1
- package/public/css/styles.css +6 -2
- package/src/components/DisplayBox.tsx +8 -8
- package/src/components/FormCardPayment.tsx +2 -2
- package/src/components/FormSubmissionEdit.tsx +5 -6
- package/src/components/InputBox.tsx +8 -8
- package/src/components/Loading.tsx +1 -1
- package/src/components/PageHeader.tsx +111 -0
- package/src/components/PersonAvatar.tsx +78 -0
- package/src/components/header/SiteHeader.tsx +133 -10
- package/src/components/header/SupportDrawer.tsx +1 -1
- package/src/components/index.tsx +2 -0
- package/src/components/notes/AddNote.tsx +105 -19
- package/src/components/notes/Note.tsx +43 -22
- package/src/components/notes/Notes.tsx +160 -21
- package/src/components/wrapper/ChurchList.tsx +45 -5
- package/src/components/wrapper/NewPrivateMessage.tsx +181 -44
- package/src/components/wrapper/Notifications.tsx +165 -29
- package/src/components/wrapper/PrivateMessageDetails.tsx +100 -13
- package/src/components/wrapper/PrivateMessages.tsx +539 -65
- package/src/components/wrapper/UserMenu.tsx +223 -38
- package/src/components/wrapper/index.tsx +3 -2
- package/src/helpers/ArrayHelper.ts +0 -1
- package/src/helpers/ErrorHelper.ts +1 -1
- package/src/helpers/EventHelper.ts +0 -3
- package/src/helpers/Locale.ts +7 -2
- package/src/helpers/NotificationService.ts +211 -0
- package/src/helpers/SocketHelper.ts +23 -17
- package/src/helpers/UserHelper.ts +2 -2
- package/src/helpers/index.ts +2 -0
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useNotifications.ts +94 -0
- package/dist/components/wrapper/Drawers.d.ts +0 -5
- package/dist/components/wrapper/Drawers.d.ts.map +0 -1
- package/dist/components/wrapper/Drawers.js +0 -49
- package/dist/components/wrapper/Drawers.js.map +0 -1
- package/dist/components/wrapper/SiteWrapper.d.ts +0 -15
- package/dist/components/wrapper/SiteWrapper.d.ts.map +0 -1
- package/dist/components/wrapper/SiteWrapper.js +0 -60
- package/dist/components/wrapper/SiteWrapper.js.map +0 -1
- package/dist/components/wrapper/TabPanel.d.ts +0 -9
- package/dist/components/wrapper/TabPanel.d.ts.map +0 -1
- package/dist/components/wrapper/TabPanel.js +0 -17
- package/dist/components/wrapper/TabPanel.js.map +0 -1
- package/dist/helpers/ApiHelper.d.ts +0 -18
- package/dist/helpers/ApiHelper.d.ts.map +0 -1
- package/dist/helpers/ApiHelper.js +0 -119
- package/dist/helpers/ApiHelper.js.map +0 -1
- package/src/components/wrapper/Drawers.tsx +0 -62
- package/src/components/wrapper/SiteWrapper.tsx +0 -110
- package/src/components/wrapper/TabPanel.tsx +0 -32
- package/src/helpers/ApiHelper.ts +0 -127
|
@@ -1,8 +1,30 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import React, { useState } from "react";
|
|
4
|
-
import { ApiHelper } from "
|
|
5
|
-
import {
|
|
4
|
+
import { ApiHelper } from "@churchapps/helpers";
|
|
5
|
+
import {
|
|
6
|
+
Box,
|
|
7
|
+
Icon,
|
|
8
|
+
Stack,
|
|
9
|
+
Typography,
|
|
10
|
+
Paper,
|
|
11
|
+
List,
|
|
12
|
+
ListItem,
|
|
13
|
+
ListItemAvatar,
|
|
14
|
+
ListItemText,
|
|
15
|
+
Avatar,
|
|
16
|
+
Chip,
|
|
17
|
+
Divider,
|
|
18
|
+
IconButton,
|
|
19
|
+
Skeleton,
|
|
20
|
+
useTheme
|
|
21
|
+
} from "@mui/material";
|
|
22
|
+
import {
|
|
23
|
+
Notifications as NotificationsIcon,
|
|
24
|
+
Task as TaskIcon,
|
|
25
|
+
Assignment as AssignmentIcon,
|
|
26
|
+
OpenInNew as OpenInNewIcon
|
|
27
|
+
} from "@mui/icons-material";
|
|
6
28
|
import { NotificationInterface, UserContextInterface } from "@churchapps/helpers";
|
|
7
29
|
import { DateHelper } from "../../helpers";
|
|
8
30
|
import { Navigate } from "react-router-dom";
|
|
@@ -16,10 +38,14 @@ interface Props {
|
|
|
16
38
|
|
|
17
39
|
export const Notifications: React.FC<Props> = (props) => {
|
|
18
40
|
const [notifications, setNotifications] = useState<NotificationInterface[]>([]);
|
|
41
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
42
|
+
const theme = useTheme();
|
|
19
43
|
|
|
20
44
|
const loadData = async () => {
|
|
45
|
+
setIsLoading(true);
|
|
21
46
|
const n: NotificationInterface[] = await ApiHelper.get("/notifications/my", "MessagingApi");
|
|
22
47
|
setNotifications(n);
|
|
48
|
+
setIsLoading(false);
|
|
23
49
|
props.onUpdate();
|
|
24
50
|
}
|
|
25
51
|
|
|
@@ -47,42 +73,152 @@ export const Notifications: React.FC<Props> = (props) => {
|
|
|
47
73
|
props.onNavigate(path);
|
|
48
74
|
}
|
|
49
75
|
else {
|
|
50
|
-
console.log("REDIRECTING TO", appUrl + path)
|
|
51
76
|
window.open(appUrl + path, "_blank");
|
|
52
77
|
}
|
|
53
78
|
}
|
|
54
79
|
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
80
|
+
const getNotificationIcon = (contentType: string) => {
|
|
81
|
+
switch (contentType) {
|
|
82
|
+
case "task": return <TaskIcon />;
|
|
83
|
+
case "assignment": return <AssignmentIcon />;
|
|
84
|
+
default: return <NotificationsIcon />;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
60
87
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
</Stack>
|
|
74
|
-
</Box>
|
|
75
|
-
</div>
|
|
88
|
+
const getNotificationList = () => {
|
|
89
|
+
if (notifications.length === 0) {
|
|
90
|
+
return (
|
|
91
|
+
<Box id="notifications-empty" sx={{ textAlign: 'center', py: 4 }}>
|
|
92
|
+
<NotificationsIcon sx={{ fontSize: 48, color: 'grey.400', mb: 2 }} />
|
|
93
|
+
<Typography variant="h6" color="textSecondary">
|
|
94
|
+
No notifications
|
|
95
|
+
</Typography>
|
|
96
|
+
<Typography variant="body2" color="textSecondary">
|
|
97
|
+
You're all caught up!
|
|
98
|
+
</Typography>
|
|
99
|
+
</Box>
|
|
76
100
|
);
|
|
77
|
-
}
|
|
78
|
-
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return (
|
|
104
|
+
<List id="notifications-list" sx={{ width: '100%' }}>
|
|
105
|
+
{notifications.map((notification, index) => {
|
|
106
|
+
let datePosted = new Date(notification.timeSent);
|
|
107
|
+
const displayDuration = DateHelper.getDisplayDuration(datePosted);
|
|
108
|
+
const isUnread = notification.isNew;
|
|
109
|
+
|
|
110
|
+
return (
|
|
111
|
+
<React.Fragment key={notification.id}>
|
|
112
|
+
<ListItem
|
|
113
|
+
id={`notification-item-${notification.id}`}
|
|
114
|
+
component="button"
|
|
115
|
+
onClick={() => handleClick(notification)}
|
|
116
|
+
sx={{
|
|
117
|
+
alignItems: 'flex-start',
|
|
118
|
+
py: 2,
|
|
119
|
+
cursor: 'pointer',
|
|
120
|
+
bgcolor: isUnread ? 'action.hover' : 'transparent',
|
|
121
|
+
'&:hover': {
|
|
122
|
+
bgcolor: 'action.hover'
|
|
123
|
+
},
|
|
124
|
+
borderRadius: 1,
|
|
125
|
+
mb: 0.5
|
|
126
|
+
}}
|
|
127
|
+
>
|
|
128
|
+
<ListItemAvatar>
|
|
129
|
+
<Avatar
|
|
130
|
+
sx={{
|
|
131
|
+
bgcolor: isUnread ? 'primary.main' : 'grey.400',
|
|
132
|
+
width: 48,
|
|
133
|
+
height: 48
|
|
134
|
+
}}
|
|
135
|
+
>
|
|
136
|
+
{getNotificationIcon(notification.contentType)}
|
|
137
|
+
</Avatar>
|
|
138
|
+
</ListItemAvatar>
|
|
139
|
+
<ListItemText
|
|
140
|
+
primary={
|
|
141
|
+
<Stack direction="row" justifyContent="space-between" alignItems="flex-start">
|
|
142
|
+
<Typography
|
|
143
|
+
variant="body1"
|
|
144
|
+
sx={{
|
|
145
|
+
fontWeight: isUnread ? 600 : 400,
|
|
146
|
+
flex: 1,
|
|
147
|
+
pr: 1
|
|
148
|
+
}}
|
|
149
|
+
>
|
|
150
|
+
{notification.message}
|
|
151
|
+
</Typography>
|
|
152
|
+
<Stack direction="row" alignItems="center" spacing={1}>
|
|
153
|
+
{isUnread && (
|
|
154
|
+
<Chip
|
|
155
|
+
size="small"
|
|
156
|
+
label="New"
|
|
157
|
+
color="primary"
|
|
158
|
+
sx={{ height: 20, fontSize: '0.7rem' }}
|
|
159
|
+
/>
|
|
160
|
+
)}
|
|
161
|
+
<Typography variant="caption" color="textSecondary">
|
|
162
|
+
{displayDuration}
|
|
163
|
+
</Typography>
|
|
164
|
+
</Stack>
|
|
165
|
+
</Stack>
|
|
166
|
+
}
|
|
167
|
+
secondary={
|
|
168
|
+
notification.link && (
|
|
169
|
+
<Box sx={{ mt: 1 }}>
|
|
170
|
+
<IconButton
|
|
171
|
+
size="small"
|
|
172
|
+
onClick={(e) => {
|
|
173
|
+
e.stopPropagation();
|
|
174
|
+
window.open(notification.link, '_blank');
|
|
175
|
+
}}
|
|
176
|
+
sx={{ p: 0.5 }}
|
|
177
|
+
>
|
|
178
|
+
<OpenInNewIcon fontSize="small" />
|
|
179
|
+
<Typography variant="caption" sx={{ ml: 0.5 }}>
|
|
180
|
+
View Details
|
|
181
|
+
</Typography>
|
|
182
|
+
</IconButton>
|
|
183
|
+
</Box>
|
|
184
|
+
)
|
|
185
|
+
}
|
|
186
|
+
/>
|
|
187
|
+
</ListItem>
|
|
188
|
+
{index < notifications.length - 1 && <Divider variant="inset" component="li" />}
|
|
189
|
+
</React.Fragment>
|
|
190
|
+
);
|
|
191
|
+
})}
|
|
192
|
+
</List>
|
|
193
|
+
);
|
|
79
194
|
}
|
|
80
195
|
|
|
81
|
-
React.useEffect(() => { console.log("RELOADED NOTIFICATIONS") }, []);
|
|
82
196
|
|
|
83
197
|
return (
|
|
84
|
-
|
|
85
|
-
{
|
|
86
|
-
|
|
198
|
+
<Paper id="notifications-panel" elevation={0} sx={{ height: '100%', display: 'flex', flexDirection: 'column' }}>
|
|
199
|
+
<Box id="notifications-header" sx={{ p: 2, borderBottom: 1, borderColor: 'divider' }}>
|
|
200
|
+
<Typography variant="h6" component="h2">
|
|
201
|
+
Notifications
|
|
202
|
+
</Typography>
|
|
203
|
+
</Box>
|
|
204
|
+
|
|
205
|
+
<Box id="notifications-content" sx={{ flex: 1, overflow: 'auto' }}>
|
|
206
|
+
{isLoading ? (
|
|
207
|
+
<Box sx={{ p: 2 }}>
|
|
208
|
+
{[...Array(3)].map((_, index) => (
|
|
209
|
+
<Box key={index} sx={{ display: 'flex', alignItems: 'center', mb: 2 }}>
|
|
210
|
+
<Skeleton variant="circular" width={48} height={48} sx={{ mr: 2 }} />
|
|
211
|
+
<Box sx={{ flex: 1 }}>
|
|
212
|
+
<Skeleton variant="text" width="80%" height={24} />
|
|
213
|
+
<Skeleton variant="text" width="40%" height={20} />
|
|
214
|
+
</Box>
|
|
215
|
+
</Box>
|
|
216
|
+
))}
|
|
217
|
+
</Box>
|
|
218
|
+
) : (
|
|
219
|
+
getNotificationList()
|
|
220
|
+
)}
|
|
221
|
+
</Box>
|
|
222
|
+
</Paper>
|
|
87
223
|
);
|
|
88
224
|
};
|
|
@@ -1,27 +1,114 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import React from "react";
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
Paper,
|
|
6
|
+
Box,
|
|
7
|
+
Typography,
|
|
8
|
+
Stack,
|
|
9
|
+
IconButton,
|
|
10
|
+
Avatar,
|
|
11
|
+
Divider,
|
|
12
|
+
useTheme
|
|
13
|
+
} from "@mui/material";
|
|
14
|
+
import { ArrowBack as ArrowBackIcon } from "@mui/icons-material";
|
|
5
15
|
import { PrivateMessageInterface, UserContextInterface } from "@churchapps/helpers";
|
|
6
16
|
import { Notes } from "../notes/Notes";
|
|
7
|
-
import { Locale } from "../../helpers";
|
|
17
|
+
import { ApiHelper, Locale, NotificationService } from "../../helpers";
|
|
18
|
+
import { PersonAvatar } from "../PersonAvatar";
|
|
8
19
|
|
|
9
20
|
interface Props {
|
|
10
21
|
context: UserContextInterface;
|
|
11
22
|
privateMessage: PrivateMessageInterface;
|
|
12
23
|
onBack: () => void
|
|
13
24
|
refreshKey: number;
|
|
25
|
+
onMessageRead?: () => void;
|
|
14
26
|
}
|
|
15
27
|
|
|
16
|
-
export const PrivateMessageDetails: React.FC<Props> = (props) =>
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
28
|
+
export const PrivateMessageDetails: React.FC<Props> = (props) => {
|
|
29
|
+
const theme = useTheme();
|
|
30
|
+
|
|
31
|
+
// Clear notification when conversation is opened
|
|
32
|
+
React.useEffect(() => {
|
|
33
|
+
const clearNotification = async () => {
|
|
34
|
+
if (props.privateMessage.notifyPersonId === props.context.person.id) {
|
|
35
|
+
try {
|
|
36
|
+
console.log("Marking private message as read:", props.privateMessage.id);
|
|
37
|
+
|
|
38
|
+
// Clear the notification by getting the private message details
|
|
39
|
+
await ApiHelper.get(`/privateMessages/${props.privateMessage.id}`, "MessagingApi");
|
|
40
|
+
|
|
41
|
+
// Manually refresh notification counts to ensure immediate UI update
|
|
42
|
+
const notificationService = NotificationService.getInstance();
|
|
43
|
+
await notificationService.refresh();
|
|
44
|
+
|
|
45
|
+
console.log("Private message marked as read and notifications refreshed");
|
|
46
|
+
|
|
47
|
+
// Notify parent component that message was marked as read
|
|
48
|
+
if (props.onMessageRead) {
|
|
49
|
+
props.onMessageRead();
|
|
50
|
+
}
|
|
51
|
+
} catch (error) {
|
|
52
|
+
console.error("Failed to clear notification:", error);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
clearNotification();
|
|
58
|
+
}, [props.privateMessage.id, props.privateMessage.notifyPersonId, props.context.person.id]);
|
|
59
|
+
|
|
60
|
+
return (
|
|
61
|
+
<Paper elevation={0} sx={{
|
|
62
|
+
height: '100%',
|
|
63
|
+
display: 'flex',
|
|
64
|
+
flexDirection: 'column',
|
|
65
|
+
overflow: 'hidden',
|
|
66
|
+
position: 'relative'
|
|
67
|
+
}}>
|
|
68
|
+
{/* Fixed Header - Always visible */}
|
|
69
|
+
<Box sx={{
|
|
70
|
+
p: 2,
|
|
71
|
+
borderBottom: 1,
|
|
72
|
+
borderColor: 'divider',
|
|
73
|
+
flexShrink: 0,
|
|
74
|
+
backgroundColor: 'background.paper',
|
|
75
|
+
zIndex: 1
|
|
76
|
+
}}>
|
|
77
|
+
<Stack direction="row" alignItems="center" spacing={2}>
|
|
78
|
+
<IconButton onClick={props.onBack}>
|
|
79
|
+
<ArrowBackIcon />
|
|
80
|
+
</IconButton>
|
|
81
|
+
<Stack direction="row" spacing={2} alignItems="center" sx={{ flex: 1 }}>
|
|
82
|
+
<PersonAvatar person={props.privateMessage.person} size="small" />
|
|
83
|
+
<Box>
|
|
84
|
+
<Typography variant="h6" component="h2">
|
|
85
|
+
{props.privateMessage.person.name.display}
|
|
86
|
+
</Typography>
|
|
87
|
+
<Typography variant="caption" color="textSecondary">
|
|
88
|
+
{Locale.label("wrapper.privateConversation", "Private Conversation")}
|
|
89
|
+
</Typography>
|
|
90
|
+
</Box>
|
|
91
|
+
</Stack>
|
|
92
|
+
</Stack>
|
|
93
|
+
</Box>
|
|
94
|
+
|
|
95
|
+
{/* Chat area - Scrollable content */}
|
|
96
|
+
<Box sx={{
|
|
97
|
+
flex: 1,
|
|
98
|
+
display: 'flex',
|
|
99
|
+
flexDirection: 'column',
|
|
100
|
+
minHeight: 0,
|
|
101
|
+
overflow: 'hidden'
|
|
102
|
+
}}>
|
|
103
|
+
<Notes
|
|
104
|
+
maxHeight="100%"
|
|
105
|
+
context={props.context}
|
|
106
|
+
conversationId={props.privateMessage.conversationId}
|
|
107
|
+
noDisplayBox={true}
|
|
108
|
+
refreshKey={props.refreshKey}
|
|
109
|
+
/>
|
|
110
|
+
</Box>
|
|
111
|
+
</Paper>
|
|
112
|
+
);
|
|
113
|
+
};
|
|
27
114
|
|