Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Commit

Permalink
Revert "Move reaction message previews out of labs (#10601)"
Browse files Browse the repository at this point in the history
This reverts commit 4dd2145.
  • Loading branch information
t3chguy authored May 11, 2023
1 parent 82e3203 commit cb3145b
Show file tree
Hide file tree
Showing 8 changed files with 45 additions and 167 deletions.
4 changes: 2 additions & 2 deletions src/components/views/context_menus/MessageContextMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ interface IProps extends MenuProps {
// True if the menu is being used as a right click menu
rightClick?: boolean;
// The Relations model from the JS SDK for reactions to `mxEvent`
reactions?: Relations | null;
reactions?: Relations | null | undefined;
// A permalink to this event or an href of an anchor element the user has clicked
link?: string;

Expand Down Expand Up @@ -556,7 +556,7 @@ export default class MessageContextMenu extends React.Component<IProps, IState>
}

let jumpToRelatedEventButton: JSX.Element | undefined;
const relatedEventId = mxEvent.relationEventId;
const relatedEventId = mxEvent.getWireContent()?.["m.relates_to"]?.event_id;
if (relatedEventId && SettingsStore.getValue("developerMode")) {
jumpToRelatedEventButton = (
<IconizedContextMenuOption
Expand Down
6 changes: 4 additions & 2 deletions src/i18n/strings/en_EN.json
Original file line number Diff line number Diff line change
Expand Up @@ -916,8 +916,7 @@
"%(senderName)s is calling": "%(senderName)s is calling",
"* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s",
"%(senderName)s: %(message)s": "%(senderName)s: %(message)s",
"You reacted %(reaction)s to %(message)s": "You reacted %(reaction)s to %(message)s",
"%(sender)s reacted %(reaction)s to %(message)s": "%(sender)s reacted %(reaction)s to %(message)s",
"%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s",
"%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s",
"Threads": "Threads",
"Back to chat": "Back to chat",
Expand All @@ -939,6 +938,7 @@
"Voice & Video": "Voice & Video",
"Moderation": "Moderation",
"Analytics": "Analytics",
"Message Previews": "Message Previews",
"Themes": "Themes",
"Encryption": "Encryption",
"Experimental": "Experimental",
Expand All @@ -964,6 +964,8 @@
"New ways to ignore people": "New ways to ignore people",
"Currently experimental.": "Currently experimental.",
"Support adding custom themes": "Support adding custom themes",
"Show message previews for reactions in DMs": "Show message previews for reactions in DMs",
"Show message previews for reactions in all rooms": "Show message previews for reactions in all rooms",
"Offline encrypted messaging using dehydrated devices": "Offline encrypted messaging using dehydrated devices",
"Show current avatar and name for users in message history": "Show current avatar and name for users in message history",
"Show HTML representation of room topics": "Show HTML representation of room topics",
Expand Down
18 changes: 18 additions & 0 deletions src/settings/Settings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ export enum LabGroup {
VoiceAndVideo,
Moderation,
Analytics,
MessagePreviews,
Themes,
Encryption,
Experimental,
Expand All @@ -104,6 +105,7 @@ export const labGroupNames: Record<LabGroup, string> = {
[LabGroup.VoiceAndVideo]: _td("Voice & Video"),
[LabGroup.Moderation]: _td("Moderation"),
[LabGroup.Analytics]: _td("Analytics"),
[LabGroup.MessagePreviews]: _td("Message Previews"),
[LabGroup.Themes]: _td("Themes"),
[LabGroup.Encryption]: _td("Encryption"),
[LabGroup.Experimental]: _td("Experimental"),
Expand Down Expand Up @@ -296,6 +298,22 @@ export const SETTINGS: { [setting: string]: ISetting } = {
supportedLevels: LEVELS_FEATURE,
default: false,
},
"feature_roomlist_preview_reactions_dms": {
isFeature: true,
labsGroup: LabGroup.MessagePreviews,
displayName: _td("Show message previews for reactions in DMs"),
supportedLevels: LEVELS_FEATURE,
default: false,
// this option is a subset of `feature_roomlist_preview_reactions_all` so disable it when that one is enabled
controller: new IncompatibleController("feature_roomlist_preview_reactions_all"),
},
"feature_roomlist_preview_reactions_all": {
isFeature: true,
labsGroup: LabGroup.MessagePreviews,
displayName: _td("Show message previews for reactions in all rooms"),
supportedLevels: LEVELS_FEATURE,
default: false,
},
"feature_dehydration": {
isFeature: true,
labsGroup: LabGroup.Encryption,
Expand Down
38 changes: 18 additions & 20 deletions src/stores/room-list/previews/ReactionEventPreview.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,39 +18,37 @@ import { MatrixEvent } from "matrix-js-sdk/src/models/event";

import { IPreview } from "./IPreview";
import { TagID } from "../models";
import { getSenderName, isSelf } from "./utils";
import { getSenderName, isSelf, shouldPrefixMessagesIn } from "./utils";
import { _t } from "../../../languageHandler";
import { MatrixClientPeg } from "../../../MatrixClientPeg";
import { MessagePreviewStore } from "../MessagePreviewStore";
import SettingsStore from "../../../settings/SettingsStore";
import DMRoomMap from "../../../utils/DMRoomMap";

export class ReactionEventPreview implements IPreview {
public getTextFor(event: MatrixEvent, tagId?: TagID, isThread?: boolean): string | null {
const showDms = SettingsStore.getValue("feature_roomlist_preview_reactions_dms");
const showAll = SettingsStore.getValue("feature_roomlist_preview_reactions_all");

const roomId = event.getRoomId();
if (!roomId) return null; // not a room event

// If we're not showing all reactions, see if we're showing DMs instead
if (!showAll) {
// If we're not showing reactions on DMs, or we are and the room isn't a DM, skip
if (!(showDms && DMRoomMap.shared().getUserIdForRoomId(roomId))) {
return null;
}
}

const relation = event.getRelation();
if (!relation) return null; // invalid reaction (probably redacted)

const reaction = relation.key;
if (!reaction) return null; // invalid reaction (unknown format)

const cli = MatrixClientPeg.get();
const room = cli?.getRoom(roomId);
const relatedEvent = relation.event_id ? room?.findEventById(relation.event_id) : null;
if (!relatedEvent) return null;

const message = MessagePreviewStore.instance.generatePreviewForEvent(relatedEvent);
if (isSelf(event)) {
return _t("You reacted %(reaction)s to %(message)s", {
reaction,
message,
});
if (isThread || isSelf(event) || !shouldPrefixMessagesIn(roomId, tagId)) {
return reaction;
} else {
return _t("%(senderName)s: %(reaction)s", { senderName: getSenderName(event), reaction });
}

return _t("%(sender)s reacted %(reaction)s to %(message)s", {
sender: getSenderName(event),
reaction,
message,
});
}
}
4 changes: 2 additions & 2 deletions src/stores/room-list/previews/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import { MatrixClientPeg } from "../../../MatrixClientPeg";
import { DefaultTagID, TagID } from "../models";

export function isSelf(event: MatrixEvent): boolean {
const selfUserId = MatrixClientPeg.get().getSafeUserId();
const selfUserId = MatrixClientPeg.get().getUserId();
if (event.getType() === "m.room.member") {
return event.getStateKey() === selfUserId;
}
Expand All @@ -37,5 +37,5 @@ export function shouldPrefixMessagesIn(roomId: string, tagId?: TagID): boolean {
}

export function getSenderName(event: MatrixEvent): string {
return event.sender?.name ?? event.getSender() ?? "";
return event.sender ? event.sender.name : event.getSender() || "";
}
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ describe("<LabsUserSettingsTab />", () => {
const { container } = render(getComponent());

const labsSections = container.getElementsByClassName("mx_SettingsTab_section");
expect(labsSections).toHaveLength(11);
expect(labsSections).toHaveLength(12);
});

it("allow setting a labs flag which requires unstable support once support is confirmed", async () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import { makePollStartEvent } from "../../../test-utils";

jest.spyOn(MatrixClientPeg, "get").mockReturnValue({
getUserId: () => "@me:example.com",
getSafeUserId: () => "@me:example.com",
} as unknown as MatrixClient);

describe("PollStartEventPreview", () => {
Expand Down
139 changes: 0 additions & 139 deletions test/stores/room-list/previews/ReactionEventPreview-test.ts

This file was deleted.

0 comments on commit cb3145b

Please sign in to comment.