mirror of
https://github.com/fromchat-messenger/web.git
synced 2026-09-22 19:15:08 +03:00
Hide the profile picture and username in DMs
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user