mirror of
https://github.com/J3vb/OwnCord.git
synced 2026-09-03 03:50:00 +03:00
fix: DM close removes from sidebar, DM header shows real user status
This commit is contained in:
@@ -21,6 +21,8 @@ import type { PendingDeleteManager } from "./MessageController";
|
||||
import type { ReactionController } from "./ReactionController";
|
||||
import { updateChatHeaderForDm } from "./ChatHeader";
|
||||
import type { ChatHeaderRefs } from "./ChatHeader";
|
||||
import { dmStore } from "@stores/dm.store";
|
||||
import { membersStore } from "@stores/members.store";
|
||||
|
||||
const log = createLogger("channel-ctrl");
|
||||
|
||||
@@ -264,7 +266,15 @@ export function createChannelController(
|
||||
|
||||
// Update header
|
||||
if (chatHeaderRefs !== null && channelType === "dm") {
|
||||
updateChatHeaderForDm(chatHeaderRefs, { username: channelName, status: "Online" });
|
||||
// Look up the recipient's actual status from DM store or members store
|
||||
const dmChannel = dmStore.getState().channels.find((c) => c.channelId === channelId);
|
||||
let recipientStatus = "Offline";
|
||||
if (dmChannel !== undefined) {
|
||||
const member = membersStore.getState().members.get(dmChannel.recipient.id);
|
||||
recipientStatus = member?.status ?? dmChannel.recipient.status ?? "Offline";
|
||||
}
|
||||
const displayStatus = recipientStatus.charAt(0).toUpperCase() + recipientStatus.slice(1);
|
||||
updateChatHeaderForDm(chatHeaderRefs, { username: channelName, status: displayStatus });
|
||||
} else if (chatHeaderRefs !== null) {
|
||||
updateChatHeaderForDm(chatHeaderRefs, null);
|
||||
if (chatHeaderName !== null) {
|
||||
|
||||
@@ -28,7 +28,7 @@ import { authStore, clearAuth } from "@stores/auth.store";
|
||||
import { membersStore, getOnlineMembers } from "@stores/members.store";
|
||||
import { channelsStore, setActiveChannel } from "@stores/channels.store";
|
||||
import type { Channel } from "@stores/channels.store";
|
||||
import { dmStore, clearDmUnread, addDmChannel } from "@stores/dm.store";
|
||||
import { dmStore, clearDmUnread, addDmChannel, removeDmChannel } from "@stores/dm.store";
|
||||
import type { DmChannel } from "@stores/dm.store";
|
||||
import {
|
||||
createProfileManager,
|
||||
@@ -410,6 +410,8 @@ export function createSidebarArea(opts: SidebarAreaOptions): SidebarAreaResult {
|
||||
onCloseDm: (userId) => {
|
||||
const dmChannel = dmChannels.find((c) => c.recipient.id === userId);
|
||||
if (dmChannel !== undefined) {
|
||||
// Remove from store immediately (optimistic), then call API
|
||||
removeDmChannel(dmChannel.channelId);
|
||||
void api.closeDm(dmChannel.channelId);
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user