Skip to content

Commit 1598dac

Browse files
committed
Remove more references to useServer
1 parent c441864 commit 1598dac

15 files changed

+47
-62
lines changed

resources/scripts/api/swr/getServerBackups.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import useSWR from 'swr';
22
import http, { getPaginationSet, PaginatedResult } from '@/api/http';
33
import { ServerBackup } from '@/api/server/types';
44
import { rawDataToServerBackup } from '@/api/transformers';
5-
import useServer from '@/plugins/useServer';
5+
import { ServerContext } from '@/state/server';
66

77
export default (page?: number | string) => {
8-
const { uuid } = useServer();
8+
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
99

1010
return useSWR<PaginatedResult<ServerBackup>>([ 'server:backups', uuid, page ], async () => {
1111
const { data } = await http.get(`/api/client/servers/${uuid}/backups`, { params: { page } });

resources/scripts/components/NavigationBar.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ const RightNavigation = styled.div`
4343
`;
4444

4545
export default () => {
46-
const user = useStoreState((state: ApplicationStore) => state.user.data!);
4746
const name = useStoreState((state: ApplicationStore) => state.settings.data!.name);
47+
const rootAdmin = useStoreState((state: ApplicationStore) => state.user.data!.rootAdmin);
4848

4949
return (
5050
<Navigation>
@@ -62,7 +62,7 @@ export default () => {
6262
<NavLink to={'/account'}>
6363
<FontAwesomeIcon icon={faUserCircle}/>
6464
</NavLink>
65-
{user.rootAdmin &&
65+
{rootAdmin &&
6666
<a href={'/admin'} target={'_blank'} rel={'noreferrer'}>
6767
<FontAwesomeIcon icon={faCogs}/>
6868
</a>

resources/scripts/components/server/InstallListener.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
11
import useWebsocketEvent from '@/plugins/useWebsocketEvent';
22
import { ServerContext } from '@/state/server';
3-
import useServer from '@/plugins/useServer';
43

54
const InstallListener = () => {
6-
const server = useServer();
5+
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
76
const getServer = ServerContext.useStoreActions(actions => actions.server.getServer);
8-
const setServer = ServerContext.useStoreActions(actions => actions.server.setServer);
7+
const setServerFromState = ServerContext.useStoreActions(actions => actions.server.setServerFromState);
98

109
// Listen for the installation completion event and then fire off a request to fetch the updated
1110
// server information. This allows the server to automatically become available to the user if they
1211
// just sit on the page.
1312
useWebsocketEvent('install completed', () => {
14-
getServer(server.uuid).catch(error => console.error(error));
13+
getServer(uuid).catch(error => console.error(error));
1514
});
1615

1716
// When we see the install started event immediately update the state to indicate such so that the
1817
// screens automatically update.
1918
useWebsocketEvent('install started', () => {
20-
setServer({ ...server, isInstalling: true });
19+
setServerFromState(s => ({ ...s, isInstalling: true }));
2120
});
2221

2322
return null;

resources/scripts/components/server/ServerConsole.tsx

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import React, { lazy, useEffect, useState } from 'react';
2-
import { Helmet } from 'react-helmet';
32
import { ServerContext } from '@/state/server';
43
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
54
import { faCircle, faHdd, faMemory, faMicrochip, faServer } from '@fortawesome/free-solid-svg-icons';
65
import { bytesToHuman, megabytesToHuman } from '@/helpers';
76
import SuspenseSpinner from '@/components/elements/SuspenseSpinner';
87
import TitledGreyBox from '@/components/elements/TitledGreyBox';
98
import Can from '@/components/elements/Can';
10-
import PageContentBlock from '@/components/elements/PageContentBlock';
119
import ContentContainer from '@/components/elements/ContentContainer';
1210
import tw from 'twin.macro';
1311
import Button from '@/components/elements/Button';
1412
import StopOrKillButton from '@/components/server/StopOrKillButton';
13+
import ServerContentBlock from '@/components/elements/ServerContentBlock';
1514

1615
export type PowerAction = 'start' | 'stop' | 'restart' | 'kill';
1716

@@ -23,10 +22,13 @@ export default () => {
2322
const [ cpu, setCpu ] = useState(0);
2423
const [ disk, setDisk ] = useState(0);
2524

26-
const server = ServerContext.useStoreState(state => state.server.data!);
25+
const name = ServerContext.useStoreState(state => state.server.data!.name);
26+
const limits = ServerContext.useStoreState(state => state.server.data!.limits);
27+
const isInstalling = ServerContext.useStoreState(state => state.server.data!.isInstalling);
2728
const status = ServerContext.useStoreState(state => state.status.value);
2829

29-
const { connected, instance } = ServerContext.useStoreState(state => state.socket);
30+
const connected = ServerContext.useStoreState(state => state.socket.connected);
31+
const instance = ServerContext.useStoreState(state => state.socket.instance);
3032

3133
const statsListener = (data: string) => {
3234
let stats: any = {};
@@ -57,16 +59,13 @@ export default () => {
5759
};
5860
}, [ instance, connected ]);
5961

60-
const disklimit = server.limits.disk ? megabytesToHuman(server.limits.disk) : 'Unlimited';
61-
const memorylimit = server.limits.memory ? megabytesToHuman(server.limits.memory) : 'Unlimited';
62+
const disklimit = limits.disk ? megabytesToHuman(limits.disk) : 'Unlimited';
63+
const memorylimit = limits.memory ? megabytesToHuman(limits.memory) : 'Unlimited';
6264

6365
return (
64-
<PageContentBlock css={tw`flex`}>
65-
<Helmet>
66-
<title> {server.name} | Console </title>
67-
</Helmet>
66+
<ServerContentBlock title={'Console'} css={tw`flex`}>
6867
<div css={tw`w-1/4`}>
69-
<TitledGreyBox title={server.name} icon={faServer}>
68+
<TitledGreyBox title={name} icon={faServer}>
7069
<p css={tw`text-xs uppercase`}>
7170
<FontAwesomeIcon
7271
icon={faCircle}
@@ -90,7 +89,7 @@ export default () => {
9089
<span css={tw`text-neutral-500`}> / {disklimit}</span>
9190
</p>
9291
</TitledGreyBox>
93-
{!server.isInstalling ?
92+
{!isInstalling ?
9493
<Can action={[ 'control.start', 'control.stop', 'control.restart' ]} matchAny>
9594
<div css={tw`shadow-md bg-neutral-700 rounded p-3 flex text-xs mt-4 justify-center`}>
9695
<Can action={'control.start'}>
@@ -143,6 +142,6 @@ export default () => {
143142
<ChunkedStatGraphs/>
144143
</SuspenseSpinner>
145144
</div>
146-
</PageContentBlock>
145+
</ServerContentBlock>
147146
);
148147
};

resources/scripts/components/server/StopOrKillButton.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
import React, { useEffect, useState } from 'react';
1+
import React, { memo, useEffect, useState } from 'react';
22
import { ServerContext } from '@/state/server';
33
import { PowerAction } from '@/components/server/ServerConsole';
44
import Button from '@/components/elements/Button';
5+
import isEqual from 'react-fast-compare';
56

67
const StopOrKillButton = ({ onPress }: { onPress: (action: PowerAction) => void }) => {
78
const [ clicked, setClicked ] = useState(false);
@@ -27,4 +28,4 @@ const StopOrKillButton = ({ onPress }: { onPress: (action: PowerAction) => void
2728
);
2829
};
2930

30-
export default StopOrKillButton;
31+
export default memo(StopOrKillButton, isEqual);

resources/scripts/components/server/files/FileDropdownMenu.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import SpinnerOverlay from '@/components/elements/SpinnerOverlay';
1919
import copyFile from '@/api/server/files/copyFile';
2020
import Can from '@/components/elements/Can';
2121
import getFileDownloadUrl from '@/api/server/files/getFileDownloadUrl';
22-
import useServer from '@/plugins/useServer';
2322
import useFlash from '@/plugins/useFlash';
2423
import tw from 'twin.macro';
2524
import { FileObject } from '@/api/server/files/loadDirectory';
@@ -56,7 +55,7 @@ const FileDropdownMenu = ({ file }: { file: FileObject }) => {
5655
const [ showSpinner, setShowSpinner ] = useState(false);
5756
const [ modal, setModal ] = useState<ModalType | null>(null);
5857

59-
const { uuid } = useServer();
58+
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
6059
const { mutate } = useFileManagerSwr();
6160
const { clearAndAddHttpError, clearFlashes } = useFlash();
6261
const directory = ServerContext.useStoreState(state => state.files.directory);

resources/scripts/components/server/files/FileEditContainer.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ import tw from 'twin.macro';
1414
import Button from '@/components/elements/Button';
1515
import Select from '@/components/elements/Select';
1616
import modes from '@/modes';
17-
import useServer from '@/plugins/useServer';
1817
import useFlash from '@/plugins/useFlash';
18+
import { ServerContext } from '@/state/server';
1919

2020
const LazyAceEditor = lazy(() => import(/* webpackChunkName: "editor" */'@/components/elements/AceEditor'));
2121

@@ -30,7 +30,8 @@ export default () => {
3030
const history = useHistory();
3131
const { hash } = useLocation();
3232

33-
const { id, uuid } = useServer();
33+
const id = ServerContext.useStoreState(state => state.server.data!.id);
34+
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
3435
const { addError, clearFlashes } = useFlash();
3536

3637
let fetchFileContent: null | (() => Promise<string>) = null;

resources/scripts/components/server/files/FileManagerContainer.tsx

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React, { useEffect } from 'react';
2-
import { Helmet } from 'react-helmet';
32
import { httpErrorToHuman } from '@/api/http';
43
import { CSSTransition } from 'react-transition-group';
54
import Spinner from '@/components/elements/Spinner';
@@ -9,23 +8,22 @@ import { FileObject } from '@/api/server/files/loadDirectory';
98
import NewDirectoryButton from '@/components/server/files/NewDirectoryButton';
109
import { Link, useLocation } from 'react-router-dom';
1110
import Can from '@/components/elements/Can';
12-
import PageContentBlock from '@/components/elements/PageContentBlock';
1311
import ServerError from '@/components/screens/ServerError';
1412
import tw from 'twin.macro';
1513
import Button from '@/components/elements/Button';
16-
import useServer from '@/plugins/useServer';
1714
import { ServerContext } from '@/state/server';
1815
import useFileManagerSwr from '@/plugins/useFileManagerSwr';
1916
import MassActionsBar from '@/components/server/files/MassActionsBar';
2017
import UploadButton from '@/components/server/files/UploadButton';
18+
import ServerContentBlock from '@/components/elements/ServerContentBlock';
2119

2220
const sortFiles = (files: FileObject[]): FileObject[] => {
2321
return files.sort((a, b) => a.name.localeCompare(b.name))
2422
.sort((a, b) => a.isFile === b.isFile ? 0 : (a.isFile ? 1 : -1));
2523
};
2624

2725
export default () => {
28-
const { id, name: serverName } = useServer();
26+
const id = ServerContext.useStoreState(state => state.server.data!.id);
2927
const { hash } = useLocation();
3028
const { data: files, error, mutate } = useFileManagerSwr();
3129

@@ -44,10 +42,7 @@ export default () => {
4442
}
4543

4644
return (
47-
<PageContentBlock showFlashKey={'files'}>
48-
<Helmet>
49-
<title> {serverName} | File Manager </title>
50-
</Helmet>
45+
<ServerContentBlock title={'File Manager'} showFlashKey={'files'}>
5146
<FileManagerBreadcrumbs/>
5247
{
5348
!files ?
@@ -93,6 +88,6 @@ export default () => {
9388
</Can>
9489
</>
9590
}
96-
</PageContentBlock>
91+
</ServerContentBlock>
9792
);
9893
};

resources/scripts/components/server/files/MassActionsBar.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ import SpinnerOverlay from '@/components/elements/SpinnerOverlay';
88
import useFileManagerSwr from '@/plugins/useFileManagerSwr';
99
import useFlash from '@/plugins/useFlash';
1010
import compressFiles from '@/api/server/files/compressFiles';
11-
import useServer from '@/plugins/useServer';
1211
import { ServerContext } from '@/state/server';
1312
import ConfirmationModal from '@/components/elements/ConfirmationModal';
1413
import deleteFiles from '@/api/server/files/deleteFiles';
1514
import RenameFileModal from '@/components/server/files/RenameFileModal';
1615

1716
const MassActionsBar = () => {
18-
const { uuid } = useServer();
17+
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
18+
1919
const { mutate } = useFileManagerSwr();
2020
const { clearFlashes, clearAndAddHttpError } = useFlash();
2121
const [ loading, setLoading ] = useState(false);

resources/scripts/components/server/files/NewDirectoryButton.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import { object, string } from 'yup';
88
import createDirectory from '@/api/server/files/createDirectory';
99
import tw from 'twin.macro';
1010
import Button from '@/components/elements/Button';
11-
import useServer from '@/plugins/useServer';
1211
import { FileObject } from '@/api/server/files/loadDirectory';
1312
import useFlash from '@/plugins/useFlash';
1413
import useFileManagerSwr from '@/plugins/useFileManagerSwr';
@@ -36,7 +35,7 @@ const generateDirectoryData = (name: string): FileObject => ({
3635
});
3736

3837
export default () => {
39-
const { uuid } = useServer();
38+
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
4039
const { clearAndAddHttpError } = useFlash();
4140
const [ visible, setVisible ] = useState(false);
4241

0 commit comments

Comments
 (0)