mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-19 01:40:15 +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
|
|
@ -18,6 +18,7 @@ type SelectDropDownProps = {
|
|||
showLabel?: boolean;
|
||||
iconSide?: 'left' | 'right';
|
||||
renderOption?: () => React.ReactNode;
|
||||
footer?: React.ReactNode;
|
||||
};
|
||||
|
||||
function SelectDropDownPop({
|
||||
|
|
@ -28,6 +29,7 @@ function SelectDropDownPop({
|
|||
showAbove = false,
|
||||
showLabel = true,
|
||||
emptyTitle = false,
|
||||
footer,
|
||||
}: SelectDropDownProps) {
|
||||
const localize = useLocalize();
|
||||
const transitionProps = { className: 'top-full mt-3' };
|
||||
|
|
@ -78,9 +80,6 @@ function SelectDropDownPop({
|
|||
'min-w-[75px] font-normal',
|
||||
)}
|
||||
>
|
||||
{/* {!showLabel && !emptyTitle && (
|
||||
<span className="text-xs text-gray-700 dark:text-gray-500">{title}:</span>
|
||||
)} */}
|
||||
{typeof value !== 'string' && value ? value.label ?? '' : value ?? ''}
|
||||
</span>
|
||||
</span>
|
||||
|
|
@ -124,6 +123,7 @@ function SelectDropDownPop({
|
|||
/>
|
||||
);
|
||||
})}
|
||||
{footer}
|
||||
</Content>
|
||||
</Portal>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue