Files
ThreadNet-Web/src/components/views/dialogs/AskInviteAnywayDialog.tsx
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

91 lines
2.8 KiB
TypeScript
Raw Normal View History

/*
2024-09-09 14:57:16 +01:00
Copyright 2024 New Vector Ltd.
Copyright 2023 The Matrix.org Foundation C.I.C.
2024-09-09 14:57:16 +01:00
Copyright 2019 New Vector Ltd
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
2024-09-09 14:57:16 +01:00
Please see LICENSE files in the repository root for full details.
*/
import React, { useCallback } from "react";
2021-10-22 17:23:32 -05:00
import { _t } from "../../../languageHandler";
import SettingsStore from "../../../settings/SettingsStore";
2021-06-14 21:03:12 +01:00
import { SettingLevel } from "../../../settings/SettingLevel";
2021-07-02 17:08:27 +02:00
import BaseDialog from "./BaseDialog";
2021-06-14 21:03:12 +01:00
export interface UnknownProfile {
userId: string;
errorText: string;
}
export type UnknownProfiles = UnknownProfile[];
export interface AskInviteAnywayDialogProps {
unknownProfileUsers: UnknownProfiles;
2021-06-14 21:03:12 +01:00
onInviteAnyways: () => void;
onGiveUp: () => void;
onFinished: (success: boolean) => void;
description?: string;
inviteNeverWarnLabel?: string;
inviteLabel?: string;
2021-06-14 21:03:12 +01:00
}
export default function AskInviteAnywayDialog({
onFinished,
onGiveUp,
onInviteAnyways,
unknownProfileUsers,
description: descriptionProp,
inviteNeverWarnLabel,
inviteLabel,
}: AskInviteAnywayDialogProps): JSX.Element {
const onInviteClicked = useCallback((): void => {
onInviteAnyways();
onFinished(true);
}, [onInviteAnyways, onFinished]);
const onInviteNeverWarnClicked = useCallback((): void => {
2019-01-16 15:07:30 +00:00
SettingsStore.setValue("promptBeforeInviteUnknownUsers", null, SettingLevel.ACCOUNT, false);
onInviteAnyways();
onFinished(true);
}, [onInviteAnyways, onFinished]);
const onGiveUpClicked = useCallback((): void => {
onGiveUp();
onFinished(false);
}, [onGiveUp, onFinished]);
const errorList = unknownProfileUsers.map((address) => (
<li key={address.userId}>
{address.userId}: {address.errorText}
</li>
));
const description = descriptionProp ?? _t("invite|unable_find_profiles_description_default");
return (
<BaseDialog
className="mx_RetryInvitesDialog"
onFinished={onGiveUpClicked}
title={_t("invite|unable_find_profiles_title")}
contentId="mx_Dialog_content"
>
<div id="mx_Dialog_content">
<p>{description}</p>
<ul>{errorList}</ul>
</div>
<div className="mx_Dialog_buttons">
<button onClick={onGiveUpClicked}>{_t("action|close")}</button>
<button onClick={onInviteNeverWarnClicked}>
{inviteNeverWarnLabel ?? _t("invite|unable_find_profiles_invite_never_warn_label_default")}
</button>
<button onClick={onInviteClicked} autoFocus={true}>
{inviteLabel ?? _t("invite|unable_find_profiles_invite_label_default")}
</button>
</div>
</BaseDialog>
);
2020-08-29 12:14:16 +01:00
}