import { Button, GetProps, useMedia } from "tamagui"; import React, { useMemo, useState } from "react"; import Drawer from "expo-router/drawer"; import HostList from "./components/host-list"; import HostForm, { hostFormModal } from "./components/form"; import Icons from "@/components/ui/icons"; import { initialValues } from "./schema/form"; import KeyForm from "../keychains/components/form"; import { useUser } from "@/hooks/useUser"; import { useTeamId } from "@/stores/auth"; import { useMoveHost } from "./hooks/query"; import { useQueryParams } from "@/hooks/useQueryParams"; import { BackButton } from "@/components/ui/button"; type Params = { parentId?: string | null; }; export default function HostsPage() { const teamId = useTeamId(); const user = useUser(); const [selected, setSelected] = useState([]); const queryParams = useQueryParams(); const parentId = queryParams.params?.parentId; const media = useMedia(); const setParentId = (id: string | null) => { queryParams.push({ parentId: id || "" }); }; const onGoBack = () => { if (!queryParams.goBack()) { queryParams.replace({ parentId: "" }); } }; const actions = useMemo(() => { if (selected?.length > 0) { return ( setSelected([])} /> ); } if (!teamId || user?.teamCanWrite(teamId)) { return ( hostFormModal.onOpen({ ...initialValues, parentId })} /> ); } return null; }, [teamId, user, parentId]); return ( <> : media.gtXs ? () => null : undefined, headerTitle: selected.length > 0 ? `Selected ${selected.length} hosts` : "Hosts", headerRight: () => actions, }} /> ); } const AddButton = (props: GetProps) => ( ); type HostsActionsProps = { selected: string[]; parentId?: string | null; onClear: () => void; }; const actionMode = { CUT: 1, }; const HostsActions = ({ selected, parentId = null, onClear, }: HostsActionsProps) => { const [curMode, setCurMode] = useState(0); const move = useMoveHost(); const onReset = () => { setCurMode(0); onClear(); }; const onMoveAction = () => { move.mutate({ parentId, hostId: selected }, { onSuccess: onReset }); }; return ( <> {curMode === actionMode.CUT ? (