diff --git a/app/Models/Server.php b/app/Models/Server.php index 64ab336b0..4092c4357 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -44,7 +44,7 @@ use Znck\Eloquent\Traits\BelongsToThrough; * @property \Pterodactyl\Models\Node $node * @property \Pterodactyl\Models\Nest $nest * @property \Pterodactyl\Models\Egg $egg - * @property \Pterodactyl\Models\EggVariable[]|\Illuminate\Support\Collection $variables + * @property \Pterodactyl\Models\ServerVariable[]|\Illuminate\Support\Collection $variables * @property \Pterodactyl\Models\Schedule[]|\Illuminate\Support\Collection $schedule * @property \Pterodactyl\Models\Database[]|\Illuminate\Support\Collection $databases * @property \Pterodactyl\Models\Location $location diff --git a/resources/scripts/api/server/files/getFileContents.ts b/resources/scripts/api/server/files/getFileContents.ts new file mode 100644 index 000000000..d35f0575d --- /dev/null +++ b/resources/scripts/api/server/files/getFileContents.ts @@ -0,0 +1,9 @@ +import http from '@/api/http'; + +export default (server: string, file: string): Promise => { + return new Promise((resolve, reject) => { + http.get(`/api/client/servers/${server}/files/contents`, { params: { file } }) + .then(({ data }) => resolve(data)) + .catch(reject); + }); +}; diff --git a/resources/scripts/components/elements/SuspenseSpinner.tsx b/resources/scripts/components/elements/SuspenseSpinner.tsx new file mode 100644 index 000000000..6e8424126 --- /dev/null +++ b/resources/scripts/components/elements/SuspenseSpinner.tsx @@ -0,0 +1,14 @@ +import React, { Suspense } from 'react'; +import Spinner from '@/components/elements/Spinner'; + +export default ({ children }: { children?: React.ReactNode }) => ( + + + + } + > + {children} + +); diff --git a/resources/scripts/components/server/ServerConsole.tsx b/resources/scripts/components/server/ServerConsole.tsx index 2fe11e42a..672d654a6 100644 --- a/resources/scripts/components/server/ServerConsole.tsx +++ b/resources/scripts/components/server/ServerConsole.tsx @@ -8,7 +8,7 @@ import styled from 'styled-components'; import { faMemory } from '@fortawesome/free-solid-svg-icons/faMemory'; import { faMicrochip } from '@fortawesome/free-solid-svg-icons/faMicrochip'; import { bytesToHuman } from '@/helpers'; -import Spinner from '@/components/elements/Spinner'; +import SuspenseSpinner from '@/components/elements/SuspenseSpinner'; type PowerAction = 'start' | 'stop' | 'restart' | 'kill'; @@ -23,8 +23,8 @@ const StopOrKillButton = ({ onPress }: { onPress: (action: PowerAction) => void const status = ServerContext.useStoreState(state => state.status.value); useEffect(() => { - setClicked(state => ['stopping'].indexOf(status) < 0 ? false : state); - }, [status]); + setClicked(state => [ 'stopping' ].indexOf(status) < 0 ? false : state); + }, [ status ]); return (