import { UseSubscription, useSubscriptionWithDependencies } from '@prefecthq/vue-compositions' import { ComputedRef, MaybeRefOrGetter, computed, toValue } from 'vue' import { useWorkspaceApi } from '@/compositions/useWorkspaceApi' import { WorkspaceEvent } from '@/models/workspaceEvent' import { WorkspaceEventsApi } from '@/services/workspaceEventsApi' export type UseWorkspaceEvent = { event: ComputedRef, subscription: UseSubscription, } export function useWorkspaceEvent(id: MaybeRefOrGetter, occurred: MaybeRefOrGetter): UseWorkspaceEvent { const filter = computed(() => { const eventId = toValue(id) const eventDate = toValue(occurred) if (!eventId || !eventDate) { return null } return [eventId, eventDate] }) const api = useWorkspaceApi() const subscription = useSubscriptionWithDependencies(api.events.getEvent, filter) const event = computed(() => subscription.response) return { event, subscription, } }