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