@corva/chat-core 0.1.8 → 0.1.9
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/index.d.ts +3 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -525,6 +525,7 @@ interface RevoltSocketEventHandlers {
|
|
|
525
525
|
onTyping?: (data: TypingEventData) => void;
|
|
526
526
|
onRoomChange?: (roomId: string, change: unknown) => void;
|
|
527
527
|
onChannelAck?: (channelId: string, messageId: string) => void;
|
|
528
|
+
onServerMembersChange?: (serverId: string) => void;
|
|
528
529
|
onError?: (error: unknown) => void;
|
|
529
530
|
}
|
|
530
531
|
|
|
@@ -1441,6 +1442,7 @@ interface MemberStore {
|
|
|
1441
1442
|
setTypingUsers: (users: string[]) => void;
|
|
1442
1443
|
simulateTyping: (userKey: string, isTyping: boolean, displayName?: string) => void;
|
|
1443
1444
|
loadRoomMembers: (roomId: string, roomType: RoomType, isAssetChat?: boolean) => Promise<void>;
|
|
1445
|
+
refreshServerMembers: (serverId: string) => void;
|
|
1444
1446
|
searchUsers: (query: string) => Promise<User[]>;
|
|
1445
1447
|
getUserByUsername: (username: string) => Promise<User | null>;
|
|
1446
1448
|
getAllVisibleUsers: () => Promise<User[]>;
|
|
@@ -1728,6 +1730,7 @@ declare const createSocketEventHandlers: (config: SocketEventHandlersConfig) =>
|
|
|
1728
1730
|
}) => void;
|
|
1729
1731
|
onMessageDelete: (messageId: string, channelId: string) => void;
|
|
1730
1732
|
onUserStatusChange: (userId: string, status: string) => void;
|
|
1733
|
+
onServerMembersChange: (serverId: string) => void;
|
|
1731
1734
|
onInvalidSession: () => void | undefined;
|
|
1732
1735
|
onError: (error: unknown) => void;
|
|
1733
1736
|
};
|
package/dist/index.js
CHANGED
|
@@ -2183,6 +2183,13 @@ function createEventRouter(userCache2, sessionToken, autumnUrl, handlers, getMem
|
|
|
2183
2183
|
}
|
|
2184
2184
|
break;
|
|
2185
2185
|
}
|
|
2186
|
+
case "ServerMemberJoin":
|
|
2187
|
+
case "ServerMemberLeave":
|
|
2188
|
+
if (typeof message.id === "string") handlers.onServerMembersChange?.(message.id);
|
|
2189
|
+
break;
|
|
2190
|
+
case "ServerMemberUpdate":
|
|
2191
|
+
if (message.id?.server) handlers.onServerMembersChange?.(message.id.server);
|
|
2192
|
+
break;
|
|
2186
2193
|
case "UserUpdate":
|
|
2187
2194
|
if (message.data && typeof message.data.online === "boolean") {
|
|
2188
2195
|
handlers.onUserStatusChange?.(message.id, message.data.online ? "online" : "offline");
|
|
@@ -3294,6 +3301,8 @@ var invalidateVisibleUsers = () => {
|
|
|
3294
3301
|
visibleUsersGeneration += 1;
|
|
3295
3302
|
visibleUsersRequest = null;
|
|
3296
3303
|
};
|
|
3304
|
+
var SERVER_MEMBERS_REFRESH_DELAY_MS = 500;
|
|
3305
|
+
var serverRefreshTimers = /* @__PURE__ */ new Map();
|
|
3297
3306
|
var syncedExternalCompanies = /* @__PURE__ */ new Set();
|
|
3298
3307
|
var ownCompanyId = null;
|
|
3299
3308
|
var seedSocketUsers = (members) => {
|
|
@@ -3465,6 +3474,26 @@ var memberStore = createStore()((set, get) => ({
|
|
|
3465
3474
|
console.error("Failed to load room members:", e);
|
|
3466
3475
|
}
|
|
3467
3476
|
},
|
|
3477
|
+
refreshServerMembers: (serverId) => {
|
|
3478
|
+
clearTimeout(serverRefreshTimers.get(serverId));
|
|
3479
|
+
serverRefreshTimers.set(
|
|
3480
|
+
serverId,
|
|
3481
|
+
setTimeout(() => {
|
|
3482
|
+
serverRefreshTimers.delete(serverId);
|
|
3483
|
+
const isOwnServer = serverId === authStore.getState().serverId;
|
|
3484
|
+
if (isOwnServer) {
|
|
3485
|
+
set({ serverMembersLoaded: false, serverMembersCache: null, allVisibleUsersCache: null });
|
|
3486
|
+
invalidateVisibleUsers();
|
|
3487
|
+
}
|
|
3488
|
+
const room = roomStore.getState().currentRoom;
|
|
3489
|
+
if (!room) return;
|
|
3490
|
+
const external = getExternalChannel(room._id);
|
|
3491
|
+
const showsServerMembers = external ? external.serverId === serverId : isOwnServer;
|
|
3492
|
+
if (!showsServerMembers || !external && room.t !== "c") return;
|
|
3493
|
+
get().loadRoomMembers(room._id, room.t, !!external).catch((e) => console.error("Failed to refresh room members:", e));
|
|
3494
|
+
}, SERVER_MEMBERS_REFRESH_DELAY_MS)
|
|
3495
|
+
);
|
|
3496
|
+
},
|
|
3468
3497
|
searchUsers: async (query) => {
|
|
3469
3498
|
try {
|
|
3470
3499
|
const currentRoomId = roomStore.getState().currentRoom?._id;
|
|
@@ -3594,6 +3623,8 @@ async function mapCorvaUsers(companyId, revoltUsers) {
|
|
|
3594
3623
|
}
|
|
3595
3624
|
}
|
|
3596
3625
|
var resetMemberStore = () => {
|
|
3626
|
+
serverRefreshTimers.forEach((timer) => clearTimeout(timer));
|
|
3627
|
+
serverRefreshTimers.clear();
|
|
3597
3628
|
syncedExternalCompanies.clear();
|
|
3598
3629
|
ownCompanyId = null;
|
|
3599
3630
|
invalidateVisibleUsers();
|
|
@@ -5714,6 +5745,9 @@ var createSocketEventHandlers = (config) => {
|
|
|
5714
5745
|
);
|
|
5715
5746
|
memberStore.setState({ members: updatedMembers });
|
|
5716
5747
|
},
|
|
5748
|
+
onServerMembersChange: (serverId) => {
|
|
5749
|
+
memberStore.getState().refreshServerMembers(serverId);
|
|
5750
|
+
},
|
|
5717
5751
|
onInvalidSession: () => api.notifyUnauthorized("ws:Authenticate"),
|
|
5718
5752
|
onError: (error) => {
|
|
5719
5753
|
console.error("\u{1F50C} WebSocket error:", error);
|