mirror of
https://github.com/vector-im/element-web.git
synced 2024-11-16 21:24:59 +08:00
Add a dialog when inviting via slash command without IS
This adds a dialog to ask how you want to proceed when trying to invite via email when there is no IS configured. Fixes https://github.com/vector-im/riot-web/issues/10619
This commit is contained in:
parent
27fdef557d
commit
8ff0883c22
@ -31,6 +31,9 @@ import QuestionDialog from "./components/views/dialogs/QuestionDialog";
|
|||||||
import WidgetUtils from "./utils/WidgetUtils";
|
import WidgetUtils from "./utils/WidgetUtils";
|
||||||
import {textToHtmlRainbow} from "./utils/colour";
|
import {textToHtmlRainbow} from "./utils/colour";
|
||||||
import Promise from "bluebird";
|
import Promise from "bluebird";
|
||||||
|
import { getAddressType } from './UserAddress';
|
||||||
|
import { abbreviateUrl } from './utils/UrlUtils';
|
||||||
|
import { getDefaultIdentityServerUrl, useDefaultIdentityServer } from './utils/IdentityServerUtils';
|
||||||
|
|
||||||
const singleMxcUpload = async () => {
|
const singleMxcUpload = async () => {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
@ -342,11 +345,46 @@ export const CommandMap = {
|
|||||||
if (matches) {
|
if (matches) {
|
||||||
// We use a MultiInviter to re-use the invite logic, even though
|
// We use a MultiInviter to re-use the invite logic, even though
|
||||||
// we're only inviting one user.
|
// we're only inviting one user.
|
||||||
const userId = matches[1];
|
const address = matches[1];
|
||||||
|
// If we need an identity server but don't have one, things
|
||||||
|
// get a bit more complex here, but we try to show something
|
||||||
|
// meaningful.
|
||||||
|
let finished = Promise.resolve();
|
||||||
|
if (
|
||||||
|
getAddressType(address) === 'email' &&
|
||||||
|
!MatrixClientPeg.get().getIdentityServerUrl()
|
||||||
|
) {
|
||||||
|
const defaultIdentityServerUrl = getDefaultIdentityServerUrl();
|
||||||
|
if (defaultIdentityServerUrl) {
|
||||||
|
({ finished } = Modal.createTrackedDialog('Slash Commands', 'Identity server',
|
||||||
|
QuestionDialog, {
|
||||||
|
title: _t("Use an identity server"),
|
||||||
|
description: <p>{_t(
|
||||||
|
"Use an identity server to invite by email. " +
|
||||||
|
"Click continue to use the default identity server " +
|
||||||
|
"(%(defaultIdentityServerName)s) or manage in Settings.",
|
||||||
|
{
|
||||||
|
defaultIdentityServerName: abbreviateUrl(defaultIdentityServerUrl),
|
||||||
|
},
|
||||||
|
)}</p>,
|
||||||
|
button: _t("Continue"),
|
||||||
|
},
|
||||||
|
));
|
||||||
|
} else {
|
||||||
|
return reject(_t("Use an identity server to invite by email. Manage in Settings."));
|
||||||
|
}
|
||||||
|
}
|
||||||
const inviter = new MultiInviter(roomId);
|
const inviter = new MultiInviter(roomId);
|
||||||
return success(inviter.invite([userId]).then(() => {
|
return success(finished.then(([useDefault] = []) => {
|
||||||
if (inviter.getCompletionState(userId) !== "invited") {
|
if (useDefault) {
|
||||||
throw new Error(inviter.getErrorText(userId));
|
useDefaultIdentityServer();
|
||||||
|
} else if (useDefault === false) {
|
||||||
|
throw new Error(_t("Use an identity server to invite by email. Manage in Settings."));
|
||||||
|
}
|
||||||
|
return inviter.invite([address]);
|
||||||
|
}).then(() => {
|
||||||
|
if (inviter.getCompletionState(address) !== "invited") {
|
||||||
|
throw new Error(inviter.getErrorText(address));
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
@ -161,6 +161,9 @@
|
|||||||
"This room has no topic.": "This room has no topic.",
|
"This room has no topic.": "This room has no topic.",
|
||||||
"Sets the room name": "Sets the room name",
|
"Sets the room name": "Sets the room name",
|
||||||
"Invites user with given id to current room": "Invites user with given id to current room",
|
"Invites user with given id to current room": "Invites user with given id to current room",
|
||||||
|
"Use an identity server": "Use an identity server",
|
||||||
|
"Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.",
|
||||||
|
"Use an identity server to invite by email. Manage in Settings.": "Use an identity server to invite by email. Manage in Settings.",
|
||||||
"Joins room with given alias": "Joins room with given alias",
|
"Joins room with given alias": "Joins room with given alias",
|
||||||
"Leave room": "Leave room",
|
"Leave room": "Leave room",
|
||||||
"Unrecognised room alias:": "Unrecognised room alias:",
|
"Unrecognised room alias:": "Unrecognised room alias:",
|
||||||
|
Loading…
Reference in New Issue
Block a user