Unverified 提交 30662118 authored 作者: Will Chen's avatar Will Chen 提交者: GitHub

avoid edge case with undo (#78)

上级 4e4bf51b
......@@ -11,7 +11,7 @@ import { Loader2, RefreshCw, Undo } from "lucide-react";
import { Button } from "@/components/ui/button";
import { useVersions } from "@/hooks/useVersions";
import { selectedAppIdAtom } from "@/atoms/appAtoms";
import { showError } from "@/lib/toast";
import { showError, showSuccess } from "@/lib/toast";
import { IpcClient } from "@/ipc/ipc_client";
import { chatMessagesAtom } from "@/atoms/chatAtoms";
......@@ -26,10 +26,11 @@ export const MessagesList = forwardRef<HTMLDivElement, MessagesListProps>(
const { versions, revertVersion } = useVersions(appId);
const { streamMessage, isStreaming, error, setError } = useStreamChat();
const { isAnyProviderSetup } = useSettings();
const selectedChatId = useAtomValue(selectedChatIdAtom);
const setMessages = useSetAtom(chatMessagesAtom);
const [isUndoLoading, setIsUndoLoading] = useState(false);
const [isRetryLoading, setIsRetryLoading] = useState(false);
const [selectedChatId, setSelectedChatId] = useAtom(selectedChatIdAtom);
return (
<div className="flex-1 overflow-y-auto p-4" ref={ref}>
......@@ -45,9 +46,10 @@ export const MessagesList = forwardRef<HTMLDivElement, MessagesListProps>(
{!isAnyProviderSetup() && <SetupBanner />}
</div>
)}
{messages.length > 0 && !isStreaming && (
{messages.length > 3 && !isStreaming && (
<div className="flex max-w-3xl mx-auto gap-2">
{messages[messages.length - 1].role === "assistant" && (
{messages[messages.length - 1].role === "assistant" &&
messages[messages.length - 1].commitHash && (
<Button
variant="outline"
size="sm"
......@@ -70,22 +72,19 @@ export const MessagesList = forwardRef<HTMLDivElement, MessagesListProps>(
previousAssistantMessage?.role === "assistant" &&
previousAssistantMessage?.commitHash
) {
console.debug("Reverting to previous assistant version");
console.debug(
"Reverting to previous assistant version"
);
await revertVersion({
versionId: previousAssistantMessage.commitHash,
});
} else {
// Revert to the previous version
await revertVersion({
versionId: versions[1].oid,
});
}
if (selectedChatId) {
const chat = await IpcClient.getInstance().getChat(
selectedChatId
);
setMessages(chat.messages);
}
}
} catch (error) {
console.error("Error during undo operation:", error);
showError("Failed to undo changes");
......@@ -138,10 +137,9 @@ export const MessagesList = forwardRef<HTMLDivElement, MessagesListProps>(
});
reverted = true;
} else {
console.debug("Reverting to previous version");
await revertVersion({
versionId: versions[1].oid,
});
showSuccess(
"You will need to manually revert to an earlier revision"
);
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论