Forms now update documents directly.
This commit is contained in:
@@ -4,6 +4,7 @@ import { pb } from "@/lib/pocketbase";
|
||||
import { BaseForm } from "@/components/form/BaseForm";
|
||||
import { SingleLineInput } from "@/components/form/SingleLineInput";
|
||||
import { MultiLineInput } from "@/components/form/MultiLineInput";
|
||||
import { useDocument } from "@/context/document/DocumentContext";
|
||||
|
||||
/**
|
||||
* Renders a form to add a new npc. Calls onCreate with the new npc document.
|
||||
@@ -15,6 +16,7 @@ export const NewNpcForm = ({
|
||||
campaign: CampaignId;
|
||||
onCreate: (npc: Npc) => Promise<void>;
|
||||
}) => {
|
||||
const { dispatch } = useDocument();
|
||||
const [name, setName] = useState("");
|
||||
const [description, setDescription] = useState("");
|
||||
const [adding, setAdding] = useState(false);
|
||||
@@ -36,6 +38,7 @@ export const NewNpcForm = ({
|
||||
});
|
||||
setName("");
|
||||
setDescription("");
|
||||
dispatch({ type: "setDocument", doc: npcDoc });
|
||||
await onCreate(npcDoc);
|
||||
} catch (e: any) {
|
||||
setError(e?.message || "Failed to add npc.");
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { AutoSaveTextarea } from "@/components/AutoSaveTextarea";
|
||||
import { useDocument } from "@/context/document/DocumentContext";
|
||||
import { pb } from "@/lib/pocketbase";
|
||||
import type { Npc } from "@/lib/types";
|
||||
|
||||
@@ -6,22 +7,25 @@ import type { Npc } from "@/lib/types";
|
||||
* Renders an editable npc form
|
||||
*/
|
||||
export const NpcEditForm = ({ npc }: { npc: Npc }) => {
|
||||
const { dispatch } = useDocument();
|
||||
async function saveNpcName(name: string) {
|
||||
await pb.collection("documents").update(npc.id, {
|
||||
const updated: Npc = await pb.collection("documents").update(npc.id, {
|
||||
data: {
|
||||
...npc.data,
|
||||
name,
|
||||
},
|
||||
});
|
||||
dispatch({ type: "setDocument", doc: updated });
|
||||
}
|
||||
|
||||
async function saveNpcDescription(description: string) {
|
||||
await pb.collection("documents").update(npc.id, {
|
||||
const updated: Npc = await pb.collection("documents").update(npc.id, {
|
||||
data: {
|
||||
...npc.data,
|
||||
description,
|
||||
},
|
||||
});
|
||||
dispatch({ type: "setDocument", doc: updated });
|
||||
}
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user