63 lines
1.6 KiB
TypeScript
63 lines
1.6 KiB
TypeScript
![]() |
// Copyright 2025 Signal Messenger, LLC
|
||
|
// SPDX-License-Identifier: AGPL-3.0-only
|
||
|
|
||
|
import React, { useCallback } from 'react';
|
||
|
import { Modal } from './Modal';
|
||
|
import { Button } from './Button';
|
||
|
import { I18n } from './I18n';
|
||
|
import type { LocalizerType } from '../types/Util';
|
||
|
import { openLinkInWebBrowser } from '../util/openLinkInWebBrowser';
|
||
|
|
||
|
export type DonationPrivacyInformationModalProps = {
|
||
|
i18n: LocalizerType;
|
||
|
onClose: () => void;
|
||
|
};
|
||
|
|
||
|
export function DonationPrivacyInformationModal({
|
||
|
i18n,
|
||
|
onClose,
|
||
|
}: DonationPrivacyInformationModalProps): JSX.Element {
|
||
|
const handleDonationFAQsClick = () => {
|
||
|
openLinkInWebBrowser(
|
||
|
'https://support.signal.org/hc/articles/360031949872-Donor-FAQs'
|
||
|
);
|
||
|
};
|
||
|
|
||
|
const modalFooter = (
|
||
|
<div className="DonationPrivacyInformationModal__footer">
|
||
|
<button
|
||
|
type="button"
|
||
|
className="DonationPrivacyInformationModal__faqs-link"
|
||
|
onClick={handleDonationFAQsClick}
|
||
|
>
|
||
|
{i18n('icu:PreferencesDonations__faqs')}
|
||
|
</button>
|
||
|
<Button onClick={onClose}>{i18n('icu:Confirmation--confirm')}</Button>
|
||
|
</div>
|
||
|
);
|
||
|
|
||
|
const paragraphComponent = useCallback(
|
||
|
(parts: Array<string | JSX.Element>) => <p>{parts}</p>,
|
||
|
[]
|
||
|
);
|
||
|
|
||
|
return (
|
||
|
<Modal
|
||
|
modalName="DonationPrivacyInformationModal"
|
||
|
i18n={i18n}
|
||
|
title={i18n('icu:PreferencesDonations__privacy-modal-title')}
|
||
|
onClose={onClose}
|
||
|
hasXButton
|
||
|
modalFooter={modalFooter}
|
||
|
>
|
||
|
<I18n
|
||
|
components={{
|
||
|
paragraph: paragraphComponent,
|
||
|
}}
|
||
|
i18n={i18n}
|
||
|
id="icu:PreferencesDonations__privacy-modal-content"
|
||
|
/>
|
||
|
</Modal>
|
||
|
);
|
||
|
}
|