Batch of views getting replaceableComponent decorators
This commit is contained in:
parent
c359dff738
commit
fc5b1ed9d6
41 changed files with 82 additions and 0 deletions
|
@ -21,6 +21,7 @@ import { CATEGORY_HEADER_HEIGHT, EMOJI_HEIGHT, EMOJIS_PER_ROW } from "./EmojiPic
|
||||||
import LazyRenderList from "../elements/LazyRenderList";
|
import LazyRenderList from "../elements/LazyRenderList";
|
||||||
import {DATA_BY_CATEGORY, IEmoji} from "../../../emoji";
|
import {DATA_BY_CATEGORY, IEmoji} from "../../../emoji";
|
||||||
import Emoji from './Emoji';
|
import Emoji from './Emoji';
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
const OVERFLOW_ROWS = 3;
|
const OVERFLOW_ROWS = 3;
|
||||||
|
|
||||||
|
@ -47,6 +48,7 @@ interface IProps {
|
||||||
onMouseLeave(emoji: IEmoji): void;
|
onMouseLeave(emoji: IEmoji): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@replaceableComponent("views.emojipicker.Category")
|
||||||
class Category extends React.PureComponent<IProps> {
|
class Category extends React.PureComponent<IProps> {
|
||||||
private renderEmojiRow = (rowIndex: number) => {
|
private renderEmojiRow = (rowIndex: number) => {
|
||||||
const { onClick, onMouseEnter, onMouseLeave, selectedEmojis, emojis } = this.props;
|
const { onClick, onMouseEnter, onMouseLeave, selectedEmojis, emojis } = this.props;
|
||||||
|
|
|
@ -19,6 +19,7 @@ import React from 'react';
|
||||||
|
|
||||||
import {MenuItem} from "../../structures/ContextMenu";
|
import {MenuItem} from "../../structures/ContextMenu";
|
||||||
import {IEmoji} from "../../../emoji";
|
import {IEmoji} from "../../../emoji";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
emoji: IEmoji;
|
emoji: IEmoji;
|
||||||
|
@ -28,6 +29,7 @@ interface IProps {
|
||||||
onMouseLeave(emoji: IEmoji): void;
|
onMouseLeave(emoji: IEmoji): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@replaceableComponent("views.emojipicker.Emoji")
|
||||||
class Emoji extends React.PureComponent<IProps> {
|
class Emoji extends React.PureComponent<IProps> {
|
||||||
render() {
|
render() {
|
||||||
const { onClick, onMouseEnter, onMouseLeave, emoji, selectedEmojis } = this.props;
|
const { onClick, onMouseEnter, onMouseLeave, emoji, selectedEmojis } = this.props;
|
||||||
|
|
|
@ -26,6 +26,7 @@ import Search from "./Search";
|
||||||
import Preview from "./Preview";
|
import Preview from "./Preview";
|
||||||
import QuickReactions from "./QuickReactions";
|
import QuickReactions from "./QuickReactions";
|
||||||
import Category, {ICategory, CategoryKey} from "./Category";
|
import Category, {ICategory, CategoryKey} from "./Category";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
export const CATEGORY_HEADER_HEIGHT = 22;
|
export const CATEGORY_HEADER_HEIGHT = 22;
|
||||||
export const EMOJI_HEIGHT = 37;
|
export const EMOJI_HEIGHT = 37;
|
||||||
|
@ -47,6 +48,7 @@ interface IState {
|
||||||
viewportHeight: number;
|
viewportHeight: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@replaceableComponent("views.emojipicker.EmojiPicker")
|
||||||
class EmojiPicker extends React.Component<IProps, IState> {
|
class EmojiPicker extends React.Component<IProps, IState> {
|
||||||
private readonly recentlyUsed: IEmoji[];
|
private readonly recentlyUsed: IEmoji[];
|
||||||
private readonly memoizedDataByCategory: Record<CategoryKey, IEmoji[]>;
|
private readonly memoizedDataByCategory: Record<CategoryKey, IEmoji[]>;
|
||||||
|
|
|
@ -21,12 +21,14 @@ import classNames from "classnames";
|
||||||
import {_t} from "../../../languageHandler";
|
import {_t} from "../../../languageHandler";
|
||||||
import {Key} from "../../../Keyboard";
|
import {Key} from "../../../Keyboard";
|
||||||
import {CategoryKey, ICategory} from "./Category";
|
import {CategoryKey, ICategory} from "./Category";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
categories: ICategory[];
|
categories: ICategory[];
|
||||||
onAnchorClick(id: CategoryKey): void
|
onAnchorClick(id: CategoryKey): void
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@replaceableComponent("views.emojipicker.Header")
|
||||||
class Header extends React.PureComponent<IProps> {
|
class Header extends React.PureComponent<IProps> {
|
||||||
private findNearestEnabled(index: number, delta: number) {
|
private findNearestEnabled(index: number, delta: number) {
|
||||||
index += this.props.categories.length;
|
index += this.props.categories.length;
|
||||||
|
|
|
@ -18,11 +18,13 @@ limitations under the License.
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import {IEmoji} from "../../../emoji";
|
import {IEmoji} from "../../../emoji";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
emoji: IEmoji;
|
emoji: IEmoji;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@replaceableComponent("views.emojipicker.Preview")
|
||||||
class Preview extends React.PureComponent<IProps> {
|
class Preview extends React.PureComponent<IProps> {
|
||||||
render() {
|
render() {
|
||||||
const {
|
const {
|
||||||
|
|
|
@ -20,6 +20,7 @@ import React from 'react';
|
||||||
import { _t } from '../../../languageHandler';
|
import { _t } from '../../../languageHandler';
|
||||||
import {getEmojiFromUnicode, IEmoji} from "../../../emoji";
|
import {getEmojiFromUnicode, IEmoji} from "../../../emoji";
|
||||||
import Emoji from "./Emoji";
|
import Emoji from "./Emoji";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
// We use the variation-selector Heart in Quick Reactions for some reason
|
// We use the variation-selector Heart in Quick Reactions for some reason
|
||||||
const QUICK_REACTIONS = ["👍", "👎", "😄", "🎉", "😕", "❤️", "🚀", "👀"].map(emoji => {
|
const QUICK_REACTIONS = ["👍", "👎", "😄", "🎉", "😕", "❤️", "🚀", "👀"].map(emoji => {
|
||||||
|
@ -39,6 +40,7 @@ interface IState {
|
||||||
hover?: IEmoji;
|
hover?: IEmoji;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@replaceableComponent("views.emojipicker.QuickReactions")
|
||||||
class QuickReactions extends React.Component<IProps, IState> {
|
class QuickReactions extends React.Component<IProps, IState> {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
|
|
|
@ -21,6 +21,7 @@ import {MatrixEvent} from "matrix-js-sdk/src/models/event";
|
||||||
import EmojiPicker from "./EmojiPicker";
|
import EmojiPicker from "./EmojiPicker";
|
||||||
import {MatrixClientPeg} from "../../../MatrixClientPeg";
|
import {MatrixClientPeg} from "../../../MatrixClientPeg";
|
||||||
import dis from "../../../dispatcher/dispatcher";
|
import dis from "../../../dispatcher/dispatcher";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
mxEvent: MatrixEvent;
|
mxEvent: MatrixEvent;
|
||||||
|
@ -32,6 +33,7 @@ interface IState {
|
||||||
selectedEmojis: Set<string>;
|
selectedEmojis: Set<string>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@replaceableComponent("views.emojipicker.ReactionPicker")
|
||||||
class ReactionPicker extends React.Component<IProps, IState> {
|
class ReactionPicker extends React.Component<IProps, IState> {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
|
|
|
@ -19,6 +19,7 @@ import React from 'react';
|
||||||
|
|
||||||
import { _t } from '../../../languageHandler';
|
import { _t } from '../../../languageHandler';
|
||||||
import {Key} from "../../../Keyboard";
|
import {Key} from "../../../Keyboard";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
query: string;
|
query: string;
|
||||||
|
@ -26,6 +27,7 @@ interface IProps {
|
||||||
onEnter(): void;
|
onEnter(): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@replaceableComponent("views.emojipicker.Search")
|
||||||
class Search extends React.PureComponent<IProps> {
|
class Search extends React.PureComponent<IProps> {
|
||||||
private inputRef = React.createRef<HTMLInputElement>();
|
private inputRef = React.createRef<HTMLInputElement>();
|
||||||
|
|
||||||
|
|
|
@ -26,8 +26,10 @@ import {MatrixClientPeg} from "../../../MatrixClientPeg";
|
||||||
import {ContextMenu, ContextMenuButton, toRightOf} from "../../structures/ContextMenu";
|
import {ContextMenu, ContextMenuButton, toRightOf} from "../../structures/ContextMenu";
|
||||||
import MatrixClientContext from "../../../contexts/MatrixClientContext";
|
import MatrixClientContext from "../../../contexts/MatrixClientContext";
|
||||||
import {RovingTabIndexWrapper} from "../../../accessibility/RovingTabIndex";
|
import {RovingTabIndexWrapper} from "../../../accessibility/RovingTabIndex";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
// XXX this class copies a lot from RoomTile.js
|
// XXX this class copies a lot from RoomTile.js
|
||||||
|
@replaceableComponent("views.groups.GroupInviteTile")
|
||||||
export default class GroupInviteTile extends React.Component {
|
export default class GroupInviteTile extends React.Component {
|
||||||
static propTypes: {
|
static propTypes: {
|
||||||
group: PropTypes.object.isRequired,
|
group: PropTypes.object.isRequired,
|
||||||
|
|
|
@ -26,9 +26,11 @@ import AccessibleButton from '../elements/AccessibleButton';
|
||||||
import {RightPanelPhases} from "../../../stores/RightPanelStorePhases";
|
import {RightPanelPhases} from "../../../stores/RightPanelStorePhases";
|
||||||
import AutoHideScrollbar from "../../structures/AutoHideScrollbar";
|
import AutoHideScrollbar from "../../structures/AutoHideScrollbar";
|
||||||
import {Action} from "../../../dispatcher/actions";
|
import {Action} from "../../../dispatcher/actions";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
const INITIAL_LOAD_NUM_MEMBERS = 30;
|
const INITIAL_LOAD_NUM_MEMBERS = 30;
|
||||||
|
|
||||||
|
@replaceableComponent("views.groups.GroupMemberList")
|
||||||
export default class GroupMemberList extends React.Component {
|
export default class GroupMemberList extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
groupId: PropTypes.string.isRequired,
|
groupId: PropTypes.string.isRequired,
|
||||||
|
|
|
@ -22,7 +22,9 @@ import * as sdk from '../../../index';
|
||||||
import dis from '../../../dispatcher/dispatcher';
|
import dis from '../../../dispatcher/dispatcher';
|
||||||
import { GroupMemberType } from '../../../groups';
|
import { GroupMemberType } from '../../../groups';
|
||||||
import MatrixClientContext from "../../../contexts/MatrixClientContext";
|
import MatrixClientContext from "../../../contexts/MatrixClientContext";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.groups.GroupMemberTile")
|
||||||
export default class GroupMemberTile extends React.Component {
|
export default class GroupMemberTile extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
groupId: PropTypes.string.isRequired,
|
groupId: PropTypes.string.isRequired,
|
||||||
|
|
|
@ -19,7 +19,9 @@ import PropTypes from 'prop-types';
|
||||||
import * as sdk from '../../../index';
|
import * as sdk from '../../../index';
|
||||||
import GroupStore from '../../../stores/GroupStore';
|
import GroupStore from '../../../stores/GroupStore';
|
||||||
import ToggleSwitch from "../elements/ToggleSwitch";
|
import ToggleSwitch from "../elements/ToggleSwitch";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.groups.GroupPublicityTile")
|
||||||
export default class GroupPublicityToggle extends React.Component {
|
export default class GroupPublicityToggle extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
groupId: PropTypes.string.isRequired,
|
groupId: PropTypes.string.isRequired,
|
||||||
|
|
|
@ -24,7 +24,9 @@ import { _t } from '../../../languageHandler';
|
||||||
import GroupStore from '../../../stores/GroupStore';
|
import GroupStore from '../../../stores/GroupStore';
|
||||||
import MatrixClientContext from "../../../contexts/MatrixClientContext";
|
import MatrixClientContext from "../../../contexts/MatrixClientContext";
|
||||||
import AutoHideScrollbar from "../../structures/AutoHideScrollbar";
|
import AutoHideScrollbar from "../../structures/AutoHideScrollbar";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.groups.GroupRoomInfo")
|
||||||
export default class GroupRoomInfo extends React.Component {
|
export default class GroupRoomInfo extends React.Component {
|
||||||
static contextType = MatrixClientContext;
|
static contextType = MatrixClientContext;
|
||||||
|
|
||||||
|
|
|
@ -21,9 +21,11 @@ import PropTypes from 'prop-types';
|
||||||
import { showGroupAddRoomDialog } from '../../../GroupAddressPicker';
|
import { showGroupAddRoomDialog } from '../../../GroupAddressPicker';
|
||||||
import AccessibleButton from '../elements/AccessibleButton';
|
import AccessibleButton from '../elements/AccessibleButton';
|
||||||
import AutoHideScrollbar from "../../structures/AutoHideScrollbar";
|
import AutoHideScrollbar from "../../structures/AutoHideScrollbar";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
const INITIAL_LOAD_NUM_ROOMS = 30;
|
const INITIAL_LOAD_NUM_ROOMS = 30;
|
||||||
|
|
||||||
|
@replaceableComponent("views.groups.GroupRoomList")
|
||||||
export default class GroupRoomList extends React.Component {
|
export default class GroupRoomList extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
groupId: PropTypes.string.isRequired,
|
groupId: PropTypes.string.isRequired,
|
||||||
|
|
|
@ -20,7 +20,9 @@ import * as sdk from '../../../index';
|
||||||
import dis from '../../../dispatcher/dispatcher';
|
import dis from '../../../dispatcher/dispatcher';
|
||||||
import { GroupRoomType } from '../../../groups';
|
import { GroupRoomType } from '../../../groups';
|
||||||
import MatrixClientContext from "../../../contexts/MatrixClientContext";
|
import MatrixClientContext from "../../../contexts/MatrixClientContext";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.groups.GroupRoomTile")
|
||||||
class GroupRoomTile extends React.Component {
|
class GroupRoomTile extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
groupId: PropTypes.string.isRequired,
|
groupId: PropTypes.string.isRequired,
|
||||||
|
|
|
@ -21,9 +21,11 @@ import * as sdk from '../../../index';
|
||||||
import dis from '../../../dispatcher/dispatcher';
|
import dis from '../../../dispatcher/dispatcher';
|
||||||
import FlairStore from '../../../stores/FlairStore';
|
import FlairStore from '../../../stores/FlairStore';
|
||||||
import MatrixClientContext from "../../../contexts/MatrixClientContext";
|
import MatrixClientContext from "../../../contexts/MatrixClientContext";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
function nop() {}
|
function nop() {}
|
||||||
|
|
||||||
|
@replaceableComponent("views.groups.GroupTile")
|
||||||
class GroupTile extends React.Component {
|
class GroupTile extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
groupId: PropTypes.string.isRequired,
|
groupId: PropTypes.string.isRequired,
|
||||||
|
|
|
@ -18,7 +18,9 @@ import React from 'react';
|
||||||
import * as sdk from '../../../index';
|
import * as sdk from '../../../index';
|
||||||
import { _t } from '../../../languageHandler';
|
import { _t } from '../../../languageHandler';
|
||||||
import MatrixClientContext from "../../../contexts/MatrixClientContext";
|
import MatrixClientContext from "../../../contexts/MatrixClientContext";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.groups.GroupUserSettings")
|
||||||
export default class GroupUserSettings extends React.Component {
|
export default class GroupUserSettings extends React.Component {
|
||||||
static contextType = MatrixClientContext;
|
static contextType = MatrixClientContext;
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@ import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { _t } from '../../../languageHandler';
|
import { _t } from '../../../languageHandler';
|
||||||
import {formatFullDateNoTime} from '../../../DateUtils';
|
import {formatFullDateNoTime} from '../../../DateUtils';
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
function getdaysArray() {
|
function getdaysArray() {
|
||||||
return [
|
return [
|
||||||
|
@ -32,6 +33,7 @@ function getdaysArray() {
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.DateSeparator")
|
||||||
export default class DateSeparator extends React.Component {
|
export default class DateSeparator extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
ts: PropTypes.number.isRequired,
|
ts: PropTypes.number.isRequired,
|
||||||
|
|
|
@ -27,12 +27,14 @@ import {MatrixClientPeg} from '../../../MatrixClientPeg';
|
||||||
import Modal from '../../../Modal';
|
import Modal from '../../../Modal';
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import RedactedBody from "./RedactedBody";
|
import RedactedBody from "./RedactedBody";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
function getReplacedContent(event) {
|
function getReplacedContent(event) {
|
||||||
const originalContent = event.getOriginalContent();
|
const originalContent = event.getOriginalContent();
|
||||||
return originalContent["m.new_content"] || originalContent;
|
return originalContent["m.new_content"] || originalContent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.EditHistoryMessage")
|
||||||
export default class EditHistoryMessage extends React.PureComponent {
|
export default class EditHistoryMessage extends React.PureComponent {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
// the message event being edited
|
// the message event being edited
|
||||||
|
|
|
@ -23,7 +23,9 @@ import {MatrixClientPeg} from '../../../MatrixClientPeg';
|
||||||
import { decryptFile } from '../../../utils/DecryptFile';
|
import { decryptFile } from '../../../utils/DecryptFile';
|
||||||
import { _t } from '../../../languageHandler';
|
import { _t } from '../../../languageHandler';
|
||||||
import InlineSpinner from '../elements/InlineSpinner';
|
import InlineSpinner from '../elements/InlineSpinner';
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.MAudioBody")
|
||||||
export default class MAudioBody extends React.Component {
|
export default class MAudioBody extends React.Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
|
|
|
@ -26,6 +26,7 @@ import Tinter from '../../../Tinter';
|
||||||
import request from 'browser-request';
|
import request from 'browser-request';
|
||||||
import Modal from '../../../Modal';
|
import Modal from '../../../Modal';
|
||||||
import AccessibleButton from "../elements/AccessibleButton";
|
import AccessibleButton from "../elements/AccessibleButton";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
|
||||||
// A cached tinted copy of require("../../../../res/img/download.svg")
|
// A cached tinted copy of require("../../../../res/img/download.svg")
|
||||||
|
@ -116,6 +117,7 @@ function computedStyle(element) {
|
||||||
return cssText;
|
return cssText;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.MFileBody")
|
||||||
export default class MFileBody extends React.Component {
|
export default class MFileBody extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
/* the MatrixEvent to show */
|
/* the MatrixEvent to show */
|
||||||
|
|
|
@ -27,7 +27,9 @@ import { _t } from '../../../languageHandler';
|
||||||
import SettingsStore from "../../../settings/SettingsStore";
|
import SettingsStore from "../../../settings/SettingsStore";
|
||||||
import MatrixClientContext from "../../../contexts/MatrixClientContext";
|
import MatrixClientContext from "../../../contexts/MatrixClientContext";
|
||||||
import InlineSpinner from '../elements/InlineSpinner';
|
import InlineSpinner from '../elements/InlineSpinner';
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.MImageBody")
|
||||||
export default class MImageBody extends React.Component {
|
export default class MImageBody extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
/* the MatrixEvent to show */
|
/* the MatrixEvent to show */
|
||||||
|
|
|
@ -21,11 +21,13 @@ import WidgetStore from "../../../stores/WidgetStore";
|
||||||
import EventTileBubble from "./EventTileBubble";
|
import EventTileBubble from "./EventTileBubble";
|
||||||
import { MatrixClientPeg } from "../../../MatrixClientPeg";
|
import { MatrixClientPeg } from "../../../MatrixClientPeg";
|
||||||
import { Container, WidgetLayoutStore } from "../../../stores/widgets/WidgetLayoutStore";
|
import { Container, WidgetLayoutStore } from "../../../stores/widgets/WidgetLayoutStore";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
mxEvent: MatrixEvent;
|
mxEvent: MatrixEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.MJitsiWidgetEvent")
|
||||||
export default class MJitsiWidgetEvent extends React.PureComponent<IProps> {
|
export default class MJitsiWidgetEvent extends React.PureComponent<IProps> {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
|
|
|
@ -22,7 +22,9 @@ import { _t } from '../../../languageHandler';
|
||||||
import {getNameForEventRoom, userLabelForEventRoom}
|
import {getNameForEventRoom, userLabelForEventRoom}
|
||||||
from '../../../utils/KeyVerificationStateObserver';
|
from '../../../utils/KeyVerificationStateObserver';
|
||||||
import EventTileBubble from "./EventTileBubble";
|
import EventTileBubble from "./EventTileBubble";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.MKeyVerificationConclusion")
|
||||||
export default class MKeyVerificationConclusion extends React.Component {
|
export default class MKeyVerificationConclusion extends React.Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
|
|
|
@ -25,7 +25,9 @@ import dis from "../../../dispatcher/dispatcher";
|
||||||
import {RightPanelPhases} from "../../../stores/RightPanelStorePhases";
|
import {RightPanelPhases} from "../../../stores/RightPanelStorePhases";
|
||||||
import {Action} from "../../../dispatcher/actions";
|
import {Action} from "../../../dispatcher/actions";
|
||||||
import EventTileBubble from "./EventTileBubble";
|
import EventTileBubble from "./EventTileBubble";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.MKeyVerificationRequest")
|
||||||
export default class MKeyVerificationRequest extends React.Component {
|
export default class MKeyVerificationRequest extends React.Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
|
|
|
@ -17,7 +17,9 @@ limitations under the License.
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import MImageBody from './MImageBody';
|
import MImageBody from './MImageBody';
|
||||||
import * as sdk from '../../../index';
|
import * as sdk from '../../../index';
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.MStickerBody")
|
||||||
export default class MStickerBody extends MImageBody {
|
export default class MStickerBody extends MImageBody {
|
||||||
// Mostly empty to prevent default behaviour of MImageBody
|
// Mostly empty to prevent default behaviour of MImageBody
|
||||||
onClick(ev) {
|
onClick(ev) {
|
||||||
|
|
|
@ -22,6 +22,7 @@ import { decryptFile } from '../../../utils/DecryptFile';
|
||||||
import { _t } from '../../../languageHandler';
|
import { _t } from '../../../languageHandler';
|
||||||
import SettingsStore from "../../../settings/SettingsStore";
|
import SettingsStore from "../../../settings/SettingsStore";
|
||||||
import InlineSpinner from '../elements/InlineSpinner';
|
import InlineSpinner from '../elements/InlineSpinner';
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
/* the MatrixEvent to show */
|
/* the MatrixEvent to show */
|
||||||
|
@ -38,6 +39,7 @@ interface IState {
|
||||||
fetchingData: boolean,
|
fetchingData: boolean,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.MVideoBody")
|
||||||
export default class MVideoBody extends React.PureComponent<IProps, IState> {
|
export default class MVideoBody extends React.PureComponent<IProps, IState> {
|
||||||
private videoRef = React.createRef<HTMLVideoElement>();
|
private videoRef = React.createRef<HTMLVideoElement>();
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@ import { isContentActionable, canEditContent } from '../../../utils/EventUtils';
|
||||||
import RoomContext from "../../../contexts/RoomContext";
|
import RoomContext from "../../../contexts/RoomContext";
|
||||||
import Toolbar from "../../../accessibility/Toolbar";
|
import Toolbar from "../../../accessibility/Toolbar";
|
||||||
import {RovingAccessibleTooltipButton, useRovingTabIndex} from "../../../accessibility/RovingTabIndex";
|
import {RovingAccessibleTooltipButton, useRovingTabIndex} from "../../../accessibility/RovingTabIndex";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
const OptionsButton = ({mxEvent, getTile, getReplyThread, permalinkCreator, onFocusChange}) => {
|
const OptionsButton = ({mxEvent, getTile, getReplyThread, permalinkCreator, onFocusChange}) => {
|
||||||
const [menuDisplayed, button, openMenu, closeMenu] = useContextMenu();
|
const [menuDisplayed, button, openMenu, closeMenu] = useContextMenu();
|
||||||
|
@ -101,6 +102,7 @@ const ReactButton = ({mxEvent, reactions, onFocusChange}) => {
|
||||||
</React.Fragment>;
|
</React.Fragment>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.MessageActionBar")
|
||||||
export default class MessageActionBar extends React.PureComponent {
|
export default class MessageActionBar extends React.PureComponent {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
mxEvent: PropTypes.object.isRequired,
|
mxEvent: PropTypes.object.isRequired,
|
||||||
|
|
|
@ -21,7 +21,9 @@ import SettingsStore from "../../../settings/SettingsStore";
|
||||||
import {Mjolnir} from "../../../mjolnir/Mjolnir";
|
import {Mjolnir} from "../../../mjolnir/Mjolnir";
|
||||||
import RedactedBody from "./RedactedBody";
|
import RedactedBody from "./RedactedBody";
|
||||||
import UnknownBody from "./UnknownBody";
|
import UnknownBody from "./UnknownBody";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.MessageEvent")
|
||||||
export default class MessageEvent extends React.Component {
|
export default class MessageEvent extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
/* the MatrixEvent to show */
|
/* the MatrixEvent to show */
|
||||||
|
|
|
@ -18,7 +18,9 @@ limitations under the License.
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import {formatFullDate, formatTime} from '../../../DateUtils';
|
import {formatFullDate, formatTime} from '../../../DateUtils';
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.MessageTimestamp")
|
||||||
export default class MessageTimestamp extends React.Component {
|
export default class MessageTimestamp extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
ts: PropTypes.number.isRequired,
|
ts: PropTypes.number.isRequired,
|
||||||
|
|
|
@ -17,7 +17,9 @@ limitations under the License.
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import {_t} from '../../../languageHandler';
|
import {_t} from '../../../languageHandler';
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.MjolnirBody")
|
||||||
export default class MjolnirBody extends React.Component {
|
export default class MjolnirBody extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
mxEvent: PropTypes.object.isRequired,
|
mxEvent: PropTypes.object.isRequired,
|
||||||
|
|
|
@ -21,10 +21,12 @@ import * as sdk from '../../../index';
|
||||||
import { _t } from '../../../languageHandler';
|
import { _t } from '../../../languageHandler';
|
||||||
import { isContentActionable } from '../../../utils/EventUtils';
|
import { isContentActionable } from '../../../utils/EventUtils';
|
||||||
import {MatrixClientPeg} from '../../../MatrixClientPeg';
|
import {MatrixClientPeg} from '../../../MatrixClientPeg';
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
// The maximum number of reactions to initially show on a message.
|
// The maximum number of reactions to initially show on a message.
|
||||||
const MAX_ITEMS_WHEN_LIMITED = 8;
|
const MAX_ITEMS_WHEN_LIMITED = 8;
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.ReactionsRow")
|
||||||
export default class ReactionsRow extends React.PureComponent {
|
export default class ReactionsRow extends React.PureComponent {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
// The event we're displaying reactions for
|
// The event we're displaying reactions for
|
||||||
|
|
|
@ -23,7 +23,9 @@ import * as sdk from '../../../index';
|
||||||
import { _t } from '../../../languageHandler';
|
import { _t } from '../../../languageHandler';
|
||||||
import { formatCommaSeparatedList } from '../../../utils/FormattingUtils';
|
import { formatCommaSeparatedList } from '../../../utils/FormattingUtils';
|
||||||
import dis from "../../../dispatcher/dispatcher";
|
import dis from "../../../dispatcher/dispatcher";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.ReactionsRowButton")
|
||||||
export default class ReactionsRowButton extends React.PureComponent {
|
export default class ReactionsRowButton extends React.PureComponent {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
// The event we're displaying reactions for
|
// The event we're displaying reactions for
|
||||||
|
|
|
@ -22,7 +22,9 @@ import * as sdk from '../../../index';
|
||||||
import { unicodeToShortcode } from '../../../HtmlUtils';
|
import { unicodeToShortcode } from '../../../HtmlUtils';
|
||||||
import { _t } from '../../../languageHandler';
|
import { _t } from '../../../languageHandler';
|
||||||
import { formatCommaSeparatedList } from '../../../utils/FormattingUtils';
|
import { formatCommaSeparatedList } from '../../../utils/FormattingUtils';
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.ReactionsRowButtonTooltip")
|
||||||
export default class ReactionsRowButtonTooltip extends React.PureComponent {
|
export default class ReactionsRowButtonTooltip extends React.PureComponent {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
// The event we're displaying reactions for
|
// The event we're displaying reactions for
|
||||||
|
|
|
@ -23,7 +23,9 @@ import { _t } from '../../../languageHandler';
|
||||||
import * as sdk from '../../../index';
|
import * as sdk from '../../../index';
|
||||||
import Modal from '../../../Modal';
|
import Modal from '../../../Modal';
|
||||||
import AccessibleButton from '../elements/AccessibleButton';
|
import AccessibleButton from '../elements/AccessibleButton';
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.RoomAvatarEvent")
|
||||||
export default class RoomAvatarEvent extends React.Component {
|
export default class RoomAvatarEvent extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
/* the MatrixEvent to show */
|
/* the MatrixEvent to show */
|
||||||
|
|
|
@ -23,7 +23,9 @@ import { RoomPermalinkCreator } from '../../../utils/permalinks/Permalinks';
|
||||||
import { _t } from '../../../languageHandler';
|
import { _t } from '../../../languageHandler';
|
||||||
import {MatrixClientPeg} from '../../../MatrixClientPeg';
|
import {MatrixClientPeg} from '../../../MatrixClientPeg';
|
||||||
import EventTileBubble from "./EventTileBubble";
|
import EventTileBubble from "./EventTileBubble";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.RoomCreate")
|
||||||
export default class RoomCreate extends React.Component {
|
export default class RoomCreate extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
/* the MatrixEvent to show */
|
/* the MatrixEvent to show */
|
||||||
|
|
|
@ -20,7 +20,9 @@ import Flair from '../elements/Flair.js';
|
||||||
import FlairStore from '../../../stores/FlairStore';
|
import FlairStore from '../../../stores/FlairStore';
|
||||||
import {getUserNameColorClass} from '../../../utils/FormattingUtils';
|
import {getUserNameColorClass} from '../../../utils/FormattingUtils';
|
||||||
import MatrixClientContext from "../../../contexts/MatrixClientContext";
|
import MatrixClientContext from "../../../contexts/MatrixClientContext";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.SenderProfile")
|
||||||
export default class SenderProfile extends React.Component {
|
export default class SenderProfile extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
mxEvent: PropTypes.object.isRequired, // event whose sender we're showing
|
mxEvent: PropTypes.object.isRequired, // event whose sender we're showing
|
||||||
|
|
|
@ -35,7 +35,9 @@ import {isPermalinkHost} from "../../../utils/permalinks/Permalinks";
|
||||||
import {toRightOf} from "../../structures/ContextMenu";
|
import {toRightOf} from "../../structures/ContextMenu";
|
||||||
import {copyPlaintext} from "../../../utils/strings";
|
import {copyPlaintext} from "../../../utils/strings";
|
||||||
import AccessibleTooltipButton from "../elements/AccessibleTooltipButton";
|
import AccessibleTooltipButton from "../elements/AccessibleTooltipButton";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.TextualBody")
|
||||||
export default class TextualBody extends React.Component {
|
export default class TextualBody extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
/* the MatrixEvent to show */
|
/* the MatrixEvent to show */
|
||||||
|
|
|
@ -18,7 +18,9 @@ limitations under the License.
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import * as TextForEvent from "../../../TextForEvent";
|
import * as TextForEvent from "../../../TextForEvent";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.TextualEvent")
|
||||||
export default class TextualEvent extends React.Component {
|
export default class TextualEvent extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
/* the MatrixEvent to show */
|
/* the MatrixEvent to show */
|
||||||
|
|
|
@ -20,7 +20,9 @@ import { _t } from '../../../languageHandler';
|
||||||
import * as sdk from '../../../index';
|
import * as sdk from '../../../index';
|
||||||
import Modal from '../../../Modal';
|
import Modal from '../../../Modal';
|
||||||
import SdkConfig from "../../../SdkConfig";
|
import SdkConfig from "../../../SdkConfig";
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.TileErrorBoundary")
|
||||||
export default class TileErrorBoundary extends React.Component {
|
export default class TileErrorBoundary extends React.Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
|
|
|
@ -17,7 +17,9 @@ limitations under the License.
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
|
import {replaceableComponent} from "../../../utils/replaceableComponent";
|
||||||
|
|
||||||
|
@replaceableComponent("views.messages.ViewSourceEvent")
|
||||||
export default class ViewSourceEvent extends React.PureComponent {
|
export default class ViewSourceEvent extends React.PureComponent {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
/* the MatrixEvent to show */
|
/* the MatrixEvent to show */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue