@samparkchat/sampark-web-chat 0.0.1

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 (92) hide show
  1. package/README.md +93 -0
  2. package/package.json +72 -0
  3. package/sampark/sampark-chat/App.d.ts +4 -0
  4. package/sampark/sampark-chat/App.js +123 -0
  5. package/sampark/sampark-chat/App.test.d.ts +1 -0
  6. package/sampark/sampark-chat/App.test.js +8 -0
  7. package/sampark/sampark-chat/components/Headers/ChatHeader.d.ts +12 -0
  8. package/sampark/sampark-chat/components/Headers/ChatHeader.js +142 -0
  9. package/sampark/sampark-chat/components/Headers/GroupChatHeader.d.ts +17 -0
  10. package/sampark/sampark-chat/components/Headers/GroupChatHeader.js +227 -0
  11. package/sampark/sampark-chat/components/Headers/ParticipantHeader.d.ts +9 -0
  12. package/sampark/sampark-chat/components/Headers/ParticipantHeader.js +71 -0
  13. package/sampark/sampark-chat/components/Headers/SamparkHeader.d.ts +11 -0
  14. package/sampark/sampark-chat/components/Headers/SamparkHeader.js +162 -0
  15. package/sampark/sampark-chat/components/MessageActions.d.ts +19 -0
  16. package/sampark/sampark-chat/components/MessageActions.js +177 -0
  17. package/sampark/sampark-chat/components/bottomsheets/GroupBottomSheet.d.ts +11 -0
  18. package/sampark/sampark-chat/components/bottomsheets/GroupBottomSheet.js +276 -0
  19. package/sampark/sampark-chat/components/bottomsheets/GroupOptionBottomSheet.d.ts +12 -0
  20. package/sampark/sampark-chat/components/bottomsheets/GroupOptionBottomSheet.js +239 -0
  21. package/sampark/sampark-chat/components/lists/ParticipantList.d.ts +12 -0
  22. package/sampark/sampark-chat/components/lists/ParticipantList.js +207 -0
  23. package/sampark/sampark-chat/components/lists/ViewParticipents.d.ts +36 -0
  24. package/sampark/sampark-chat/components/lists/ViewParticipents.js +452 -0
  25. package/sampark/sampark-chat/index.d.ts +5 -0
  26. package/sampark/sampark-chat/index.js +17 -0
  27. package/sampark/sampark-chat/models/deleteModel.d.ts +8 -0
  28. package/sampark/sampark-chat/models/deleteModel.js +63 -0
  29. package/sampark/sampark-chat/models/infoModal.d.ts +8 -0
  30. package/sampark/sampark-chat/models/infoModal.js +75 -0
  31. package/sampark/sampark-chat/reportWebVitals.d.ts +3 -0
  32. package/sampark/sampark-chat/reportWebVitals.js +13 -0
  33. package/sampark/sampark-chat/screens/PeerChatScreen.d.ts +20 -0
  34. package/sampark/sampark-chat/screens/PeerChatScreen.js +467 -0
  35. package/sampark/sampark-chat/screens/SamparkChatContext.d.ts +6 -0
  36. package/sampark/sampark-chat/screens/SamparkChatContext.js +9 -0
  37. package/sampark/sampark-chat/screens/SamparkChatProvider.d.ts +7 -0
  38. package/sampark/sampark-chat/screens/SamparkChatProvider.js +69 -0
  39. package/sampark/sampark-chat/screens/SamparkchatScreen.d.ts +16 -0
  40. package/sampark/sampark-chat/screens/SamparkchatScreen.js +1317 -0
  41. package/sampark/sampark-chat/screens/groupChatScreen.d.ts +24 -0
  42. package/sampark/sampark-chat/screens/groupChatScreen.js +375 -0
  43. package/sampark/sampark-chat/sdk/client/Groupchat.d.ts +53 -0
  44. package/sampark/sampark-chat/sdk/client/Groupchat.js +457 -0
  45. package/sampark/sampark-chat/sdk/client/PeerChat.d.ts +34 -0
  46. package/sampark/sampark-chat/sdk/client/PeerChat.js +227 -0
  47. package/sampark/sampark-chat/sdk/client/SamparkChat.d.ts +12 -0
  48. package/sampark/sampark-chat/sdk/client/SamparkChat.js +101 -0
  49. package/sampark/sampark-chat/sdk/enum/ActionTypes.d.ts +15 -0
  50. package/sampark/sampark-chat/sdk/enum/ActionTypes.js +16 -0
  51. package/sampark/sampark-chat/sdk/enum/constant.d.ts +1 -0
  52. package/sampark/sampark-chat/sdk/enum/constant.js +3 -0
  53. package/sampark/sampark-chat/sdk/interface/SamparkChatservice.d.ts +3 -0
  54. package/sampark/sampark-chat/sdk/interface/SamparkChatservice.js +1 -0
  55. package/sampark/sampark-chat/sdk/interface/SamparkGroupChatService.d.ts +26 -0
  56. package/sampark/sampark-chat/sdk/interface/SamparkGroupChatService.js +1 -0
  57. package/sampark/sampark-chat/sdk/interface/SamparkPeerChatService.d.ts +9 -0
  58. package/sampark/sampark-chat/sdk/interface/SamparkPeerChatService.js +1 -0
  59. package/sampark/sampark-chat/sdk/types/AddParticipentRequest.d.ts +16 -0
  60. package/sampark/sampark-chat/sdk/types/AddParticipentRequest.js +14 -0
  61. package/sampark/sampark-chat/sdk/types/ChatHistoryRequest.d.ts +10 -0
  62. package/sampark/sampark-chat/sdk/types/ChatHistoryRequest.js +14 -0
  63. package/sampark/sampark-chat/sdk/types/CreateChatSession.d.ts +11 -0
  64. package/sampark/sampark-chat/sdk/types/CreateChatSession.js +15 -0
  65. package/sampark/sampark-chat/sdk/types/CreateChatUser.d.ts +9 -0
  66. package/sampark/sampark-chat/sdk/types/CreateChatUser.js +13 -0
  67. package/sampark/sampark-chat/sdk/types/CreateGroupChatRequest.d.ts +18 -0
  68. package/sampark/sampark-chat/sdk/types/CreateGroupChatRequest.js +16 -0
  69. package/sampark/sampark-chat/sdk/types/DeleteGroupRequest.d.ts +15 -0
  70. package/sampark/sampark-chat/sdk/types/DeleteGroupRequest.js +13 -0
  71. package/sampark/sampark-chat/sdk/types/GenerateTokenRequest.d.ts +10 -0
  72. package/sampark/sampark-chat/sdk/types/GenerateTokenRequest.js +14 -0
  73. package/sampark/sampark-chat/sdk/types/GetGroupsRequest.d.ts +8 -0
  74. package/sampark/sampark-chat/sdk/types/GetGroupsRequest.js +12 -0
  75. package/sampark/sampark-chat/sdk/types/GetParticipentRequest.d.ts +8 -0
  76. package/sampark/sampark-chat/sdk/types/GetParticipentRequest.js +12 -0
  77. package/sampark/sampark-chat/sdk/types/GetRegisteredUserDetailsRequest.d.ts +8 -0
  78. package/sampark/sampark-chat/sdk/types/GetRegisteredUserDetailsRequest.js +12 -0
  79. package/sampark/sampark-chat/sdk/types/GroupChatHistoryRequest.d.ts +12 -0
  80. package/sampark/sampark-chat/sdk/types/GroupChatHistoryRequest.js +16 -0
  81. package/sampark/sampark-chat/sdk/types/RemoveParticipentRequest.d.ts +14 -0
  82. package/sampark/sampark-chat/sdk/types/RemoveParticipentRequest.js +12 -0
  83. package/sampark/sampark-chat/sdk/types/UpdateGroupAdminRequest.d.ts +10 -0
  84. package/sampark/sampark-chat/sdk/types/UpdateGroupAdminRequest.js +14 -0
  85. package/sampark/sampark-chat/sdk/types/UpdateGroupStatus.d.ts +10 -0
  86. package/sampark/sampark-chat/sdk/types/UpdateGroupStatus.js +14 -0
  87. package/sampark/sampark-chat/services/Common.d.ts +12 -0
  88. package/sampark/sampark-chat/services/Common.js +18 -0
  89. package/sampark/sampark-chat/services/DateFormat.d.ts +2 -0
  90. package/sampark/sampark-chat/services/DateFormat.js +14 -0
  91. package/sampark/sampark-chat/setupTests.d.ts +1 -0
  92. package/sampark/sampark-chat/setupTests.js +5 -0
@@ -0,0 +1,1317 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
49
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
50
+ if (ar || !(i in from)) {
51
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
52
+ ar[i] = from[i];
53
+ }
54
+ }
55
+ return to.concat(ar || Array.prototype.slice.call(from));
56
+ };
57
+ import React, { useEffect, useRef, useState } from "react";
58
+ import SamparkHeader from "../components/Headers/SamparkHeader";
59
+ import DeleteModel from "../models/deleteModel";
60
+ import GroupBottomSheet from "../components/bottomsheets/GroupBottomSheet";
61
+ import GroupOptionBottomSheet from "../components/bottomsheets/GroupOptionBottomSheet";
62
+ import ViewParticipents from "../components/lists/ViewParticipents";
63
+ import InviteUserScreen from "../components/lists/ParticipantList";
64
+ import { generatePeerRoomId, getInitials } from "../services/Common";
65
+ import PeerChatScreen from "./PeerChatScreen";
66
+ import GroupChatScreen from "./groupChatScreen";
67
+ import { getTimeStampForChatsLists } from "../services/DateFormat";
68
+ var SamparkChatScreen = function (_a) {
69
+ var client = _a.client, users = _a.users, userId = _a.userId, userName = _a.userName, style = _a.style, textStyle = _a.textStyle;
70
+ var _b = useState(false), showBottomSheet = _b[0], setShowBottomSheet = _b[1];
71
+ var _c = useState(false), isGroupActive = _c[0], setIsGroupActive = _c[1];
72
+ var _d = useState([]), messages = _d[0], setMessages = _d[1];
73
+ var _e = useState(''), searchTerm = _e[0], setSearchTerm = _e[1];
74
+ var _f = useState(false), showParticipantsList = _f[0], setShowParticipantsList = _f[1];
75
+ var _g = useState(""), userGroupName = _g[0], setUserGroupName = _g[1];
76
+ var _h = useState(""), userGroupType = _h[0], setUserGroupType = _h[1];
77
+ var _j = useState(''), peerUserName = _j[0], setPeerUserName = _j[1];
78
+ var _k = useState(''), joinRoomId = _k[0], setJoinRoomId = _k[1];
79
+ var _l = useState(''), userProfilePic = _l[0], setUserProfilePic = _l[1];
80
+ var _m = useState(''), peerUserId = _m[0], setPeerUserId = _m[1];
81
+ var _o = useState(false), showInputFeild = _o[0], setShowInputFeild = _o[1];
82
+ var _p = useState(false), showUserList = _p[0], setShowUserList = _p[1];
83
+ var _q = useState(false), isChatInitialized = _q[0], setIsChatInitialized = _q[1];
84
+ var _r = useState([]), onlineUsers = _r[0], setOnlineUsers = _r[1];
85
+ var _s = useState(''), userMessage = _s[0], setUserMessage = _s[1];
86
+ var _t = useState({}), lastMessages = _t[0], setLastMessages = _t[1];
87
+ var _u = useState(users), participantsList = _u[0], setParticipantsList = _u[1];
88
+ var _v = useState(""), userOrganizationId = _v[0], setUserOrganizationId = _v[1];
89
+ var joinRoomIdRef = useRef(joinRoomId);
90
+ var _w = useState([]), userJoinedGroups = _w[0], setUserJoinedGroups = _w[1];
91
+ var _x = useState(''), selectedGroupType = _x[0], setSelectedGroupType = _x[1];
92
+ var _y = useState([]), groupsList = _y[0], setGroupsList = _y[1];
93
+ var _z = useState(false), userRemovedFromGroup = _z[0], setUserRemovedFromGroup = _z[1];
94
+ var _0 = useState("Active"), userJoinedGroupStatus = _0[0], setUserJoinedGroupStatus = _0[1];
95
+ var _1 = useState(""), userJoinedGroupUpdatedAt = _1[0], setUserJoinedGroupUpdatedAt = _1[1];
96
+ var _2 = useState(false), showDeleteIcon = _2[0], setShowDeleteIcon = _2[1];
97
+ var _3 = useState(false), showDeleteModal = _3[0], setShowDeleteModal = _3[1];
98
+ var _4 = useState(null), groupToDelete = _4[0], setGroupToDelete = _4[1];
99
+ var _5 = useState(""), userJoinedGroupRole = _5[0], setUserJoinedGroupRole = _5[1];
100
+ var _6 = useState(''), groupName = _6[0], setGroupName = _6[1];
101
+ var _7 = useState([]), viewParticipants = _7[0], setViewParticipants = _7[1];
102
+ var _8 = useState(false), showJoinBtn = _8[0], setShowJoinBtn = _8[1];
103
+ var _9 = useState(false), userRemoveGroup = _9[0], setUserRemoveGroup = _9[1];
104
+ var _10 = useState([]), selectedParticipants = _10[0], setSelectedParticipants = _10[1];
105
+ var _11 = useState(false), userLeaveGroup = _11[0], setUserLeaveGroup = _11[1];
106
+ var _12 = useState(false), showViewParticipantList = _12[0], setViewParticipantsList = _12[1];
107
+ var _13 = useState(false), showGroupOptionBottomSheet = _13[0], setShowGroupOptionBottomSheet = _13[1];
108
+ var _14 = useState(false), showHideParticipantScreen = _14[0], setShowHideParticipantScreen = _14[1];
109
+ var _15 = useState(false), showSidePanel = _15[0], setShowSidePanel = _15[1];
110
+ var _16 = useState(null), hoveredGroupId = _16[0], setHoveredGroupId = _16[1];
111
+ var _17 = useState(false), showAssignAdminModal = _17[0], setShowAssignAdminModal = _17[1];
112
+ var _18 = useState(""), selectedNewAdmin = _18[0], setSelectedNewAdmin = _18[1];
113
+ useEffect(function () {
114
+ var handleOpenAssignAdminModal = function () {
115
+ setShowAssignAdminModal(true);
116
+ };
117
+ window.addEventListener('openAssignAdminModal', handleOpenAssignAdminModal);
118
+ return function () {
119
+ window.removeEventListener('openAssignAdminModal', handleOpenAssignAdminModal);
120
+ };
121
+ }, []);
122
+ useEffect(function () {
123
+ if (!isGroupActive && showParticipantsList) {
124
+ setShowParticipantsList(false);
125
+ setSelectedParticipants([]);
126
+ }
127
+ }, [isGroupActive, joinRoomId]);
128
+ var updateGroupsList = function () { return __awaiter(void 0, void 0, void 0, function () {
129
+ var chatGroups, groupMsgPromises, updatedGroups, error_1;
130
+ return __generator(this, function (_a) {
131
+ switch (_a.label) {
132
+ case 0:
133
+ _a.trys.push([0, 3, , 4]);
134
+ return [4 /*yield*/, client.groupChat.getRoomsByUserId(userId)];
135
+ case 1:
136
+ chatGroups = _a.sent();
137
+ groupMsgPromises = chatGroups.map(function (group) { return __awaiter(void 0, void 0, void 0, function () {
138
+ var lastMessage;
139
+ return __generator(this, function (_a) {
140
+ switch (_a.label) {
141
+ case 0: return [4 /*yield*/, fetchLastMessageForGroup(group.room_id)];
142
+ case 1:
143
+ lastMessage = _a.sent();
144
+ return [2 /*return*/, __assign(__assign({}, group), { lastMessage: lastMessage === null ? undefined : lastMessage })];
145
+ }
146
+ });
147
+ }); });
148
+ return [4 /*yield*/, Promise.all(groupMsgPromises)];
149
+ case 2:
150
+ updatedGroups = _a.sent();
151
+ setGroupsList(updatedGroups);
152
+ setShowBottomSheet(false);
153
+ return [3 /*break*/, 4];
154
+ case 3:
155
+ error_1 = _a.sent();
156
+ console.error("Error fetching chat data:", error_1);
157
+ return [3 /*break*/, 4];
158
+ case 4: return [2 /*return*/];
159
+ }
160
+ });
161
+ }); };
162
+ // useEffect(() => {
163
+ // const css = `
164
+ // .sampark-chat-container *::-webkit-scrollbar,
165
+ // .sampark-chat-container *::-webkit-scrollbar-track,
166
+ // .sampark-chat-container *::-webkit-scrollbar-thumb {
167
+ // width: 0px !important;
168
+ // height: 0px !important;
169
+ // background: transparent !important;
170
+ // display: none !important;
171
+ // }
172
+ // .sampark-chat-container * {
173
+ // scrollbar-width: none !important;
174
+ // -ms-overflow-style: none !important;
175
+ // }
176
+ // .sampark-chat-container div,
177
+ // .sampark-chat-container ul,
178
+ // .sampark-chat-container ol,
179
+ // .sampark-chat-container section,
180
+ // .sampark-chat-container article {
181
+ // overflow-x: hidden !important;
182
+ // }
183
+ // `;
184
+ // const styleElement = document.createElement('style');
185
+ // styleElement.textContent = css;
186
+ // document.head.appendChild(styleElement);
187
+ // return () => {
188
+ // document.head.removeChild(styleElement);
189
+ // };
190
+ // }, []);
191
+ useEffect(function () {
192
+ joinRoomIdRef.current = joinRoomId;
193
+ }, [joinRoomId]);
194
+ useEffect(function () {
195
+ setShowUserList(false);
196
+ setIsChatInitialized(false);
197
+ setMessages([]);
198
+ if (isGroupActive) {
199
+ updateGroupsList();
200
+ }
201
+ }, [isGroupActive]);
202
+ var peerOnStatusUpdate = function (statusUpdate) {
203
+ console.log('Peer user status:', statusUpdate);
204
+ if (statusUpdate.status === "online") {
205
+ setOnlineUsers(function (prevOnlineUsers) { return __spreadArray(__spreadArray([], prevOnlineUsers, true), [statusUpdate.userId], false); });
206
+ }
207
+ else {
208
+ setOnlineUsers(function (prevOnlineUsers) { return prevOnlineUsers.filter(function (id) { return id !== statusUpdate.userId; }); });
209
+ }
210
+ };
211
+ useEffect(function () {
212
+ client.peerChat.sendOnlineStatus(userId, userName);
213
+ client.peerChat.peerConnectUser(function (statusUpdate) {
214
+ peerOnStatusUpdate(statusUpdate);
215
+ }, function (initialOnlineUsers) {
216
+ setOnlineUsers(initialOnlineUsers);
217
+ });
218
+ var handleVisibilityChange = function () {
219
+ if (!document.hidden && isGroupActive) {
220
+ updateGroupsList();
221
+ var refreshUserGroups = function () { return __awaiter(void 0, void 0, void 0, function () {
222
+ var updatedParticipantDetails, error_2;
223
+ return __generator(this, function (_a) {
224
+ switch (_a.label) {
225
+ case 0:
226
+ _a.trys.push([0, 2, , 3]);
227
+ return [4 /*yield*/, client.groupChat.getRegisteredParticipantDetails(userId)];
228
+ case 1:
229
+ updatedParticipantDetails = _a.sent();
230
+ setUserJoinedGroups(updatedParticipantDetails.data.joined_groups);
231
+ return [3 /*break*/, 3];
232
+ case 2:
233
+ error_2 = _a.sent();
234
+ console.error("Error refreshing user groups:", error_2);
235
+ return [3 /*break*/, 3];
236
+ case 3: return [2 /*return*/];
237
+ }
238
+ });
239
+ }); };
240
+ refreshUserGroups();
241
+ }
242
+ };
243
+ document.addEventListener('visibilitychange', handleVisibilityChange);
244
+ return function () {
245
+ document.removeEventListener('visibilitychange', handleVisibilityChange);
246
+ };
247
+ }, [isGroupActive]);
248
+ useEffect(function () {
249
+ if (showSidePanel && userJoinedGroupStatus !== 'Active') {
250
+ setShowSidePanel(false);
251
+ }
252
+ }, [userJoinedGroupStatus, showSidePanel]);
253
+ useEffect(function () {
254
+ if (!showBottomSheet) {
255
+ var updatedList = users.filter(function (user) { return user.user_id !== userId.trim(); });
256
+ setParticipantsList(updatedList);
257
+ }
258
+ else {
259
+ var updatedList = users.filter(function (user) { return user.user_id !== userId.trim(); });
260
+ setParticipantsList(updatedList);
261
+ }
262
+ }, [showBottomSheet, users, userId]);
263
+ useEffect(function () {
264
+ try {
265
+ var organizationId = client.peerChat.getOrganizationId();
266
+ setUserOrganizationId(organizationId);
267
+ for (var _i = 0, participantsList_1 = participantsList; _i < participantsList_1.length; _i++) {
268
+ var user = participantsList_1[_i];
269
+ client.peerChat.registerUser(user.user_id, user.user_name);
270
+ }
271
+ var userExists = participantsList.some(function (user) { return user.user_id === userId.trim(); });
272
+ if (userExists) {
273
+ var updatedList = participantsList.filter(function (user) { return user.user_id !== userId.trim(); });
274
+ var fetchRegisteredUserData = function () { return __awaiter(void 0, void 0, void 0, function () {
275
+ var updatedParticipantDetails;
276
+ return __generator(this, function (_a) {
277
+ switch (_a.label) {
278
+ case 0: return [4 /*yield*/, client.groupChat.getRegisteredParticipantDetails(userId)];
279
+ case 1:
280
+ updatedParticipantDetails = _a.sent();
281
+ setUserJoinedGroups(updatedParticipantDetails.data.joined_groups);
282
+ return [2 /*return*/];
283
+ }
284
+ });
285
+ }); };
286
+ fetchRegisteredUserData();
287
+ setParticipantsList(updatedList);
288
+ }
289
+ }
290
+ catch (error) {
291
+ console.error('Error inserting users:', error);
292
+ }
293
+ }, []);
294
+ var filteredUsers = participantsList.filter(function (user) { return user.user_name.toLowerCase().includes(searchTerm.toLowerCase()); });
295
+ var filteredGroups = groupsList && groupsList.length > 0
296
+ ? groupsList.filter(function (group) {
297
+ return group.group_name.toLowerCase().includes(searchTerm.toLowerCase());
298
+ })
299
+ : [];
300
+ var sortedFilteredUsers = filteredUsers.sort(function (a, b) {
301
+ var _a, _b;
302
+ var aTime = ((_a = lastMessages[a.user_id]) === null || _a === void 0 ? void 0 : _a.time) ? new Date(lastMessages[a.user_id].time).getTime() : 0;
303
+ var bTime = ((_b = lastMessages[b.user_id]) === null || _b === void 0 ? void 0 : _b.time) ? new Date(lastMessages[b.user_id].time).getTime() : 0;
304
+ return bTime - aTime;
305
+ });
306
+ var sortedFilteredGroups = filteredGroups.sort(function (a, b) {
307
+ var _a, _b;
308
+ var aTime = ((_a = a.lastMessage) === null || _a === void 0 ? void 0 : _a.time) ? new Date(a.lastMessage.time).getTime() : 0;
309
+ var bTime = ((_b = b.lastMessage) === null || _b === void 0 ? void 0 : _b.time) ? new Date(b.lastMessage.time).getTime() : 0;
310
+ return bTime - aTime;
311
+ });
312
+ var handleSearch = function (term) {
313
+ setSearchTerm(term);
314
+ };
315
+ var formatMessageTime = function (timestamp) { return getTimeStampForChatsLists(timestamp); };
316
+ var fetchLastMessageForUser = function (targetUserId) { return __awaiter(void 0, void 0, void 0, function () {
317
+ var chatRoomId, chatHistory, lastChat, error_3;
318
+ return __generator(this, function (_a) {
319
+ switch (_a.label) {
320
+ case 0:
321
+ _a.trys.push([0, 2, , 3]);
322
+ chatRoomId = generatePeerRoomId(userOrganizationId, userId, targetUserId);
323
+ return [4 /*yield*/, client.peerChat.getChatHistory(chatRoomId, 1, 1)];
324
+ case 1:
325
+ chatHistory = _a.sent();
326
+ if (chatHistory && chatHistory.chats && chatHistory.chats.length > 0) {
327
+ lastChat = chatHistory.chats[0];
328
+ return [2 /*return*/, {
329
+ message: lastChat.chat,
330
+ time: lastChat.created_at
331
+ }];
332
+ }
333
+ return [3 /*break*/, 3];
334
+ case 2:
335
+ error_3 = _a.sent();
336
+ console.error("Error fetching last message:", error_3);
337
+ return [3 /*break*/, 3];
338
+ case 3: return [2 /*return*/, null];
339
+ }
340
+ });
341
+ }); };
342
+ var fetchLastMessageForGroup = function (roomId) { return __awaiter(void 0, void 0, void 0, function () {
343
+ var foundGroup, status_1, updatedAt_1, chatHistory, filteredChats, lastChat, lastChat, error_4;
344
+ return __generator(this, function (_a) {
345
+ switch (_a.label) {
346
+ case 0:
347
+ _a.trys.push([0, 5, , 6]);
348
+ foundGroup = userJoinedGroups.find(function (group) { return group.group_id === roomId; });
349
+ status_1 = foundGroup === null || foundGroup === void 0 ? void 0 : foundGroup.status;
350
+ updatedAt_1 = foundGroup === null || foundGroup === void 0 ? void 0 : foundGroup.updated_at;
351
+ chatHistory = void 0;
352
+ if (!(status_1 === "Removed" && updatedAt_1)) return [3 /*break*/, 2];
353
+ return [4 /*yield*/, client.groupChat.getGroupChatHistory(roomId, "Active", "", 1, 50)];
354
+ case 1:
355
+ chatHistory = _a.sent(); // Fetch more messages to find the last before removal
356
+ if (chatHistory && chatHistory.chats && chatHistory.chats.length > 0) {
357
+ filteredChats = chatHistory.chats.filter(function (chat) {
358
+ if (!chat.created_at || !updatedAt_1)
359
+ return false;
360
+ return new Date(chat.created_at).getTime() <= new Date(updatedAt_1).getTime();
361
+ });
362
+ if (filteredChats.length > 0) {
363
+ lastChat = filteredChats[filteredChats.length - 1];
364
+ return [2 /*return*/, {
365
+ message: lastChat.chat,
366
+ time: lastChat.created_at
367
+ }];
368
+ }
369
+ }
370
+ return [3 /*break*/, 4];
371
+ case 2: return [4 /*yield*/, client.groupChat.getGroupChatHistory(roomId, "Active", "", 1, 1)];
372
+ case 3:
373
+ chatHistory = _a.sent();
374
+ if (chatHistory && chatHistory.chats && chatHistory.chats.length > 0) {
375
+ lastChat = chatHistory.chats[0];
376
+ return [2 /*return*/, {
377
+ message: lastChat.chat,
378
+ time: lastChat.created_at
379
+ }];
380
+ }
381
+ _a.label = 4;
382
+ case 4: return [3 /*break*/, 6];
383
+ case 5:
384
+ error_4 = _a.sent();
385
+ console.error("Error fetching last message for group:", error_4);
386
+ return [3 /*break*/, 6];
387
+ case 6: return [2 /*return*/, null];
388
+ }
389
+ });
390
+ }); };
391
+ var handlePress = function (user) {
392
+ setPeerUserId(user.user_id);
393
+ setPeerUserName(user.user_name);
394
+ setUserProfilePic(user.profile_pic);
395
+ setIsChatInitialized(true);
396
+ setShowUserList(true);
397
+ setShowSidePanel(false);
398
+ };
399
+ var handleGroupPress = function (user) { return __awaiter(void 0, void 0, void 0, function () {
400
+ var updatedParticipantDetails, foundGroup, error_5, foundGroup;
401
+ return __generator(this, function (_a) {
402
+ switch (_a.label) {
403
+ case 0:
404
+ setShowDeleteIcon(false);
405
+ _a.label = 1;
406
+ case 1:
407
+ _a.trys.push([1, 3, , 4]);
408
+ return [4 /*yield*/, client.groupChat.getRegisteredParticipantDetails(userId)];
409
+ case 2:
410
+ updatedParticipantDetails = _a.sent();
411
+ setUserJoinedGroups(updatedParticipantDetails.data.joined_groups);
412
+ foundGroup = updatedParticipantDetails.data.joined_groups.find(function (group) { return group.group_id === user.room_id; });
413
+ if (foundGroup) {
414
+ setUserJoinedGroupStatus(foundGroup.status);
415
+ setUserJoinedGroupUpdatedAt(foundGroup.updated_at);
416
+ setUserJoinedGroupRole(foundGroup.user_role);
417
+ }
418
+ else {
419
+ setUserJoinedGroupStatus("");
420
+ setUserJoinedGroupUpdatedAt("");
421
+ setUserJoinedGroupRole("");
422
+ }
423
+ return [3 /*break*/, 4];
424
+ case 3:
425
+ error_5 = _a.sent();
426
+ console.error("Error refreshing group status:", error_5);
427
+ foundGroup = userJoinedGroups.find(function (group) { return group.group_id === user.room_id; });
428
+ if (foundGroup) {
429
+ setUserJoinedGroupStatus(foundGroup.status);
430
+ setUserJoinedGroupUpdatedAt(foundGroup.updated_at);
431
+ setUserJoinedGroupRole(foundGroup.user_role);
432
+ }
433
+ else {
434
+ setUserJoinedGroupStatus("");
435
+ setUserJoinedGroupUpdatedAt("");
436
+ setUserJoinedGroupRole("");
437
+ }
438
+ return [3 /*break*/, 4];
439
+ case 4:
440
+ setSelectedGroupType(user.type);
441
+ setGroupName(user.group_name);
442
+ setJoinRoomId(user.room_id);
443
+ setIsChatInitialized(true);
444
+ setShowInputFeild(true);
445
+ setShowUserList(true);
446
+ return [2 /*return*/];
447
+ }
448
+ });
449
+ }); };
450
+ var handleHeaderClick = function () {
451
+ if (userJoinedGroupStatus === 'Active') {
452
+ setShowSidePanel(true);
453
+ }
454
+ else {
455
+ var message = userJoinedGroupStatus === 'Removed'
456
+ ? "You have been removed from this group and can't view the participant list"
457
+ : userJoinedGroupStatus === 'Left'
458
+ ? "You have left this group and can't view the participant list"
459
+ : "You can't access Participant List";
460
+ alert(message);
461
+ }
462
+ };
463
+ var closeSidePanel = function () {
464
+ setShowSidePanel(false);
465
+ };
466
+ var handleGroupDeletePress = function (user) { return __awaiter(void 0, void 0, void 0, function () {
467
+ return __generator(this, function (_a) {
468
+ setGroupToDelete(user);
469
+ setShowDeleteModal(true);
470
+ return [2 /*return*/];
471
+ });
472
+ }); };
473
+ var handleDeleteGroupConfirmed = function () { return __awaiter(void 0, void 0, void 0, function () {
474
+ var foundGroup, userDetails, error_6;
475
+ return __generator(this, function (_a) {
476
+ switch (_a.label) {
477
+ case 0:
478
+ if (!groupToDelete)
479
+ return [2 /*return*/];
480
+ foundGroup = userJoinedGroups.find(function (group) { return group.group_id === groupToDelete.room_id; });
481
+ if (!((foundGroup === null || foundGroup === void 0 ? void 0 : foundGroup.status) !== "Active")) return [3 /*break*/, 5];
482
+ userDetails = [{ user_id: userId, user_name: userName }];
483
+ _a.label = 1;
484
+ case 1:
485
+ _a.trys.push([1, 3, , 4]);
486
+ return [4 /*yield*/, client.groupChat.deleteGroupByUser(groupToDelete.room_id, userDetails)];
487
+ case 2:
488
+ _a.sent();
489
+ setShowDeleteModal(false);
490
+ setGroupToDelete(null);
491
+ if (joinRoomId === groupToDelete.room_id) {
492
+ setIsChatInitialized(false);
493
+ setShowUserList(false);
494
+ setJoinRoomId("");
495
+ setGroupName("");
496
+ setMessages([]);
497
+ }
498
+ updateGroupsList();
499
+ return [3 /*break*/, 4];
500
+ case 3:
501
+ error_6 = _a.sent();
502
+ alert("Failed to delete group.");
503
+ return [3 /*break*/, 4];
504
+ case 4: return [3 /*break*/, 6];
505
+ case 5:
506
+ setShowDeleteModal(false);
507
+ setGroupToDelete(null);
508
+ _a.label = 6;
509
+ case 6: return [2 /*return*/];
510
+ }
511
+ });
512
+ }); };
513
+ var handleSendPress = function () {
514
+ if (userMessage.trim().length > 0) {
515
+ if (isGroupActive) {
516
+ client.groupChat.sendGroupMessage(joinRoomId, userMessage, userId, userName);
517
+ client.groupChat.sendStopTyping(joinRoomId, userId, userName);
518
+ setUserMessage('');
519
+ }
520
+ else {
521
+ client.peerChat.sendMessage(joinRoomId, userMessage, userId, userName, peerUserId, peerUserName);
522
+ client.peerChat.sendStopPeerTyping(joinRoomId, userId, userName);
523
+ setLastMessages(function (prev) {
524
+ var _a;
525
+ return (__assign(__assign({}, prev), (_a = {}, _a[peerUserId] = {
526
+ message: userMessage,
527
+ time: new Date().toISOString()
528
+ }, _a)));
529
+ });
530
+ setUserMessage('');
531
+ }
532
+ }
533
+ };
534
+ var handleBackPress = function () {
535
+ var updatedList = users.filter(function (user) { return user.user_id !== userId.trim(); });
536
+ setParticipantsList(updatedList);
537
+ setMessages([]);
538
+ setSelectedGroupType('');
539
+ setJoinRoomId('');
540
+ setIsChatInitialized(false);
541
+ setShowUserList(false);
542
+ setSearchTerm('');
543
+ setShowSidePanel(false);
544
+ updateGroupsList();
545
+ };
546
+ var handleGroupBackPress = function () {
547
+ setViewParticipants([]);
548
+ var updatedList = users.filter(function (user) { return user.user_id !== userId.trim(); });
549
+ setParticipantsList(updatedList);
550
+ setUserJoinedGroupStatus("");
551
+ setUserJoinedGroupUpdatedAt("");
552
+ setShowJoinBtn(false);
553
+ setSelectedGroupType('');
554
+ setJoinRoomId('');
555
+ setMessages([]);
556
+ setIsChatInitialized(false);
557
+ setIsGroupActive(true);
558
+ setShowUserList(false);
559
+ setSearchTerm('');
560
+ setUserJoinedGroupRole("");
561
+ setShowSidePanel(false);
562
+ updateGroupsList();
563
+ };
564
+ var onGroupMessageReceived = function (messageData) {
565
+ if (messageData.roomId == joinRoomId && !messageData.userRemoved && userJoinedGroupStatus == "Active") {
566
+ var newMessage_1 = {
567
+ user: messageData.userId,
568
+ message: messageData.message,
569
+ time: messageData.time,
570
+ reply: messageData.userId == userId ? true : false,
571
+ status: messageData.userId == userId ? 'sent' : undefined
572
+ };
573
+ setMessages(function (prevMessages) { return __spreadArray(__spreadArray([], prevMessages, true), [newMessage_1], false); });
574
+ }
575
+ else if (messageData.userRemoved && messageData.userId == userId) {
576
+ setUserRemovedFromGroup(true);
577
+ if (isGroupActive && messageData.removedRoomId == joinRoomId) {
578
+ handleGroupBackPress();
579
+ }
580
+ }
581
+ };
582
+ var onMessageReceived = function (messageData) {
583
+ if (messageData.roomId == joinRoomIdRef.current) {
584
+ var newMessage_2 = {
585
+ user: messageData.userId,
586
+ message: messageData.message,
587
+ time: messageData.time,
588
+ reply: messageData.userId == userId,
589
+ status: messageData.userId == userId ? 'sent' : undefined,
590
+ message_id: messageData.message_id,
591
+ };
592
+ setMessages(function (prevMessages) { return __spreadArray(__spreadArray([], prevMessages, true), [newMessage_2], false); });
593
+ var otherUserId_1 = messageData.userId === userId ? peerUserId : messageData.userId;
594
+ if (otherUserId_1) {
595
+ setLastMessages(function (prev) {
596
+ var _a;
597
+ return (__assign(__assign({}, prev), (_a = {}, _a[otherUserId_1] = {
598
+ message: messageData.message,
599
+ time: messageData.time
600
+ }, _a)));
601
+ });
602
+ }
603
+ }
604
+ };
605
+ useEffect(function () {
606
+ if (joinRoomId != '' && isGroupActive) {
607
+ var fetchGroupChatData = function () { return __awaiter(void 0, void 0, void 0, function () {
608
+ var chatHistory, memberList, activeUsers, convertedData;
609
+ return __generator(this, function (_a) {
610
+ switch (_a.label) {
611
+ case 0: return [4 /*yield*/, client.groupChat.getGroupChatHistory(joinRoomId, userJoinedGroupStatus, userJoinedGroupUpdatedAt, 1, 100)];
612
+ case 1:
613
+ chatHistory = _a.sent();
614
+ return [4 /*yield*/, client.groupChat.getParticipant(joinRoomId)];
615
+ case 2:
616
+ memberList = _a.sent();
617
+ activeUsers = memberList.filter(function (user) { return user.status === "Active"; });
618
+ setViewParticipants(activeUsers);
619
+ if (chatHistory) {
620
+ convertedData = chatHistory.chats.map(function (entry) { return ({
621
+ user: entry.user,
622
+ message: entry.chat,
623
+ time: entry.created_at,
624
+ reply: userId === entry.user,
625
+ status: userId === entry.user ? 'sent' : undefined
626
+ }); });
627
+ setMessages(convertedData);
628
+ }
629
+ else {
630
+ setMessages([]);
631
+ }
632
+ return [2 /*return*/];
633
+ }
634
+ });
635
+ }); };
636
+ fetchGroupChatData();
637
+ client.groupChat.JoinGroupRoom(joinRoomId, userId, userName);
638
+ setMessages([]);
639
+ client.groupChat.connect(onGroupMessageReceived);
640
+ }
641
+ }, [joinRoomId]);
642
+ useEffect(function () {
643
+ if (showParticipantsList) {
644
+ if (userGroupName !== '' && !userRemoveGroup) {
645
+ setSelectedParticipants([]);
646
+ }
647
+ if (!userRemoveGroup) {
648
+ if (isGroupActive && joinRoomId && userGroupName === '') {
649
+ var allOrgUsers = users.filter(function (user) { return user.user_id !== userId.trim(); });
650
+ var missingParticipants = allOrgUsers.filter(function (item1) {
651
+ return !viewParticipants.some(function (item2) { return item2.user_id === item1.user_id; });
652
+ });
653
+ setParticipantsList(missingParticipants);
654
+ }
655
+ else {
656
+ var allOrgUsers = users.filter(function (user) { return user.user_id !== userId.trim(); });
657
+ setParticipantsList(allOrgUsers);
658
+ }
659
+ }
660
+ else if (userRemoveGroup) {
661
+ var filteredData = viewParticipants.filter(function (user) { return user.user_id !== userId; });
662
+ setParticipantsList(filteredData);
663
+ }
664
+ }
665
+ else {
666
+ var updatedList = users.filter(function (user) { return user.user_id !== userId.trim(); });
667
+ setParticipantsList(updatedList);
668
+ }
669
+ }, [showParticipantsList, userRemoveGroup, viewParticipants, users, userId, isGroupActive, joinRoomId, userGroupName]);
670
+ useEffect(function () {
671
+ var fetchData = function () { return __awaiter(void 0, void 0, void 0, function () {
672
+ var chatRoomId, chatHistory, convertedData, error_7;
673
+ return __generator(this, function (_a) {
674
+ switch (_a.label) {
675
+ case 0:
676
+ _a.trys.push([0, 3, , 4]);
677
+ if (!(!isGroupActive && isChatInitialized)) return [3 /*break*/, 2];
678
+ chatRoomId = generatePeerRoomId(userOrganizationId, userId, peerUserId);
679
+ return [4 /*yield*/, client.peerChat.getChatHistory(chatRoomId, 1, 100)];
680
+ case 1:
681
+ chatHistory = _a.sent();
682
+ if (chatHistory) {
683
+ convertedData = chatHistory.chats.map(function (entry) { return ({
684
+ user: entry.user,
685
+ message: entry.chat,
686
+ time: entry.created_at,
687
+ reply: userId === entry.user,
688
+ status: userId === entry.user ? 'sent' : undefined
689
+ }); });
690
+ setMessages(convertedData);
691
+ }
692
+ else {
693
+ setMessages([]);
694
+ }
695
+ if (chatRoomId != '' && chatRoomId) {
696
+ setShowInputFeild(true);
697
+ setJoinRoomId(chatRoomId);
698
+ client.peerChat.joinChatSession(chatRoomId);
699
+ client.peerChat.connect(onMessageReceived);
700
+ }
701
+ _a.label = 2;
702
+ case 2: return [3 /*break*/, 4];
703
+ case 3:
704
+ error_7 = _a.sent();
705
+ console.error("Error fetching chat data:", error_7);
706
+ return [3 /*break*/, 4];
707
+ case 4: return [2 /*return*/];
708
+ }
709
+ });
710
+ }); };
711
+ if (showUserList) {
712
+ fetchData();
713
+ }
714
+ }, [showUserList, joinRoomId, peerUserId]);
715
+ useEffect(function () {
716
+ if (joinRoomId !== '' && isGroupActive) {
717
+ var groupExists = viewParticipants.some(function (participant) { return participant.user_id === userId; });
718
+ if (groupExists && selectedGroupType == 'public') {
719
+ setShowJoinBtn(true);
720
+ }
721
+ }
722
+ }, [viewParticipants]);
723
+ useEffect(function () {
724
+ if (userGroupName == '' && selectedParticipants.length != 0 && userRemoveGroup) {
725
+ var removeParticipantIntoGroup = function () { return __awaiter(void 0, void 0, void 0, function () {
726
+ var _i, selectedParticipants_1, participant, memberList, activeUsers, error_8;
727
+ return __generator(this, function (_a) {
728
+ switch (_a.label) {
729
+ case 0:
730
+ _a.trys.push([0, 6, , 7]);
731
+ _i = 0, selectedParticipants_1 = selectedParticipants;
732
+ _a.label = 1;
733
+ case 1:
734
+ if (!(_i < selectedParticipants_1.length)) return [3 /*break*/, 4];
735
+ participant = selectedParticipants_1[_i];
736
+ return [4 /*yield*/, client.groupChat.updateGroupStatusByParticipant(participant.user_id, joinRoomId, 'Removed')];
737
+ case 2:
738
+ _a.sent();
739
+ _a.label = 3;
740
+ case 3:
741
+ _i++;
742
+ return [3 /*break*/, 1];
743
+ case 4:
744
+ setUserRemoveGroup(false);
745
+ return [4 /*yield*/, client.groupChat.getParticipant(joinRoomId)];
746
+ case 5:
747
+ memberList = _a.sent();
748
+ activeUsers = memberList.filter(function (user) { return user.status === "Active"; });
749
+ setViewParticipants(activeUsers);
750
+ return [3 /*break*/, 7];
751
+ case 6:
752
+ error_8 = _a.sent();
753
+ console.error("Error fetching chat data:", error_8);
754
+ return [3 /*break*/, 7];
755
+ case 7: return [2 /*return*/];
756
+ }
757
+ });
758
+ }); };
759
+ removeParticipantIntoGroup();
760
+ }
761
+ if (userGroupName == '' && selectedParticipants.length != 0 && !userRemoveGroup) {
762
+ var addParticipantIntoGroup = function () { return __awaiter(void 0, void 0, void 0, function () {
763
+ var groupIdReturn, memberList, activeUsers, error_9;
764
+ return __generator(this, function (_a) {
765
+ switch (_a.label) {
766
+ case 0:
767
+ _a.trys.push([0, 4, , 5]);
768
+ return [4 /*yield*/, client.groupChat.addParticipantToGroup(joinRoomId, groupName, selectedParticipants)];
769
+ case 1:
770
+ groupIdReturn = _a.sent();
771
+ if (!(groupIdReturn != '')) return [3 /*break*/, 3];
772
+ setSelectedParticipants([]);
773
+ return [4 /*yield*/, client.groupChat.getParticipant(joinRoomId)];
774
+ case 2:
775
+ memberList = _a.sent();
776
+ activeUsers = memberList.filter(function (user) { return user.status === "Active"; });
777
+ setViewParticipants(activeUsers);
778
+ _a.label = 3;
779
+ case 3: return [3 /*break*/, 5];
780
+ case 4:
781
+ error_9 = _a.sent();
782
+ console.error("Error fetching chat data:", error_9);
783
+ return [3 /*break*/, 5];
784
+ case 5: return [2 /*return*/];
785
+ }
786
+ });
787
+ }); };
788
+ addParticipantIntoGroup();
789
+ }
790
+ if (userGroupName != '' && selectedParticipants.length != 0 && !userRemoveGroup) {
791
+ var createGroup = function () { return __awaiter(void 0, void 0, void 0, function () {
792
+ var newParticipant, updatedParticipants, groupIdReturn, fetchRegisteredUserData, resetParticipantsList, error_10;
793
+ return __generator(this, function (_a) {
794
+ switch (_a.label) {
795
+ case 0:
796
+ _a.trys.push([0, 2, , 3]);
797
+ newParticipant = { profile_pic: "", user_id: userId, user_name: userName };
798
+ updatedParticipants = __spreadArray(__spreadArray([], selectedParticipants, true), [newParticipant], false);
799
+ return [4 /*yield*/, client.groupChat.createGroupChat(userId, userGroupType, userGroupName, updatedParticipants)];
800
+ case 1:
801
+ groupIdReturn = _a.sent();
802
+ if (groupIdReturn != '') {
803
+ fetchRegisteredUserData = function () { return __awaiter(void 0, void 0, void 0, function () {
804
+ var updatedParticipantDetails;
805
+ return __generator(this, function (_a) {
806
+ switch (_a.label) {
807
+ case 0: return [4 /*yield*/, client.groupChat.getRegisteredParticipantDetails(userId)];
808
+ case 1:
809
+ updatedParticipantDetails = _a.sent();
810
+ setUserJoinedGroups(updatedParticipantDetails.data.joined_groups);
811
+ return [2 /*return*/];
812
+ }
813
+ });
814
+ }); };
815
+ fetchRegisteredUserData();
816
+ setUserGroupName('');
817
+ setSelectedParticipants([]);
818
+ resetParticipantsList = users.filter(function (user) { return user.user_id !== userId.trim(); });
819
+ setParticipantsList(resetParticipantsList);
820
+ }
821
+ return [3 /*break*/, 3];
822
+ case 2:
823
+ error_10 = _a.sent();
824
+ console.error("Error fetching chat data:", error_10);
825
+ return [3 /*break*/, 3];
826
+ case 3: return [2 /*return*/];
827
+ }
828
+ });
829
+ }); };
830
+ createGroup();
831
+ }
832
+ }, [selectedParticipants]);
833
+ useEffect(function () {
834
+ if (userLeaveGroup && isGroupActive) {
835
+ var leaveUserFromGroup = function () { return __awaiter(void 0, void 0, void 0, function () {
836
+ var leaveGroups, updatedParticipantDetails, error_11;
837
+ return __generator(this, function (_a) {
838
+ switch (_a.label) {
839
+ case 0:
840
+ _a.trys.push([0, 4, , 5]);
841
+ return [4 /*yield*/, client.groupChat.updateGroupStatusByParticipant(userId, joinRoomId, 'Left')];
842
+ case 1:
843
+ leaveGroups = _a.sent();
844
+ if (!leaveGroups) return [3 /*break*/, 3];
845
+ return [4 /*yield*/, client.groupChat.getRegisteredParticipantDetails(userId)];
846
+ case 2:
847
+ updatedParticipantDetails = _a.sent();
848
+ setUserJoinedGroups(updatedParticipantDetails.data.joined_groups);
849
+ setUserLeaveGroup(false);
850
+ setShowUserList(false);
851
+ _a.label = 3;
852
+ case 3: return [3 /*break*/, 5];
853
+ case 4:
854
+ error_11 = _a.sent();
855
+ console.error("Error fetching chat data:", error_11);
856
+ return [3 /*break*/, 5];
857
+ case 5: return [2 /*return*/];
858
+ }
859
+ });
860
+ }); };
861
+ if (userJoinedGroupRole && userJoinedGroupRole.toLowerCase() === 'admin') {
862
+ return;
863
+ }
864
+ if (window.confirm('Are you sure you want to leave the group?')) {
865
+ leaveUserFromGroup();
866
+ }
867
+ else {
868
+ setUserLeaveGroup(false);
869
+ }
870
+ }
871
+ }, [userLeaveGroup]);
872
+ useEffect(function () {
873
+ if (selectedParticipants.length == 0 && !userLeaveGroup) {
874
+ var fetchData = function () { return __awaiter(void 0, void 0, void 0, function () {
875
+ var chatGroups, groupMsgPromises, updatedGroups, error_12;
876
+ return __generator(this, function (_a) {
877
+ switch (_a.label) {
878
+ case 0:
879
+ _a.trys.push([0, 3, , 4]);
880
+ return [4 /*yield*/, client.groupChat.getRoomsByUserId(userId)];
881
+ case 1:
882
+ chatGroups = _a.sent();
883
+ groupMsgPromises = chatGroups.map(function (group) { return __awaiter(void 0, void 0, void 0, function () {
884
+ var lastMessage;
885
+ return __generator(this, function (_a) {
886
+ switch (_a.label) {
887
+ case 0: return [4 /*yield*/, fetchLastMessageForGroup(group.room_id)];
888
+ case 1:
889
+ lastMessage = _a.sent();
890
+ return [2 /*return*/, __assign(__assign({}, group), { lastMessage: lastMessage })];
891
+ }
892
+ });
893
+ }); });
894
+ return [4 /*yield*/, Promise.all(groupMsgPromises)];
895
+ case 2:
896
+ updatedGroups = _a.sent();
897
+ setGroupsList(updatedGroups);
898
+ setShowBottomSheet(false);
899
+ return [3 /*break*/, 4];
900
+ case 3:
901
+ error_12 = _a.sent();
902
+ console.error("Error fetching chat data:", error_12);
903
+ return [3 /*break*/, 4];
904
+ case 4: return [2 /*return*/];
905
+ }
906
+ });
907
+ }); };
908
+ fetchData();
909
+ }
910
+ }, [userId, selectedParticipants, userLeaveGroup, isGroupActive]);
911
+ useEffect(function () {
912
+ var intervalId;
913
+ if (isGroupActive && !showUserList) {
914
+ intervalId = setInterval(function () { return __awaiter(void 0, void 0, void 0, function () {
915
+ var chatGroups, groupMsgPromises, updatedGroups, updatedParticipantDetails, error_13;
916
+ return __generator(this, function (_a) {
917
+ switch (_a.label) {
918
+ case 0:
919
+ _a.trys.push([0, 4, , 5]);
920
+ return [4 /*yield*/, client.groupChat.getRoomsByUserId(userId)];
921
+ case 1:
922
+ chatGroups = _a.sent();
923
+ groupMsgPromises = chatGroups.map(function (group) { return __awaiter(void 0, void 0, void 0, function () {
924
+ var lastMessage;
925
+ return __generator(this, function (_a) {
926
+ switch (_a.label) {
927
+ case 0: return [4 /*yield*/, fetchLastMessageForGroup(group.room_id)];
928
+ case 1:
929
+ lastMessage = _a.sent();
930
+ return [2 /*return*/, __assign(__assign({}, group), { lastMessage: lastMessage })];
931
+ }
932
+ });
933
+ }); });
934
+ return [4 /*yield*/, Promise.all(groupMsgPromises)];
935
+ case 2:
936
+ updatedGroups = _a.sent();
937
+ setGroupsList(updatedGroups);
938
+ return [4 /*yield*/, client.groupChat.getRegisteredParticipantDetails(userId)];
939
+ case 3:
940
+ updatedParticipantDetails = _a.sent();
941
+ setUserJoinedGroups(updatedParticipantDetails.data.joined_groups);
942
+ return [3 /*break*/, 5];
943
+ case 4:
944
+ error_13 = _a.sent();
945
+ console.error("Error in periodic group refresh:", error_13);
946
+ return [3 /*break*/, 5];
947
+ case 5: return [2 /*return*/];
948
+ }
949
+ });
950
+ }); }, 15000);
951
+ }
952
+ return function () {
953
+ if (intervalId) {
954
+ clearInterval(intervalId);
955
+ }
956
+ };
957
+ }, [isGroupActive, showUserList, userId]);
958
+ useEffect(function () {
959
+ if (userRemovedFromGroup) {
960
+ var fetchData = function () { return __awaiter(void 0, void 0, void 0, function () {
961
+ var chatGroups, error_14;
962
+ return __generator(this, function (_a) {
963
+ switch (_a.label) {
964
+ case 0:
965
+ _a.trys.push([0, 2, , 3]);
966
+ return [4 /*yield*/, client.groupChat.getRoomsByUserId(userId)];
967
+ case 1:
968
+ chatGroups = _a.sent();
969
+ setGroupsList(chatGroups);
970
+ setUserRemovedFromGroup(false);
971
+ return [3 /*break*/, 3];
972
+ case 2:
973
+ error_14 = _a.sent();
974
+ console.error("Error fetching chat data:", error_14);
975
+ return [3 /*break*/, 3];
976
+ case 3: return [2 /*return*/];
977
+ }
978
+ });
979
+ }); };
980
+ fetchData();
981
+ }
982
+ }, [userRemovedFromGroup]);
983
+ useEffect(function () {
984
+ var fetchLastMessages = function () { return __awaiter(void 0, void 0, void 0, function () {
985
+ var lastMsgPromises, results, lastMsgMap_1;
986
+ return __generator(this, function (_a) {
987
+ switch (_a.label) {
988
+ case 0:
989
+ if (!(userOrganizationId && participantsList.length > 0)) return [3 /*break*/, 2];
990
+ lastMsgPromises = participantsList.map(function (user) { return __awaiter(void 0, void 0, void 0, function () {
991
+ var lastMsg;
992
+ return __generator(this, function (_a) {
993
+ switch (_a.label) {
994
+ case 0: return [4 /*yield*/, fetchLastMessageForUser(user.user_id)];
995
+ case 1:
996
+ lastMsg = _a.sent();
997
+ return [2 /*return*/, { userId: user.user_id, lastMessage: lastMsg }];
998
+ }
999
+ });
1000
+ }); });
1001
+ return [4 /*yield*/, Promise.all(lastMsgPromises)];
1002
+ case 1:
1003
+ results = _a.sent();
1004
+ lastMsgMap_1 = {};
1005
+ results.forEach(function (_a) {
1006
+ var userId = _a.userId, lastMessage = _a.lastMessage;
1007
+ if (lastMessage) {
1008
+ lastMsgMap_1[userId] = lastMessage;
1009
+ }
1010
+ });
1011
+ setLastMessages(lastMsgMap_1);
1012
+ _a.label = 2;
1013
+ case 2: return [2 /*return*/];
1014
+ }
1015
+ });
1016
+ }); };
1017
+ fetchLastMessages();
1018
+ }, [participantsList, userOrganizationId]);
1019
+ var renderItem = function (item) {
1020
+ var isUserOnline = onlineUsers.includes(item.user_id);
1021
+ var lastMessage = lastMessages[item.user_id];
1022
+ var isSelected = showUserList && peerUserId === item.user_id;
1023
+ return (React.createElement("div", { key: item.user_id, style: __assign(__assign({}, styles.userItem), { backgroundColor: isSelected ? '#e3f2fd' : 'transparent' }), onClick: function () { return handlePress(item); } },
1024
+ React.createElement("div", { style: styles.userRow },
1025
+ React.createElement("div", { style: styles.avatarContainer },
1026
+ React.createElement("div", { style: styles.avatarWrapper },
1027
+ item.profile_pic ? (React.createElement("img", { src: item.profile_pic, style: styles.avatar, alt: item.user_name })) : (React.createElement("div", { style: styles.avatarPlaceholder }, getInitials(item.user_name))),
1028
+ React.createElement("div", { style: __assign(__assign({}, styles.statusIndicator), { backgroundColor: isUserOnline ? '#4CAF50' : '#9CA3AF' }) }))),
1029
+ React.createElement("div", { style: styles.textContainer },
1030
+ React.createElement("div", { style: styles.userNameRow },
1031
+ React.createElement("span", { style: styles.userName }, item.user_name),
1032
+ lastMessage && lastMessage.time && (React.createElement("span", { style: styles.timeStamp }, formatMessageTime(lastMessage.time)))),
1033
+ lastMessage && lastMessage.message && (React.createElement("span", { style: { fontSize: '12px', color: '#666', marginTop: '2px', flex: 1, display: 'block', whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' } }, lastMessage.message))))));
1034
+ };
1035
+ var renderGroupItem = function (_a) {
1036
+ var _b, _c;
1037
+ var item = _a.item;
1038
+ return (React.createElement("div", { style: __assign(__assign({}, styles.userItem), { cursor: 'pointer' }), onClick: function () { return handleGroupPress(item); }, onMouseEnter: function () { return setHoveredGroupId(item.room_id); }, onMouseLeave: function () { return setHoveredGroupId(null); } },
1039
+ React.createElement("div", { style: styles.userRow },
1040
+ React.createElement("div", { style: styles.avatarContainer },
1041
+ React.createElement("div", { style: styles.avatarWrapper },
1042
+ item.type === 'public' && (React.createElement("div", { style: __assign(__assign({}, styles.avatarPlaceholder), { backgroundColor: '#4CAF50' }) },
1043
+ React.createElement("i", { className: "fas fa-users", style: { color: 'white', fontSize: '16px' } }))),
1044
+ item.type === 'private' && (React.createElement("div", { style: __assign(__assign({}, styles.avatarPlaceholder), { backgroundColor: '#2196F3' }) },
1045
+ React.createElement("i", { className: "fas fa-user-friends", style: { color: 'white', fontSize: '16px' } }))),
1046
+ item.type === 'protected' && (React.createElement("div", { style: __assign(__assign({}, styles.avatarPlaceholder), { backgroundColor: '#FF9800' }) },
1047
+ React.createElement("i", { className: "fas fa-shield-alt", style: { color: 'white', fontSize: '16px' } }))))),
1048
+ React.createElement("div", { style: styles.textContainer },
1049
+ React.createElement("div", { style: styles.userNameRow },
1050
+ React.createElement("span", { style: styles.userName }, item.group_name),
1051
+ hoveredGroupId === item.room_id && (function () {
1052
+ var foundGroup = userJoinedGroups.find(function (g) { return g.group_id === item.room_id; });
1053
+ if (foundGroup && foundGroup.status === 'Left') {
1054
+ return (React.createElement("span", { style: { cursor: 'pointer' }, onClick: function (e) { e.stopPropagation(); handleGroupDeletePress(item); } },
1055
+ React.createElement("i", { className: "fas fa-trash", style: { color: '#d32f2f', fontSize: '16px' } })));
1056
+ }
1057
+ return null;
1058
+ })(),
1059
+ (!hoveredGroupId || hoveredGroupId !== item.room_id) && ((_b = item.lastMessage) === null || _b === void 0 ? void 0 : _b.time) && (React.createElement("span", { style: styles.timeStamp }, formatMessageTime(item.lastMessage.time)))),
1060
+ ((_c = item.lastMessage) === null || _c === void 0 ? void 0 : _c.message) && (React.createElement("div", { style: styles.lastMessageContainer },
1061
+ React.createElement("span", { style: styles.lastMessage }, item.lastMessage.message)))))));
1062
+ };
1063
+ return (React.createElement("div", { style: styles.containerStyle, className: "sampark-chat-container" },
1064
+ React.createElement("div", { style: styles.leftPanel },
1065
+ React.createElement(SamparkHeader, { isGroupActive: isGroupActive, setShowBottomSheet: setShowBottomSheet, onEventClick: setIsGroupActive, showMenuButton: false, searchTerm: searchTerm, onSearch: handleSearch }),
1066
+ React.createElement("div", { style: styles.listContainer }, !isGroupActive ? (React.createElement("div", { style: styles.list }, sortedFilteredUsers.map(function (item) { return renderItem(item); }))) : (React.createElement("div", { style: styles.list }, sortedFilteredGroups.map(function (item) { return renderGroupItem({ item: item }); })))),
1067
+ React.createElement(GroupBottomSheet, { setShowBottomSheet: setShowBottomSheet, setShowParticipantsList: setShowParticipantsList, setUserGroupName: setUserGroupName, setUserGroupType: setUserGroupType, showBottomSheet: showBottomSheet })),
1068
+ React.createElement("div", { style: styles.rightPanel }, showUserList ? (React.createElement("div", { style: styles.chatContainer },
1069
+ !isGroupActive && (React.createElement(PeerChatScreen, { handleBackPress: handleBackPress, handleSendPress: handleSendPress, participantsList: participantsList, peerUserId: peerUserId, peerUserName: peerUserName, setUserMessage: setUserMessage, showInputFeild: showInputFeild, userMessage: userMessage, userMessages: messages, userProfilePic: userProfilePic, client: client, peerRoomId: joinRoomId, userId: userId, userName: userName, onlineUsers: onlineUsers })),
1070
+ isGroupActive && (React.createElement(GroupChatScreen, { groupName: groupName, handleGroupBackPress: handleGroupBackPress, handleSendPress: handleSendPress, participantsList: users, setShowGroupOptionBottomSheet: setShowGroupOptionBottomSheet, setShowHideParticipantScreen: setShowHideParticipantScreen, setShowParticipantsList: setShowParticipantsList, setUserMessage: setUserMessage, setViewParticipantsList: setViewParticipantsList, showInputFeild: showInputFeild, userJoinedGroupStatus: userJoinedGroupStatus, userMessage: userMessage, userMessages: messages, userName: userName, client: client, roomId: joinRoomId, userId: userId, GrouponlineUsers: onlineUsers, onHeaderClick: handleHeaderClick })))) : (React.createElement("div", { style: styles.welcomeContainer },
1071
+ React.createElement("div", { style: styles.welcomeIcon },
1072
+ React.createElement("i", { className: "fas fa-comments", style: {
1073
+ fontSize: '120px',
1074
+ color: '#e0e0e0'
1075
+ } })),
1076
+ React.createElement("h2", { style: styles.welcomeTitle }, "Welcome to your Conversations"),
1077
+ React.createElement("p", { style: styles.welcomeText }, "Select a chat from the list to start exploring your messages or begin a new conversation")))),
1078
+ showSidePanel && isGroupActive && userJoinedGroupStatus === 'Active' && (React.createElement("div", { style: styles.sidePanel },
1079
+ React.createElement(ViewParticipents, { ViewParticipants: viewParticipants, userId: userId, userName: userName, joinRoomId: joinRoomId, client: client, userJoinedGroupRole: userJoinedGroupRole, onClose: closeSidePanel, setPeerUserId: setPeerUserId, setPeerUserName: setPeerUserName, setUserProfilePic: setUserProfilePic, setIsChatInitialized: setIsChatInitialized, setShowUserList: setShowUserList, setIsGroupActive: setIsGroupActive, orgParticipantList: users, setViewParticipants: setViewParticipants, showViewParticipantList: true, setViewParticipantsList: setViewParticipantsList, setShowHideParticipantScreen: setShowHideParticipantScreen, setShowParticipantsList: setShowParticipantsList, showHeader: true, showActions: true }))),
1080
+ showParticipantsList && isGroupActive && (React.createElement("div", { style: styles.sidePanel },
1081
+ React.createElement("div", { style: styles.sidePanelHeader },
1082
+ React.createElement("h3", { style: styles.sidePanelTitle }, userRemoveGroup ? 'Remove Participants' : 'Add Participants'),
1083
+ React.createElement("button", { onClick: function () { return setShowParticipantsList(false); }, style: styles.sidePanelCloseButton },
1084
+ React.createElement("i", { className: "fas fa-times", style: styles.closeIcon }))),
1085
+ React.createElement(InviteUserScreen, { allOrgMember: users, userId: userId, setParticipantsList: setParticipantsList, userRemoveGroup: userRemoveGroup, setSelectedParticipants: setSelectedParticipants, userList: participantsList, setShowParticipantsList: setShowParticipantsList }))),
1086
+ isGroupActive && (React.createElement(GroupOptionBottomSheet, { userJoinedGroupRole: userJoinedGroupRole, showBottomSheet: showGroupOptionBottomSheet, setShowBottomSheet: setShowGroupOptionBottomSheet, setShowParticipantsList: setShowParticipantsList, setUserRemoveGroup: setUserRemoveGroup, setUserLeaveGroup: setUserLeaveGroup })),
1087
+ React.createElement(DeleteModel, { open: showDeleteModal, onClose: function () { setShowDeleteModal(false); setGroupToDelete(null); }, onDelete: handleDeleteGroupConfirmed }),
1088
+ showAssignAdminModal && (React.createElement("div", { style: { position: 'fixed', top: 0, left: 0, width: '100vw', height: '100vh', background: 'rgba(0,0,0,0.3)', display: 'flex', alignItems: 'center', justifyContent: 'center', zIndex: 9999 } },
1089
+ React.createElement("div", { style: { background: 'white', borderRadius: '8px', boxShadow: '0 2px 8px rgba(0,0,0,0.15)', minWidth: '320px', maxWidth: '90vw', padding: '24px', display: 'flex', flexDirection: 'column', alignItems: 'center' } },
1090
+ React.createElement("div", { style: { marginBottom: '16px', width: '100%', textAlign: 'center' } },
1091
+ React.createElement("span", { style: { fontSize: '18px', fontWeight: 600, color: '#333' } }, "Assign New Admin")),
1092
+ React.createElement("div", { style: { marginBottom: '24px', width: '100%', textAlign: 'center' } },
1093
+ React.createElement("span", { style: { fontSize: '16px', color: '#444' } }, "To leave the group, you must assign a new admin.")),
1094
+ React.createElement("select", { value: selectedNewAdmin, onChange: function (e) { return setSelectedNewAdmin(e.target.value); }, style: { marginBottom: '16px', padding: '8px', fontSize: '15px', borderRadius: '4px', border: '1px solid #ccc' } },
1095
+ React.createElement("option", { value: "" }, "Select new admin"),
1096
+ viewParticipants.filter(function (u) { return u.user_id !== userId; }).map(function (u) { return (React.createElement("option", { key: u.user_id, value: u.user_id }, u.user_name)); })),
1097
+ React.createElement("div", { style: { width: '100%', display: 'flex', justifyContent: 'center' } },
1098
+ React.createElement("button", { style: { padding: '8px 24px', borderRadius: '4px', background: '#1976d2', color: 'white', border: 'none', fontWeight: 500, fontSize: '15px', cursor: 'pointer', marginRight: '8px' }, disabled: !selectedNewAdmin }, "Assign & Leave"),
1099
+ React.createElement("button", { style: { padding: '8px 24px', borderRadius: '4px', background: '#aaa', color: 'white', border: 'none', fontWeight: 500, fontSize: '15px', cursor: 'pointer' }, onClick: function () { setShowAssignAdminModal(false); setUserLeaveGroup(false); setSelectedNewAdmin(""); } }, "Cancel")))))));
1100
+ };
1101
+ var styles = {
1102
+ containerStyle: {
1103
+ display: 'flex',
1104
+ width: '100vw',
1105
+ height: '100vh',
1106
+ backgroundColor: '#f6f6f6',
1107
+ },
1108
+ leftPanel: {
1109
+ width: '30vw',
1110
+ height: '92vh',
1111
+ backgroundColor: 'white',
1112
+ display: 'flex',
1113
+ flexDirection: 'column',
1114
+ overflow: 'hidden',
1115
+ margin: '20px 0 20px 20px',
1116
+ position: 'relative',
1117
+ borderRadius: '8px',
1118
+ boxShadow: '0 2px 4px rgba(0, 0, 0, 0.1)',
1119
+ minWidth: '320px',
1120
+ maxWidth: '480px',
1121
+ },
1122
+ rightPanel: {
1123
+ flex: 1,
1124
+ height: '92vh',
1125
+ backgroundColor: 'white',
1126
+ margin: '20px 20px 20px 10px',
1127
+ borderRadius: '8px',
1128
+ boxShadow: '0 2px 4px rgba(0, 0, 0, 0.1)',
1129
+ display: 'flex',
1130
+ flexDirection: 'column',
1131
+ },
1132
+ sidePanel: {
1133
+ width: '350px',
1134
+ height: '92vh',
1135
+ backgroundColor: 'white',
1136
+ margin: '20px 20px 20px 0px',
1137
+ borderRadius: '8px',
1138
+ boxShadow: '0 2px 4px rgba(0, 0, 0, 0.1)',
1139
+ display: 'flex',
1140
+ flexDirection: 'column',
1141
+ overflow: 'hidden',
1142
+ },
1143
+ welcomeContainer: {
1144
+ display: 'flex',
1145
+ flexDirection: 'column',
1146
+ alignItems: 'center',
1147
+ justifyContent: 'center',
1148
+ height: '100%',
1149
+ padding: '40px',
1150
+ textAlign: 'center',
1151
+ },
1152
+ welcomeIcon: {
1153
+ marginBottom: '30px',
1154
+ },
1155
+ welcomeTitle: {
1156
+ fontSize: '24px',
1157
+ fontWeight: '600',
1158
+ color: '#333',
1159
+ marginBottom: '16px',
1160
+ margin: '0 0 16px 0',
1161
+ },
1162
+ welcomeText: {
1163
+ fontSize: '16px',
1164
+ color: '#666',
1165
+ lineHeight: '1.5',
1166
+ maxWidth: '400px',
1167
+ margin: 0,
1168
+ },
1169
+ screenStyle: {
1170
+ width: '30vw',
1171
+ height: '92vh',
1172
+ backgroundColor: 'white',
1173
+ display: 'flex',
1174
+ flexDirection: 'column',
1175
+ overflow: 'hidden',
1176
+ margin: '20px 0 20px 20px',
1177
+ position: 'relative',
1178
+ borderRadius: '8px',
1179
+ boxShadow: '0 2px 4px rgba(0, 0, 0, 0.1)',
1180
+ minWidth: '320px',
1181
+ maxWidth: '480px',
1182
+ },
1183
+ listContainer: {
1184
+ flex: 1,
1185
+ overflowY: 'auto',
1186
+ overflowX: 'hidden',
1187
+ padding: '8px',
1188
+ scrollbarWidth: 'none',
1189
+ msOverflowStyle: 'none',
1190
+ },
1191
+ list: {
1192
+ display: 'flex',
1193
+ flexDirection: 'column',
1194
+ gap: '4px',
1195
+ },
1196
+ userItem: {
1197
+ padding: '8px 12px',
1198
+ borderRadius: '8px',
1199
+ cursor: 'pointer',
1200
+ transition: 'background-color 0.2s',
1201
+ backgroundColor: 'transparent',
1202
+ borderBottom: '1px solid #f0f0f0',
1203
+ },
1204
+ userRow: {
1205
+ display: 'flex',
1206
+ alignItems: 'center',
1207
+ gap: '10px',
1208
+ },
1209
+ avatarContainer: {
1210
+ display: 'flex',
1211
+ alignItems: 'center',
1212
+ },
1213
+ avatarWrapper: {
1214
+ position: 'relative',
1215
+ display: 'inline-block',
1216
+ },
1217
+ avatar: {
1218
+ width: '40px',
1219
+ height: '40px',
1220
+ borderRadius: '50%',
1221
+ objectFit: 'cover',
1222
+ },
1223
+ avatarPlaceholder: {
1224
+ width: '40px',
1225
+ height: '40px',
1226
+ borderRadius: '50%',
1227
+ backgroundColor: '#007bff',
1228
+ color: 'white',
1229
+ display: 'flex',
1230
+ alignItems: 'center',
1231
+ justifyContent: 'center',
1232
+ fontSize: '16px',
1233
+ fontWeight: 'bold',
1234
+ },
1235
+ statusIndicator: {
1236
+ position: 'absolute',
1237
+ bottom: '1px',
1238
+ right: '1px',
1239
+ width: '10px',
1240
+ height: '10px',
1241
+ borderRadius: '50%',
1242
+ border: '2px solid white',
1243
+ },
1244
+ textContainer: {
1245
+ flex: 1,
1246
+ display: 'flex',
1247
+ flexDirection: 'column',
1248
+ },
1249
+ userNameRow: {
1250
+ display: 'flex',
1251
+ justifyContent: 'space-between',
1252
+ alignItems: 'center',
1253
+ marginBottom: '4px',
1254
+ },
1255
+ userName: {
1256
+ fontSize: '15px',
1257
+ fontWeight: '500',
1258
+ color: '#333',
1259
+ },
1260
+ timeStamp: {
1261
+ fontSize: '12px',
1262
+ color: '#999',
1263
+ },
1264
+ lastMessageContainer: {
1265
+ display: 'flex',
1266
+ alignItems: 'center',
1267
+ },
1268
+ lastMessage: {
1269
+ fontSize: '14px',
1270
+ color: '#666',
1271
+ overflow: 'hidden',
1272
+ textOverflow: 'ellipsis',
1273
+ whiteSpace: 'nowrap',
1274
+ },
1275
+ clickToStart: {
1276
+ fontSize: '14px',
1277
+ color: '#999',
1278
+ fontStyle: 'italic',
1279
+ },
1280
+ chatContainer: {
1281
+ width: '100%',
1282
+ height: '100%',
1283
+ display: 'flex',
1284
+ flexDirection: 'column',
1285
+ },
1286
+ sidePanelHeader: {
1287
+ display: 'flex',
1288
+ justifyContent: 'space-between',
1289
+ alignItems: 'center',
1290
+ padding: '16px 20px',
1291
+ borderBottom: '1px solid #e0e0e0',
1292
+ backgroundColor: '#f8f9fa',
1293
+ borderRadius: '8px 8px 0 0',
1294
+ },
1295
+ sidePanelTitle: {
1296
+ margin: 0,
1297
+ fontSize: '18px',
1298
+ fontWeight: '600',
1299
+ color: '#333',
1300
+ },
1301
+ sidePanelCloseButton: {
1302
+ background: 'transparent',
1303
+ border: 'none',
1304
+ cursor: 'pointer',
1305
+ padding: '8px',
1306
+ borderRadius: '4px',
1307
+ display: 'flex',
1308
+ alignItems: 'center',
1309
+ justifyContent: 'center',
1310
+ transition: 'background-color 0.2s',
1311
+ },
1312
+ closeIcon: {
1313
+ fontSize: '16px',
1314
+ color: '#666',
1315
+ },
1316
+ };
1317
+ export default SamparkChatScreen;