Move add server form inside of server list

This commit is contained in:
jeffvli
2022-11-08 15:16:05 -08:00
parent 8357941bfa
commit 84b031f126
2 changed files with 35 additions and 32 deletions
@@ -1,13 +1,17 @@
import { Accordion, Group } from '@mantine/core'; import { Accordion, Group } from '@mantine/core';
import { openContextModal } from '@mantine/modals';
import { RiServerFill } from 'react-icons/ri'; import { RiServerFill } from 'react-icons/ri';
import { Text } from '@/renderer/components'; import { Text, Button, ContextModalVars } from '@/renderer/components';
import { ServerListItem } from '@/renderer/features/servers/components/server-list-item'; import { ServerListItem } from '@/renderer/features/servers/components/server-list-item';
import { useServerList } from '@/renderer/features/servers/queries/use-server-list'; import { useServerList } from '@/renderer/features/servers/queries/use-server-list';
import { usePermissions } from '@/renderer/features/shared';
import { Font } from '@/renderer/styles'; import { Font } from '@/renderer/styles';
import { titleCase } from '@/renderer/utils'; import { titleCase } from '@/renderer/utils';
import { AddServerForm } from './add-server-form';
export const ServerList = () => { export const ServerList = () => {
const { data: servers } = useServerList(); const { data: servers } = useServerList();
const permissions = usePermissions();
return ( return (
<> <>
@@ -27,6 +31,31 @@ export const ServerList = () => {
</Accordion.Item> </Accordion.Item>
))} ))}
</Accordion> </Accordion>
<Group mt={10} position="right">
<Button
compact
disabled={!permissions.createServer}
onClick={() =>
openContextModal({
centered: true,
exitTransitionDuration: 300,
innerProps: {
modalBody: (vars: ContextModalVars) => (
<AddServerForm
onCancel={() => vars.context.closeModal(vars.id)}
/>
),
},
modal: 'base',
overflow: 'inside',
title: 'Add server',
transition: 'slide-down',
})
}
>
Add server
</Button>
</Group>
</> </>
); );
}; };
@@ -1,5 +1,5 @@
import { Group } from '@mantine/core'; import { Group } from '@mantine/core';
import { openModal, closeAllModals } from '@mantine/modals'; import { openModal } from '@mantine/modals';
import { useQueryClient } from '@tanstack/react-query'; import { useQueryClient } from '@tanstack/react-query';
import { import {
RiLock2Line, RiLock2Line,
@@ -10,18 +10,12 @@ import {
RiSettings2Line, RiSettings2Line,
RiEdit2Line, RiEdit2Line,
RiUserAddLine, RiUserAddLine,
RiAddLine,
} from 'react-icons/ri'; } from 'react-icons/ri';
import { useNavigate } from 'react-router'; import { useNavigate } from 'react-router';
import { queryKeys } from '@/renderer/api/query-keys'; import { queryKeys } from '@/renderer/api/query-keys';
import { Button, DropdownMenu, Text } from '@/renderer/components'; import { Button, DropdownMenu, Text } from '@/renderer/components';
import { import { ServerList, useServerList } from '@/renderer/features/servers';
AddServerForm,
ServerList,
useServerList,
} from '@/renderer/features/servers';
import { Settings } from '@/renderer/features/settings'; import { Settings } from '@/renderer/features/settings';
import { usePermissions } from '@/renderer/features/shared';
import { useAuthStore } from '@/renderer/store'; import { useAuthStore } from '@/renderer/store';
export const AppMenu = () => { export const AppMenu = () => {
@@ -31,7 +25,6 @@ export const AppMenu = () => {
const currentServer = useAuthStore((state) => state.currentServer); const currentServer = useAuthStore((state) => state.currentServer);
const setCurrentServer = useAuthStore((state) => state.setCurrentServer); const setCurrentServer = useAuthStore((state) => state.setCurrentServer);
const serverCredentials = useAuthStore((state) => state.serverCredentials); const serverCredentials = useAuthStore((state) => state.serverCredentials);
const permissions = usePermissions();
const { data: servers } = useServerList(); const { data: servers } = useServerList();
const serverList = const serverList =
@@ -46,17 +39,6 @@ export const AppMenu = () => {
navigate('/login'); navigate('/login');
}; };
const handleAddServerModal = () => {
openModal({
centered: true,
children: <AddServerForm onCancel={closeAllModals} />,
exitTransitionDuration: 300,
overflow: 'inside',
title: 'Add server',
transition: 'slide-down',
});
};
const handleManageServersModal = () => { const handleManageServersModal = () => {
openModal({ openModal({
centered: true, centered: true,
@@ -138,23 +120,15 @@ export const AppMenu = () => {
Settings Settings
</DropdownMenu.Item> </DropdownMenu.Item>
<DropdownMenu.Divider /> <DropdownMenu.Divider />
{permissions.createServer && ( <DropdownMenu.Item disabled rightSection={<RiUserAddLine />}>
<DropdownMenu.Item Manage users
rightSection={<RiAddLine />}
onClick={handleAddServerModal}
>
Add server
</DropdownMenu.Item> </DropdownMenu.Item>
)}
<DropdownMenu.Item <DropdownMenu.Item
rightSection={<RiEdit2Line />} rightSection={<RiEdit2Line />}
onClick={handleManageServersModal} onClick={handleManageServersModal}
> >
Manage servers Manage servers
</DropdownMenu.Item> </DropdownMenu.Item>
<DropdownMenu.Item disabled rightSection={<RiUserAddLine />}>
Manage users
</DropdownMenu.Item>
<DropdownMenu.Divider /> <DropdownMenu.Divider />
<DropdownMenu.Item <DropdownMenu.Item
rightSection={<RiLogoutBoxLine />} rightSection={<RiLogoutBoxLine />}