Remove more references to useServer
This commit is contained in:
parent
c4418640eb
commit
1598dac6f8
|
@ -2,10 +2,10 @@ import useSWR from 'swr';
|
||||||
import http, { getPaginationSet, PaginatedResult } from '@/api/http';
|
import http, { getPaginationSet, PaginatedResult } from '@/api/http';
|
||||||
import { ServerBackup } from '@/api/server/types';
|
import { ServerBackup } from '@/api/server/types';
|
||||||
import { rawDataToServerBackup } from '@/api/transformers';
|
import { rawDataToServerBackup } from '@/api/transformers';
|
||||||
import useServer from '@/plugins/useServer';
|
import { ServerContext } from '@/state/server';
|
||||||
|
|
||||||
export default (page?: number | string) => {
|
export default (page?: number | string) => {
|
||||||
const { uuid } = useServer();
|
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
|
||||||
|
|
||||||
return useSWR<PaginatedResult<ServerBackup>>([ 'server:backups', uuid, page ], async () => {
|
return useSWR<PaginatedResult<ServerBackup>>([ 'server:backups', uuid, page ], async () => {
|
||||||
const { data } = await http.get(`/api/client/servers/${uuid}/backups`, { params: { page } });
|
const { data } = await http.get(`/api/client/servers/${uuid}/backups`, { params: { page } });
|
||||||
|
|
|
@ -43,8 +43,8 @@ const RightNavigation = styled.div`
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export default () => {
|
export default () => {
|
||||||
const user = useStoreState((state: ApplicationStore) => state.user.data!);
|
|
||||||
const name = useStoreState((state: ApplicationStore) => state.settings.data!.name);
|
const name = useStoreState((state: ApplicationStore) => state.settings.data!.name);
|
||||||
|
const rootAdmin = useStoreState((state: ApplicationStore) => state.user.data!.rootAdmin);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Navigation>
|
<Navigation>
|
||||||
|
@ -62,7 +62,7 @@ export default () => {
|
||||||
<NavLink to={'/account'}>
|
<NavLink to={'/account'}>
|
||||||
<FontAwesomeIcon icon={faUserCircle}/>
|
<FontAwesomeIcon icon={faUserCircle}/>
|
||||||
</NavLink>
|
</NavLink>
|
||||||
{user.rootAdmin &&
|
{rootAdmin &&
|
||||||
<a href={'/admin'} target={'_blank'} rel={'noreferrer'}>
|
<a href={'/admin'} target={'_blank'} rel={'noreferrer'}>
|
||||||
<FontAwesomeIcon icon={faCogs}/>
|
<FontAwesomeIcon icon={faCogs}/>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -1,23 +1,22 @@
|
||||||
import useWebsocketEvent from '@/plugins/useWebsocketEvent';
|
import useWebsocketEvent from '@/plugins/useWebsocketEvent';
|
||||||
import { ServerContext } from '@/state/server';
|
import { ServerContext } from '@/state/server';
|
||||||
import useServer from '@/plugins/useServer';
|
|
||||||
|
|
||||||
const InstallListener = () => {
|
const InstallListener = () => {
|
||||||
const server = useServer();
|
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
|
||||||
const getServer = ServerContext.useStoreActions(actions => actions.server.getServer);
|
const getServer = ServerContext.useStoreActions(actions => actions.server.getServer);
|
||||||
const setServer = ServerContext.useStoreActions(actions => actions.server.setServer);
|
const setServerFromState = ServerContext.useStoreActions(actions => actions.server.setServerFromState);
|
||||||
|
|
||||||
// Listen for the installation completion event and then fire off a request to fetch the updated
|
// Listen for the installation completion event and then fire off a request to fetch the updated
|
||||||
// server information. This allows the server to automatically become available to the user if they
|
// server information. This allows the server to automatically become available to the user if they
|
||||||
// just sit on the page.
|
// just sit on the page.
|
||||||
useWebsocketEvent('install completed', () => {
|
useWebsocketEvent('install completed', () => {
|
||||||
getServer(server.uuid).catch(error => console.error(error));
|
getServer(uuid).catch(error => console.error(error));
|
||||||
});
|
});
|
||||||
|
|
||||||
// When we see the install started event immediately update the state to indicate such so that the
|
// When we see the install started event immediately update the state to indicate such so that the
|
||||||
// screens automatically update.
|
// screens automatically update.
|
||||||
useWebsocketEvent('install started', () => {
|
useWebsocketEvent('install started', () => {
|
||||||
setServer({ ...server, isInstalling: true });
|
setServerFromState(s => ({ ...s, isInstalling: true }));
|
||||||
});
|
});
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import React, { lazy, useEffect, useState } from 'react';
|
import React, { lazy, useEffect, useState } from 'react';
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
import { ServerContext } from '@/state/server';
|
import { ServerContext } from '@/state/server';
|
||||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||||
import { faCircle, faHdd, faMemory, faMicrochip, faServer } from '@fortawesome/free-solid-svg-icons';
|
import { faCircle, faHdd, faMemory, faMicrochip, faServer } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
@ -7,11 +6,11 @@ import { bytesToHuman, megabytesToHuman } from '@/helpers';
|
||||||
import SuspenseSpinner from '@/components/elements/SuspenseSpinner';
|
import SuspenseSpinner from '@/components/elements/SuspenseSpinner';
|
||||||
import TitledGreyBox from '@/components/elements/TitledGreyBox';
|
import TitledGreyBox from '@/components/elements/TitledGreyBox';
|
||||||
import Can from '@/components/elements/Can';
|
import Can from '@/components/elements/Can';
|
||||||
import PageContentBlock from '@/components/elements/PageContentBlock';
|
|
||||||
import ContentContainer from '@/components/elements/ContentContainer';
|
import ContentContainer from '@/components/elements/ContentContainer';
|
||||||
import tw from 'twin.macro';
|
import tw from 'twin.macro';
|
||||||
import Button from '@/components/elements/Button';
|
import Button from '@/components/elements/Button';
|
||||||
import StopOrKillButton from '@/components/server/StopOrKillButton';
|
import StopOrKillButton from '@/components/server/StopOrKillButton';
|
||||||
|
import ServerContentBlock from '@/components/elements/ServerContentBlock';
|
||||||
|
|
||||||
export type PowerAction = 'start' | 'stop' | 'restart' | 'kill';
|
export type PowerAction = 'start' | 'stop' | 'restart' | 'kill';
|
||||||
|
|
||||||
|
@ -23,10 +22,13 @@ export default () => {
|
||||||
const [ cpu, setCpu ] = useState(0);
|
const [ cpu, setCpu ] = useState(0);
|
||||||
const [ disk, setDisk ] = useState(0);
|
const [ disk, setDisk ] = useState(0);
|
||||||
|
|
||||||
const server = ServerContext.useStoreState(state => state.server.data!);
|
const name = ServerContext.useStoreState(state => state.server.data!.name);
|
||||||
|
const limits = ServerContext.useStoreState(state => state.server.data!.limits);
|
||||||
|
const isInstalling = ServerContext.useStoreState(state => state.server.data!.isInstalling);
|
||||||
const status = ServerContext.useStoreState(state => state.status.value);
|
const status = ServerContext.useStoreState(state => state.status.value);
|
||||||
|
|
||||||
const { connected, instance } = ServerContext.useStoreState(state => state.socket);
|
const connected = ServerContext.useStoreState(state => state.socket.connected);
|
||||||
|
const instance = ServerContext.useStoreState(state => state.socket.instance);
|
||||||
|
|
||||||
const statsListener = (data: string) => {
|
const statsListener = (data: string) => {
|
||||||
let stats: any = {};
|
let stats: any = {};
|
||||||
|
@ -57,16 +59,13 @@ export default () => {
|
||||||
};
|
};
|
||||||
}, [ instance, connected ]);
|
}, [ instance, connected ]);
|
||||||
|
|
||||||
const disklimit = server.limits.disk ? megabytesToHuman(server.limits.disk) : 'Unlimited';
|
const disklimit = limits.disk ? megabytesToHuman(limits.disk) : 'Unlimited';
|
||||||
const memorylimit = server.limits.memory ? megabytesToHuman(server.limits.memory) : 'Unlimited';
|
const memorylimit = limits.memory ? megabytesToHuman(limits.memory) : 'Unlimited';
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<PageContentBlock css={tw`flex`}>
|
<ServerContentBlock title={'Console'} css={tw`flex`}>
|
||||||
<Helmet>
|
|
||||||
<title> {server.name} | Console </title>
|
|
||||||
</Helmet>
|
|
||||||
<div css={tw`w-1/4`}>
|
<div css={tw`w-1/4`}>
|
||||||
<TitledGreyBox title={server.name} icon={faServer}>
|
<TitledGreyBox title={name} icon={faServer}>
|
||||||
<p css={tw`text-xs uppercase`}>
|
<p css={tw`text-xs uppercase`}>
|
||||||
<FontAwesomeIcon
|
<FontAwesomeIcon
|
||||||
icon={faCircle}
|
icon={faCircle}
|
||||||
|
@ -90,7 +89,7 @@ export default () => {
|
||||||
<span css={tw`text-neutral-500`}> / {disklimit}</span>
|
<span css={tw`text-neutral-500`}> / {disklimit}</span>
|
||||||
</p>
|
</p>
|
||||||
</TitledGreyBox>
|
</TitledGreyBox>
|
||||||
{!server.isInstalling ?
|
{!isInstalling ?
|
||||||
<Can action={[ 'control.start', 'control.stop', 'control.restart' ]} matchAny>
|
<Can action={[ 'control.start', 'control.stop', 'control.restart' ]} matchAny>
|
||||||
<div css={tw`shadow-md bg-neutral-700 rounded p-3 flex text-xs mt-4 justify-center`}>
|
<div css={tw`shadow-md bg-neutral-700 rounded p-3 flex text-xs mt-4 justify-center`}>
|
||||||
<Can action={'control.start'}>
|
<Can action={'control.start'}>
|
||||||
|
@ -143,6 +142,6 @@ export default () => {
|
||||||
<ChunkedStatGraphs/>
|
<ChunkedStatGraphs/>
|
||||||
</SuspenseSpinner>
|
</SuspenseSpinner>
|
||||||
</div>
|
</div>
|
||||||
</PageContentBlock>
|
</ServerContentBlock>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { memo, useEffect, useState } from 'react';
|
||||||
import { ServerContext } from '@/state/server';
|
import { ServerContext } from '@/state/server';
|
||||||
import { PowerAction } from '@/components/server/ServerConsole';
|
import { PowerAction } from '@/components/server/ServerConsole';
|
||||||
import Button from '@/components/elements/Button';
|
import Button from '@/components/elements/Button';
|
||||||
|
import isEqual from 'react-fast-compare';
|
||||||
|
|
||||||
const StopOrKillButton = ({ onPress }: { onPress: (action: PowerAction) => void }) => {
|
const StopOrKillButton = ({ onPress }: { onPress: (action: PowerAction) => void }) => {
|
||||||
const [ clicked, setClicked ] = useState(false);
|
const [ clicked, setClicked ] = useState(false);
|
||||||
|
@ -27,4 +28,4 @@ const StopOrKillButton = ({ onPress }: { onPress: (action: PowerAction) => void
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default StopOrKillButton;
|
export default memo(StopOrKillButton, isEqual);
|
||||||
|
|
|
@ -19,7 +19,6 @@ import SpinnerOverlay from '@/components/elements/SpinnerOverlay';
|
||||||
import copyFile from '@/api/server/files/copyFile';
|
import copyFile from '@/api/server/files/copyFile';
|
||||||
import Can from '@/components/elements/Can';
|
import Can from '@/components/elements/Can';
|
||||||
import getFileDownloadUrl from '@/api/server/files/getFileDownloadUrl';
|
import getFileDownloadUrl from '@/api/server/files/getFileDownloadUrl';
|
||||||
import useServer from '@/plugins/useServer';
|
|
||||||
import useFlash from '@/plugins/useFlash';
|
import useFlash from '@/plugins/useFlash';
|
||||||
import tw from 'twin.macro';
|
import tw from 'twin.macro';
|
||||||
import { FileObject } from '@/api/server/files/loadDirectory';
|
import { FileObject } from '@/api/server/files/loadDirectory';
|
||||||
|
@ -56,7 +55,7 @@ const FileDropdownMenu = ({ file }: { file: FileObject }) => {
|
||||||
const [ showSpinner, setShowSpinner ] = useState(false);
|
const [ showSpinner, setShowSpinner ] = useState(false);
|
||||||
const [ modal, setModal ] = useState<ModalType | null>(null);
|
const [ modal, setModal ] = useState<ModalType | null>(null);
|
||||||
|
|
||||||
const { uuid } = useServer();
|
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
|
||||||
const { mutate } = useFileManagerSwr();
|
const { mutate } = useFileManagerSwr();
|
||||||
const { clearAndAddHttpError, clearFlashes } = useFlash();
|
const { clearAndAddHttpError, clearFlashes } = useFlash();
|
||||||
const directory = ServerContext.useStoreState(state => state.files.directory);
|
const directory = ServerContext.useStoreState(state => state.files.directory);
|
||||||
|
|
|
@ -14,8 +14,8 @@ import tw from 'twin.macro';
|
||||||
import Button from '@/components/elements/Button';
|
import Button from '@/components/elements/Button';
|
||||||
import Select from '@/components/elements/Select';
|
import Select from '@/components/elements/Select';
|
||||||
import modes from '@/modes';
|
import modes from '@/modes';
|
||||||
import useServer from '@/plugins/useServer';
|
|
||||||
import useFlash from '@/plugins/useFlash';
|
import useFlash from '@/plugins/useFlash';
|
||||||
|
import { ServerContext } from '@/state/server';
|
||||||
|
|
||||||
const LazyAceEditor = lazy(() => import(/* webpackChunkName: "editor" */'@/components/elements/AceEditor'));
|
const LazyAceEditor = lazy(() => import(/* webpackChunkName: "editor" */'@/components/elements/AceEditor'));
|
||||||
|
|
||||||
|
@ -30,7 +30,8 @@ export default () => {
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
const { hash } = useLocation();
|
const { hash } = useLocation();
|
||||||
|
|
||||||
const { id, uuid } = useServer();
|
const id = ServerContext.useStoreState(state => state.server.data!.id);
|
||||||
|
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
|
||||||
const { addError, clearFlashes } = useFlash();
|
const { addError, clearFlashes } = useFlash();
|
||||||
|
|
||||||
let fetchFileContent: null | (() => Promise<string>) = null;
|
let fetchFileContent: null | (() => Promise<string>) = null;
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import React, { useEffect } from 'react';
|
import React, { useEffect } from 'react';
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
import { httpErrorToHuman } from '@/api/http';
|
import { httpErrorToHuman } from '@/api/http';
|
||||||
import { CSSTransition } from 'react-transition-group';
|
import { CSSTransition } from 'react-transition-group';
|
||||||
import Spinner from '@/components/elements/Spinner';
|
import Spinner from '@/components/elements/Spinner';
|
||||||
|
@ -9,15 +8,14 @@ import { FileObject } from '@/api/server/files/loadDirectory';
|
||||||
import NewDirectoryButton from '@/components/server/files/NewDirectoryButton';
|
import NewDirectoryButton from '@/components/server/files/NewDirectoryButton';
|
||||||
import { Link, useLocation } from 'react-router-dom';
|
import { Link, useLocation } from 'react-router-dom';
|
||||||
import Can from '@/components/elements/Can';
|
import Can from '@/components/elements/Can';
|
||||||
import PageContentBlock from '@/components/elements/PageContentBlock';
|
|
||||||
import ServerError from '@/components/screens/ServerError';
|
import ServerError from '@/components/screens/ServerError';
|
||||||
import tw from 'twin.macro';
|
import tw from 'twin.macro';
|
||||||
import Button from '@/components/elements/Button';
|
import Button from '@/components/elements/Button';
|
||||||
import useServer from '@/plugins/useServer';
|
|
||||||
import { ServerContext } from '@/state/server';
|
import { ServerContext } from '@/state/server';
|
||||||
import useFileManagerSwr from '@/plugins/useFileManagerSwr';
|
import useFileManagerSwr from '@/plugins/useFileManagerSwr';
|
||||||
import MassActionsBar from '@/components/server/files/MassActionsBar';
|
import MassActionsBar from '@/components/server/files/MassActionsBar';
|
||||||
import UploadButton from '@/components/server/files/UploadButton';
|
import UploadButton from '@/components/server/files/UploadButton';
|
||||||
|
import ServerContentBlock from '@/components/elements/ServerContentBlock';
|
||||||
|
|
||||||
const sortFiles = (files: FileObject[]): FileObject[] => {
|
const sortFiles = (files: FileObject[]): FileObject[] => {
|
||||||
return files.sort((a, b) => a.name.localeCompare(b.name))
|
return files.sort((a, b) => a.name.localeCompare(b.name))
|
||||||
|
@ -25,7 +23,7 @@ const sortFiles = (files: FileObject[]): FileObject[] => {
|
||||||
};
|
};
|
||||||
|
|
||||||
export default () => {
|
export default () => {
|
||||||
const { id, name: serverName } = useServer();
|
const id = ServerContext.useStoreState(state => state.server.data!.id);
|
||||||
const { hash } = useLocation();
|
const { hash } = useLocation();
|
||||||
const { data: files, error, mutate } = useFileManagerSwr();
|
const { data: files, error, mutate } = useFileManagerSwr();
|
||||||
|
|
||||||
|
@ -44,10 +42,7 @@ export default () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<PageContentBlock showFlashKey={'files'}>
|
<ServerContentBlock title={'File Manager'} showFlashKey={'files'}>
|
||||||
<Helmet>
|
|
||||||
<title> {serverName} | File Manager </title>
|
|
||||||
</Helmet>
|
|
||||||
<FileManagerBreadcrumbs/>
|
<FileManagerBreadcrumbs/>
|
||||||
{
|
{
|
||||||
!files ?
|
!files ?
|
||||||
|
@ -93,6 +88,6 @@ export default () => {
|
||||||
</Can>
|
</Can>
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
</PageContentBlock>
|
</ServerContentBlock>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -8,14 +8,14 @@ import SpinnerOverlay from '@/components/elements/SpinnerOverlay';
|
||||||
import useFileManagerSwr from '@/plugins/useFileManagerSwr';
|
import useFileManagerSwr from '@/plugins/useFileManagerSwr';
|
||||||
import useFlash from '@/plugins/useFlash';
|
import useFlash from '@/plugins/useFlash';
|
||||||
import compressFiles from '@/api/server/files/compressFiles';
|
import compressFiles from '@/api/server/files/compressFiles';
|
||||||
import useServer from '@/plugins/useServer';
|
|
||||||
import { ServerContext } from '@/state/server';
|
import { ServerContext } from '@/state/server';
|
||||||
import ConfirmationModal from '@/components/elements/ConfirmationModal';
|
import ConfirmationModal from '@/components/elements/ConfirmationModal';
|
||||||
import deleteFiles from '@/api/server/files/deleteFiles';
|
import deleteFiles from '@/api/server/files/deleteFiles';
|
||||||
import RenameFileModal from '@/components/server/files/RenameFileModal';
|
import RenameFileModal from '@/components/server/files/RenameFileModal';
|
||||||
|
|
||||||
const MassActionsBar = () => {
|
const MassActionsBar = () => {
|
||||||
const { uuid } = useServer();
|
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
|
||||||
|
|
||||||
const { mutate } = useFileManagerSwr();
|
const { mutate } = useFileManagerSwr();
|
||||||
const { clearFlashes, clearAndAddHttpError } = useFlash();
|
const { clearFlashes, clearAndAddHttpError } = useFlash();
|
||||||
const [ loading, setLoading ] = useState(false);
|
const [ loading, setLoading ] = useState(false);
|
||||||
|
|
|
@ -8,7 +8,6 @@ import { object, string } from 'yup';
|
||||||
import createDirectory from '@/api/server/files/createDirectory';
|
import createDirectory from '@/api/server/files/createDirectory';
|
||||||
import tw from 'twin.macro';
|
import tw from 'twin.macro';
|
||||||
import Button from '@/components/elements/Button';
|
import Button from '@/components/elements/Button';
|
||||||
import useServer from '@/plugins/useServer';
|
|
||||||
import { FileObject } from '@/api/server/files/loadDirectory';
|
import { FileObject } from '@/api/server/files/loadDirectory';
|
||||||
import useFlash from '@/plugins/useFlash';
|
import useFlash from '@/plugins/useFlash';
|
||||||
import useFileManagerSwr from '@/plugins/useFileManagerSwr';
|
import useFileManagerSwr from '@/plugins/useFileManagerSwr';
|
||||||
|
@ -36,7 +35,7 @@ const generateDirectoryData = (name: string): FileObject => ({
|
||||||
});
|
});
|
||||||
|
|
||||||
export default () => {
|
export default () => {
|
||||||
const { uuid } = useServer();
|
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
|
||||||
const { clearAndAddHttpError } = useFlash();
|
const { clearAndAddHttpError } = useFlash();
|
||||||
const [ visible, setVisible ] = useState(false);
|
const [ visible, setVisible ] = useState(false);
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,6 @@ import renameFiles from '@/api/server/files/renameFiles';
|
||||||
import { ServerContext } from '@/state/server';
|
import { ServerContext } from '@/state/server';
|
||||||
import tw from 'twin.macro';
|
import tw from 'twin.macro';
|
||||||
import Button from '@/components/elements/Button';
|
import Button from '@/components/elements/Button';
|
||||||
import useServer from '@/plugins/useServer';
|
|
||||||
import useFileManagerSwr from '@/plugins/useFileManagerSwr';
|
import useFileManagerSwr from '@/plugins/useFileManagerSwr';
|
||||||
import useFlash from '@/plugins/useFlash';
|
import useFlash from '@/plugins/useFlash';
|
||||||
|
|
||||||
|
@ -18,7 +17,7 @@ interface FormikValues {
|
||||||
type OwnProps = RequiredModalProps & { files: string[]; useMoveTerminology?: boolean };
|
type OwnProps = RequiredModalProps & { files: string[]; useMoveTerminology?: boolean };
|
||||||
|
|
||||||
const RenameFileModal = ({ files, useMoveTerminology, ...props }: OwnProps) => {
|
const RenameFileModal = ({ files, useMoveTerminology, ...props }: OwnProps) => {
|
||||||
const { uuid } = useServer();
|
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
|
||||||
const { mutate } = useFileManagerSwr();
|
const { mutate } = useFileManagerSwr();
|
||||||
const { clearFlashes, clearAndAddHttpError } = useFlash();
|
const { clearFlashes, clearAndAddHttpError } = useFlash();
|
||||||
const directory = ServerContext.useStoreState(state => state.files.directory);
|
const directory = ServerContext.useStoreState(state => state.files.directory);
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import getFileUploadUrl from '@/api/server/files/getFileUploadUrl';
|
import getFileUploadUrl from '@/api/server/files/getFileUploadUrl';
|
||||||
import useServer from '@/plugins/useServer';
|
|
||||||
import tw from 'twin.macro';
|
import tw from 'twin.macro';
|
||||||
import Button from '@/components/elements/Button';
|
import Button from '@/components/elements/Button';
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
|
@ -19,7 +18,7 @@ const InnerContainer = styled.div`
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export default () => {
|
export default () => {
|
||||||
const { uuid } = useServer();
|
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
|
||||||
const [ visible, setVisible ] = useState(false);
|
const [ visible, setVisible ] = useState(false);
|
||||||
const [ loading, setLoading ] = useState(false);
|
const [ loading, setLoading ] = useState(false);
|
||||||
const { mutate } = useFileManagerSwr();
|
const { mutate } = useFileManagerSwr();
|
||||||
|
|
|
@ -1,29 +1,25 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
import TitledGreyBox from '@/components/elements/TitledGreyBox';
|
import TitledGreyBox from '@/components/elements/TitledGreyBox';
|
||||||
import { ServerContext } from '@/state/server';
|
import { ServerContext } from '@/state/server';
|
||||||
import { useStoreState } from 'easy-peasy';
|
import { useStoreState } from 'easy-peasy';
|
||||||
import { ApplicationStore } from '@/state';
|
|
||||||
import { UserData } from '@/state/user';
|
|
||||||
import RenameServerBox from '@/components/server/settings/RenameServerBox';
|
import RenameServerBox from '@/components/server/settings/RenameServerBox';
|
||||||
import FlashMessageRender from '@/components/FlashMessageRender';
|
import FlashMessageRender from '@/components/FlashMessageRender';
|
||||||
import Can from '@/components/elements/Can';
|
import Can from '@/components/elements/Can';
|
||||||
import ReinstallServerBox from '@/components/server/settings/ReinstallServerBox';
|
import ReinstallServerBox from '@/components/server/settings/ReinstallServerBox';
|
||||||
import PageContentBlock from '@/components/elements/PageContentBlock';
|
|
||||||
import tw from 'twin.macro';
|
import tw from 'twin.macro';
|
||||||
import Input from '@/components/elements/Input';
|
import Input from '@/components/elements/Input';
|
||||||
import Label from '@/components/elements/Label';
|
import Label from '@/components/elements/Label';
|
||||||
import { LinkButton } from '@/components/elements/Button';
|
import { LinkButton } from '@/components/elements/Button';
|
||||||
|
import ServerContentBlock from '@/components/elements/ServerContentBlock';
|
||||||
|
|
||||||
export default () => {
|
export default () => {
|
||||||
const user = useStoreState<ApplicationStore, UserData>(state => state.user.data!);
|
const username = useStoreState(state => state.user.data!.username);
|
||||||
const server = ServerContext.useStoreState(state => state.server.data!);
|
const id = ServerContext.useStoreState(state => state.server.data!.id);
|
||||||
|
const sftpIp = ServerContext.useStoreState(state => state.server.data!.sftpDetails.ip);
|
||||||
|
const sftpPort = ServerContext.useStoreState(state => state.server.data!.sftpDetails.port);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<PageContentBlock>
|
<ServerContentBlock title={'Settings'}>
|
||||||
<Helmet>
|
|
||||||
<title> {server.name} | Settings </title>
|
|
||||||
</Helmet>
|
|
||||||
<FlashMessageRender byKey={'settings'} css={tw`mb-4`}/>
|
<FlashMessageRender byKey={'settings'} css={tw`mb-4`}/>
|
||||||
<div css={tw`md:flex`}>
|
<div css={tw`md:flex`}>
|
||||||
<div css={tw`w-full md:flex-1 md:mr-10`}>
|
<div css={tw`w-full md:flex-1 md:mr-10`}>
|
||||||
|
@ -33,7 +29,7 @@ export default () => {
|
||||||
<Label>Server Address</Label>
|
<Label>Server Address</Label>
|
||||||
<Input
|
<Input
|
||||||
type={'text'}
|
type={'text'}
|
||||||
value={`sftp://${server.sftpDetails.ip}:${server.sftpDetails.port}`}
|
value={`sftp://${sftpIp}:${sftpPort}`}
|
||||||
readOnly
|
readOnly
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -41,7 +37,7 @@ export default () => {
|
||||||
<Label>Username</Label>
|
<Label>Username</Label>
|
||||||
<Input
|
<Input
|
||||||
type={'text'}
|
type={'text'}
|
||||||
value={`${user.username}.${server.id}`}
|
value={`${username}.${id}`}
|
||||||
readOnly
|
readOnly
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -56,7 +52,7 @@ export default () => {
|
||||||
<div css={tw`ml-4`}>
|
<div css={tw`ml-4`}>
|
||||||
<LinkButton
|
<LinkButton
|
||||||
isSecondary
|
isSecondary
|
||||||
href={`sftp://${user.username}.${server.id}@${server.sftpDetails.ip}:${server.sftpDetails.port}`}
|
href={`sftp://${username}.${id}@${sftpIp}:${sftpPort}`}
|
||||||
>
|
>
|
||||||
Launch SFTP
|
Launch SFTP
|
||||||
</LinkButton>
|
</LinkButton>
|
||||||
|
@ -76,6 +72,6 @@ export default () => {
|
||||||
</Can>
|
</Can>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</PageContentBlock>
|
</ServerContentBlock>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,7 +7,6 @@ import Input from '@/components/elements/Input';
|
||||||
import tw from 'twin.macro';
|
import tw from 'twin.macro';
|
||||||
import { debounce } from 'debounce';
|
import { debounce } from 'debounce';
|
||||||
import updateStartupVariable from '@/api/server/updateStartupVariable';
|
import updateStartupVariable from '@/api/server/updateStartupVariable';
|
||||||
import useServer from '@/plugins/useServer';
|
|
||||||
import useFlash from '@/plugins/useFlash';
|
import useFlash from '@/plugins/useFlash';
|
||||||
import FlashMessageRender from '@/components/FlashMessageRender';
|
import FlashMessageRender from '@/components/FlashMessageRender';
|
||||||
import getServerStartup from '@/api/swr/getServerStartup';
|
import getServerStartup from '@/api/swr/getServerStartup';
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
import useSWR from 'swr';
|
import useSWR from 'swr';
|
||||||
import loadDirectory, { FileObject } from '@/api/server/files/loadDirectory';
|
import loadDirectory, { FileObject } from '@/api/server/files/loadDirectory';
|
||||||
import { cleanDirectoryPath } from '@/helpers';
|
import { cleanDirectoryPath } from '@/helpers';
|
||||||
import useServer from '@/plugins/useServer';
|
|
||||||
import { ServerContext } from '@/state/server';
|
import { ServerContext } from '@/state/server';
|
||||||
|
|
||||||
export default () => {
|
export default () => {
|
||||||
const { uuid } = useServer();
|
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
|
||||||
const directory = ServerContext.useStoreState(state => state.files.directory);
|
const directory = ServerContext.useStoreState(state => state.files.directory);
|
||||||
|
|
||||||
return useSWR<FileObject[]>(
|
return useSWR<FileObject[]>(
|
||||||
|
|
Loading…
Reference in New Issue