Download src/stores/home-store.ts from SaylorTwift/openhands: direct link, hf CLI and curl.
- Browser
- Download file 1.87 kB
-
https://huggingface.co/SaylorTwift/openhands/resolve/main/src/stores/home-store.ts
- Command line
-
hf download hf://SaylorTwift/openhands/src/stores/home-store.ts
-
curl -L -o home-store.ts https://huggingface.co/SaylorTwift/openhands/resolve/main/src/stores/home-store.ts
1.87 kB
| import { create } from "zustand"; | |
| import { persist, createJSONStorage } from "zustand/middleware"; | |
| import { GitRepository } from "#/types/git"; | |
| import { Provider } from "#/types/settings"; | |
| interface HomeState { | |
| recentRepositories: GitRepository[]; | |
| lastSelectedProvider: Provider | null; | |
| } | |
| interface HomeActions { | |
| addRecentRepository: (repository: GitRepository) => void; | |
| clearRecentRepositories: () => void; | |
| getRecentRepositories: () => GitRepository[]; | |
| setLastSelectedProvider: (provider: Provider | null) => void; | |
| getLastSelectedProvider: () => Provider | null; | |
| } | |
| type HomeStore = HomeState & HomeActions; | |
| const initialState: HomeState = { | |
| recentRepositories: [], | |
| lastSelectedProvider: null, | |
| }; | |
| export const useHomeStore = create<HomeStore>()( | |
| persist( | |
| (set, get) => ({ | |
| ...initialState, | |
| addRecentRepository: (repository: GitRepository) => | |
| set((state) => { | |
| // Remove the repository if it already exists to avoid duplicates | |
| const filteredRepos = state.recentRepositories.filter( | |
| (repo) => repo.id !== repository.id, | |
| ); | |
| // Add the new repository to the beginning and keep only top 3 | |
| const updatedRepos = [repository, ...filteredRepos].slice(0, 3); | |
| return { | |
| recentRepositories: updatedRepos, | |
| }; | |
| }), | |
| clearRecentRepositories: () => | |
| set(() => ({ | |
| recentRepositories: [], | |
| })), | |
| getRecentRepositories: () => get().recentRepositories, | |
| setLastSelectedProvider: (provider: Provider | null) => | |
| set(() => ({ | |
| lastSelectedProvider: provider, | |
| })), | |
| getLastSelectedProvider: () => get().lastSelectedProvider, | |
| }), | |
| { | |
| name: "home-store", // unique name for localStorage | |
| storage: createJSONStorage(() => localStorage), | |
| }, | |
| ), | |
| ); | |