fix(threads): drop the fallback root quote on every thread reply; add Threads + Widgets to the mobile room menu (#165, #211)
Inside the thread panel each reply rendered a 'Thread ↩ <root author> <root text…>' quote because the spec's fallback reply relation (is_falling_back + m.in_reply_to root) was treated like a real reply — noise on every row when the root is already pinned at the top. Genuine reply-to-a-reply quotes are kept. The Threads list and Widgets panel had desktop-only header buttons and no way to open them on a phone; both are now in the mobile ⋮ menu next to Members / Media Gallery. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
This commit is contained in:
@@ -107,6 +107,10 @@ const RoomMenu = forwardRef<HTMLDivElement, RoomMenuProps>(
|
||||
const [reportRoomOpen, setReportRoomOpen] = useState(false);
|
||||
const [bookmarksOpen, setBookmarksOpen] = useAtom(bookmarksPanelAtom);
|
||||
const [mobileMembers, setMobileMembers] = useAtom(mobileMembersPanelAtom);
|
||||
// [Gitea #165 / #211] Threads list and Widgets had desktop-only header
|
||||
// buttons and no mobile entry point at all.
|
||||
const [threadsList, setThreadsList] = useAtom(threadsListAtom);
|
||||
const [widgets, setWidgets] = useAtom(widgetsPanelAtom);
|
||||
|
||||
const handleMarkAsRead = () => {
|
||||
markAsRead(mx, room.roomId, hideActivity);
|
||||
@@ -226,6 +230,38 @@ const RoomMenu = forwardRef<HTMLDivElement, RoomMenuProps>(
|
||||
</Text>
|
||||
</MenuItem>
|
||||
)}
|
||||
{screenSize === ScreenSize.Mobile && (
|
||||
<MenuItem
|
||||
onClick={() => {
|
||||
setThreadsList(!threadsList);
|
||||
requestClose();
|
||||
}}
|
||||
size="300"
|
||||
after={<Icon size="100" src={Icons.Thread} filled={threadsList} />}
|
||||
radii="300"
|
||||
aria-pressed={threadsList}
|
||||
>
|
||||
<Text style={{ flexGrow: 1 }} as="span" size="T300" truncate>
|
||||
Threads
|
||||
</Text>
|
||||
</MenuItem>
|
||||
)}
|
||||
{screenSize === ScreenSize.Mobile && (
|
||||
<MenuItem
|
||||
onClick={() => {
|
||||
setWidgets(!widgets);
|
||||
requestClose();
|
||||
}}
|
||||
size="300"
|
||||
after={<Icon size="100" src={Icons.Category} filled={widgets} />}
|
||||
radii="300"
|
||||
aria-pressed={widgets}
|
||||
>
|
||||
<Text style={{ flexGrow: 1 }} as="span" size="T300" truncate>
|
||||
Widgets
|
||||
</Text>
|
||||
</MenuItem>
|
||||
)}
|
||||
{!isServerNotice && (
|
||||
<MenuItem
|
||||
onClick={handleInvite}
|
||||
|
||||
Reference in New Issue
Block a user