Make "View Source" a developer tool (#2368)

This commit is contained in:
Gimle Larpes 2025-06-28 12:35:59 +02:00 committed by GitHub
parent 05e83eabef
commit 461e730c34
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 28 additions and 2 deletions

View file

@ -448,6 +448,7 @@ export function RoomTimeline({
const [encUrlPreview] = useSetting(settingsAtom, 'encUrlPreview'); const [encUrlPreview] = useSetting(settingsAtom, 'encUrlPreview');
const showUrlPreview = room.hasEncryptionStateEvent() ? encUrlPreview : urlPreview; const showUrlPreview = room.hasEncryptionStateEvent() ? encUrlPreview : urlPreview;
const [showHiddenEvents] = useSetting(settingsAtom, 'showHiddenEvents'); const [showHiddenEvents] = useSetting(settingsAtom, 'showHiddenEvents');
const [showDeveloperTools] = useSetting(settingsAtom, 'developerTools');
const ignoredUsersList = useIgnoredUsers(); const ignoredUsersList = useIgnoredUsers();
const ignoredUsersSet = useMemo(() => new Set(ignoredUsersList), [ignoredUsersList]); const ignoredUsersSet = useMemo(() => new Set(ignoredUsersList), [ignoredUsersList]);
@ -1065,6 +1066,7 @@ export function RoomTimeline({
) )
} }
hideReadReceipts={hideActivity} hideReadReceipts={hideActivity}
showDeveloperTools={showDeveloperTools}
powerLevelTag={getPowerLevelTag(senderPowerLevel)} powerLevelTag={getPowerLevelTag(senderPowerLevel)}
accessibleTagColors={accessibleTagColors} accessibleTagColors={accessibleTagColors}
legacyUsernameColor={legacyUsernameColor || direct} legacyUsernameColor={legacyUsernameColor || direct}
@ -1146,6 +1148,7 @@ export function RoomTimeline({
) )
} }
hideReadReceipts={hideActivity} hideReadReceipts={hideActivity}
showDeveloperTools={showDeveloperTools}
powerLevelTag={getPowerLevelTag(senderPowerLevel)} powerLevelTag={getPowerLevelTag(senderPowerLevel)}
accessibleTagColors={accessibleTagColors} accessibleTagColors={accessibleTagColors}
legacyUsernameColor={legacyUsernameColor || direct} legacyUsernameColor={legacyUsernameColor || direct}
@ -1247,6 +1250,7 @@ export function RoomTimeline({
) )
} }
hideReadReceipts={hideActivity} hideReadReceipts={hideActivity}
showDeveloperTools={showDeveloperTools}
powerLevelTag={getPowerLevelTag(senderPowerLevel)} powerLevelTag={getPowerLevelTag(senderPowerLevel)}
accessibleTagColors={accessibleTagColors} accessibleTagColors={accessibleTagColors}
legacyUsernameColor={legacyUsernameColor || direct} legacyUsernameColor={legacyUsernameColor || direct}
@ -1292,6 +1296,7 @@ export function RoomTimeline({
messageSpacing={messageSpacing} messageSpacing={messageSpacing}
canDelete={canRedact || mEvent.getSender() === mx.getUserId()} canDelete={canRedact || mEvent.getSender() === mx.getUserId()}
hideReadReceipts={hideActivity} hideReadReceipts={hideActivity}
showDeveloperTools={showDeveloperTools}
> >
<EventContent <EventContent
messageLayout={messageLayout} messageLayout={messageLayout}
@ -1328,6 +1333,7 @@ export function RoomTimeline({
messageSpacing={messageSpacing} messageSpacing={messageSpacing}
canDelete={canRedact || mEvent.getSender() === mx.getUserId()} canDelete={canRedact || mEvent.getSender() === mx.getUserId()}
hideReadReceipts={hideActivity} hideReadReceipts={hideActivity}
showDeveloperTools={showDeveloperTools}
> >
<EventContent <EventContent
messageLayout={messageLayout} messageLayout={messageLayout}
@ -1365,6 +1371,7 @@ export function RoomTimeline({
messageSpacing={messageSpacing} messageSpacing={messageSpacing}
canDelete={canRedact || mEvent.getSender() === mx.getUserId()} canDelete={canRedact || mEvent.getSender() === mx.getUserId()}
hideReadReceipts={hideActivity} hideReadReceipts={hideActivity}
showDeveloperTools={showDeveloperTools}
> >
<EventContent <EventContent
messageLayout={messageLayout} messageLayout={messageLayout}
@ -1402,6 +1409,7 @@ export function RoomTimeline({
messageSpacing={messageSpacing} messageSpacing={messageSpacing}
canDelete={canRedact || mEvent.getSender() === mx.getUserId()} canDelete={canRedact || mEvent.getSender() === mx.getUserId()}
hideReadReceipts={hideActivity} hideReadReceipts={hideActivity}
showDeveloperTools={showDeveloperTools}
> >
<EventContent <EventContent
messageLayout={messageLayout} messageLayout={messageLayout}
@ -1441,6 +1449,7 @@ export function RoomTimeline({
messageSpacing={messageSpacing} messageSpacing={messageSpacing}
canDelete={canRedact || mEvent.getSender() === mx.getUserId()} canDelete={canRedact || mEvent.getSender() === mx.getUserId()}
hideReadReceipts={hideActivity} hideReadReceipts={hideActivity}
showDeveloperTools={showDeveloperTools}
> >
<EventContent <EventContent
messageLayout={messageLayout} messageLayout={messageLayout}
@ -1485,6 +1494,7 @@ export function RoomTimeline({
messageSpacing={messageSpacing} messageSpacing={messageSpacing}
canDelete={canRedact || mEvent.getSender() === mx.getUserId()} canDelete={canRedact || mEvent.getSender() === mx.getUserId()}
hideReadReceipts={hideActivity} hideReadReceipts={hideActivity}
showDeveloperTools={showDeveloperTools}
> >
<EventContent <EventContent
messageLayout={messageLayout} messageLayout={messageLayout}

View file

@ -675,6 +675,7 @@ export type MessageProps = {
reply?: ReactNode; reply?: ReactNode;
reactions?: ReactNode; reactions?: ReactNode;
hideReadReceipts?: boolean; hideReadReceipts?: boolean;
showDeveloperTools?: boolean;
powerLevelTag?: PowerLevelTag; powerLevelTag?: PowerLevelTag;
accessibleTagColors?: Map<string, string>; accessibleTagColors?: Map<string, string>;
legacyUsernameColor?: boolean; legacyUsernameColor?: boolean;
@ -703,6 +704,7 @@ export const Message = as<'div', MessageProps>(
reply, reply,
reactions, reactions,
hideReadReceipts, hideReadReceipts,
showDeveloperTools,
powerLevelTag, powerLevelTag,
accessibleTagColors, accessibleTagColors,
legacyUsernameColor, legacyUsernameColor,
@ -1026,7 +1028,13 @@ export const Message = as<'div', MessageProps>(
onClose={closeMenu} onClose={closeMenu}
/> />
)} )}
<MessageSourceCodeItem room={room} mEvent={mEvent} onClose={closeMenu} /> {showDeveloperTools && (
<MessageSourceCodeItem
room={room}
mEvent={mEvent}
onClose={closeMenu}
/>
)}
<MessageCopyLinkItem room={room} mEvent={mEvent} onClose={closeMenu} /> <MessageCopyLinkItem room={room} mEvent={mEvent} onClose={closeMenu} />
{canPinEvent && ( {canPinEvent && (
<MessagePinItem room={room} mEvent={mEvent} onClose={closeMenu} /> <MessagePinItem room={room} mEvent={mEvent} onClose={closeMenu} />
@ -1101,6 +1109,7 @@ export type EventProps = {
canDelete?: boolean; canDelete?: boolean;
messageSpacing: MessageSpacing; messageSpacing: MessageSpacing;
hideReadReceipts?: boolean; hideReadReceipts?: boolean;
showDeveloperTools?: boolean;
}; };
export const Event = as<'div', EventProps>( export const Event = as<'div', EventProps>(
( (
@ -1112,6 +1121,7 @@ export const Event = as<'div', EventProps>(
canDelete, canDelete,
messageSpacing, messageSpacing,
hideReadReceipts, hideReadReceipts,
showDeveloperTools,
children, children,
...props ...props
}, },
@ -1188,7 +1198,13 @@ export const Event = as<'div', EventProps>(
onClose={closeMenu} onClose={closeMenu}
/> />
)} )}
<MessageSourceCodeItem room={room} mEvent={mEvent} onClose={closeMenu} /> {showDeveloperTools && (
<MessageSourceCodeItem
room={room}
mEvent={mEvent}
onClose={closeMenu}
/>
)}
<MessageCopyLinkItem room={room} mEvent={mEvent} onClose={closeMenu} /> <MessageCopyLinkItem room={room} mEvent={mEvent} onClose={closeMenu} />
</Box> </Box>
{((!mEvent.isRedacted() && canDelete && !stateEvent) || {((!mEvent.isRedacted() && canDelete && !stateEvent) ||