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

Commit cc3ace2

Browse files
authored
Hide sticker picker for local rooms (#9174) (#9180)
* Disable stickers for local rooms * Use prop
1 parent dcc12a1 commit cc3ace2

File tree

2 files changed

+53
-30
lines changed

2 files changed

+53
-30
lines changed

src/components/views/rooms/MessageComposer.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ import { SettingUpdatedPayload } from "../../../dispatcher/payloads/SettingUpdat
5151
import MessageComposerButtons from './MessageComposerButtons';
5252
import { ButtonEvent } from '../elements/AccessibleButton';
5353
import { ViewRoomPayload } from "../../../dispatcher/payloads/ViewRoomPayload";
54+
import { isLocalRoom } from '../../../utils/localRoom/isLocalRoom';
5455

5556
let instanceCount = 0;
5657

@@ -350,6 +351,10 @@ export default class MessageComposer extends React.Component<IProps, IState> {
350351
});
351352
};
352353

354+
private get showStickersButton(): boolean {
355+
return this.state.showStickersButton && !isLocalRoom(this.props.room);
356+
}
357+
353358
public render() {
354359
const controls = [
355360
this.props.e2eStatus ?
@@ -475,7 +480,7 @@ export default class MessageComposer extends React.Component<IProps, IState> {
475480
setStickerPickerOpen={this.setStickerPickerOpen}
476481
showLocationButton={!window.electron}
477482
showPollsButton={this.state.showPollsButton}
478-
showStickersButton={this.state.showStickersButton}
483+
showStickersButton={this.showStickersButton}
479484
toggleButtonMenu={this.toggleButtonMenu}
480485
/> }
481486
{ showSendButton && (

test/components/views/rooms/MessageComposer-test.tsx

Lines changed: 47 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -28,48 +28,66 @@ import RoomContext from "../../../../src/contexts/RoomContext";
2828
import { IRoomState } from "../../../../src/components/structures/RoomView";
2929
import ResizeNotifier from "../../../../src/utils/ResizeNotifier";
3030
import { RoomPermalinkCreator } from "../../../../src/utils/permalinks/Permalinks";
31+
import { LocalRoom } from "../../../../src/models/LocalRoom";
32+
import MessageComposerButtons from "../../../../src/components/views/rooms/MessageComposerButtons";
3133

3234
describe("MessageComposer", () => {
3335
stubClient();
3436
const cli = createTestClient();
35-
const room = mkStubRoom("!roomId:server", "Room 1", cli);
3637

37-
it("Renders a SendMessageComposer and MessageComposerButtons by default", () => {
38-
const wrapper = wrapAndRender({ room });
39-
40-
expect(wrapper.find("SendMessageComposer")).toHaveLength(1);
41-
expect(wrapper.find("MessageComposerButtons")).toHaveLength(1);
38+
describe("for a Room", () => {
39+
const room = mkStubRoom("!roomId:server", "Room 1", cli);
40+
41+
it("Renders a SendMessageComposer and MessageComposerButtons by default", () => {
42+
const wrapper = wrapAndRender({ room });
43+
44+
expect(wrapper.find("SendMessageComposer")).toHaveLength(1);
45+
expect(wrapper.find("MessageComposerButtons")).toHaveLength(1);
46+
});
47+
48+
it("Does not render a SendMessageComposer or MessageComposerButtons when user has no permission", () => {
49+
const wrapper = wrapAndRender({ room }, false);
50+
51+
expect(wrapper.find("SendMessageComposer")).toHaveLength(0);
52+
expect(wrapper.find("MessageComposerButtons")).toHaveLength(0);
53+
expect(wrapper.find(".mx_MessageComposer_noperm_error")).toHaveLength(1);
54+
});
55+
56+
it("Does not render a SendMessageComposer or MessageComposerButtons when room is tombstoned", () => {
57+
const wrapper = wrapAndRender({ room }, true, mkEvent({
58+
event: true,
59+
type: "m.room.tombstone",
60+
room: room.roomId,
61+
user: "@user1:server",
62+
skey: "",
63+
content: {},
64+
ts: Date.now(),
65+
}));
66+
67+
expect(wrapper.find("SendMessageComposer")).toHaveLength(0);
68+
expect(wrapper.find("MessageComposerButtons")).toHaveLength(0);
69+
expect(wrapper.find(".mx_MessageComposer_roomReplaced_header")).toHaveLength(1);
70+
});
4271
});
4372

44-
it("Does not render a SendMessageComposer or MessageComposerButtons when user has no permission", () => {
45-
const wrapper = wrapAndRender({ room }, false);
46-
47-
expect(wrapper.find("SendMessageComposer")).toHaveLength(0);
48-
expect(wrapper.find("MessageComposerButtons")).toHaveLength(0);
49-
expect(wrapper.find(".mx_MessageComposer_noperm_error")).toHaveLength(1);
50-
});
73+
describe("for a LocalRoom", () => {
74+
const localRoom = new LocalRoom("!room:example.com", cli, cli.getUserId());
5175

52-
it("Does not render a SendMessageComposer or MessageComposerButtons when room is tombstoned", () => {
53-
const wrapper = wrapAndRender({ room }, true, mkEvent({
54-
event: true,
55-
type: "m.room.tombstone",
56-
room: room.roomId,
57-
user: "@user1:server",
58-
skey: "",
59-
content: {},
60-
ts: Date.now(),
61-
}));
62-
63-
expect(wrapper.find("SendMessageComposer")).toHaveLength(0);
64-
expect(wrapper.find("MessageComposerButtons")).toHaveLength(0);
65-
expect(wrapper.find(".mx_MessageComposer_roomReplaced_header")).toHaveLength(1);
76+
it("should pass the sticker picker disabled prop", () => {
77+
const wrapper = wrapAndRender({ room: localRoom });
78+
expect(wrapper.find(MessageComposerButtons).props().showStickersButton).toBe(false);
79+
});
6680
});
6781
});
6882

69-
function wrapAndRender(props = {}, canSendMessages = true, tombstone?: MatrixEvent): ReactWrapper {
83+
function wrapAndRender(
84+
props: Partial<React.ComponentProps<typeof MessageComposer>> = {},
85+
canSendMessages = true,
86+
tombstone?: MatrixEvent,
87+
): ReactWrapper {
7088
const mockClient = MatrixClientPeg.get();
7189
const roomId = "myroomid";
72-
const room: any = {
90+
const room: any = props.room || {
7391
currentState: undefined,
7492
roomId,
7593
client: mockClient,

0 commit comments

Comments
 (0)