fix: notification on erro

This commit is contained in:
2026-04-29 12:20:07 +02:00
parent 07731e888c
commit 11b5e6929a
2 changed files with 52 additions and 23 deletions
+3 -3
View File
@@ -64,12 +64,12 @@ function DesktopSidebar({
return (
<div
className={`
flex transition-all duration-300 ease-in-out overflow-hidden
flex transition-[transform,opacity] duration-300 ease-in-out overflow-hidden
${isOpen ? 'w-64 opacity-100' : 'w-0 opacity-0'}
`}
>
{activePanel && (
<div className="w-64 flex flex-col border-r border-muted">
<div className="w-64 flex flex-col border-r border-muted transition-theme">
<div className="flex items-center justify-between px-4 py-3 border-b border-muted shrink-0">
<span className="text-sm font-semibold text-accent">
{activePanel.label}
@@ -165,7 +165,7 @@ export default function Sidebar({ panels }: { panels: SidebarPanel[] }) {
const isOpen = !!activePanel;
return (
<div className="flex border-r border-t border-muted">
<div className="flex border-r border-t border-muted transition-theme">
{/* Desktop */}
{isWide && (
<DesktopSidebar
+49 -20
View File
@@ -47,22 +47,22 @@ export default function ChatUI({
setInput('');
setLoading(true);
try {
const body: ChatRequest = {
model: selectedModel!,
messages: newMessages,
temperature: settings.temp,
top_p: settings.topP,
top_k: settings.topK,
num_predict: settings.maxTokens,
num_ctx: settings.numCtx,
repeat_penalty: settings.repeatPenalty,
seed: settings.seed,
stream: settings.stream,
keep_alive: settings.keepAlive,
stop: settings.stop,
};
const body: ChatRequest = {
model: selectedModel!,
messages: newMessages,
temperature: settings.temp,
top_p: settings.topP,
top_k: settings.topK,
num_predict: settings.maxTokens,
num_ctx: settings.numCtx,
repeat_penalty: settings.repeatPenalty,
seed: settings.seed,
stream: settings.stream,
keep_alive: settings.keepAlive,
stop: settings.stop,
};
try {
const res = await fetch(
process.env.NEXT_PUBLIC_API_URL + '/chat/completions',
{
@@ -74,14 +74,43 @@ export default function ChatUI({
body: JSON.stringify(body),
},
);
const data = await res.json();
const data = await res.json().catch(() => null);
if (!res.ok) {
let message = "Request failed";
if (res.status === 500) {
message = "Server error (likely model too large or OOM)";
} else if (res.status === 401) {
message = "Unauthorized";
} else {
message = data?.message || data?.error || message;
}
throw new Error(message);
}
const assistant = data?.choices?.[0]?.message;
if (assistant) setMessages((prev) => [...prev, assistant]);
if (assistant) {
setMessages((prev) => [...prev, assistant]);
}
} catch (err: any) {
console.error(err);
setNotification(
err?.message || 'Something went wrong while sending request',
);
const message =
err?.message || 'Something went wrong while sending request';
setMessages((prev) => [
...prev,
{
role: 'assistant',
content: `❌ ${message}`,
},
]);
setNotification(message);
setTimeout(() => setNotification(null), 3000);
} finally {