From 9cdbbc3a00f37985f07df966bd0395e384db2d7e Mon Sep 17 00:00:00 2001 From: Matthew Penner Date: Thu, 12 Jan 2023 12:25:58 -0700 Subject: [PATCH] ui(admin): fix server editing --- .../Api/Application/ServerTransformer.php | 2 +- resources/scripts/api/admin/server.ts | 2 +- .../api/definitions/admin/transformers.ts | 28 +++++++++++++++---- .../admin/servers/NewServerContainer.tsx | 2 +- .../components/admin/servers/OwnerSelect.tsx | 1 + .../admin/servers/ServerDeleteButton.tsx | 16 ++++------- .../admin/servers/ServerSettingsContainer.tsx | 16 +++++------ .../admin/servers/ServerStartupContainer.tsx | 6 ++-- 8 files changed, 43 insertions(+), 30 deletions(-) diff --git a/app/Transformers/Api/Application/ServerTransformer.php b/app/Transformers/Api/Application/ServerTransformer.php index ddc4f638c..a22b85771 100644 --- a/app/Transformers/Api/Application/ServerTransformer.php +++ b/app/Transformers/Api/Application/ServerTransformer.php @@ -73,7 +73,7 @@ class ServerTransformer extends Transformer 'backups' => $model->backup_limit, 'databases' => $model->database_limit, ], - 'user_id' => $model->owner_id, + 'owner_id' => $model->owner_id, 'node_id' => $model->node_id, 'allocation_id' => $model->allocation_id, 'nest_id' => $model->nest_id, diff --git a/resources/scripts/api/admin/server.ts b/resources/scripts/api/admin/server.ts index 26f9ba6b5..219c17a08 100644 --- a/resources/scripts/api/admin/server.ts +++ b/resources/scripts/api/admin/server.ts @@ -37,7 +37,7 @@ export interface Server extends Model { name: string; description: string; status: string; - userId: number; + ownerId: number; nodeId: number; allocationId: number; eggId: number; diff --git a/resources/scripts/api/definitions/admin/transformers.ts b/resources/scripts/api/definitions/admin/transformers.ts index 07095ab07..093b022d8 100644 --- a/resources/scripts/api/definitions/admin/transformers.ts +++ b/resources/scripts/api/definitions/admin/transformers.ts @@ -9,10 +9,26 @@ import { Nest } from '@/api/admin/nest'; const isList = (data: FractalResponseList | FractalResponseData): data is FractalResponseList => data.object === 'list'; -function transform (data: undefined, transformer: (callback: FractalResponseData) => T, missing?: M): undefined; -function transform (data: FractalResponseData | undefined, transformer: (callback: FractalResponseData) => T, missing?: M): T | M | undefined; -function transform (data: FractalResponseList | undefined, transformer: (callback: FractalResponseData) => T, missing?: M): T[] | undefined; -function transform (data: FractalResponseData | FractalResponseList | undefined, transformer: (callback: FractalResponseData) => T, missing = undefined) { +function transform( + data: undefined, + transformer: (callback: FractalResponseData) => T, + missing?: M, +): undefined; +function transform( + data: FractalResponseData | undefined, + transformer: (callback: FractalResponseData) => T, + missing?: M, +): T | M | undefined; +function transform( + data: FractalResponseList | undefined, + transformer: (callback: FractalResponseData) => T, + missing?: M, +): T[] | undefined; +function transform( + data: FractalResponseData | FractalResponseList | undefined, + transformer: (callback: FractalResponseData) => T, + missing = undefined, +) { if (data === undefined) return undefined; if (isList(data)) { @@ -35,7 +51,7 @@ export default class Transformers { name: attributes.name, description: attributes.description, status: attributes.status, - userId: attributes.owner_id, + ownerId: attributes.owner_id, nodeId: attributes.node_id, allocationId: attributes.allocation_id, eggId: attributes.egg_id, @@ -190,7 +206,7 @@ export default class Transformers { node: transform(attributes.relationships?.node as FractalResponseData, this.toNode), server: transform(attributes.relationships?.server as FractalResponseData, this.toServer), }, - getDisplayText (): string { + getDisplayText(): string { const raw = `${this.ip}:${this.port}`; return !this.alias ? raw : `${this.alias} (${raw})`; diff --git a/resources/scripts/components/admin/servers/NewServerContainer.tsx b/resources/scripts/components/admin/servers/NewServerContainer.tsx index 1970d4806..f195b5c73 100644 --- a/resources/scripts/components/admin/servers/NewServerContainer.tsx +++ b/resources/scripts/components/admin/servers/NewServerContainer.tsx @@ -50,7 +50,7 @@ function InternalForm() { setFieldValue('eggId', egg.id); setFieldValue('startup', ''); - setFieldValue('image', egg.dockerImages.length > 0 ? egg.dockerImages[0] : ''); + setFieldValue('image', Object.values(egg.dockerImages)[0] ?? ''); }, [egg]); useEffect(() => { diff --git a/resources/scripts/components/admin/servers/OwnerSelect.tsx b/resources/scripts/components/admin/servers/OwnerSelect.tsx index 25de1133a..68d152ea3 100644 --- a/resources/scripts/components/admin/servers/OwnerSelect.tsx +++ b/resources/scripts/components/admin/servers/OwnerSelect.tsx @@ -16,6 +16,7 @@ export default ({ selected }: { selected?: User }) => { }; const onSelect = (user: User | null) => { + console.log(user); setUser(user); setFieldValue('ownerId', user?.id || null); }; diff --git a/resources/scripts/components/admin/servers/ServerDeleteButton.tsx b/resources/scripts/components/admin/servers/ServerDeleteButton.tsx index 27acf2e2c..02f1910e7 100644 --- a/resources/scripts/components/admin/servers/ServerDeleteButton.tsx +++ b/resources/scripts/components/admin/servers/ServerDeleteButton.tsx @@ -3,9 +3,8 @@ import type { Actions } from 'easy-peasy'; import { useStoreActions } from 'easy-peasy'; import { useState } from 'react'; import { useNavigate } from 'react-router-dom'; -import tw from 'twin.macro'; -import Button from '@/components/elements/Button'; +import { Button } from '@/components/elements/button'; import ConfirmationModal from '@/components/elements/ConfirmationModal'; import deleteServer from '@/api/admin/servers/deleteServer'; import { useServerFromRoute } from '@/api/admin/server'; @@ -52,15 +51,10 @@ export default () => { > Are you sure you want to delete this server? - + + setVisible(true)} className="flex items-center justify-center"> + Delete Server + ); }; diff --git a/resources/scripts/components/admin/servers/ServerSettingsContainer.tsx b/resources/scripts/components/admin/servers/ServerSettingsContainer.tsx index db094f884..5b5cccf64 100644 --- a/resources/scripts/components/admin/servers/ServerSettingsContainer.tsx +++ b/resources/scripts/components/admin/servers/ServerSettingsContainer.tsx @@ -12,7 +12,7 @@ import BaseSettingsBox from '@/components/admin/servers/settings/BaseSettingsBox import FeatureLimitsBox from '@/components/admin/servers/settings/FeatureLimitsBox'; import NetworkingBox from '@/components/admin/servers/settings/NetworkingBox'; import ServerResourceBox from '@/components/admin/servers/settings/ServerResourceBox'; -import Button from '@/components/elements/Button'; +import { Button } from '@/components/elements/button'; export default () => { const { data: server } = useServerFromRoute(); @@ -27,6 +27,8 @@ export default () => { // OOM Killer is enabled, rather than when disabled. values.limits.oomDisabled = !values.limits.oomDisabled; + console.log(values); + updateServer(server.id, values) .then(() => { // setServer({ ...server, ...s }); @@ -48,7 +50,7 @@ export default () => { initialValues={{ externalId: server.externalId || '', name: server.name, - ownerId: server.userId, + ownerId: server.ownerId, limits: { memory: server.limits.memory, swap: server.limits.swap, @@ -79,17 +81,15 @@ export default () => { +
+
-
diff --git a/resources/scripts/components/admin/servers/ServerStartupContainer.tsx b/resources/scripts/components/admin/servers/ServerStartupContainer.tsx index d672c57e0..a6cc2638d 100644 --- a/resources/scripts/components/admin/servers/ServerStartupContainer.tsx +++ b/resources/scripts/components/admin/servers/ServerStartupContainer.tsx @@ -33,13 +33,14 @@ function ServerStartupLineContainer({ egg, server }: { egg: Egg | null; server: } if (server.eggId === egg.id) { + console.log(server.container); setFieldValue('image', server.container.image); setFieldValue('startup', server.container.startup || ''); return; } // Whenever the egg is changed, set the server's startup command to the egg's default. - setFieldValue('image', egg.dockerImages.length > 0 ? egg.dockerImages[0] : ''); + setFieldValue('image', Object.values(egg.dockerImages)[0] ?? ''); setFieldValue('startup', ''); }, [egg]); @@ -105,6 +106,7 @@ export function ServerImageContainer() {
+ {/* TODO: make this a proper select but allow a custom image to be specified if needed. */}
@@ -249,7 +251,7 @@ export default () => { >