Files
moreminimore-vibe/src/hooks/useLocalModels.ts
Piotr Wilkin (ilintar) 5fc49231ee Add LM Studio support (#22)
2025-05-02 14:51:32 -07:00

44 lines
1.1 KiB
TypeScript

import { useCallback } from "react";
import { useAtom } from "jotai";
import {
localModelsAtom,
localModelsLoadingAtom,
localModelsErrorAtom,
} from "@/atoms/localModelsAtoms";
import { IpcClient } from "@/ipc/ipc_client";
export function useLocalModels() {
const [models, setModels] = useAtom(localModelsAtom);
const [loading, setLoading] = useAtom(localModelsLoadingAtom);
const [error, setError] = useAtom(localModelsErrorAtom);
const ipcClient = IpcClient.getInstance();
/**
* Load local models from Ollama
*/
const loadModels = useCallback(async () => {
setLoading(true);
try {
const modelList = await ipcClient.listLocalOllamaModels();
setModels(modelList);
setError(null);
return modelList;
} catch (error) {
console.error("Error loading local Ollama models:", error);
setError(error instanceof Error ? error : new Error(String(error)));
return [];
} finally {
setLoading(false);
}
}, [ipcClient, setModels, setError, setLoading]);
return {
models,
loading,
error,
loadModels,
};
}