Skip to content

Commit 8c98264

Browse files
committed
Remove last calls to useServer
1 parent 6bc51ad commit 8c98264

File tree

13 files changed

+44
-64
lines changed

13 files changed

+44
-64
lines changed

resources/scripts/components/server/backups/BackupContainer.tsx

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
11
import React, { useEffect } from 'react';
2-
import { Helmet } from 'react-helmet';
32
import Spinner from '@/components/elements/Spinner';
4-
import useServer from '@/plugins/useServer';
53
import useFlash from '@/plugins/useFlash';
64
import Can from '@/components/elements/Can';
75
import CreateBackupButton from '@/components/server/backups/CreateBackupButton';
86
import FlashMessageRender from '@/components/FlashMessageRender';
97
import BackupRow from '@/components/server/backups/BackupRow';
10-
import PageContentBlock from '@/components/elements/PageContentBlock';
118
import tw from 'twin.macro';
129
import getServerBackups from '@/api/swr/getServerBackups';
10+
import { ServerContext } from '@/state/server';
11+
import ServerContentBlock from '@/components/elements/ServerContentBlock';
1312

1413
export default () => {
1514
const { clearFlashes, clearAndAddHttpError } = useFlash();
16-
const { featureLimits, name: serverName } = useServer();
17-
1815
const { data: backups, error, isValidating } = getServerBackups();
1916

17+
const backupLimit = ServerContext.useStoreState(state => state.server.data!.featureLimits.backups);
18+
2019
useEffect(() => {
2120
if (!error) {
2221
clearFlashes('backups');
@@ -32,10 +31,7 @@ export default () => {
3231
}
3332

3433
return (
35-
<PageContentBlock>
36-
<Helmet>
37-
<title>{serverName} | Backups</title>
38-
</Helmet>
34+
<ServerContentBlock title={'Backups'}>
3935
<FlashMessageRender byKey={'backups'} css={tw`mb-4`}/>
4036
{!backups.items.length ?
4137
<p css={tw`text-center text-sm text-neutral-400`}>
@@ -50,23 +46,23 @@ export default () => {
5046
/>)}
5147
</div>
5248
}
53-
{featureLimits.backups === 0 &&
49+
{backupLimit === 0 &&
5450
<p css={tw`text-center text-sm text-neutral-400`}>
5551
Backups cannot be created for this server.
5652
</p>
5753
}
5854
<Can action={'backup.create'}>
59-
{(featureLimits.backups > 0 && backups.items.length > 0) &&
55+
{(backupLimit > 0 && backups.items.length > 0) &&
6056
<p css={tw`text-center text-xs text-neutral-400 mt-2`}>
61-
{backups.items.length} of {featureLimits.backups} backups have been created for this server.
57+
{backups.items.length} of {backupLimit} backups have been created for this server.
6258
</p>
6359
}
64-
{featureLimits.backups > 0 && featureLimits.backups !== backups.items.length &&
60+
{backupLimit > 0 && backupLimit !== backups.items.length &&
6561
<div css={tw`mt-6 flex justify-end`}>
6662
<CreateBackupButton/>
6763
</div>
6864
}
6965
</Can>
70-
</PageContentBlock>
66+
</ServerContentBlock>
7167
);
7268
};

resources/scripts/components/server/backups/BackupContextMenu.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,20 @@ import getBackupDownloadUrl from '@/api/server/backups/getBackupDownloadUrl';
66
import useFlash from '@/plugins/useFlash';
77
import ChecksumModal from '@/components/server/backups/ChecksumModal';
88
import SpinnerOverlay from '@/components/elements/SpinnerOverlay';
9-
import useServer from '@/plugins/useServer';
109
import deleteBackup from '@/api/server/backups/deleteBackup';
1110
import ConfirmationModal from '@/components/elements/ConfirmationModal';
1211
import Can from '@/components/elements/Can';
1312
import tw from 'twin.macro';
1413
import getServerBackups from '@/api/swr/getServerBackups';
1514
import { ServerBackup } from '@/api/server/types';
15+
import { ServerContext } from '@/state/server';
1616

1717
interface Props {
1818
backup: ServerBackup;
1919
}
2020

2121
export default ({ backup }: Props) => {
22-
const { uuid } = useServer();
22+
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
2323
const [ loading, setLoading ] = useState(false);
2424
const [ visible, setVisible ] = useState(false);
2525
const [ deleteVisible, setDeleteVisible ] = useState(false);

resources/scripts/components/server/backups/CreateBackupButton.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ import { object, string } from 'yup';
55
import Field from '@/components/elements/Field';
66
import FormikFieldWrapper from '@/components/elements/FormikFieldWrapper';
77
import useFlash from '@/plugins/useFlash';
8-
import useServer from '@/plugins/useServer';
98
import createServerBackup from '@/api/server/backups/createServerBackup';
109
import FlashMessageRender from '@/components/FlashMessageRender';
1110
import Button from '@/components/elements/Button';
1211
import tw from 'twin.macro';
1312
import { Textarea } from '@/components/elements/Input';
1413
import getServerBackups from '@/api/swr/getServerBackups';
14+
import { ServerContext } from '@/state/server';
1515

1616
interface Values {
1717
name: string;
@@ -58,7 +58,7 @@ const ModalContent = ({ ...props }: RequiredModalProps) => {
5858
};
5959

6060
export default () => {
61-
const { uuid } = useServer();
61+
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
6262
const { clearFlashes, clearAndAddHttpError } = useFlash();
6363
const [ visible, setVisible ] = useState(false);
6464
const { mutate } = getServerBackups();

resources/scripts/components/server/databases/CreateDatabaseButton.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import { ServerContext } from '@/state/server';
88
import { httpErrorToHuman } from '@/api/http';
99
import FlashMessageRender from '@/components/FlashMessageRender';
1010
import useFlash from '@/plugins/useFlash';
11-
import useServer from '@/plugins/useServer';
1211
import Button from '@/components/elements/Button';
1312
import tw from 'twin.macro';
1413

@@ -29,7 +28,7 @@ const schema = object().shape({
2928
});
3029

3130
export default () => {
32-
const { uuid } = useServer();
31+
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
3332
const { addError, clearFlashes } = useFlash();
3433
const [ visible, setVisible ] = useState(false);
3534

resources/scripts/components/server/databases/DatabaseRow.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { useState } from 'react';
22
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3-
import { faDatabase, faTrashAlt, faEye } from '@fortawesome/free-solid-svg-icons';
3+
import { faDatabase, faEye, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
44
import Modal from '@/components/elements/Modal';
55
import { Form, Formik, FormikHelpers } from 'formik';
66
import Field from '@/components/elements/Field';
@@ -12,7 +12,6 @@ import { httpErrorToHuman } from '@/api/http';
1212
import RotatePasswordButton from '@/components/server/databases/RotatePasswordButton';
1313
import Can from '@/components/elements/Can';
1414
import { ServerDatabase } from '@/api/server/getServerDatabases';
15-
import useServer from '@/plugins/useServer';
1615
import useFlash from '@/plugins/useFlash';
1716
import tw from 'twin.macro';
1817
import Button from '@/components/elements/Button';
@@ -26,7 +25,7 @@ interface Props {
2625
}
2726

2827
export default ({ database, className }: Props) => {
29-
const { uuid } = useServer();
28+
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
3029
const { addError, clearFlashes } = useFlash();
3130
const [ visible, setVisible ] = useState(false);
3231
const [ connectionVisible, setConnectionVisible ] = useState(false);

resources/scripts/components/server/databases/DatabasesContainer.tsx

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React, { useEffect, useState } from 'react';
2-
import { Helmet } from 'react-helmet';
32
import getServerDatabases from '@/api/server/getServerDatabases';
43
import { ServerContext } from '@/state/server';
54
import { httpErrorToHuman } from '@/api/http';
@@ -9,17 +8,19 @@ import Spinner from '@/components/elements/Spinner';
98
import CreateDatabaseButton from '@/components/server/databases/CreateDatabaseButton';
109
import Can from '@/components/elements/Can';
1110
import useFlash from '@/plugins/useFlash';
12-
import useServer from '@/plugins/useServer';
13-
import PageContentBlock from '@/components/elements/PageContentBlock';
1411
import tw from 'twin.macro';
1512
import Fade from '@/components/elements/Fade';
13+
import ServerContentBlock from '@/components/elements/ServerContentBlock';
14+
import { useDeepMemoize } from '@/plugins/useDeepMemoize';
1615

1716
export default () => {
18-
const { uuid, featureLimits, name: serverName } = useServer();
17+
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
18+
const databaseLimit = ServerContext.useStoreState(state => state.server.data!.featureLimits.databases);
19+
1920
const { addError, clearFlashes } = useFlash();
2021
const [ loading, setLoading ] = useState(true);
2122

22-
const databases = ServerContext.useStoreState(state => state.databases.data);
23+
const databases = useDeepMemoize(ServerContext.useStoreState(state => state.databases.data));
2324
const setDatabases = ServerContext.useStoreActions(state => state.databases.setDatabases);
2425

2526
useEffect(() => {
@@ -36,10 +37,7 @@ export default () => {
3637
}, []);
3738

3839
return (
39-
<PageContentBlock>
40-
<Helmet>
41-
<title> {serverName} | Databases </title>
42-
</Helmet>
40+
<ServerContentBlock title={'Databases'}>
4341
<FlashMessageRender byKey={'databases'} css={tw`mb-4`}/>
4442
{(!databases.length && loading) ?
4543
<Spinner size={'large'} centered/>
@@ -56,21 +54,21 @@ export default () => {
5654
))
5755
:
5856
<p css={tw`text-center text-sm text-neutral-400`}>
59-
{featureLimits.databases > 0 ?
57+
{databaseLimit > 0 ?
6058
'It looks like you have no databases.'
6159
:
6260
'Databases cannot be created for this server.'
6361
}
6462
</p>
6563
}
6664
<Can action={'database.create'}>
67-
{(featureLimits.databases > 0 && databases.length > 0) &&
65+
{(databaseLimit > 0 && databases.length > 0) &&
6866
<p css={tw`text-center text-xs text-neutral-400 mt-2`}>
69-
{databases.length} of {featureLimits.databases} databases have been allocated to this
67+
{databases.length} of {databaseLimit} databases have been allocated to this
7068
server.
7169
</p>
7270
}
73-
{featureLimits.databases > 0 && featureLimits.databases !== databases.length &&
71+
{databaseLimit > 0 && databaseLimit !== databases.length &&
7472
<div css={tw`mt-6 flex justify-end`}>
7573
<CreateDatabaseButton/>
7674
</div>
@@ -79,6 +77,6 @@ export default () => {
7977
</>
8078
</Fade>
8179
}
82-
</PageContentBlock>
80+
</ServerContentBlock>
8381
);
8482
};

resources/scripts/components/server/network/NetworkContainer.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import styled from 'styled-components/macro';
66
import GreyRowBox from '@/components/elements/GreyRowBox';
77
import Button from '@/components/elements/Button';
88
import Can from '@/components/elements/Can';
9-
import useServer from '@/plugins/useServer';
109
import useSWR from 'swr';
1110
import getServerAllocations from '@/api/server/network/getServerAllocations';
1211
import { Allocation } from '@/api/server/getServer';
@@ -18,12 +17,16 @@ import setServerAllocationNotes from '@/api/server/network/setServerAllocationNo
1817
import { debounce } from 'debounce';
1918
import InputSpinner from '@/components/elements/InputSpinner';
2019
import ServerContentBlock from '@/components/elements/ServerContentBlock';
20+
import { ServerContext } from '@/state/server';
21+
import { useDeepMemoize } from '@/plugins/useDeepMemoize';
2122

2223
const Code = styled.code`${tw`font-mono py-1 px-2 bg-neutral-900 rounded text-sm block`}`;
2324
const Label = styled.label`${tw`uppercase text-xs mt-1 text-neutral-400 block px-1 select-none transition-colors duration-150`}`;
2425

2526
const NetworkContainer = () => {
26-
const { uuid, allocations } = useServer();
27+
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
28+
const allocations = useDeepMemoize(ServerContext.useStoreState(state => state.server.data!.allocations));
29+
2730
const { clearFlashes, clearAndAddHttpError } = useFlash();
2831
const [ loading, setLoading ] = useState<false | number>(false);
2932
const { data, error, mutate } = useSWR<Allocation[]>(uuid, key => getServerAllocations(key), { initialData: allocations });

resources/scripts/components/server/schedules/EditScheduleModal.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import createOrUpdateSchedule from '@/api/server/schedules/createOrUpdateSchedul
88
import { ServerContext } from '@/state/server';
99
import { httpErrorToHuman } from '@/api/http';
1010
import FlashMessageRender from '@/components/FlashMessageRender';
11-
import useServer from '@/plugins/useServer';
1211
import useFlash from '@/plugins/useFlash';
1312
import tw from 'twin.macro';
1413
import Button from '@/components/elements/Button';
@@ -75,7 +74,7 @@ const EditScheduleModal = ({ schedule, ...props }: Omit<Props, 'onScheduleUpdate
7574
};
7675

7776
export default ({ schedule, visible, ...props }: Props) => {
78-
const { uuid } = useServer();
77+
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
7978
const { addError, clearFlashes } = useFlash();
8079
const [ modalVisible, setModalVisible ] = useState(visible);
8180

resources/scripts/components/server/schedules/ScheduleContainer.tsx

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React, { useEffect, useState } from 'react';
2-
import { Helmet } from 'react-helmet';
32
import getServerSchedules from '@/api/server/schedules/getServerSchedules';
43
import { ServerContext } from '@/state/server';
54
import Spinner from '@/components/elements/Spinner';
@@ -9,15 +8,14 @@ import ScheduleRow from '@/components/server/schedules/ScheduleRow';
98
import { httpErrorToHuman } from '@/api/http';
109
import EditScheduleModal from '@/components/server/schedules/EditScheduleModal';
1110
import Can from '@/components/elements/Can';
12-
import useServer from '@/plugins/useServer';
1311
import useFlash from '@/plugins/useFlash';
14-
import PageContentBlock from '@/components/elements/PageContentBlock';
1512
import tw from 'twin.macro';
1613
import GreyRowBox from '@/components/elements/GreyRowBox';
1714
import Button from '@/components/elements/Button';
15+
import ServerContentBlock from '@/components/elements/ServerContentBlock';
1816

1917
export default ({ match, history }: RouteComponentProps) => {
20-
const { uuid, name: serverName } = useServer();
18+
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
2119
const { clearFlashes, addError } = useFlash();
2220
const [ loading, setLoading ] = useState(true);
2321
const [ visible, setVisible ] = useState(false);
@@ -37,10 +35,7 @@ export default ({ match, history }: RouteComponentProps) => {
3735
}, []);
3836

3937
return (
40-
<PageContentBlock>
41-
<Helmet>
42-
<title> {serverName} | Schedules </title>
43-
</Helmet>
38+
<ServerContentBlock title={'Schedules'}>
4439
<FlashMessageRender byKey={'schedules'} css={tw`mb-4`}/>
4540
{(!schedules.length && loading) ?
4641
<Spinner size={'large'} centered/>
@@ -77,6 +72,6 @@ export default ({ match, history }: RouteComponentProps) => {
7772
</Can>
7873
</>
7974
}
80-
</PageContentBlock>
75+
</ServerContentBlock>
8176
);
8277
};

resources/scripts/components/server/schedules/ScheduleEditContainer.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import EditScheduleModal from '@/components/server/schedules/EditScheduleModal';
1111
import NewTaskButton from '@/components/server/schedules/NewTaskButton';
1212
import DeleteScheduleButton from '@/components/server/schedules/DeleteScheduleButton';
1313
import Can from '@/components/elements/Can';
14-
import useServer from '@/plugins/useServer';
1514
import useFlash from '@/plugins/useFlash';
1615
import { ServerContext } from '@/state/server';
1716
import PageContentBlock from '@/components/elements/PageContentBlock';
@@ -28,7 +27,9 @@ interface State {
2827
}
2928

3029
export default ({ match, history, location: { state } }: RouteComponentProps<Params, Record<string, unknown>, State>) => {
31-
const { id, uuid } = useServer();
30+
const id = ServerContext.useStoreState(state => state.server.data!.id);
31+
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
32+
3233
const { clearFlashes, addError } = useFlash();
3334
const [ isLoading, setIsLoading ] = useState(true);
3435
const [ showEditModal, setShowEditModal ] = useState(false);

0 commit comments

Comments
 (0)