Add clarifying text to DM dialog about what is about to happen

This commit is contained in:
Travis Ralston 2020-08-28 13:22:20 -06:00
parent cc2fc911af
commit e58b514803
4 changed files with 47 additions and 1 deletions

View file

@ -233,3 +233,7 @@ limitations under the License.
.mx_InviteDialog_addressBar {
margin-right: 45px;
}
.mx_InviteDialog_helpText .mx_AccessibleButton_kind_link {
padding: 0;
}

View file

@ -24,6 +24,8 @@ import * as sdk from './';
import { _t } from './languageHandler';
import {KIND_DM, KIND_INVITE} from "./components/views/dialogs/InviteDialog";
import CommunityPrototypeInviteDialog from "./components/views/dialogs/CommunityPrototypeInviteDialog";
import GroupStore from "./stores/GroupStore";
import dis from "./dispatcher/dispatcher";
/**
* Invites multiple addresses to a room
@ -64,6 +66,24 @@ export function showCommunityRoomInviteDialog(roomId, communityName) {
);
}
export function showCommunityInviteDialog(communityId) {
const rooms = GroupStore.getGroupRooms(communityId)
.map(r => MatrixClientPeg.get().getRoom(r.roomId))
.filter(r => !!r);
let chat = rooms.find(r => {
const idState = r.currentState.getStateEvents("im.vector.general_chat", "");
if (!idState || idState.getContent()['groupId'] !== communityId) return false;
return true;
});
if (!chat) chat = rooms[0];
if (chat) {
const summary = GroupStore.getSummary(communityId);
showCommunityRoomInviteDialog(chat.roomId, summary?.profile?.name || communityId);
} else {
throw new Error("Failed to locate appropriate room to start an invite in");
}
}
/**
* Checks if the given MatrixEvent is a valid 3rd party user invite.
* @param {MatrixEvent} event The event to check

View file

@ -32,7 +32,7 @@ import IdentityAuthClient from "../../../IdentityAuthClient";
import Modal from "../../../Modal";
import {humanizeTime} from "../../../utils/humanize";
import createRoom, {canEncryptToAllUsers, privateShouldBeEncrypted} from "../../../createRoom";
import {inviteMultipleToRoom} from "../../../RoomInvite";
import {inviteMultipleToRoom, showCommunityInviteDialog} from "../../../RoomInvite";
import {Key} from "../../../Keyboard";
import {Action} from "../../../dispatcher/actions";
import {DefaultTagID} from "../../../stores/room-list/models";
@ -911,6 +911,11 @@ export default class InviteDialog extends React.PureComponent {
this.props.onFinished();
};
_onCommunityInviteClick = (e) => {
this.props.onFinished();
showCommunityInviteDialog(TagOrderStore.getSelectedPrototypeTag());
};
_renderSection(kind: "recents"|"suggestions") {
let sourceMembers = kind === 'recents' ? this.state.recents : this.state.suggestions;
let showNum = kind === 'recents' ? this.state.numRecentsShown : this.state.numSuggestionsShown;
@ -1093,6 +1098,22 @@ export default class InviteDialog extends React.PureComponent {
return <a href={makeUserPermalink(userId)} rel="noreferrer noopener" target="_blank">{userId}</a>;
}},
);
if (TagOrderStore.getSelectedPrototypeTag()) {
const communityId = TagOrderStore.getSelectedPrototypeTag();
const communityName = GroupStore.getSummary(communityId)?.profile?.name || communityId;
helpText = _t(
"Start a conversation with someone using their name, username (like <userId/>) or email address. " +
"This won't invite them to %(communityName)s. To invite someone to %(communityName)s, click <a>here</a>.",
{communityName}, {
userId: () => {
return <a href={makeUserPermalink(userId)} rel="noreferrer noopener" target="_blank">{userId}</a>;
},
a: (sub) => {
return <AccessibleButton kind="link" onClick={this._onCommunityInviteClick}>{sub}</AccessibleButton>
},
},
)
}
buttonText = _t("Go");
goButtonFn = this._startDm;
} else { // KIND_INVITE

View file

@ -1713,6 +1713,7 @@
"Recently Direct Messaged": "Recently Direct Messaged",
"Direct Messages": "Direct Messages",
"Start a conversation with someone using their name, username (like <userId/>) or email address.": "Start a conversation with someone using their name, username (like <userId/>) or email address.",
"Start a conversation with someone using their name, username (like <userId/>) or email address. This won't invite them to %(communityName)s. To invite someone to %(communityName)s, click <a>here</a>.": "Start a conversation with someone using their name, username (like <userId/>) or email address. This won't invite them to %(communityName)s. To invite someone to %(communityName)s, click <a>here</a>.",
"Go": "Go",
"Invite someone using their name, username (like <userId/>), email address or <a>share this room</a>.": "Invite someone using their name, username (like <userId/>), email address or <a>share this room</a>.",
"a new master key signature": "a new master key signature",