mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-01-23 02:36:12 +01:00
🔖 fix: Remove Local State from Bookmark Menu (#5181)
* chore: remove redundant * fix: bookmark menu statefulness by removing local state
This commit is contained in:
parent
7c61115a88
commit
766657da83
5 changed files with 24 additions and 26 deletions
|
|
@ -2,7 +2,7 @@ import { useRecoilState } from 'recoil';
|
|||
import { Settings2 } from 'lucide-react';
|
||||
import { Root, Anchor } from '@radix-ui/react-popover';
|
||||
import { useState, useEffect, useMemo } from 'react';
|
||||
import { tPresetUpdateSchema, EModelEndpoint, isParamEndpoint } from 'librechat-data-provider';
|
||||
import { tConvoUpdateSchema, EModelEndpoint, isParamEndpoint } from 'librechat-data-provider';
|
||||
import type { TPreset, TInterfaceConfig } from 'librechat-data-provider';
|
||||
import { EndpointSettings, SaveAsPresetDialog, AlternativeSettings } from '~/components/Endpoints';
|
||||
import { PluginStoreDialog, TooltipAnchor } from '~/components';
|
||||
|
|
@ -123,7 +123,7 @@ export default function HeaderOptions({
|
|||
open={saveAsDialogShow}
|
||||
onOpenChange={setSaveAsDialogShow}
|
||||
preset={
|
||||
tPresetUpdateSchema.parse({
|
||||
tConvoUpdateSchema.parse({
|
||||
...conversation,
|
||||
}) as TPreset
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,15 +27,14 @@ const BookmarkMenu: FC = () => {
|
|||
const conversation = useRecoilValue(store.conversationByIndex(0)) || undefined;
|
||||
const conversationId = conversation?.conversationId ?? '';
|
||||
const updateConvoTags = useBookmarkSuccess(conversationId);
|
||||
const tags = conversation?.tags;
|
||||
|
||||
const menuId = useId();
|
||||
const [isMenuOpen, setIsMenuOpen] = useState(false);
|
||||
const [isDialogOpen, setIsDialogOpen] = useState(false);
|
||||
const [tags, setTags] = useState<string[]>(conversation?.tags || []);
|
||||
|
||||
const mutation = useTagConversationMutation(conversationId, {
|
||||
onSuccess: (newTags: string[], vars) => {
|
||||
setTags(newTags);
|
||||
updateConvoTags(newTags);
|
||||
const tagElement = document.getElementById(vars.tag);
|
||||
console.log('tagElement', tagElement);
|
||||
|
|
@ -82,12 +81,13 @@ const BookmarkMenu: FC = () => {
|
|||
const allTags =
|
||||
queryClient.getQueryData<TConversationTag[]>([QueryKeys.conversationTags]) ?? [];
|
||||
const existingTags = allTags.map((t) => t.tag);
|
||||
const filteredTags = tags.filter((t) => existingTags.includes(t));
|
||||
const filteredTags = tags?.filter((t) => existingTags.includes(t));
|
||||
|
||||
logger.log('tag_mutation', 'BookmarkMenu - handleSubmit: tags after filtering', filteredTags);
|
||||
const newTags = filteredTags.includes(tag)
|
||||
? filteredTags.filter((t) => t !== tag)
|
||||
: [...filteredTags, tag];
|
||||
const newTags =
|
||||
filteredTags?.includes(tag) === true
|
||||
? filteredTags.filter((t) => t !== tag)
|
||||
: [...(filteredTags ?? []), tag];
|
||||
|
||||
logger.log('tag_mutation', 'BookmarkMenu - handleSubmit: tags after', newTags);
|
||||
mutation.mutate({
|
||||
|
|
@ -115,16 +115,17 @@ const BookmarkMenu: FC = () => {
|
|||
|
||||
if (data) {
|
||||
for (const tag of data) {
|
||||
const isSelected = tags.includes(tag.tag);
|
||||
const isSelected = tags?.includes(tag.tag);
|
||||
items.push({
|
||||
id: tag.tag,
|
||||
hideOnClick: false,
|
||||
label: tag.tag,
|
||||
icon: isSelected ? (
|
||||
<BookmarkFilledIcon className="size-4" />
|
||||
) : (
|
||||
<BookmarkIcon className="size-4" />
|
||||
),
|
||||
hideOnClick: false,
|
||||
icon:
|
||||
isSelected === true ? (
|
||||
<BookmarkFilledIcon className="size-4" />
|
||||
) : (
|
||||
<BookmarkIcon className="size-4" />
|
||||
),
|
||||
onClick: () => handleSubmit(tag.tag),
|
||||
disabled: mutation.isLoading,
|
||||
});
|
||||
|
|
@ -142,7 +143,7 @@ const BookmarkMenu: FC = () => {
|
|||
if (mutation.isLoading) {
|
||||
return <Spinner aria-label="Spinner" />;
|
||||
}
|
||||
if (tags.length > 0) {
|
||||
if ((tags?.length ?? 0) > 0) {
|
||||
return <BookmarkFilledIcon className="icon-sm" aria-label="Filled Bookmark" />;
|
||||
}
|
||||
return <BookmarkIcon className="icon-sm" aria-label="Bookmark" />;
|
||||
|
|
@ -155,6 +156,7 @@ const BookmarkMenu: FC = () => {
|
|||
menuId={menuId}
|
||||
isOpen={isMenuOpen}
|
||||
setIsOpen={setIsMenuOpen}
|
||||
keyPrefix={`${conversationId}-bookmark-`}
|
||||
trigger={
|
||||
<TooltipAnchor
|
||||
description={localize('com_ui_bookmarks_add')}
|
||||
|
|
@ -177,8 +179,8 @@ const BookmarkMenu: FC = () => {
|
|||
/>
|
||||
<BookmarkEditDialog
|
||||
tags={tags}
|
||||
setTags={setTags}
|
||||
open={isDialogOpen}
|
||||
setTags={updateConvoTags}
|
||||
setOpen={setIsDialogOpen}
|
||||
triggerRef={newBookmarkRef}
|
||||
conversationId={conversationId}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue