From 48882e6f2c546767df639e58a9d1a9a9e9c1ffb0 Mon Sep 17 00:00:00 2001 From: Matthew Penner Date: Fri, 8 Jan 2021 15:07:03 -0700 Subject: [PATCH] admin(ui): add EggEditContainer.tsx --- .../admin/nests/NestEditContainer.tsx | 2 +- .../admin/nests/eggs/EggEditContainer.tsx | 77 +++++++++++++++++++ resources/scripts/routers/AdminRouter.tsx | 6 ++ 3 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 resources/scripts/components/admin/nests/eggs/EggEditContainer.tsx diff --git a/resources/scripts/components/admin/nests/NestEditContainer.tsx b/resources/scripts/components/admin/nests/NestEditContainer.tsx index eab5f9d6e..792086701 100644 --- a/resources/scripts/components/admin/nests/NestEditContainer.tsx +++ b/resources/scripts/components/admin/nests/NestEditContainer.tsx @@ -230,7 +230,7 @@ const NestEditContainer = () => { if (loading || nest === undefined) { return ( - +
diff --git a/resources/scripts/components/admin/nests/eggs/EggEditContainer.tsx b/resources/scripts/components/admin/nests/eggs/EggEditContainer.tsx new file mode 100644 index 000000000..8b6b8cf92 --- /dev/null +++ b/resources/scripts/components/admin/nests/eggs/EggEditContainer.tsx @@ -0,0 +1,77 @@ +import React, { useEffect, useState } from 'react'; +import tw from 'twin.macro'; +import { useRouteMatch } from 'react-router-dom'; +import { action, Action, Actions, createContextStore, useStoreActions } from 'easy-peasy'; +import getEgg, { Egg } from '@/api/admin/eggs/getEgg'; +import AdminContentBlock from '@/components/admin/AdminContentBlock'; +import Spinner from '@/components/elements/Spinner'; +import FlashMessageRender from '@/components/FlashMessageRender'; +import { ApplicationStore } from '@/state'; + +interface ctx { + egg: Egg | undefined; + setEgg: Action; +} + +export const Context = createContextStore({ + egg: undefined, + + setEgg: action((state, payload) => { + state.egg = payload; + }), +}); + +const EggEditContainer = () => { + const match = useRouteMatch<{ nestId?: string, id?: string }>(); + + const { clearFlashes, clearAndAddHttpError } = useStoreActions((actions: Actions) => actions.flashes); + const [ loading, setLoading ] = useState(true); + + const egg = Context.useStoreState(state => state.egg); + const setEgg = Context.useStoreActions(actions => actions.setEgg); + + useEffect(() => { + clearFlashes('egg'); + + getEgg(Number(match.params?.id)) + .then(egg => setEgg(egg)) + .catch(error => { + console.error(error); + clearAndAddHttpError({ key: 'egg', error }); + }) + .then(() => setLoading(false)); + }, []); + + if (loading || egg === undefined) { + return ( + + + +
+ +
+
+ ); + } + + return ( + +
+
+

{egg.name}

+

{egg.description}

+
+
+ + +
+ ); +}; + +export default () => { + return ( + + + + ); +}; diff --git a/resources/scripts/routers/AdminRouter.tsx b/resources/scripts/routers/AdminRouter.tsx index abeb121ef..ce7868e7b 100644 --- a/resources/scripts/routers/AdminRouter.tsx +++ b/resources/scripts/routers/AdminRouter.tsx @@ -27,6 +27,7 @@ import RolesContainer from '@/components/admin/roles/RolesContainer'; import RoleEditContainer from '@/components/admin/roles/RoleEditContainer'; import NestsContainer from '@/components/admin/nests/NestsContainer'; import NestEditContainer from '@/components/admin/nests/NestEditContainer'; +import EggEditContainer from '@/components/admin/nests/eggs/EggEditContainer'; import MountsContainer from '@/components/admin/mounts/MountsContainer'; import MountEditContainer from '@/components/admin/mounts/MountEditContainer'; @@ -237,6 +238,11 @@ const AdminRouter = ({ location, match }: RouteComponentProps) => { component={NestEditContainer} exact /> +