import { ActionPanel, List, Action, Icon, Form, useNavigation, } from "@raycast/api"; import { useState } from "react"; import { fetchProjects, addProject } from "./api"; import { FormValidation, showFailureToast, useCachedPromise, useForm, } from "@raycast/utils"; import { withSupermemory } from "./withSupermemory"; export default withSupermemory(Command); function Command() { const { isLoading, data: projects, mutate } = useCachedPromise(fetchProjects); return ( {!isLoading && !projects?.length ? ( } onPop={mutate} /> } /> ) : ( projects?.map((project) => ( } onPop={mutate} /> } /> )) )} ); } function CreateProject() { const { pop } = useNavigation(); const [isLoading, setIsLoading] = useState(false); const { handleSubmit, itemProps } = useForm<{ name: string }>({ async onSubmit(values) { setIsLoading(true); try { await addProject(values); pop(); } catch (error) { await showFailureToast(error, { title: "Failed to add project" }); } finally { setIsLoading(false); } }, validation: { name: FormValidation.Required, }, }); return (
} > ); }