diff --git a/.changeset/feat-large-room-call-button.md b/.changeset/feat-large-room-call-button.md new file mode 100644 index 00000000..e28ce21e --- /dev/null +++ b/.changeset/feat-large-room-call-button.md @@ -0,0 +1,5 @@ +--- +default: minor +--- + +Added a toggle to enable/disable showing the call button for large (> 10 member) rooms. diff --git a/src/app/features/room/RoomViewHeader.tsx b/src/app/features/room/RoomViewHeader.tsx index a73df787..a358e30b 100644 --- a/src/app/features/room/RoomViewHeader.tsx +++ b/src/app/features/room/RoomViewHeader.tsx @@ -361,6 +361,8 @@ export function RoomViewHeader({ callView }: { callView?: boolean }) { .getLiveTimeline() .getState(EventTimeline.FORWARDS) ?.maySendStateEvent('org.matrix.msc3401.call.member', mx.getUserId()!); + const [alwaysShowCallButton] = useSetting(settingsAtom, 'alwaysShowCallButton'); + const shouldShowCallButton = alwaysShowCallButton || room.getJoinedMemberCount() <= 10; const encryptionEvent = useStateEvent(room, StateEvent.RoomEncryption); const encryptedRoom = !!encryptionEvent; @@ -708,7 +710,7 @@ export function RoomViewHeader({ callView }: { callView?: boolean }) { )} - {canUseCalls && } + {canUseCalls && shouldShowCallButton && } + Calls + + + } + /> + + + ); +} + function Messages() { const [hideMembershipEvents, setHideMembershipEvents] = useSetting( settingsAtom, @@ -1078,6 +1103,7 @@ export function General({ requestClose }: GeneralProps) { + diff --git a/src/app/state/settings.ts b/src/app/state/settings.ts index ee09b3e2..350f8e12 100644 --- a/src/app/state/settings.ts +++ b/src/app/state/settings.ts @@ -96,6 +96,7 @@ export interface Settings { autoplayStickers: boolean; autoplayEmojis: boolean; saveStickerEmojiBandwidth: boolean; + alwaysShowCallButton: boolean; // furry stuff renderAnimals: boolean; @@ -176,6 +177,7 @@ const defaultSettings: Settings = { autoplayStickers: true, autoplayEmojis: true, saveStickerEmojiBandwidth: false, + alwaysShowCallButton: false, // furry stuff renderAnimals: true,