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 (
} > ) }