fix(frontend): 流式消息逐字显示动画 + 侧边栏会话切换修复
This commit is contained in:
@@ -1,21 +1,40 @@
|
||||
import { create } from 'zustand';
|
||||
import type { Message } from '@/types/chat';
|
||||
import type { IoTDevice, BackgroundThinkingStatus } from '@/types/chat';
|
||||
|
||||
interface ChatStore {
|
||||
messages: Message[];
|
||||
isTyping: boolean;
|
||||
|
||||
// 连续对话模式
|
||||
continuousMode: boolean;
|
||||
|
||||
// 后台思考状态
|
||||
backgroundThinkingStatus: BackgroundThinkingStatus;
|
||||
|
||||
// IoT 设备状态
|
||||
iotDevices: IoTDevice[];
|
||||
iotDevicesLastUpdated: number | null;
|
||||
|
||||
addMessage: (message: Message) => void;
|
||||
appendToLastMessage: (content: string) => void;
|
||||
finishStreaming: () => void;
|
||||
setMessages: (messages: Message[]) => void;
|
||||
setTyping: (typing: boolean) => void;
|
||||
clearMessages: () => void;
|
||||
|
||||
setContinuousMode: (enabled: boolean) => void;
|
||||
setBackgroundThinkingStatus: (status: BackgroundThinkingStatus) => void;
|
||||
setIoTDevices: (devices: IoTDevice[]) => void;
|
||||
}
|
||||
|
||||
export const useChatStore = create<ChatStore>((set) => ({
|
||||
messages: [],
|
||||
isTyping: false,
|
||||
continuousMode: true,
|
||||
backgroundThinkingStatus: 'idle',
|
||||
iotDevices: [],
|
||||
iotDevicesLastUpdated: null,
|
||||
|
||||
addMessage: (message) =>
|
||||
set((state) => ({
|
||||
@@ -54,9 +73,16 @@ export const useChatStore = create<ChatStore>((set) => ({
|
||||
return { messages: msgs, isTyping: false };
|
||||
}),
|
||||
|
||||
setMessages: (messages) => set({ messages }),
|
||||
setMessages: (messages) => set({ messages, isTyping: false }),
|
||||
|
||||
setTyping: (typing) => set({ isTyping: typing }),
|
||||
|
||||
clearMessages: () => set({ messages: [], isTyping: false }),
|
||||
|
||||
setContinuousMode: (enabled) => set({ continuousMode: enabled }),
|
||||
|
||||
setBackgroundThinkingStatus: (status) => set({ backgroundThinkingStatus: status }),
|
||||
|
||||
setIoTDevices: (devices) =>
|
||||
set({ iotDevices: devices, iotDevicesLastUpdated: Date.now() }),
|
||||
}));
|
||||
|
||||
Reference in New Issue
Block a user