Merge in DNS/adguard-home from ADG-9415 to master Squashed commit of the following: commit76bf99499aMerge:29529970a0389515eeAuthor: Ildar Kamalov <ik@adguard.com> Date: Wed Feb 26 18:31:41 2025 +0300 Merge branch 'master' into ADG-9415 commit29529970a3Merge:b49790daf782a1a982Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Mon Feb 24 15:44:38 2025 +0300 Merge branch 'master' into ADG-9415 commitb49790daf8Author: Ildar Kamalov <ik@adguard.com> Date: Mon Feb 24 15:30:18 2025 +0300 fix default lease duration value commitcb307472ecAuthor: Ildar Kamalov <ik@adguard.com> Date: Mon Feb 24 10:35:26 2025 +0300 fix default response status commit115e743e1aAuthor: Ildar Kamalov <ik@adguard.com> Date: Mon Feb 24 10:32:46 2025 +0300 fix upstream description commit26b0eddacaAuthor: Ildar Kamalov <ik@adguard.com> Date: Tue Feb 18 17:40:41 2025 +0300 use const for test config file commit58faa7c537Author: Ildar Kamalov <ik@adguard.com> Date: Tue Feb 18 17:31:04 2025 +0300 fix install config commit0a3346d911Author: Ildar Kamalov <ik@adguard.com> Date: Mon Feb 17 15:25:23 2025 +0300 fix install check config commit17c4c26ea8Author: Ildar Kamalov <ik@adguard.com> Date: Fri Feb 14 17:18:20 2025 +0300 fix query log commit14a2685ae3Author: Ildar Kamalov <ik@adguard.com> Date: Fri Feb 14 15:52:36 2025 +0300 fix dhcp initial values commite7a8db7afdAuthor: Ildar Kamalov <ik@adguard.com> Date: Fri Feb 14 14:37:24 2025 +0300 fix encryption form values commit1c8917f7acAuthor: Ildar Kamalov <ik@adguard.com> Date: Fri Feb 14 14:07:29 2025 +0300 fix blocked services submit commit4dfa536ceaAuthor: Ildar Kamalov <ik@adguard.com> Date: Fri Feb 14 13:50:47 2025 +0300 dns config ip validation commit4fee83fe13Author: Ildar Kamalov <ik@adguard.com> Date: Wed Feb 12 17:49:54 2025 +0300 add playwright warning commit8c2f36e7a6Author: Ildar Kamalov <ik@adguard.com> Date: Tue Feb 11 18:36:18 2025 +0300 fix config file name commit83db5f33dcAuthor: Ildar Kamalov <ik@adguard.com> Date: Tue Feb 11 16:16:43 2025 +0300 temp config file commit9080c1620fAuthor: Ildar Kamalov <ik@adguard.com> Date: Tue Feb 11 15:01:46 2025 +0300 update readme commitee1520307fMerge:fd12e33c02fe2d254bAuthor: Ildar Kamalov <ik@adguard.com> Date: Tue Feb 11 14:44:06 2025 +0300 Merge branch 'master' into ADG-9415 commitfd12e33c06Author: Igor Lobanov <bniwredyc@gmail.com> Date: Mon Feb 10 10:29:43 2025 +0100 added typecheck on build, fixed eslint commitb3849eebc4Merge:225167a8b9bf3ee128Author: Igor Lobanov <bniwredyc@gmail.com> Date: Mon Feb 10 09:43:32 2025 +0100 Merge branch 'ADG-9415' of https://bit.int.agrd.dev/scm/dns/adguard-home into ADG-9415 ... and 94 more commits
110 lines
3.0 KiB
TypeScript
110 lines
3.0 KiB
TypeScript
import React from 'react';
|
|
import { Trans, withTranslation } from 'react-i18next';
|
|
|
|
import ReactModal from 'react-modal';
|
|
|
|
import { MODAL_TYPE } from '../../../helpers/constants';
|
|
import { Form } from './Form';
|
|
|
|
const normalizeIds = (initialIds?: string[]): { name: string }[] => {
|
|
if (!initialIds || initialIds.length === 0) {
|
|
return [{ name: '' }];
|
|
}
|
|
|
|
return initialIds.map((id: string) => ({ name: id }));
|
|
};
|
|
|
|
const getInitialData = ({ initial, modalType, clientId, clientName }: any) => {
|
|
if (initial && initial.blocked_services) {
|
|
const { blocked_services } = initial;
|
|
const blocked = {};
|
|
|
|
blocked_services.forEach((service: any) => {
|
|
blocked[service] = true;
|
|
});
|
|
|
|
return {
|
|
...initial,
|
|
blocked_services: blocked,
|
|
ids: normalizeIds(initial.ids),
|
|
};
|
|
}
|
|
|
|
if (modalType !== MODAL_TYPE.EDIT_CLIENT && clientId) {
|
|
return {
|
|
...initial,
|
|
name: clientName,
|
|
ids: [{ name: clientId }],
|
|
};
|
|
}
|
|
|
|
return {
|
|
...initial,
|
|
ids: normalizeIds(initial.ids),
|
|
};
|
|
};
|
|
|
|
interface ModalProps {
|
|
isModalOpen: boolean;
|
|
modalType: string;
|
|
currentClientData: object;
|
|
handleSubmit: (values: any) => void;
|
|
handleClose: (...args: unknown[]) => unknown;
|
|
processingAdding: boolean;
|
|
processingUpdating: boolean;
|
|
tagsOptions: { label: string; value: string }[];
|
|
t: (...args: unknown[]) => string;
|
|
clientId?: string;
|
|
}
|
|
|
|
const Modal = ({
|
|
isModalOpen,
|
|
modalType,
|
|
currentClientData,
|
|
handleSubmit,
|
|
handleClose,
|
|
processingAdding,
|
|
processingUpdating,
|
|
tagsOptions,
|
|
clientId,
|
|
t,
|
|
}: ModalProps) => {
|
|
const initialData = getInitialData({
|
|
initial: currentClientData,
|
|
modalType,
|
|
clientId,
|
|
clientName: t('client_name', { id: clientId }),
|
|
});
|
|
|
|
return (
|
|
<ReactModal
|
|
className="Modal__Bootstrap modal-dialog modal-dialog-centered modal-dialog--clients"
|
|
closeTimeoutMS={0}
|
|
isOpen={isModalOpen}
|
|
onRequestClose={handleClose}>
|
|
<div className="modal-content">
|
|
<div className="modal-header">
|
|
<h4 className="modal-title">
|
|
{modalType === MODAL_TYPE.EDIT_CLIENT ? <Trans>client_edit</Trans> : <Trans>client_new</Trans>}
|
|
</h4>
|
|
|
|
<button type="button" className="close" onClick={handleClose}>
|
|
<span className="sr-only">Close</span>
|
|
</button>
|
|
</div>
|
|
|
|
<Form
|
|
initialValues={{ ...initialData }}
|
|
onSubmit={handleSubmit}
|
|
onClose={handleClose}
|
|
processingAdding={processingAdding}
|
|
processingUpdating={processingUpdating}
|
|
tagsOptions={tagsOptions}
|
|
/>
|
|
</div>
|
|
</ReactModal>
|
|
);
|
|
};
|
|
|
|
export default withTranslation()(Modal);
|