mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-01-06 18:48:50 +01:00
💬 feat: Temporary Chats (#5493)
* feat: add expiredAt property to Conversation and Message models Added `expiredAt` property to both Conversation and Message schemas. Configured `expireAfterSeconds` index in MongoDB to automatically delete documents after a specified period. * feat(data-provider): add isTemporary and expiredAt properties to support temporary chats Added `isTemporary` property to TPayload and TSubmission for API calls for temporary chat. Additionally, added `expiredAt` property to `tConversationSchema` to determine if a chat is temporary. * feat: implement isTemporary state management Add Recoil state for tracking temporary conversations, update event handlers to respect temporary chat status * feat: add configuration to interfaceconfig to hide the temporary chat switch * feat: add Temporary Chat UI with switch and modify related behaviors - Added a Temporary Chat switch button at the end of dropdown lists in each model. - Updated the form background color to black when Temporary Chat is enabled. - Modified Navigation to exclude Temporary Chats from the chat list. * fix: exclude Temporary Chats from search results Updated the getConvosQueried query to ensure that Temporary Chats are not included in the search results. * fix: hide bookmark button for Temporary Chats Updated the UI to ensure that the bookmark button is not displayed when a chat is as Temporary Chat. * chore: update isTemporary state management in ChatRoute * chore: fix to pass the tests
This commit is contained in:
parent
5f9543f6fc
commit
8c404ae056
24 changed files with 185 additions and 13 deletions
|
|
@ -14,13 +14,22 @@ import { getDefaultModelSpec, getModelSpecIconURL } from '~/utils';
|
|||
import { ToolCallsMapProvider } from '~/Providers';
|
||||
import ChatView from '~/components/Chat/ChatView';
|
||||
import useAuthRedirect from './useAuthRedirect';
|
||||
import temporaryStore from '~/store/temporary';
|
||||
import { Spinner } from '~/components/svg';
|
||||
import { useRecoilCallback } from 'recoil';
|
||||
import store from '~/store';
|
||||
|
||||
export default function ChatRoute() {
|
||||
useHealthCheck();
|
||||
const { data: startupConfig } = useGetStartupConfig();
|
||||
const { isAuthenticated, user } = useAuthRedirect();
|
||||
const setIsTemporary = useRecoilCallback(
|
||||
({ set }) =>
|
||||
(value: boolean) => {
|
||||
set(temporaryStore.isTemporary, value);
|
||||
},
|
||||
[],
|
||||
);
|
||||
useAppStartup({ startupConfig, user });
|
||||
|
||||
const index = 0;
|
||||
|
|
@ -141,6 +150,14 @@ export default function ChatRoute() {
|
|||
return null;
|
||||
}
|
||||
|
||||
const isTemporaryChat = conversation && conversation.expiredAt ? true : false;
|
||||
|
||||
if (conversationId !== Constants.NEW_CONVO && !isTemporaryChat) {
|
||||
setIsTemporary(false);
|
||||
} else if (isTemporaryChat) {
|
||||
setIsTemporary(isTemporaryChat);
|
||||
}
|
||||
|
||||
return (
|
||||
<ToolCallsMapProvider conversationId={conversation.conversationId ?? ''}>
|
||||
<ChatView index={index} />
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue