From 5454c2bfbe196129fc8ad6524f07f8b27829eea9 Mon Sep 17 00:00:00 2001 From: Half-Shot Date: Thu, 19 Jun 2025 14:29:02 +0100 Subject: [PATCH] Update RoomPublishSetting and SpaceSettingVisibilityTab to use SettingsToggleInput with a warning --- .../room_settings/RoomPublishSetting.tsx | 20 +++++++---- .../spaces/SpaceSettingsVisibilityTab.tsx | 36 ++++++++++--------- src/i18n/strings/en_EN.json | 7 ++-- 3 files changed, 38 insertions(+), 25 deletions(-) diff --git a/src/components/views/room_settings/RoomPublishSetting.tsx b/src/components/views/room_settings/RoomPublishSetting.tsx index 496678851f..a940e0591b 100644 --- a/src/components/views/room_settings/RoomPublishSetting.tsx +++ b/src/components/views/room_settings/RoomPublishSetting.tsx @@ -6,15 +6,16 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com Please see LICENSE files in the repository root for full details. */ -import React, { ChangeEventHandler } from "react"; +import React, { type ChangeEventHandler } from "react"; import { JoinRule, Visibility } from "matrix-js-sdk/src/matrix"; +import { SettingsToggleInput } from "@vector-im/compound-web"; import { _t } from "../../../languageHandler"; import { MatrixClientPeg } from "../../../MatrixClientPeg"; import DirectoryCustomisations from "../../../customisations/Directory"; import Modal from "../../../Modal"; import ErrorDialog from "../dialogs/ErrorDialog"; -import { SettingsToggleInput } from "@vector-im/compound-web"; +import { logger } from "matrix-js-sdk/src/logger"; interface IProps { roomId: string; @@ -50,10 +51,13 @@ export default class RoomPublishSetting extends React.PureComponent = ({ matrixClient: cli, space const userId = cli.getUserId()!; const joinRule = useRoomState(space, (state) => state.getJoinRule()); + const [guestAccessEnabled, setGuestAccessEnabled] = useLocalEcho( () => space.currentState.getStateEvents(EventType.RoomGuestAccess, "")?.getContent()?.guest_access === @@ -65,6 +66,10 @@ const SpaceSettingsVisibilityTab: React.FC = ({ matrixClient: cli, space ), () => setError(_t("room_settings|visibility|error_update_guest_access")), ); + const onGuestAccessEnabledChanged = useCallback>( + (e) => setGuestAccessEnabled(e.target.checked), + [setGuestAccessEnabled], + ); const [historyVisibility, setHistoryVisibility] = useLocalEcho( () => space.currentState.getStateEvents(EventType.RoomHistoryVisibility, "")?.getContent()?.history_visibility || @@ -104,17 +109,15 @@ const SpaceSettingsVisibilityTab: React.FC = ({ matrixClient: cli, space {showAdvancedSection && (
- -

- {_t("room_settings|visibility|guest_access_explainer")} -
- {_t("room_settings|visibility|guest_access_explainer_public_space")} -

)} @@ -157,19 +160,20 @@ const SpaceSettingsVisibilityTab: React.FC = ({ matrixClient: cli, space /> {advancedSection}
- { + { setHistoryVisibility( - checked ? HistoryVisibility.WorldReadable : HistoryVisibility.Shared, + evt.target.checked ? HistoryVisibility.WorldReadable : HistoryVisibility.Shared, ); }} + helpMessage={_t("room_settings|visibility|history_visibility_anyone_space_description")} disabled={!canSetHistoryVisibility} + disabledMessage={_t("room_settings|visibility|history_visibility_anyone_space_disabled")} label={_t("room_settings|visibility|history_visibility_anyone_space")} />

- {_t("room_settings|visibility|history_visibility_anyone_space_description")} -
{_t("room_settings|visibility|history_visibility_anyone_space_recommendation")} diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 56f22dc6d7..45a70b886f 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2281,6 +2281,8 @@ "no_aliases_space": "This space has no local addresses", "other_section": "Other", "publish_toggle": "Publish this room to the public in %(domain)s's room directory?", + "publish_warn_invite_only": "You cannot publish a room that is invite-only.", + "publish_warn_no_canonical_permission": "You must have permission to set the main address to publish this room.", "published_aliases_description": "To publish an address, it needs to be set as a local address first.", "published_aliases_explainer_room": "Published addresses can be used by anyone on any server to join your room.", "published_aliases_explainer_space": "Published addresses can be used by anyone on any server to join your space.", @@ -2431,11 +2433,12 @@ "error_failed_save": "Failed to update the visibility of this space", "error_update_guest_access": "Failed to update the guest access of this space", "error_update_history_visibility": "Failed to update the history visibility of this space", - "guest_access_explainer": "Guests can join a space without having an account.", - "guest_access_explainer_public_space": "This may be useful for public spaces.", + "guest_access_explainer": "Guests can join a space without having an account. This may be useful for public spaces.", "guest_access_label": "Enable guest access", + "guest_access_disabled": "You do not have permission to change guest access.", "history_visibility_anyone_space": "Preview Space", "history_visibility_anyone_space_description": "Allow people to preview your space before they join.", + "history_visibility_anyone_space_disabled":"You do not have permission to change history visibilty.", "history_visibility_anyone_space_recommendation": "Recommended for public spaces.", "title": "Visibility" },