@replyke/core
Version:
Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.
427 lines (426 loc) • 19.5 kB
TypeScript
import { PayloadAction } from "@reduxjs/toolkit";
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 EntityListState {
entities: Entity[];
page: number;
loading: boolean;
hasMore: boolean;
error: string | null;
lastFetched: number | null;
sourceId: string | null;
limit: number;
sortBy: EntityListSortByOptions;
sortDir: SortDirection | null;
sortType: SortType;
timeFrame: TimeFrame | null;
userId: string | null;
followedOnly: boolean;
keywordsFilters: KeywordsFilters | null;
titleFilters: TitleFilters | null;
contentFilters: ContentFilters | null;
attachmentsFilters: AttachmentsFilters | null;
locationFilters: LocationFilters | null;
metadataFilters: MetadataFilters | null;
}
export interface EntityListsState {
lists: {
[listId: string]: EntityListState;
};
}
export interface EntityListFilters {
sortBy?: EntityListSortByOptions;
sortDir?: SortDirection | null;
sortType?: SortType;
timeFrame?: TimeFrame | null;
userId?: string | null;
followedOnly?: boolean;
keywordsFilters?: KeywordsFilters | null;
titleFilters?: TitleFilters | null;
contentFilters?: ContentFilters | null;
attachmentsFilters?: AttachmentsFilters | null;
locationFilters?: LocationFilters | null;
metadataFilters?: MetadataFilters | null;
}
export interface EntityListConfig {
sourceId?: string | null;
limit?: number;
}
export interface EntityListFetchOptions {
resetUnspecified?: boolean;
immediate?: boolean;
clearImmediately?: boolean;
}
export interface FilterUpdatePayload {
listId: string;
filters: Partial<EntityListFilters>;
config?: EntityListConfig;
options?: EntityListFetchOptions;
}
export interface InitializeListPayload {
listId: string;
}
export interface KeywordsUpdatePayload {
listId: string;
type: "add" | "remove" | "reset" | "replace";
key: "includes" | "doesNotInclude" | "both";
value?: string | string[];
}
export interface EntityAddPayload {
listId: string;
entity: Entity;
insertPosition?: "first" | "last";
}
export interface EntityRemovePayload {
listId: string;
entityId: string;
}
export interface EntitiesSetPayload {
listId: string;
entities: Entity[];
append?: boolean;
}
export declare const entityListsSlice: import("@reduxjs/toolkit").Slice<EntityListsState, {
initializeList: (state: import("@reduxjs/toolkit").WritableDraft<EntityListsState>, action: PayloadAction<InitializeListPayload>) => void;
updateFiltersAndSort: (state: import("@reduxjs/toolkit").WritableDraft<EntityListsState>, action: PayloadAction<FilterUpdatePayload>) => void;
setEntityListLoading: (state: import("@reduxjs/toolkit").WritableDraft<EntityListsState>, action: PayloadAction<{
listId: string;
loading: boolean;
}>) => void;
setEntityListEntities: (state: import("@reduxjs/toolkit").WritableDraft<EntityListsState>, action: PayloadAction<EntitiesSetPayload>) => void;
incrementPage: (state: import("@reduxjs/toolkit").WritableDraft<EntityListsState>, action: PayloadAction<string>) => void;
setEntityListHasMore: (state: import("@reduxjs/toolkit").WritableDraft<EntityListsState>, action: PayloadAction<{
listId: string;
hasMore: boolean;
}>) => void;
setEntityListError: (state: import("@reduxjs/toolkit").WritableDraft<EntityListsState>, action: PayloadAction<{
listId: string;
error: string | null;
}>) => void;
addEntity: (state: import("@reduxjs/toolkit").WritableDraft<EntityListsState>, action: PayloadAction<EntityAddPayload>) => void;
removeEntity: (state: import("@reduxjs/toolkit").WritableDraft<EntityListsState>, action: PayloadAction<EntityRemovePayload>) => void;
updateKeywordsFilters: (state: import("@reduxjs/toolkit").WritableDraft<EntityListsState>, action: PayloadAction<KeywordsUpdatePayload>) => void;
cleanupList: (state: import("@reduxjs/toolkit").WritableDraft<EntityListsState>, action: PayloadAction<string>) => void;
cleanupOldLists: (state: import("@reduxjs/toolkit").WritableDraft<EntityListsState>, action: PayloadAction<number>) => void;
}, "entityLists", "entityLists", import("@reduxjs/toolkit").SliceSelectors<EntityListsState>>;
export declare const initializeList: import("@reduxjs/toolkit").ActionCreatorWithPayload<InitializeListPayload, "entityLists/initializeList">, updateFiltersAndSort: import("@reduxjs/toolkit").ActionCreatorWithPayload<FilterUpdatePayload, "entityLists/updateFiltersAndSort">, setEntityListLoading: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
listId: string;
loading: boolean;
}, "entityLists/setEntityListLoading">, setEntityListEntities: import("@reduxjs/toolkit").ActionCreatorWithPayload<EntitiesSetPayload, "entityLists/setEntityListEntities">, incrementPage: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "entityLists/incrementPage">, setEntityListHasMore: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
listId: string;
hasMore: boolean;
}, "entityLists/setEntityListHasMore">, setEntityListError: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
listId: string;
error: string | null;
}, "entityLists/setEntityListError">, addEntity: import("@reduxjs/toolkit").ActionCreatorWithPayload<EntityAddPayload, "entityLists/addEntity">, removeEntity: import("@reduxjs/toolkit").ActionCreatorWithPayload<EntityRemovePayload, "entityLists/removeEntity">, updateKeywordsFilters: import("@reduxjs/toolkit").ActionCreatorWithPayload<KeywordsUpdatePayload, "entityLists/updateKeywordsFilters">, cleanupList: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "entityLists/cleanupList">, cleanupOldLists: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "entityLists/cleanupOldLists">;
export declare const selectEntityList: ((state: any, listId: string) => EntityListState | undefined) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
} & {
resultFunc: (resultFuncArgs_0: EntityListsState, resultFuncArgs_1: string) => EntityListState | undefined;
memoizedResultFunc: ((resultFuncArgs_0: EntityListsState, resultFuncArgs_1: string) => EntityListState | undefined) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
};
lastResult: () => EntityListState | undefined;
dependencies: [(state: {
entityLists: EntityListsState;
}) => EntityListsState, (_: any, listId: string) => string];
recomputations: () => number;
resetRecomputations: () => void;
dependencyRecomputations: () => number;
resetDependencyRecomputations: () => void;
} & {
memoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
argsMemoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
};
export declare const selectEntityListEntities: ((state: any, listId: string) => Entity[]) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
} & {
resultFunc: (resultFuncArgs_0: EntityListState | undefined) => Entity[];
memoizedResultFunc: ((resultFuncArgs_0: EntityListState | undefined) => Entity[]) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
};
lastResult: () => Entity[];
dependencies: [((state: any, listId: string) => EntityListState | undefined) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
} & {
resultFunc: (resultFuncArgs_0: EntityListsState, resultFuncArgs_1: string) => EntityListState | undefined;
memoizedResultFunc: ((resultFuncArgs_0: EntityListsState, resultFuncArgs_1: string) => EntityListState | undefined) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
};
lastResult: () => EntityListState | undefined;
dependencies: [(state: {
entityLists: EntityListsState;
}) => EntityListsState, (_: any, listId: string) => string];
recomputations: () => number;
resetRecomputations: () => void;
dependencyRecomputations: () => number;
resetDependencyRecomputations: () => void;
} & {
memoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
argsMemoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
}];
recomputations: () => number;
resetRecomputations: () => void;
dependencyRecomputations: () => number;
resetDependencyRecomputations: () => void;
} & {
memoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
argsMemoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
};
export declare const selectEntityListLoading: ((state: any, listId: string) => boolean) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
} & {
resultFunc: (resultFuncArgs_0: EntityListState | undefined) => boolean;
memoizedResultFunc: ((resultFuncArgs_0: EntityListState | undefined) => boolean) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
};
lastResult: () => boolean;
dependencies: [((state: any, listId: string) => EntityListState | undefined) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
} & {
resultFunc: (resultFuncArgs_0: EntityListsState, resultFuncArgs_1: string) => EntityListState | undefined;
memoizedResultFunc: ((resultFuncArgs_0: EntityListsState, resultFuncArgs_1: string) => EntityListState | undefined) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
};
lastResult: () => EntityListState | undefined;
dependencies: [(state: {
entityLists: EntityListsState;
}) => EntityListsState, (_: any, listId: string) => string];
recomputations: () => number;
resetRecomputations: () => void;
dependencyRecomputations: () => number;
resetDependencyRecomputations: () => void;
} & {
memoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
argsMemoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
}];
recomputations: () => number;
resetRecomputations: () => void;
dependencyRecomputations: () => number;
resetDependencyRecomputations: () => void;
} & {
memoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
argsMemoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
};
export declare const selectEntityListHasMore: ((state: any, listId: string) => boolean) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
} & {
resultFunc: (resultFuncArgs_0: EntityListState | undefined) => boolean;
memoizedResultFunc: ((resultFuncArgs_0: EntityListState | undefined) => boolean) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
};
lastResult: () => boolean;
dependencies: [((state: any, listId: string) => EntityListState | undefined) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
} & {
resultFunc: (resultFuncArgs_0: EntityListsState, resultFuncArgs_1: string) => EntityListState | undefined;
memoizedResultFunc: ((resultFuncArgs_0: EntityListsState, resultFuncArgs_1: string) => EntityListState | undefined) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
};
lastResult: () => EntityListState | undefined;
dependencies: [(state: {
entityLists: EntityListsState;
}) => EntityListsState, (_: any, listId: string) => string];
recomputations: () => number;
resetRecomputations: () => void;
dependencyRecomputations: () => number;
resetDependencyRecomputations: () => void;
} & {
memoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
argsMemoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
}];
recomputations: () => number;
resetRecomputations: () => void;
dependencyRecomputations: () => number;
resetDependencyRecomputations: () => void;
} & {
memoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
argsMemoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
};
export declare const selectEntityListFilters: ((state: any, listId: string) => {
sortBy: EntityListSortByOptions;
sortDir: SortDirection | null;
sortType: SortType;
timeFrame: TimeFrame | null;
userId: string | null;
followedOnly: boolean;
keywordsFilters: KeywordsFilters | null;
titleFilters: TitleFilters | null;
contentFilters: ContentFilters | null;
attachmentsFilters: AttachmentsFilters | null;
locationFilters: LocationFilters | null;
metadataFilters: MetadataFilters | null;
} | null) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
} & {
resultFunc: (resultFuncArgs_0: EntityListState | undefined) => {
sortBy: EntityListSortByOptions;
sortDir: SortDirection | null;
sortType: SortType;
timeFrame: TimeFrame | null;
userId: string | null;
followedOnly: boolean;
keywordsFilters: KeywordsFilters | null;
titleFilters: TitleFilters | null;
contentFilters: ContentFilters | null;
attachmentsFilters: AttachmentsFilters | null;
locationFilters: LocationFilters | null;
metadataFilters: MetadataFilters | null;
} | null;
memoizedResultFunc: ((resultFuncArgs_0: EntityListState | undefined) => {
sortBy: EntityListSortByOptions;
sortDir: SortDirection | null;
sortType: SortType;
timeFrame: TimeFrame | null;
userId: string | null;
followedOnly: boolean;
keywordsFilters: KeywordsFilters | null;
titleFilters: TitleFilters | null;
contentFilters: ContentFilters | null;
attachmentsFilters: AttachmentsFilters | null;
locationFilters: LocationFilters | null;
metadataFilters: MetadataFilters | null;
} | null) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
};
lastResult: () => {
sortBy: EntityListSortByOptions;
sortDir: SortDirection | null;
sortType: SortType;
timeFrame: TimeFrame | null;
userId: string | null;
followedOnly: boolean;
keywordsFilters: KeywordsFilters | null;
titleFilters: TitleFilters | null;
contentFilters: ContentFilters | null;
attachmentsFilters: AttachmentsFilters | null;
locationFilters: LocationFilters | null;
metadataFilters: MetadataFilters | null;
} | null;
dependencies: [((state: any, listId: string) => EntityListState | undefined) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
} & {
resultFunc: (resultFuncArgs_0: EntityListsState, resultFuncArgs_1: string) => EntityListState | undefined;
memoizedResultFunc: ((resultFuncArgs_0: EntityListsState, resultFuncArgs_1: string) => EntityListState | undefined) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
};
lastResult: () => EntityListState | undefined;
dependencies: [(state: {
entityLists: EntityListsState;
}) => EntityListsState, (_: any, listId: string) => string];
recomputations: () => number;
resetRecomputations: () => void;
dependencyRecomputations: () => number;
resetDependencyRecomputations: () => void;
} & {
memoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
argsMemoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
}];
recomputations: () => number;
resetRecomputations: () => void;
dependencyRecomputations: () => number;
resetDependencyRecomputations: () => void;
} & {
memoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
argsMemoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
};
export declare const selectEntityListConfig: ((state: any, listId: string) => {
sourceId: string | null;
limit: number;
} | null) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
} & {
resultFunc: (resultFuncArgs_0: EntityListState | undefined) => {
sourceId: string | null;
limit: number;
} | null;
memoizedResultFunc: ((resultFuncArgs_0: EntityListState | undefined) => {
sourceId: string | null;
limit: number;
} | null) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
};
lastResult: () => {
sourceId: string | null;
limit: number;
} | null;
dependencies: [((state: any, listId: string) => EntityListState | undefined) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
} & {
resultFunc: (resultFuncArgs_0: EntityListsState, resultFuncArgs_1: string) => EntityListState | undefined;
memoizedResultFunc: ((resultFuncArgs_0: EntityListsState, resultFuncArgs_1: string) => EntityListState | undefined) & {
clearCache: () => void;
resultsCount: () => number;
resetResultsCount: () => void;
};
lastResult: () => EntityListState | undefined;
dependencies: [(state: {
entityLists: EntityListsState;
}) => EntityListsState, (_: any, listId: string) => string];
recomputations: () => number;
resetRecomputations: () => void;
dependencyRecomputations: () => number;
resetDependencyRecomputations: () => void;
} & {
memoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
argsMemoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
}];
recomputations: () => number;
resetRecomputations: () => void;
dependencyRecomputations: () => number;
resetDependencyRecomputations: () => void;
} & {
memoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
argsMemoize: typeof import("@reduxjs/toolkit").weakMapMemoize;
};
declare const _default: import("@reduxjs/toolkit").Reducer<EntityListsState>;
export default _default;