Hide the profile picture and username in DMs

This commit is contained in:
2025-09-05 23:33:21 +03:00
Unverified
parent 35b573945e
commit a6594d5960
6 changed files with 17 additions and 6 deletions
@@ -12,10 +12,11 @@ import { request } from "../../../websocket";
interface ChatMessagesProps { interface ChatMessagesProps {
messages?: MessageType[]; messages?: MessageType[];
isDm?: boolean;
children?: ReactNode; children?: ReactNode;
} }
export function ChatMessages({ messages: propMessages, children }: ChatMessagesProps) { export function ChatMessages({ messages: propMessages, children, isDm = false }: ChatMessagesProps) {
const { messages: hookMessages } = useChat(); const { messages: hookMessages } = useChat();
const { user } = useAppState(); const { user } = useAppState();
@@ -136,7 +137,7 @@ export function ChatMessages({ messages: propMessages, children }: ChatMessagesP
onProfileClick={handleProfileClick} onProfileClick={handleProfileClick}
onContextMenu={handleContextMenu} onContextMenu={handleContextMenu}
isLoadingProfile={isLoadingProfile} isLoadingProfile={isLoadingProfile}
/> isDm={isDm} />
))} ))}
{children} {children}
</div> </div>
+4 -3
View File
@@ -8,9 +8,10 @@ interface MessageProps {
onProfileClick: (username: string) => void; onProfileClick: (username: string) => void;
onContextMenu: (e: React.MouseEvent, message: MessageType) => void; onContextMenu: (e: React.MouseEvent, message: MessageType) => void;
isLoadingProfile?: boolean; isLoadingProfile?: boolean;
isDm?: boolean;
} }
export function Message({ message, isAuthor, onProfileClick, onContextMenu, isLoadingProfile = false }: MessageProps) { export function Message({ message, isAuthor, onProfileClick, onContextMenu, isLoadingProfile = false, isDm = false }: MessageProps) {
const handleContextMenu = (e: React.MouseEvent) => { const handleContextMenu = (e: React.MouseEvent) => {
console.log("Message context menu event triggered for message:", message.id); console.log("Message context menu event triggered for message:", message.id);
e.preventDefault(); e.preventDefault();
@@ -26,7 +27,7 @@ export function Message({ message, isAuthor, onProfileClick, onContextMenu, isLo
> >
<div className="message-inner"> <div className="message-inner">
{/* Add profile picture for received messages */} {/* Add profile picture for received messages */}
{!isAuthor && ( {!isAuthor && !isDm && (
<div className="message-profile-pic"> <div className="message-profile-pic">
<img <img
src={message.profile_picture || defaultAvatar} src={message.profile_picture || defaultAvatar}
@@ -42,7 +43,7 @@ export function Message({ message, isAuthor, onProfileClick, onContextMenu, isLo
</div> </div>
)} )}
{!isAuthor && ( {!isAuthor && !isDm && (
<div <div
className={`message-username ${isLoadingProfile ? "loading" : ""}`} className={`message-username ${isLoadingProfile ? "loading" : ""}`}
onClick={() => !isLoadingProfile && onProfileClick(message.username)} onClick={() => !isLoadingProfile && onProfileClick(message.username)}
@@ -118,7 +118,7 @@ export function MessagePanelRenderer({ panel, isChatSwitching }: MessagePanelRen
</div> </div>
</div> </div>
): ( ): (
<ChatMessages messages={panelState.messages}> <ChatMessages messages={panelState.messages} isDm={panel.isDm()}>
<div ref={messagesEndRef} /> <div ref={messagesEndRef} />
</ChatMessages> </ChatMessages>
)} )}
+4
View File
@@ -28,6 +28,10 @@ export class DMPanel extends MessagePanel {
super("dm", user, callbacks, onStateChange); super("dm", user, callbacks, onStateChange);
} }
isDm(): boolean {
return true;
}
async activate(): Promise<void> { async activate(): Promise<void> {
if (this.dmData && !this.messagesLoaded) { if (this.dmData && !this.messagesLoaded) {
await this.loadMessages(); await this.loadMessages();
+1
View File
@@ -49,6 +49,7 @@ export abstract class MessagePanel {
abstract deactivate(): void; abstract deactivate(): void;
abstract loadMessages(): Promise<void>; abstract loadMessages(): Promise<void>;
abstract sendMessage(content: string): Promise<void>; abstract sendMessage(content: string): Promise<void>;
abstract isDm(): boolean;
// Common methods // Common methods
protected updateState(updates: Partial<MessagePanelState>): void { protected updateState(updates: Partial<MessagePanelState>): void {
@@ -23,6 +23,10 @@ export class PublicChatPanel extends MessagePanel {
}); });
} }
isDm(): boolean {
return false;
}
async activate(): Promise<void> { async activate(): Promise<void> {
if (!this.messagesLoaded) { if (!this.messagesLoaded) {
await this.loadMessages(); await this.loadMessages();