/* Copyright 2024 New Vector Ltd. Copyright 2021 The Matrix.org Foundation C.I.C. SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ import React, { ChangeEvent, useRef, useState } from "react"; import { _t } from "../../../languageHandler"; import AccessibleButton from "../elements/AccessibleButton"; import Field from "../elements/Field"; import { chromeFileInputFix } from "../../../utils/BrowserWorkarounds"; interface IProps { avatarUrl?: string; avatarDisabled?: boolean; name: string; nameDisabled?: boolean; topic?: string; topicDisabled?: boolean; setAvatar(avatar?: File): void; setName(name: string): void; setTopic(topic: string): void; } export const SpaceAvatar: React.FC> = ({ avatarUrl, avatarDisabled = false, setAvatar, }) => { const avatarUploadRef = useRef(null); const [avatar, setAvatarDataUrl] = useState(avatarUrl); // avatar data url cache let avatarSection; if (avatarDisabled) { if (avatar) { avatarSection = ; } else { avatarSection =
; } } else { if (avatar) { avatarSection = ( avatarUploadRef.current?.click()} element="img" src={avatar} alt="" /> { if (avatarUploadRef.current) avatarUploadRef.current.value = ""; setAvatarDataUrl(undefined); setAvatar(undefined); }} kind="link" className="mx_SpaceBasicSettings_avatar_remove" aria-label={_t("room_settings|delete_avatar_label")} > {_t("action|delete")} ); } else { avatarSection = ( avatarUploadRef.current?.click()} alt="" /> avatarUploadRef.current?.click()} kind="link" aria-label={_t("room_settings|upload_avatar_label")} > {_t("action|upload")} ); } } return (
{avatarSection} { if (!e.target.files?.length) return; const file = e.target.files[0]; setAvatar(file); const reader = new FileReader(); reader.onload = (ev) => { setAvatarDataUrl(ev.target?.result as string); }; reader.readAsDataURL(file); }} accept="image/*" />
); }; const SpaceBasicSettings: React.FC = ({ avatarUrl, avatarDisabled = false, setAvatar, name = "", nameDisabled = false, setName, topic = "", topicDisabled = false, setTopic, }) => { return (
) => setName(ev.target.value)} disabled={nameDisabled} /> ) => setTopic(ev.target.value)} rows={3} disabled={topicDisabled} />
); }; export default SpaceBasicSettings;