feat: Migrate favorites state management from Recoil to Jotai

This commit is contained in:
Marco Beretta 2025-12-02 22:38:35 +01:00
parent 769374d14a
commit 7b4fc58d25
No known key found for this signature in database
GPG key ID: D918033D8E74CC11
3 changed files with 9 additions and 14 deletions

View file

@ -1,11 +1,11 @@
import { useEffect, useCallback } from 'react';
import { useRecoilState } from 'recoil';
import { useAtom } from 'jotai';
import { useToastContext } from '@librechat/client';
import type { Favorite } from '~/store/favorites';
import { useGetFavoritesQuery, useUpdateFavoritesMutation } from '~/data-provider';
import { favoritesAtom } from '~/store';
import { useLocalize } from '~/hooks';
import { logger } from '~/utils';
import store from '~/store';
/**
* Hook for managing user favorites (pinned agents and models).
@ -36,7 +36,7 @@ const cleanFavorites = (favorites: Favorite[]): Favorite[] =>
export default function useFavorites() {
const localize = useLocalize();
const { showToast } = useToastContext();
const [favorites, setFavorites] = useRecoilState(store.favorites);
const [favorites, setFavorites] = useAtom(favoritesAtom);
const getFavoritesQuery = useGetFavoritesQuery();
const updateFavoritesMutation = useUpdateFavoritesMutation();

View file

@ -1,4 +1,4 @@
import { atom } from 'recoil';
import { createStorageAtom } from './jotai-utils';
export type Favorite = {
agentId?: string;
@ -13,11 +13,7 @@ export type FavoriteModel = {
export type FavoritesState = Favorite[];
const favorites = atom<FavoritesState>({
key: 'favorites',
default: [],
});
export default {
favorites,
};
/**
* This atom stores the user's favorite models/agents
*/
export const favoritesAtom = createStorageAtom<FavoritesState>('favorites', []);

View file

@ -12,9 +12,9 @@ import lang from './language';
import settings from './settings';
import misc from './misc';
import isTemporary from './temporary';
import favorites from './favorites';
export * from './agents';
export * from './mcp';
export * from './favorites';
export default {
...artifacts,
@ -31,5 +31,4 @@ export default {
...settings,
...misc,
...isTemporary,
...favorites,
};