Apply prettier formatting
This commit is contained in:
parent
1cac306093
commit
526645c791
1576 changed files with 65385 additions and 62478 deletions
|
@ -14,27 +14,27 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
import classNames from 'classnames';
|
||||
import { Room } from 'matrix-js-sdk/src/models/room';
|
||||
import { RoomMember } from 'matrix-js-sdk/src/models/room-member';
|
||||
import React from "react";
|
||||
import classNames from "classnames";
|
||||
import { Room } from "matrix-js-sdk/src/models/room";
|
||||
import { RoomMember } from "matrix-js-sdk/src/models/room-member";
|
||||
import { logger } from "matrix-js-sdk/src/logger";
|
||||
import { MatrixClient } from 'matrix-js-sdk/src/client';
|
||||
import { MatrixClient } from "matrix-js-sdk/src/client";
|
||||
|
||||
import dis from '../../../dispatcher/dispatcher';
|
||||
import { MatrixClientPeg } from '../../../MatrixClientPeg';
|
||||
import dis from "../../../dispatcher/dispatcher";
|
||||
import { MatrixClientPeg } from "../../../MatrixClientPeg";
|
||||
import { getPrimaryPermalinkEntity, parsePermalink } from "../../../utils/permalinks/Permalinks";
|
||||
import MatrixClientContext from "../../../contexts/MatrixClientContext";
|
||||
import { Action } from "../../../dispatcher/actions";
|
||||
import Tooltip, { Alignment } from './Tooltip';
|
||||
import RoomAvatar from '../avatars/RoomAvatar';
|
||||
import MemberAvatar from '../avatars/MemberAvatar';
|
||||
import Tooltip, { Alignment } from "./Tooltip";
|
||||
import RoomAvatar from "../avatars/RoomAvatar";
|
||||
import MemberAvatar from "../avatars/MemberAvatar";
|
||||
import { objectHasDiff } from "../../../utils/objects";
|
||||
|
||||
export enum PillType {
|
||||
UserMention = 'TYPE_USER_MENTION',
|
||||
RoomMention = 'TYPE_ROOM_MENTION',
|
||||
AtRoomMention = 'TYPE_AT_ROOM_MENTION', // '@room' mention
|
||||
UserMention = "TYPE_USER_MENTION",
|
||||
RoomMention = "TYPE_ROOM_MENTION",
|
||||
AtRoomMention = "TYPE_AT_ROOM_MENTION", // '@room' mention
|
||||
}
|
||||
|
||||
interface IProps {
|
||||
|
@ -102,41 +102,51 @@ export default class Pill extends React.Component<IProps, IState> {
|
|||
}
|
||||
}
|
||||
|
||||
const pillType = this.props.type || {
|
||||
'@': PillType.UserMention,
|
||||
'#': PillType.RoomMention,
|
||||
'!': PillType.RoomMention,
|
||||
}[prefix];
|
||||
const pillType =
|
||||
this.props.type ||
|
||||
{
|
||||
"@": PillType.UserMention,
|
||||
"#": PillType.RoomMention,
|
||||
"!": PillType.RoomMention,
|
||||
}[prefix];
|
||||
|
||||
let member: RoomMember;
|
||||
let room: Room;
|
||||
switch (pillType) {
|
||||
case PillType.AtRoomMention: {
|
||||
room = this.props.room;
|
||||
}
|
||||
break;
|
||||
case PillType.UserMention: {
|
||||
const localMember = this.props.room?.getMember(resourceId);
|
||||
member = localMember;
|
||||
if (!localMember) {
|
||||
member = new RoomMember(null, resourceId);
|
||||
this.doProfileLookup(resourceId, member);
|
||||
case PillType.AtRoomMention:
|
||||
{
|
||||
room = this.props.room;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PillType.RoomMention: {
|
||||
const localRoom = resourceId[0] === '#' ?
|
||||
MatrixClientPeg.get().getRooms().find((r) => {
|
||||
return r.getCanonicalAlias() === resourceId ||
|
||||
r.getAltAliases().includes(resourceId);
|
||||
}) : MatrixClientPeg.get().getRoom(resourceId);
|
||||
room = localRoom;
|
||||
if (!localRoom) {
|
||||
// TODO: This would require a new API to resolve a room alias to
|
||||
// a room avatar and name.
|
||||
// this.doRoomProfileLookup(resourceId, member);
|
||||
case PillType.UserMention:
|
||||
{
|
||||
const localMember = this.props.room?.getMember(resourceId);
|
||||
member = localMember;
|
||||
if (!localMember) {
|
||||
member = new RoomMember(null, resourceId);
|
||||
this.doProfileLookup(resourceId, member);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PillType.RoomMention:
|
||||
{
|
||||
const localRoom =
|
||||
resourceId[0] === "#"
|
||||
? MatrixClientPeg.get()
|
||||
.getRooms()
|
||||
.find((r) => {
|
||||
return (
|
||||
r.getCanonicalAlias() === resourceId || r.getAltAliases().includes(resourceId)
|
||||
);
|
||||
})
|
||||
: MatrixClientPeg.get().getRoom(resourceId);
|
||||
room = localRoom;
|
||||
if (!localRoom) {
|
||||
// TODO: This would require a new API to resolve a room alias to
|
||||
// a room avatar and name.
|
||||
// this.doRoomProfileLookup(resourceId, member);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
this.setState({ resourceId, pillType, member, room });
|
||||
|
@ -171,24 +181,27 @@ export default class Pill extends React.Component<IProps, IState> {
|
|||
};
|
||||
|
||||
private doProfileLookup(userId: string, member): void {
|
||||
MatrixClientPeg.get().getProfileInfo(userId).then((resp) => {
|
||||
if (this.unmounted) {
|
||||
return;
|
||||
}
|
||||
member.name = resp.displayname;
|
||||
member.rawDisplayName = resp.displayname;
|
||||
member.events.member = {
|
||||
getContent: () => {
|
||||
return { avatar_url: resp.avatar_url };
|
||||
},
|
||||
getDirectionalContent: function() {
|
||||
return this.getContent();
|
||||
},
|
||||
};
|
||||
this.setState({ member });
|
||||
}).catch((err) => {
|
||||
logger.error('Could not retrieve profile data for ' + userId + ':', err);
|
||||
});
|
||||
MatrixClientPeg.get()
|
||||
.getProfileInfo(userId)
|
||||
.then((resp) => {
|
||||
if (this.unmounted) {
|
||||
return;
|
||||
}
|
||||
member.name = resp.displayname;
|
||||
member.rawDisplayName = resp.displayname;
|
||||
member.events.member = {
|
||||
getContent: () => {
|
||||
return { avatar_url: resp.avatar_url };
|
||||
},
|
||||
getDirectionalContent: function () {
|
||||
return this.getContent();
|
||||
},
|
||||
};
|
||||
this.setState({ member });
|
||||
})
|
||||
.catch((err) => {
|
||||
logger.error("Could not retrieve profile data for " + userId + ":", err);
|
||||
});
|
||||
}
|
||||
|
||||
private onUserPillClicked = (e): void => {
|
||||
|
@ -209,48 +222,53 @@ export default class Pill extends React.Component<IProps, IState> {
|
|||
let href = this.props.url;
|
||||
let onClick;
|
||||
switch (this.state.pillType) {
|
||||
case PillType.AtRoomMention: {
|
||||
const room = this.props.room;
|
||||
if (room) {
|
||||
linkText = "@room";
|
||||
if (this.props.shouldShowPillAvatar) {
|
||||
avatar = <RoomAvatar room={room} width={16} height={16} aria-hidden="true" />;
|
||||
case PillType.AtRoomMention:
|
||||
{
|
||||
const room = this.props.room;
|
||||
if (room) {
|
||||
linkText = "@room";
|
||||
if (this.props.shouldShowPillAvatar) {
|
||||
avatar = <RoomAvatar room={room} width={16} height={16} aria-hidden="true" />;
|
||||
}
|
||||
pillClass = "mx_AtRoomPill";
|
||||
}
|
||||
pillClass = 'mx_AtRoomPill';
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PillType.UserMention: {
|
||||
// If this user is not a member of this room, default to the empty member
|
||||
const member = this.state.member;
|
||||
if (member) {
|
||||
userId = member.userId;
|
||||
member.rawDisplayName = member.rawDisplayName || '';
|
||||
linkText = member.rawDisplayName;
|
||||
if (this.props.shouldShowPillAvatar) {
|
||||
avatar = <MemberAvatar member={member} width={16} height={16} aria-hidden="true" hideTitle />;
|
||||
case PillType.UserMention:
|
||||
{
|
||||
// If this user is not a member of this room, default to the empty member
|
||||
const member = this.state.member;
|
||||
if (member) {
|
||||
userId = member.userId;
|
||||
member.rawDisplayName = member.rawDisplayName || "";
|
||||
linkText = member.rawDisplayName;
|
||||
if (this.props.shouldShowPillAvatar) {
|
||||
avatar = (
|
||||
<MemberAvatar member={member} width={16} height={16} aria-hidden="true" hideTitle />
|
||||
);
|
||||
}
|
||||
pillClass = "mx_UserPill";
|
||||
href = null;
|
||||
onClick = this.onUserPillClicked;
|
||||
}
|
||||
pillClass = 'mx_UserPill';
|
||||
href = null;
|
||||
onClick = this.onUserPillClicked;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PillType.RoomMention: {
|
||||
const room = this.state.room;
|
||||
if (room) {
|
||||
linkText = room.name || resource;
|
||||
if (this.props.shouldShowPillAvatar) {
|
||||
avatar = <RoomAvatar room={room} width={16} height={16} aria-hidden="true" />;
|
||||
case PillType.RoomMention:
|
||||
{
|
||||
const room = this.state.room;
|
||||
if (room) {
|
||||
linkText = room.name || resource;
|
||||
if (this.props.shouldShowPillAvatar) {
|
||||
avatar = <RoomAvatar room={room} width={16} height={16} aria-hidden="true" />;
|
||||
}
|
||||
}
|
||||
pillClass = room?.isSpaceRoom() ? "mx_SpacePill" : "mx_RoomPill";
|
||||
}
|
||||
pillClass = room?.isSpaceRoom() ? "mx_SpacePill" : "mx_RoomPill";
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
const classes = classNames("mx_Pill", pillClass, {
|
||||
"mx_UserPill_me": userId === MatrixClientPeg.get().getUserId(),
|
||||
mx_UserPill_me: userId === MatrixClientPeg.get().getUserId(),
|
||||
});
|
||||
|
||||
if (this.state.pillType) {
|
||||
|
@ -259,29 +277,31 @@ export default class Pill extends React.Component<IProps, IState> {
|
|||
tip = <Tooltip label={resource} alignment={Alignment.Right} />;
|
||||
}
|
||||
|
||||
return <bdi><MatrixClientContext.Provider value={this.matrixClient}>
|
||||
{ this.props.inMessage ?
|
||||
<a
|
||||
className={classes}
|
||||
href={href}
|
||||
onClick={onClick}
|
||||
onMouseOver={this.onMouseOver}
|
||||
onMouseLeave={this.onMouseLeave}
|
||||
>
|
||||
{ avatar }
|
||||
<span className="mx_Pill_linkText">{ linkText }</span>
|
||||
{ tip }
|
||||
</a> :
|
||||
<span
|
||||
className={classes}
|
||||
onMouseOver={this.onMouseOver}
|
||||
onMouseLeave={this.onMouseLeave}
|
||||
>
|
||||
{ avatar }
|
||||
<span className="mx_Pill_linkText">{ linkText }</span>
|
||||
{ tip }
|
||||
</span> }
|
||||
</MatrixClientContext.Provider></bdi>;
|
||||
return (
|
||||
<bdi>
|
||||
<MatrixClientContext.Provider value={this.matrixClient}>
|
||||
{this.props.inMessage ? (
|
||||
<a
|
||||
className={classes}
|
||||
href={href}
|
||||
onClick={onClick}
|
||||
onMouseOver={this.onMouseOver}
|
||||
onMouseLeave={this.onMouseLeave}
|
||||
>
|
||||
{avatar}
|
||||
<span className="mx_Pill_linkText">{linkText}</span>
|
||||
{tip}
|
||||
</a>
|
||||
) : (
|
||||
<span className={classes} onMouseOver={this.onMouseOver} onMouseLeave={this.onMouseLeave}>
|
||||
{avatar}
|
||||
<span className="mx_Pill_linkText">{linkText}</span>
|
||||
{tip}
|
||||
</span>
|
||||
)}
|
||||
</MatrixClientContext.Provider>
|
||||
</bdi>
|
||||
);
|
||||
} else {
|
||||
// Deliberately render nothing if the URL isn't recognised
|
||||
return null;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue