UNPKG

matrix-react-sdk

Version:
103 lines (99 loc) 17.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.AVATAR_SIZE = void 0; var _classnames = _interopRequireDefault(require("classnames")); var _matrix = require("matrix-js-sdk/src/matrix"); var _react = _interopRequireWildcard(require("react")); var _MatrixClientContext = _interopRequireDefault(require("../../../contexts/MatrixClientContext")); var _RoomContext = _interopRequireDefault(require("../../../contexts/RoomContext")); var _useTimeout = require("../../../hooks/useTimeout"); var _BrowserWorkarounds = require("../../../utils/BrowserWorkarounds"); var _AccessibleButton = _interopRequireDefault(require("./AccessibleButton")); var _Spinner = _interopRequireDefault(require("./Spinner")); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } /* Copyright 2024 New Vector Ltd. Copyright 2020 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. */ const AVATAR_SIZE = exports.AVATAR_SIZE = "52px"; const MiniAvatarUploader = ({ hasAvatar, hasAvatarLabel, noAvatarLabel, setAvatarUrl, isUserAvatar, children, onClick }) => { const cli = (0, _react.useContext)(_MatrixClientContext.default); const [busy, setBusy] = (0, _react.useState)(false); const [hover, setHover] = (0, _react.useState)(false); const [show, setShow] = (0, _react.useState)(false); (0, _useTimeout.useTimeout)(() => { setShow(true); }, 3000); // show after 3 seconds (0, _useTimeout.useTimeout)(() => { setShow(false); }, 13000); // hide after being shown for 10 seconds const uploadRef = (0, _react.useRef)(null); const label = hasAvatar || busy ? hasAvatarLabel : noAvatarLabel; const { room } = (0, _react.useContext)(_RoomContext.default); const canSetAvatar = isUserAvatar || room?.currentState?.maySendStateEvent(_matrix.EventType.RoomAvatar, cli.getSafeUserId()); if (!canSetAvatar) return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children); const visible = !!label && (hover || show); return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("input", { type: "file", ref: uploadRef, className: "mx_MiniAvatarUploader_input", onClick: ev => { (0, _BrowserWorkarounds.chromeFileInputFix)(ev); onClick?.(ev); }, onChange: async ev => { if (!ev.target.files?.length) return; setBusy(true); const file = ev.target.files[0]; const { content_uri: uri } = await cli.uploadContent(file); await setAvatarUrl(uri); setBusy(false); }, accept: "image/*" }), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { className: (0, _classnames.default)("mx_MiniAvatarUploader", { mx_MiniAvatarUploader_busy: busy, mx_MiniAvatarUploader_hasAvatar: hasAvatar }), disabled: busy, onClick: () => { uploadRef.current?.click(); }, onMouseOver: () => setHover(true), onMouseLeave: () => setHover(false) }, children, /*#__PURE__*/_react.default.createElement("div", { className: "mx_MiniAvatarUploader_indicator" }, busy ? /*#__PURE__*/_react.default.createElement(_Spinner.default, { w: 20, h: 20 }) : /*#__PURE__*/_react.default.createElement("div", { className: "mx_MiniAvatarUploader_cameraIcon" })), /*#__PURE__*/_react.default.createElement("div", { className: (0, _classnames.default)("mx_Tooltip", { mx_Tooltip_visible: visible, mx_Tooltip_invisible: !visible }) }, /*#__PURE__*/_react.default.createElement("div", { className: "mx_Tooltip_chevron" }), label))); }; var _default = exports.default = MiniAvatarUploader; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX21hdHJpeCIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX01hdHJpeENsaWVudENvbnRleHQiLCJfUm9vbUNvbnRleHQiLCJfdXNlVGltZW91dCIsIl9Ccm93c2VyV29ya2Fyb3VuZHMiLCJfQWNjZXNzaWJsZUJ1dHRvbiIsIl9TcGlubmVyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiQVZBVEFSX1NJWkUiLCJleHBvcnRzIiwiTWluaUF2YXRhclVwbG9hZGVyIiwiaGFzQXZhdGFyIiwiaGFzQXZhdGFyTGFiZWwiLCJub0F2YXRhckxhYmVsIiwic2V0QXZhdGFyVXJsIiwiaXNVc2VyQXZhdGFyIiwiY2hpbGRyZW4iLCJvbkNsaWNrIiwiY2xpIiwidXNlQ29udGV4dCIsIk1hdHJpeENsaWVudENvbnRleHQiLCJidXN5Iiwic2V0QnVzeSIsInVzZVN0YXRlIiwiaG92ZXIiLCJzZXRIb3ZlciIsInNob3ciLCJzZXRTaG93IiwidXNlVGltZW91dCIsInVwbG9hZFJlZiIsInVzZVJlZiIsImxhYmVsIiwicm9vbSIsIlJvb21Db250ZXh0IiwiY2FuU2V0QXZhdGFyIiwiY3VycmVudFN0YXRlIiwibWF5U2VuZFN0YXRlRXZlbnQiLCJFdmVudFR5cGUiLCJSb29tQXZhdGFyIiwiZ2V0U2FmZVVzZXJJZCIsImNyZWF0ZUVsZW1lbnQiLCJGcmFnbWVudCIsInZpc2libGUiLCJ0eXBlIiwicmVmIiwiY2xhc3NOYW1lIiwiZXYiLCJjaHJvbWVGaWxlSW5wdXRGaXgiLCJvbkNoYW5nZSIsInRhcmdldCIsImZpbGVzIiwibGVuZ3RoIiwiZmlsZSIsImNvbnRlbnRfdXJpIiwidXJpIiwidXBsb2FkQ29udGVudCIsImFjY2VwdCIsImNsYXNzTmFtZXMiLCJteF9NaW5pQXZhdGFyVXBsb2FkZXJfYnVzeSIsIm14X01pbmlBdmF0YXJVcGxvYWRlcl9oYXNBdmF0YXIiLCJkaXNhYmxlZCIsImN1cnJlbnQiLCJjbGljayIsIm9uTW91c2VPdmVyIiwib25Nb3VzZUxlYXZlIiwidyIsImgiLCJteF9Ub29sdGlwX3Zpc2libGUiLCJteF9Ub29sdGlwX2ludmlzaWJsZSIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdmlld3MvZWxlbWVudHMvTWluaUF2YXRhclVwbG9hZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuaW1wb3J0IHsgRXZlbnRUeXBlIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQsIHVzZVJlZiwgdXNlU3RhdGUsIE1vdXNlRXZlbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgTWF0cml4Q2xpZW50Q29udGV4dCBmcm9tIFwiLi4vLi4vLi4vY29udGV4dHMvTWF0cml4Q2xpZW50Q29udGV4dFwiO1xuaW1wb3J0IFJvb21Db250ZXh0IGZyb20gXCIuLi8uLi8uLi9jb250ZXh0cy9Sb29tQ29udGV4dFwiO1xuaW1wb3J0IHsgdXNlVGltZW91dCB9IGZyb20gXCIuLi8uLi8uLi9ob29rcy91c2VUaW1lb3V0XCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVkU3RyaW5nIH0gZnJvbSBcIi4uLy4uLy4uL2xhbmd1YWdlSGFuZGxlclwiO1xuaW1wb3J0IHsgY2hyb21lRmlsZUlucHV0Rml4IH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL0Jyb3dzZXJXb3JrYXJvdW5kc1wiO1xuaW1wb3J0IEFjY2Vzc2libGVCdXR0b24gZnJvbSBcIi4vQWNjZXNzaWJsZUJ1dHRvblwiO1xuaW1wb3J0IFNwaW5uZXIgZnJvbSBcIi4vU3Bpbm5lclwiO1xuXG5leHBvcnQgY29uc3QgQVZBVEFSX1NJWkUgPSBcIjUycHhcIjtcblxuaW50ZXJmYWNlIElQcm9wcyB7XG4gICAgaGFzQXZhdGFyOiBib29sZWFuO1xuICAgIG5vQXZhdGFyTGFiZWw/OiBUcmFuc2xhdGVkU3RyaW5nO1xuICAgIGhhc0F2YXRhckxhYmVsPzogVHJhbnNsYXRlZFN0cmluZztcbiAgICBzZXRBdmF0YXJVcmwodXJsOiBzdHJpbmcpOiBQcm9taXNlPHVua25vd24+O1xuICAgIGlzVXNlckF2YXRhcj86IGJvb2xlYW47XG4gICAgb25DbGljaz8oZXY6IE1vdXNlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pOiB2b2lkO1xuICAgIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xufVxuXG5jb25zdCBNaW5pQXZhdGFyVXBsb2FkZXI6IFJlYWN0LkZDPElQcm9wcz4gPSAoe1xuICAgIGhhc0F2YXRhcixcbiAgICBoYXNBdmF0YXJMYWJlbCxcbiAgICBub0F2YXRhckxhYmVsLFxuICAgIHNldEF2YXRhclVybCxcbiAgICBpc1VzZXJBdmF0YXIsXG4gICAgY2hpbGRyZW4sXG4gICAgb25DbGljayxcbn0pID0+IHtcbiAgICBjb25zdCBjbGkgPSB1c2VDb250ZXh0KE1hdHJpeENsaWVudENvbnRleHQpO1xuICAgIGNvbnN0IFtidXN5LCBzZXRCdXN5XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaG92ZXIsIHNldEhvdmVyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc2hvdywgc2V0U2hvd10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgICB1c2VUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0U2hvdyh0cnVlKTtcbiAgICB9LCAzMDAwKTsgLy8gc2hvdyBhZnRlciAzIHNlY29uZHNcbiAgICB1c2VUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0U2hvdyhmYWxzZSk7XG4gICAgfSwgMTMwMDApOyAvLyBoaWRlIGFmdGVyIGJlaW5nIHNob3duIGZvciAxMCBzZWNvbmRzXG5cbiAgICBjb25zdCB1cGxvYWRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG5cbiAgICBjb25zdCBsYWJlbCA9IGhhc0F2YXRhciB8fCBidXN5ID8gaGFzQXZhdGFyTGFiZWwgOiBub0F2YXRhckxhYmVsO1xuXG4gICAgY29uc3QgeyByb29tIH0gPSB1c2VDb250ZXh0KFJvb21Db250ZXh0KTtcbiAgICBjb25zdCBjYW5TZXRBdmF0YXIgPVxuICAgICAgICBpc1VzZXJBdmF0YXIgfHwgcm9vbT8uY3VycmVudFN0YXRlPy5tYXlTZW5kU3RhdGVFdmVudChFdmVudFR5cGUuUm9vbUF2YXRhciwgY2xpLmdldFNhZmVVc2VySWQoKSk7XG4gICAgaWYgKCFjYW5TZXRBdmF0YXIpIHJldHVybiA8UmVhY3QuRnJhZ21lbnQ+e2NoaWxkcmVufTwvUmVhY3QuRnJhZ21lbnQ+O1xuXG4gICAgY29uc3QgdmlzaWJsZSA9ICEhbGFiZWwgJiYgKGhvdmVyIHx8IHNob3cpO1xuICAgIHJldHVybiAoXG4gICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgICByZWY9e3VwbG9hZFJlZn1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteF9NaW5pQXZhdGFyVXBsb2FkZXJfaW5wdXRcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhldikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjaHJvbWVGaWxlSW5wdXRGaXgoZXYpO1xuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPy4oZXYpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e2FzeW5jIChldik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWV2LnRhcmdldC5maWxlcz8ubGVuZ3RoKSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIHNldEJ1c3kodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBldi50YXJnZXQuZmlsZXNbMF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY29udGVudF91cmk6IHVyaSB9ID0gYXdhaXQgY2xpLnVwbG9hZENvbnRlbnQoZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHNldEF2YXRhclVybCh1cmkpO1xuICAgICAgICAgICAgICAgICAgICBzZXRCdXN5KGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIGFjY2VwdD1cImltYWdlLypcIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPEFjY2Vzc2libGVCdXR0b25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXCJteF9NaW5pQXZhdGFyVXBsb2FkZXJcIiwge1xuICAgICAgICAgICAgICAgICAgICBteF9NaW5pQXZhdGFyVXBsb2FkZXJfYnVzeTogYnVzeSxcbiAgICAgICAgICAgICAgICAgICAgbXhfTWluaUF2YXRhclVwbG9hZGVyX2hhc0F2YXRhcjogaGFzQXZhdGFyLFxuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtidXN5fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkUmVmLmN1cnJlbnQ/LmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBvbk1vdXNlT3Zlcj17KCkgPT4gc2V0SG92ZXIodHJ1ZSl9XG4gICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXsoKSA9PiBzZXRIb3ZlcihmYWxzZSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9NaW5pQXZhdGFyVXBsb2FkZXJfaW5kaWNhdG9yXCI+XG4gICAgICAgICAgICAgICAgICAgIHtidXN5ID8gPFNwaW5uZXIgdz17MjB9IGg9ezIwfSAvPiA6IDxkaXYgY2xhc3NOYW1lPVwibXhfTWluaUF2YXRhclVwbG9hZGVyX2NhbWVyYUljb25cIiAvPn1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFwibXhfVG9vbHRpcFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBteF9Ub29sdGlwX3Zpc2libGU6IHZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBteF9Ub29sdGlwX2ludmlzaWJsZTogIXZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9Ub29sdGlwX2NoZXZyb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1pbmlB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