mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-20 02:10:15 +01:00
feat: Migrate favorites state management from Recoil to Jotai
This commit is contained in:
parent
769374d14a
commit
7b4fc58d25
3 changed files with 9 additions and 14 deletions
|
|
@ -1,11 +1,11 @@
|
||||||
import { useEffect, useCallback } from 'react';
|
import { useEffect, useCallback } from 'react';
|
||||||
import { useRecoilState } from 'recoil';
|
import { useAtom } from 'jotai';
|
||||||
import { useToastContext } from '@librechat/client';
|
import { useToastContext } from '@librechat/client';
|
||||||
import type { Favorite } from '~/store/favorites';
|
import type { Favorite } from '~/store/favorites';
|
||||||
import { useGetFavoritesQuery, useUpdateFavoritesMutation } from '~/data-provider';
|
import { useGetFavoritesQuery, useUpdateFavoritesMutation } from '~/data-provider';
|
||||||
|
import { favoritesAtom } from '~/store';
|
||||||
import { useLocalize } from '~/hooks';
|
import { useLocalize } from '~/hooks';
|
||||||
import { logger } from '~/utils';
|
import { logger } from '~/utils';
|
||||||
import store from '~/store';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hook for managing user favorites (pinned agents and models).
|
* Hook for managing user favorites (pinned agents and models).
|
||||||
|
|
@ -36,7 +36,7 @@ const cleanFavorites = (favorites: Favorite[]): Favorite[] =>
|
||||||
export default function useFavorites() {
|
export default function useFavorites() {
|
||||||
const localize = useLocalize();
|
const localize = useLocalize();
|
||||||
const { showToast } = useToastContext();
|
const { showToast } = useToastContext();
|
||||||
const [favorites, setFavorites] = useRecoilState(store.favorites);
|
const [favorites, setFavorites] = useAtom(favoritesAtom);
|
||||||
const getFavoritesQuery = useGetFavoritesQuery();
|
const getFavoritesQuery = useGetFavoritesQuery();
|
||||||
const updateFavoritesMutation = useUpdateFavoritesMutation();
|
const updateFavoritesMutation = useUpdateFavoritesMutation();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { atom } from 'recoil';
|
import { createStorageAtom } from './jotai-utils';
|
||||||
|
|
||||||
export type Favorite = {
|
export type Favorite = {
|
||||||
agentId?: string;
|
agentId?: string;
|
||||||
|
|
@ -13,11 +13,7 @@ export type FavoriteModel = {
|
||||||
|
|
||||||
export type FavoritesState = Favorite[];
|
export type FavoritesState = Favorite[];
|
||||||
|
|
||||||
const favorites = atom<FavoritesState>({
|
/**
|
||||||
key: 'favorites',
|
* This atom stores the user's favorite models/agents
|
||||||
default: [],
|
*/
|
||||||
});
|
export const favoritesAtom = createStorageAtom<FavoritesState>('favorites', []);
|
||||||
|
|
||||||
export default {
|
|
||||||
favorites,
|
|
||||||
};
|
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,9 @@ import lang from './language';
|
||||||
import settings from './settings';
|
import settings from './settings';
|
||||||
import misc from './misc';
|
import misc from './misc';
|
||||||
import isTemporary from './temporary';
|
import isTemporary from './temporary';
|
||||||
import favorites from './favorites';
|
|
||||||
export * from './agents';
|
export * from './agents';
|
||||||
export * from './mcp';
|
export * from './mcp';
|
||||||
|
export * from './favorites';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
...artifacts,
|
...artifacts,
|
||||||
|
|
@ -31,5 +31,4 @@ export default {
|
||||||
...settings,
|
...settings,
|
||||||
...misc,
|
...misc,
|
||||||
...isTemporary,
|
...isTemporary,
|
||||||
...favorites,
|
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue