UNPKG

@replyke/core

Version:

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

79 lines (78 loc) 3.85 kB
import { Entity } from "../../interfaces/models/Entity"; import { EntityListSortByOptions } 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 UseEntityListDataProps { limit?: number; sortBy?: EntityListSortByOptions; 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; idle?: boolean; onReset?: () => void; infuseData?: (foreignId: string) => Promise<Record<string, any> | null>; } export interface UseEntityListDataValues { entities: Entity[]; setEntities: React.Dispatch<React.SetStateAction<Entity[]>>; infusedEntities: (Entity & Record<string, any>)[]; loading: boolean; hasMore: boolean; resetting: boolean; sortBy: EntityListSortByOptions | null; setSortBy: (sortBy: EntityListSortByOptions) => void; timeFrame: TimeFrame | null; setTimeFrame: (timeFrame: TimeFrame | null) => void; sourceId: string | null; setSourceId: (sourceId: string | null) => void; userId: string | null; setUserId: (userId: string | null) => void; followedOnly: boolean; setFollowedOnly: (state: boolean) => void; keywordsFilters: KeywordsFilters | null; updateKeywordsFilters: (type: "add" | "remove" | "reset" | "replace", key: "includes" | "doesNotInclude" | "both", value?: string | string[]) => void; titleFilters: TitleFilters | null; setTitleFilters: (metadata: TitleFilters | null) => void; contentFilters: ContentFilters | null; setContentFilters: (metadata: ContentFilters | null) => void; attachmentsFilters: AttachmentsFilters | null; setAttachmentsFilters: (metadata: AttachmentsFilters | null) => void; locationFilters: LocationFilters | null; setLocationFilters: (location: LocationFilters | null) => void; metadataFilters: MetadataFilters | null; setMetadataFilters: (metadata: MetadataFilters | null) => void; kickstart: () => void; loadMore: () => void; resetEntities: () => Promise<void>; createEntity: (props: { foreignId?: string; sourceId?: 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 useEntityListData({ limit, sortBy: sortByProp, timeFrame: timeFrameProp, sourceId: sourceIdProp, userId: userIdProp, followedOnly: followedOnlyProp, keywordsFilters: keywordsFiltersProp, locationFilters: locationFiltersProp, metadataFilters: metadataFiltersProp, titleFilters: titleFiltersProp, contentFilters: contentFiltersProp, attachmentsFilters: attachmentsFiltersProp, idle, onReset, infuseData, }: UseEntityListDataProps): UseEntityListDataValues; export default useEntityListData;