diff --git a/pkgs/clan-app/ui/src/routes/Clan/Clan.tsx b/pkgs/clan-app/ui/src/routes/Clan/Clan.tsx
index 10116caf8..e2a3d15d7 100644
--- a/pkgs/clan-app/ui/src/routes/Clan/Clan.tsx
+++ b/pkgs/clan-app/ui/src/routes/Clan/Clan.tsx
@@ -36,6 +36,11 @@ import { createForm, FieldValues, reset } from "@modular-forms/solid";
import { Sidebar } from "@/src/components/Sidebar/Sidebar";
import { UseQueryResult } from "@tanstack/solid-query";
import { ListClansModal } from "@/src/modals/ListClansModal/ListClansModal";
+import {
+ InventoryInstance,
+ ServiceWorkflow,
+} from "@/src/workflows/Service/Service";
+import { useApiClient } from "@/src/hooks/ApiClient";
interface ClanContextProps {
clanURI: string;
@@ -179,7 +184,10 @@ const ClanSceneController = (props: RouteSectionProps) => {
const navigate = useNavigate();
- const [dialogHandlers, setDialogHandlers] = createSignal<{
+ const [showService, setShowService] = createSignal(false);
+
+ const [showModal, setShowModal] = createSignal(false);
+ const [currentPromise, setCurrentPromise] = createSignal<{
resolve: ({ id }: { id: string }) => void;
reject: (err: unknown) => void;
} | null>(null);
@@ -187,7 +195,15 @@ const ClanSceneController = (props: RouteSectionProps) => {
const onCreate = async (): Promise<{ id: string }> => {
return new Promise((resolve, reject) => {
setShowModal(true);
- setDialogHandlers({ resolve, reject });
+ setCurrentPromise({ resolve, reject });
+ });
+ };
+
+ const onAddService = async (): Promise<{ id: string }> => {
+ return new Promise((resolve, reject) => {
+ setShowService(true);
+ console.log("setting current promise");
+ setCurrentPromise({ resolve, reject });
});
};
@@ -217,8 +233,6 @@ const ClanSceneController = (props: RouteSectionProps) => {
return { id: values.name };
};
- const [showModal, setShowModal] = createSignal(false);
-
const [loadingError, setLoadingError] = createSignal<
{ title: string; description: string } | undefined
>();
@@ -265,6 +279,26 @@ const ClanSceneController = (props: RouteSectionProps) => {
}),
);
+ const client = useApiClient();
+ const handleSubmitService = async (instance: InventoryInstance) => {
+ console.log("Create Instance", instance);
+ const call = client.fetch("create_service_instance", {
+ flake: {
+ identifier: ctx.clanURI,
+ },
+ module_ref: instance.module,
+ roles: instance.roles,
+ });
+ const result = await call.result;
+
+ if (result.status === "error") {
+ console.error("Error creating service instance", result.errors);
+ }
+ //
+ currentPromise()?.resolve({ id: "0" });
+ setShowService(false);
+ };
+
return (
<>