You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.9 KiB
64 lines
1.9 KiB
import { FC } from 'react'; |
|
|
|
import AddMailServerForm from './AddMailServerForm'; |
|
import CrudList from '../CrudList'; |
|
import EditMailServerForm from './EditMailServerForm'; |
|
import { BodyText } from '../Text'; |
|
import useFetch from '../../hooks/useFetch'; |
|
|
|
const ManageMailServer: FC = () => { |
|
const { data: host, loading: loadingHost } = |
|
useFetch<APIHostDetail>('/host/local'); |
|
|
|
return ( |
|
<> |
|
<CrudList<APIMailServerOverview, APIMailServerDetail> |
|
addHeader="Add mail server" |
|
editHeader={(entry) => `Update ${entry?.address}:${entry?.port}`} |
|
entriesUrl="/mail-server" |
|
getAddLoading={(previous) => previous || loadingHost} |
|
getDeleteErrorMessage={({ children, ...rest }) => ({ |
|
...rest, |
|
children: <>Failed to delete mail server(s). {children}</>, |
|
})} |
|
getDeleteHeader={(count) => |
|
`Delete the following ${count} mail server(s)?` |
|
} |
|
getDeleteSuccessMessage={() => ({ |
|
children: <>Successfully deleted mail server(s).</>, |
|
})} |
|
listEmpty="No mail server(s) found" |
|
renderAddForm={(tools) => |
|
host && ( |
|
<AddMailServerForm localhostDomain={host.domain} tools={tools} /> |
|
) |
|
} |
|
renderDeleteItem={(mailServers, { key }) => { |
|
const ms = mailServers?.[key]; |
|
|
|
return ( |
|
<BodyText> |
|
{ms?.address}:{ms?.port} |
|
</BodyText> |
|
); |
|
}} |
|
renderEditForm={(tools, mailServer) => |
|
mailServer && ( |
|
<EditMailServerForm |
|
mailServerUuid={mailServer.uuid} |
|
previousFormikValues={{ [mailServer.uuid]: mailServer }} |
|
tools={tools} |
|
/> |
|
) |
|
} |
|
renderListItem={(uuid, { address, port }) => ( |
|
<BodyText> |
|
{address}:{port} |
|
</BodyText> |
|
)} |
|
/> |
|
</> |
|
); |
|
}; |
|
|
|
export default ManageMailServer;
|
|
|