UNPKG

@replyke/core

Version:

Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.

54 lines (53 loc) 2.4 kB
import { type EntityListFilters, type EntityListConfig, type EntityListFetchOptions } from "../../store/slices/entityListsSlice"; import { Entity } from "../../interfaces/models/Entity"; import { EntityListSortByOptions, SortDirection, SortType } from "../../interfaces/EntityListSortByOptions"; import { LocationFilters } from "../../interfaces/entity-filters/LocationFilters"; import { TimeFrame } from "../../interfaces/TimeFrame"; import { MetadataFilters } from "../../interfaces/entity-filters/MetadataFilters"; import { TitleFilters } from "../../interfaces/entity-filters/TitleFilters"; import { ContentFilters } from "../../interfaces/entity-filters/ContentFilters"; import { AttachmentsFilters } from "../../interfaces/entity-filters/AttachmentsFilters"; import { KeywordsFilters } from "../../interfaces/entity-filters/KeywordsFilters"; export interface UseEntityListProps { listId: string; infuseData?: (foreignId: string) => Promise<Record<string, any> | null>; } export interface UseEntityListValues { entities: Entity[]; infusedEntities: (Entity & Record<string, any>)[]; loading: boolean; hasMore: boolean; sortBy: EntityListSortByOptions | null; sortDir: SortDirection | null; sortType: SortType | null; timeFrame: TimeFrame | null; sourceId: string | null; userId: string | null; followedOnly: boolean; keywordsFilters: KeywordsFilters | null; titleFilters: TitleFilters | null; contentFilters: ContentFilters | null; attachmentsFilters: AttachmentsFilters | null; locationFilters: LocationFilters | null; metadataFilters: MetadataFilters | null; fetchEntities: (filters: Partial<EntityListFilters>, config?: EntityListConfig, options?: EntityListFetchOptions) => void; loadMore: () => void; createEntity: (props: { foreignId?: string; title?: string; content?: string; attachments?: Record<string, any>[]; keywords?: string[]; location?: { latitude: number; longitude: number; }; metadata?: Record<string, any>; insertPosition?: "first" | "last"; }) => Promise<Entity | undefined>; deleteEntity: (props: { entityId: string; }) => Promise<void>; } declare function useEntityList({ listId, infuseData, }: UseEntityListProps): UseEntityListValues; export default useEntityList;