Merge pull request #2936 from jryans/preview-bar-fire

Add important info to new preview bar
This commit is contained in:
J. Ryan Stinnett 2019-04-30 10:20:09 +01:00 committed by GitHub
commit 6db12f84df
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 55 additions and 34 deletions

View file

@ -24,7 +24,6 @@ import MatrixClientPeg from '../../../MatrixClientPeg';
import dis from '../../../dispatcher'; import dis from '../../../dispatcher';
import classNames from 'classnames'; import classNames from 'classnames';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
import {getUserNameColorClass} from '../../../utils/FormattingUtils';
const MessageCase = Object.freeze({ const MessageCase = Object.freeze({
NotLoggedIn: "NotLoggedIn", NotLoggedIn: "NotLoggedIn",
@ -105,12 +104,6 @@ module.exports = React.createClass({
} }
}, },
_onInviterClick(evt) {
evt.preventDefault();
const member = this._getInviteMember();
dis.dispatch({action: 'view_user_info', userId: member.userId});
},
_getMessageCase() { _getMessageCase() {
const isGuest = MatrixClientPeg.get().isGuest(); const isGuest = MatrixClientPeg.get().isGuest();
@ -118,8 +111,7 @@ module.exports = React.createClass({
return MessageCase.NotLoggedIn; return MessageCase.NotLoggedIn;
} }
const myMember = this.props.room && const myMember = this._getMyMember();
this.props.room.getMember(MatrixClientPeg.get().getUserId());
if (myMember) { if (myMember) {
if (myMember.isKicked()) { if (myMember.isKicked()) {
@ -158,9 +150,7 @@ module.exports = React.createClass({
}, },
_getKickOrBanInfo() { _getKickOrBanInfo() {
const myMember = this.props.room ? const myMember = this._getMyMember();
this.props.room.getMember(MatrixClientPeg.get().getUserId()) :
null;
if (!myMember) { if (!myMember) {
return {}; return {};
} }
@ -194,6 +184,13 @@ module.exports = React.createClass({
} }
}, },
_getMyMember() {
return (
this.props.room &&
this.props.room.getMember(MatrixClientPeg.get().getUserId())
);
},
_getInviteMember: function() { _getInviteMember: function() {
const {room} = this.props; const {room} = this.props;
if (!room) { if (!room) {
@ -208,6 +205,16 @@ module.exports = React.createClass({
return room.currentState.getMember(inviterUserId); return room.currentState.getMember(inviterUserId);
}, },
_isDMInvite() {
const myMember = this._getMyMember();
if (!myMember) {
return false;
}
const memberEvent = myMember.events.member;
const memberContent = memberEvent.getContent();
return memberContent.membership === "invite" && memberContent.is_direct;
},
onLoginClick: function() { onLoginClick: function() {
dis.dispatch({ action: 'start_login' }); dis.dispatch({ action: 'start_login' });
}, },
@ -279,7 +286,8 @@ module.exports = React.createClass({
break; break;
} }
case MessageCase.OtherThreePIDError: { case MessageCase.OtherThreePIDError: {
title = _t("Something went wrong with your invite to this room"); title = _t("Something went wrong with your invite to %(roomName)s",
{roomName: this._roomName()});
const joinRule = this._joinRule(); const joinRule = this._joinRule();
const errCodeMessage = _t("%(errcode)s was returned while trying to valide your invite. You could try to pass this information on to a room admin.", const errCodeMessage = _t("%(errcode)s was returned while trying to valide your invite. You could try to pass this information on to a room admin.",
{errcode: this.state.threePidFetchError.errcode}, {errcode: this.state.threePidFetchError.errcode},
@ -305,14 +313,19 @@ module.exports = React.createClass({
break; break;
} }
case MessageCase.InvitedEmailMismatch: { case MessageCase.InvitedEmailMismatch: {
title = _t("The room invite wasn't sent to your account"); title = _t("This invite to %(roomName)s wasn't sent to your account",
{roomName: this._roomName()});
const joinRule = this._joinRule(); const joinRule = this._joinRule();
if (joinRule === "public") { if (joinRule === "public") {
subTitle = _t("You can still join it because this is a public room."); subTitle = _t("You can still join it because this is a public room.");
primaryActionLabel = _t("Join the discussion"); primaryActionLabel = _t("Join the discussion");
primaryActionHandler = this.props.onJoinClick; primaryActionHandler = this.props.onJoinClick;
} else { } else {
subTitle = _t("Sign in with a different account, ask for another invite, or add the e-mail address %(email)s to this account.", {email: this.props.invitedEmail}); subTitle = _t(
"Sign in with a different account, ask for another invite, or " +
"add the e-mail address %(email)s to this account.",
{email: this.props.invitedEmail},
);
if (joinRule !== "invite") { if (joinRule !== "invite") {
primaryActionLabel = _t("Try to join anyway"); primaryActionLabel = _t("Try to join anyway");
primaryActionHandler = this.props.onJoinClick; primaryActionHandler = this.props.onJoinClick;
@ -321,26 +334,29 @@ module.exports = React.createClass({
break; break;
} }
case MessageCase.Invite: { case MessageCase.Invite: {
const RoomAvatar = sdk.getComponent("views.avatars.RoomAvatar");
const avatar = <RoomAvatar room={this.props.room} />;
const inviteMember = this._getInviteMember(); const inviteMember = this._getInviteMember();
let avatar;
let inviterElement; let inviterElement;
if (inviteMember) { if (inviteMember) {
const MemberAvatar = sdk.getComponent("views.avatars.MemberAvatar"); inviterElement = <span>
avatar = (<MemberAvatar member={inviteMember} onClick={this._onInviterClick} />); <span className="mx_RoomPreviewBar_inviter">
const inviterClasses = [ {inviteMember.rawDisplayName}
"mx_RoomPreviewBar_inviter", </span> ({inviteMember.userId})
getUserNameColorClass(inviteMember.userId), </span>;
].join(" ");
inviterElement = (
<a onClick={this._onInviterClick} className={inviterClasses}>
{inviteMember.name}
</a>
);
} else { } else {
inviterElement = (<span className="mx_RoomPreviewBar_inviter">{this.props.inviterName}</span>); inviterElement = (<span className="mx_RoomPreviewBar_inviter">{this.props.inviterName}</span>);
} }
title = _t("Do you want to join this room?"); const isDM = this._isDMInvite();
if (isDM) {
title = _t("Do you want to chat with %(user)s?",
{ user: inviteMember.name });
} else {
title = _t("Do you want to join %(roomName)s?",
{ roomName: this._roomName() });
}
subTitle = [ subTitle = [
avatar, avatar,
_t("<userName/> invited you", {}, {userName: () => inviterElement}), _t("<userName/> invited you", {}, {userName: () => inviterElement}),
@ -354,7 +370,8 @@ module.exports = React.createClass({
} }
case MessageCase.ViewingRoom: { case MessageCase.ViewingRoom: {
if (this.props.canPreview) { if (this.props.canPreview) {
title = _t("You're previewing this room. Want to join it?"); title = _t("You're previewing %(roomName)s. Want to join it?",
{roomName: this._roomName()});
} else { } else {
title = _t("%(roomName)s can't be previewed. Do you want to join it?", title = _t("%(roomName)s can't be previewed. Do you want to join it?",
{roomName: this._roomName(true)}); {roomName: this._roomName(true)});
@ -372,7 +389,10 @@ module.exports = React.createClass({
title = _t("%(roomName)s is not accessible at this time.", {roomName: this._roomName(true)}); title = _t("%(roomName)s is not accessible at this time.", {roomName: this._roomName(true)});
subTitle = [ subTitle = [
_t("Try again later, or ask a room admin to check if you have access."), _t("Try again later, or ask a room admin to check if you have access."),
_t("%(errcode)s was returned while trying to access the room. If you think you're seeing this message in error, please <issueLink>submit a bug report</issueLink>.", _t(
"%(errcode)s was returned while trying to access the room. " +
"If you think you're seeing this message in error, please " +
"<issueLink>submit a bug report</issueLink>.",
{ errcode: this.props.error.errcode }, { errcode: this.props.error.errcode },
{ issueLink: label => <a href="https://github.com/vector-im/riot-web/issues/new/choose" { issueLink: label => <a href="https://github.com/vector-im/riot-web/issues/new/choose"
target="_blank" rel="noopener">{ label }</a> }, target="_blank" rel="noopener">{ label }</a> },

View file

@ -803,18 +803,19 @@
"Forget this room": "Forget this room", "Forget this room": "Forget this room",
"Re-join": "Re-join", "Re-join": "Re-join",
"You were banned from %(roomName)s by %(memberName)s": "You were banned from %(roomName)s by %(memberName)s", "You were banned from %(roomName)s by %(memberName)s": "You were banned from %(roomName)s by %(memberName)s",
"Something went wrong with your invite to this room": "Something went wrong with your invite to this room", "Something went wrong with your invite to %(roomName)s": "Something went wrong with your invite to %(roomName)s",
"%(errcode)s was returned while trying to valide your invite. You could try to pass this information on to a room admin.": "%(errcode)s was returned while trying to valide your invite. You could try to pass this information on to a room admin.", "%(errcode)s was returned while trying to valide your invite. You could try to pass this information on to a room admin.": "%(errcode)s was returned while trying to valide your invite. You could try to pass this information on to a room admin.",
"You can only join it with a working invite.": "You can only join it with a working invite.", "You can only join it with a working invite.": "You can only join it with a working invite.",
"You can still join it because this is a public room.": "You can still join it because this is a public room.", "You can still join it because this is a public room.": "You can still join it because this is a public room.",
"Join the discussion": "Join the discussion", "Join the discussion": "Join the discussion",
"Try to join anyway": "Try to join anyway", "Try to join anyway": "Try to join anyway",
"The room invite wasn't sent to your account": "The room invite wasn't sent to your account", "This invite to %(roomName)s wasn't sent to your account": "This invite to %(roomName)s wasn't sent to your account",
"Sign in with a different account, ask for another invite, or add the e-mail address %(email)s to this account.": "Sign in with a different account, ask for another invite, or add the e-mail address %(email)s to this account.", "Sign in with a different account, ask for another invite, or add the e-mail address %(email)s to this account.": "Sign in with a different account, ask for another invite, or add the e-mail address %(email)s to this account.",
"Do you want to join this room?": "Do you want to join this room?", "Do you want to chat with %(user)s?": "Do you want to chat with %(user)s?",
"Do you want to join %(roomName)s?": "Do you want to join %(roomName)s?",
"<userName/> invited you": "<userName/> invited you", "<userName/> invited you": "<userName/> invited you",
"Reject": "Reject", "Reject": "Reject",
"You're previewing this room. Want to join it?": "You're previewing this room. Want to join it?", "You're previewing %(roomName)s. Want to join it?": "You're previewing %(roomName)s. Want to join it?",
"%(roomName)s can't be previewed. Do you want to join it?": "%(roomName)s can't be previewed. Do you want to join it?", "%(roomName)s can't be previewed. Do you want to join it?": "%(roomName)s can't be previewed. Do you want to join it?",
"%(roomName)s does not exist.": "%(roomName)s does not exist.", "%(roomName)s does not exist.": "%(roomName)s does not exist.",
"This room doesn't exist. Are you sure you're at the right place?": "This room doesn't exist. Are you sure you're at the right place?", "This room doesn't exist. Are you sure you're at the right place?": "This room doesn't exist. Are you sure you're at the right place?",