@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
TypeScript
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;