Skip to content

use/listSubscription ​

Classes ​

ListSubscriptionError ​

Custom error class for list subscription errors.

Extends ​

  • Error

Constructors ​

Constructor ​

new ListSubscriptionError(message, code): ListSubscriptionError

Creates a new ListSubscriptionError.

Parameters ​
message ​

string

The error message.

code ​

string

The error code.

Returns ​

ListSubscriptionError

Overrides ​

Error.constructor

Properties ​

code ​

code: string

name ​

name: string

Inherited from ​

Error.name

Interfaces ​

ListSubscriptionMyState ​

The raw state of a list subscription.

Properties ​

intendToList ​

intendToList: boolean | Ref<boolean, boolean>

If this is true, the list should be fetched, or re-fetched if arguments change.

intendToSubscribe ​

intendToSubscribe: boolean | Ref<boolean, boolean>

If this is true, the subscription should start or restart if arguments change.

subscribed ​

subscribed: Ref<boolean, boolean>

Whether the subscription is active.


ListSubscriptionOwnOptions ​

The options specific to a list subscription, namely an optional pre-built list instance to reuse.

Properties ​

listInstance? ​

optional listInstance?: ListInstance

A list instance to use instead of creating one.


ListSubscriptionProperties ​

The properties of a list subscription.

Properties ​

listInstance ​

listInstance: ListInstance

The list instance used by the subscription.

listIntent ​

listIntent: CancellableIntent

The CancellableIntent instance managing if the list should be (re)fetched.

state ​

state: object

The reactive state of the list subscription.

columnTotals ​

columnTotals: ShallowReactive<ColumnTotals>

Column totals for the list.

crud ​

crud: object

CRUD handlers and their configurations for the list.

crud.args ​

args: Reactive<{ } | TargetArgs>

The arguments to be passed to the crud handlers.

crud.bulkDelete ​

bulkDelete: CrudBulkDeleteFn

The bulk delete function.

crud.executeAction ​

executeAction: CrudExecuteActionFn

The execute action function.

crud.list ​

list: CrudListFn

The list function.

crud.subscribe ​

subscribe: CrudListSubscribeFn

The subscribe function.

error ​

error: Error

The error that occurred.

errored ​

errored: boolean

Whether an error has occurred.

intendToList ​

intendToList: boolean

If this is true, the list should be fetched, or re-fetched if arguments change.

intendToSubscribe ​

intendToSubscribe: boolean

If this is true, the subscription should start or restart if arguments change.

loading ​

loading: boolean

Whether the component is loading.

objects ​

objects: ObjectsByPk

The list objects stored by their pks.

objectsInOrder ​

objectsInOrder: ExistingCrudObject[]

The objects in the order specified by the list.

objectsMap ​

objectsMap: Map<string, ExistingCrudObject> & Omit<ObjectsMap, keyof Map<any, any>>

The map of objects stored by their pks.

objectsVersion ​

objectsVersion: number

Increments when the set of object keys changes.

order ​

order: string[]

The order of objects in the list.

paginateInfo ​

paginateInfo: ShallowReactive<PaginateInfo>

Pagination information for the list.

params ​

params: any

Arguments passed to the server for listing operations.

pkKey ​

pkKey: string

The primary key field for the list objects.

subscribed ​

subscribed: boolean

Whether the subscription is active.

subscribeIntent ​

subscribeIntent: CancellableIntent

The CancellableIntent instance managing if the subscription should be (un)subscribed.

Type Aliases ​

ListInstanceStateRefs ​

ListInstanceStateRefs = ToRefs

The list instance's reactive state converted to individual Vue refs.

Type Parameters ​


ListSubscription ​

ListSubscription = ListSubscriptionFunctions & ListSubscriptionProperties

An instance of a list subscription, returned by useListSubscription.

Type Parameters ​


ListSubscriptionContext ​

ListSubscriptionContext = object

The context (state, list instance, and loading/error status) bound to the shared list subscription functions.

Type Parameters ​

Type Declaration ​

listInstance ​

listInstance: ListInstance

loadingError ​

loadingError: LoadingErrorStatus

state ​

state: ListSubscriptionState


ListSubscriptionFunctions ​

ListSubscriptionFunctions = Pick<LoadingErrorStatus, "clearError"> & object

The methods available on a list subscription.

Type Declaration ​

stop ​

stop: () => void

Returns ​

void

Type Parameters ​


ListSubscriptionOptions ​

ListSubscriptionOptions = ListInstanceOptions & ListSubscriptionOwnOptions

Defines the settings required to establish a list subscription, detailing how list instances should handle updates and subscriptions based on the given properties.

Type Parameters ​


ListSubscriptionRawState ​

ListSubscriptionRawState = ListSubscriptionMyState & Pick<LoadingErrorStatus, "loading" | "error" | "errored"> & ListInstanceStateRefs

The raw state of a list subscription, including the state from the list instance.

Type Parameters ​


ListSubscriptionState ​

ListSubscriptionState = Reactive

A reactive object that manages a list of objects, as returned by useListInstance.

Type Parameters ​

Functions ​

useListSubscription() ​

useListSubscription(options): ListSubscription

A composition function that creates a reactive object that manages a list of objects, as returned by useListInstance, causing the list to be re-fetched as needed and listening for updates to the list.

Parameters ​

options ​

ListSubscriptionOptions

The options for the list subscription.

Returns ​

ListSubscription

  • Returns a robust list subscription object that manages a list instance with capabilities to subscribe and unsubscribe to data sources, alongside handling real-time data updates.

Example ​

vue
<script setup>
import { useListSubscription } from "@arrai-innovations/reactive-helpers";
import { reactive, toRef } from "vue";

const props = defineProps({
    // whatever props are required for your configured list instance
    someListFilter: {
        type: String,
        default: "",
    },
});

const listSubscriptionProps = reactive({
    target: {
        // whatever arguments are required for your configured list crud function to get the right endpoint
    },
    params: {
        // whatever arguments are required for your configured list function to get the right list
        someListFilter: toRef(props, "someListFilter"),
    },
    intendToList: false,
    intendToSubscribe: false,
});
listSubscriptionProps.intendToList = listSubscriptionProps.intendToSubscribe = computed(()=> !!props.someListFilter);
const listSubscription = useListSubscription({ props: listSubscriptionProps });
</script>
<template>
    <ul>
        <!-- reactive list of objects, responding to updates via configured subscription function. -->
        <li v-for="obj in listSubscription.state.objectsInOrder">
            {{ obj }}
        </li>
    </ul>
</template>

Throws ​

  • If the list instance is not set and no props are passed.

useListSubscriptions() ​

useListSubscriptions(listSubscriptionArgs): object

A Vue composition function that creates multiple list subscriptions, and returns them as an object.

Parameters ​

listSubscriptionArgs ​

Each desired list instance options, keyed by an instance name.

Returns ​

object

  • Each list instance, keyed by the instance name.