fix(desktop): key-based React remount for workspace switching (#415)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Wes
2026-04-28 12:13:12 -06:00
committed by GitHub
parent 1ba01965c0
commit 00a4aaba3d
14 changed files with 252 additions and 48 deletions

View File

@@ -19,10 +19,14 @@ type MessageThreadPanelProps = {
channelName: string;
currentPubkey?: string;
disabled?: boolean;
editTarget?: { author: string; body: string; id: string } | null;
isSending: boolean;
onCancelEdit?: () => void;
onCancelReply: () => void;
onClose: () => void;
onDelete?: (message: TimelineMessage) => void;
onEdit?: (message: TimelineMessage) => void;
onEditSave?: (content: string) => Promise<void>;
onExpandReplies: (message: TimelineMessage) => void;
onResetWidth: () => void;
onResizeStart: (event: React.PointerEvent<HTMLButtonElement>) => void;
@@ -66,10 +70,14 @@ export function MessageThreadPanel({
channelName,
currentPubkey,
disabled = false,
editTarget,
isSending,
onCancelEdit,
onCancelReply,
onClose,
onDelete,
onEdit,
onEditSave,
onExpandReplies,
onResetWidth,
onResizeStart,
@@ -179,6 +187,11 @@ export function MessageThreadPanel({
? onDelete
: undefined
}
onEdit={
onEdit && canManageMessage(threadHead, currentPubkey)
? onEdit
: undefined
}
onToggleReaction={onToggleReaction}
profiles={profiles}
/>
@@ -205,6 +218,12 @@ export function MessageThreadPanel({
? onDelete
: undefined
}
onEdit={
onEdit &&
canManageMessage(entry.message, currentPubkey)
? onEdit
: undefined
}
onReply={onSelectReplyTarget}
onToggleReaction={onToggleReaction}
profiles={profiles}
@@ -259,8 +278,11 @@ export function MessageThreadPanel({
channelName={channelName}
disabled={disabled || isSending || !channelId}
draftKey={`thread:${threadHead.id}`}
editTarget={editTarget}
isSending={isSending}
onCancelEdit={onCancelEdit}
onCancelReply={composerReplyTarget ? onCancelReply : undefined}
onEditSave={onEditSave}
onSend={onSend}
placeholder={`Reply in thread to ${threadHead.author}`}
replyTarget={composerReplyTarget}