import { InfiniteCollections } from 'librechat-data-provider'; import type { PromptGroupListResponse, PromptGroupListData, TPromptGroup, } from 'librechat-data-provider'; import { addData, deleteData, updateData, updateFields, getRecordByProperty } from './collection'; import { InfiniteData } from '@tanstack/react-query'; export const addPromptGroup = ( data: InfiniteData, newPromptGroup: TPromptGroup, ): PromptGroupListData => { return addData( data, InfiniteCollections.PROMPT_GROUPS, newPromptGroup, (page) => page.promptGroups.findIndex((group) => group._id === newPromptGroup._id), ); }; export const updatePromptGroup = ( data: InfiniteData, updatedPromptGroup: TPromptGroup, ): PromptGroupListData => { return updateData( data, InfiniteCollections.PROMPT_GROUPS, updatedPromptGroup, (page) => page.promptGroups.findIndex((group) => group._id === updatedPromptGroup._id), ); }; export const deletePromptGroup = ( data: InfiniteData, groupId: string, ): PromptGroupListData => { return deleteData( data, InfiniteCollections.PROMPT_GROUPS, (page) => page.promptGroups.findIndex((group) => group._id === groupId), ); }; export const updateGroupFields = ( data: InfiniteData, updatedGroup: Partial, callback?: (group: TPromptGroup) => void, ): InfiniteData => { return updateFields( 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, findProperty: (group: TPromptGroup) => boolean, ): TPromptGroup | undefined => { return getRecordByProperty( data, InfiniteCollections.PROMPT_GROUPS, findProperty, ); };