From 474bc7997e04f52cb2ccdb33ca7df2e074abdc61 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Sat, 19 Oct 2024 12:48:07 -0400 Subject: [PATCH 1/2] Fix naming and add update to site provider? --- server/routers/external.ts | 8 +- .../{create-site.tsx => CreateSite.tsx} | 2 +- .../sites/[niceId]/components/GeneralForm.tsx | 174 ++++++++++++++++++ .../{newt-config.tsx => NewtConfig.tsx} | 0 ...wireguard-config.ts => wireguardConfig.ts} | 0 src/app/[orgId]/sites/[niceId]/layout.tsx | 5 +- src/app/[orgId]/sites/[niceId]/page.tsx | 6 +- src/contexts/siteContext.ts | 9 +- src/hooks/useSiteContext.ts | 11 +- src/providers/SiteProvider.tsx | 46 ++++- 10 files changed, 238 insertions(+), 23 deletions(-) rename src/app/[orgId]/sites/[niceId]/components/{create-site.tsx => CreateSite.tsx} (99%) create mode 100644 src/app/[orgId]/sites/[niceId]/components/GeneralForm.tsx rename src/app/[orgId]/sites/[niceId]/components/{newt-config.tsx => NewtConfig.tsx} (100%) rename src/app/[orgId]/sites/[niceId]/components/{wireguard-config.ts => wireguardConfig.ts} (100%) diff --git a/server/routers/external.ts b/server/routers/external.ts index 7fd0c69..2cb7ba6 100644 --- a/server/routers/external.ts +++ b/server/routers/external.ts @@ -46,10 +46,10 @@ authenticated.put("/org/:orgId/site", verifyOrgAccess, site.createSite); authenticated.get("/org/:orgId/sites", verifyOrgAccess, site.listSites); authenticated.get("/org/:orgId/site/:niceId", verifyOrgAccess, site.getSite); -authenticated.get("/site/siteId/:siteId", verifySiteAccess, site.getSite); -authenticated.get("/site/siteId/:siteId/roles", verifySiteAccess, site.listSiteRoles); -authenticated.post("/site/siteId/:siteId", verifySiteAccess, site.updateSite); -authenticated.delete("/site/siteId/:siteId", verifySiteAccess, site.deleteSite); +authenticated.get("/site/:siteId", verifySiteAccess, site.getSite); +authenticated.get("/site/:siteId/roles", verifySiteAccess, site.listSiteRoles); +authenticated.post("/site/:siteId", verifySiteAccess, site.updateSite); +authenticated.delete("/site/:siteId", verifySiteAccess, site.deleteSite); authenticated.put( "/org/:orgId/site/:siteId/resource", diff --git a/src/app/[orgId]/sites/[niceId]/components/create-site.tsx b/src/app/[orgId]/sites/[niceId]/components/CreateSite.tsx similarity index 99% rename from src/app/[orgId]/sites/[niceId]/components/create-site.tsx rename to src/app/[orgId]/sites/[niceId]/components/CreateSite.tsx index 936506e..cc6fd96 100644 --- a/src/app/[orgId]/sites/[niceId]/components/create-site.tsx +++ b/src/app/[orgId]/sites/[niceId]/components/CreateSite.tsx @@ -18,7 +18,7 @@ import { FormMessage, } from "@/components/ui/form" import { Input } from "@/components/ui/input" -import { generateKeypair } from "./wireguard-config"; +import { generateKeypair } from "./wireguardConfig"; import React, { useState, useEffect } from "react"; import { api } from "@/api"; import { useParams } from "next/navigation"; diff --git a/src/app/[orgId]/sites/[niceId]/components/GeneralForm.tsx b/src/app/[orgId]/sites/[niceId]/components/GeneralForm.tsx new file mode 100644 index 0000000..d2fd5f2 --- /dev/null +++ b/src/app/[orgId]/sites/[niceId]/components/GeneralForm.tsx @@ -0,0 +1,174 @@ +"use client" + +import Link from "next/link" +import { zodResolver } from "@hookform/resolvers/zod" +import { useFieldArray, useForm } from "react-hook-form" +import { z } from "zod" + +import { cn } from "@/lib/utils" +import { toast } from "@/hooks/use-toast" + +import { Button } from "@/components/ui/button" +import { + Form, + FormControl, + FormDescription, + FormField, + FormItem, + FormLabel, + FormMessage, +} from "@/components/ui/form" +import { Input } from "@/components/ui/input" +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select" +import { Textarea } from "@/components/ui/textarea" +import { useSiteContext } from "@app/hooks/useSiteContext" +import api from "@app/api" + +const GeneralFormSchema = z.object({ + name: z.string() + // email: z + // .string({ + // required_error: "Please select an email to display.", + // }) + // .email(), + // bio: z.string().max(160).min(4), + // urls: z + // .array( + // z.object({ + // value: z.string().url({ message: "Please enter a valid URL." }), + // }) + // ) + // .optional(), +}) + +type GeneralFormValues = z.infer + +export function GeneralForm() { + const { site, updateSite } = useSiteContext(); + + const form = useForm({ + resolver: zodResolver(GeneralFormSchema), + defaultValues: { + name: site?.name + }, + mode: "onChange", + }) + + // const { fields, append } = useFieldArray({ + // name: "urls", + // control: form.control, + // }) + + async function onSubmit(data: GeneralFormValues) { + await updateSite({ name: data.name }); + } + + return ( +
+ + ( + + Name + + + + + This is the display name of the site. + + + + )} + /> + {/* ( + + Email + + + You can manage verified email addresses in your{" "} + email settings. + + + + )} + /> + ( + + Bio + +