| import { InfiniteCollections, QueryKeys } from 'librechat-data-provider'; |
| import type { InfiniteData, QueryClient } from '@tanstack/react-query'; |
| import type { |
| PromptGroupListResponse, |
| PromptGroupListData, |
| TPromptGroup, |
| } from 'librechat-data-provider'; |
| import { |
| addData, |
| deleteData, |
| updateData, |
| updateFields, |
| addToCacheList, |
| updateCacheList, |
| removeFromCacheList, |
| getRecordByProperty, |
| } from './collection'; |
|
|
| export const addPromptGroup = ( |
| data: InfiniteData<PromptGroupListResponse>, |
| newPromptGroup: TPromptGroup, |
| ): PromptGroupListData => { |
| return addData<PromptGroupListResponse, TPromptGroup>( |
| data, |
| InfiniteCollections.PROMPT_GROUPS, |
| newPromptGroup, |
| (page) => page.promptGroups.findIndex((group) => group._id === newPromptGroup._id), |
| ); |
| }; |
|
|
| export const updatePromptGroup = ( |
| data: InfiniteData<PromptGroupListResponse>, |
| updatedPromptGroup: TPromptGroup, |
| ): PromptGroupListData => { |
| return updateData<PromptGroupListResponse, TPromptGroup>( |
| data, |
| InfiniteCollections.PROMPT_GROUPS, |
| updatedPromptGroup, |
| (page) => page.promptGroups.findIndex((group) => group._id === updatedPromptGroup._id), |
| ); |
| }; |
|
|
| export const deletePromptGroup = ( |
| data: InfiniteData<PromptGroupListResponse>, |
| groupId: string, |
| ): PromptGroupListData => { |
| return deleteData<PromptGroupListResponse, PromptGroupListData>( |
| data, |
| InfiniteCollections.PROMPT_GROUPS, |
| (page) => page.promptGroups.findIndex((group) => group._id === groupId), |
| ); |
| }; |
|
|
| export const updateGroupFields = ( |
| data: InfiniteData<PromptGroupListResponse>, |
| updatedGroup: Partial<TPromptGroup>, |
| callback?: (group: TPromptGroup) => void, |
| ): InfiniteData<PromptGroupListResponse> => { |
| return updateFields<PromptGroupListResponse, TPromptGroup>( |
| data, |
| updatedGroup, |
| InfiniteCollections.PROMPT_GROUPS, |
| '_id', |
| callback, |
| ); |
| }; |
|
|
| export const getSnippet = (promptText: string, length = 56) => { |
| return promptText.length > length ? `${promptText.slice(0, length - 3)}...` : promptText; |
| }; |
|
|
| export const findPromptGroup = ( |
| data: InfiniteData<PromptGroupListResponse>, |
| findProperty: (group: TPromptGroup) => boolean, |
| ): TPromptGroup | undefined => { |
| return getRecordByProperty<PromptGroupListResponse, TPromptGroup>( |
| data, |
| InfiniteCollections.PROMPT_GROUPS, |
| findProperty, |
| ); |
| }; |
|
|
| export const addGroupToAll = (queryClient: QueryClient, newGroup: TPromptGroup) => { |
| addToCacheList<TPromptGroup>(queryClient, [QueryKeys.allPromptGroups], newGroup); |
| }; |
|
|
| export const updateGroupInAll = ( |
| queryClient: QueryClient, |
| updatedGroup: Partial<TPromptGroup> & { _id: string }, |
| ) => { |
| updateCacheList<TPromptGroup>({ |
| queryClient, |
| queryKey: [QueryKeys.allPromptGroups], |
| searchProperty: '_id', |
| updateData: updatedGroup, |
| searchValue: updatedGroup._id, |
| }); |
| }; |
|
|
| export const removeGroupFromAll = (queryClient: QueryClient, groupId: string) => { |
| removeFromCacheList<TPromptGroup>(queryClient, [QueryKeys.allPromptGroups], '_id', groupId); |
| }; |
|
|