2025-10-23 12:55:57 +08:00
|
|
|
import { create } from "zustand";
|
|
|
|
|
import { persist } from "zustand/middleware";
|
|
|
|
|
import { Message, MessageState } from "./message.data";
|
|
|
|
|
export const useMessageStore = create<MessageState>()(
|
|
|
|
|
persist(
|
|
|
|
|
(set, get) => ({
|
|
|
|
|
messageList: [], //消息列表
|
|
|
|
|
currentMessage: null, //当前选中的消息
|
|
|
|
|
updateMessageList: (messageList: Message[]) => set({ messageList }), //更新消息列表
|
|
|
|
|
updateCurrentMessage: (message: Message) =>
|
|
|
|
|
set({ currentMessage: message }), //更新当前选中的消息
|
|
|
|
|
updateMessageStatus: (messageId: number, status: string) =>
|
|
|
|
|
set({
|
|
|
|
|
messageList: get().messageList.map(message =>
|
|
|
|
|
message.id === messageId ? { ...message, status } : message,
|
|
|
|
|
),
|
|
|
|
|
}), //更新消息状态
|
|
|
|
|
}),
|
|
|
|
|
{
|
|
|
|
|
name: "message-storage",
|
|
|
|
|
partialize: state => ({
|
|
|
|
|
messageList: [],
|
|
|
|
|
currentMessage: null,
|
|
|
|
|
}),
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
/**
|
|
|
|
|
* 更新当前选中的消息
|
|
|
|
|
* @param message 消息
|
|
|
|
|
* @returns void
|
|
|
|
|
*/
|
|
|
|
|
export const updateCurrentMessage = (message: Message) =>
|
|
|
|
|
useMessageStore.getState().updateCurrentMessage(message);
|
|
|
|
|
/**
|
|
|
|
|
* 更新消息列表
|
|
|
|
|
* @param messageList 消息列表
|
|
|
|
|
* @returns void
|
|
|
|
|
*/
|
|
|
|
|
export const updateMessageList = (messageList: Message[]) =>
|
|
|
|
|
useMessageStore.getState().updateMessageList(messageList);
|
|
|
|
|
/**
|
|
|
|
|
* 获取当前选中的消息
|
|
|
|
|
* @returns Message | null
|
|
|
|
|
*/
|
|
|
|
|
export const getCurrentMessage = () =>
|
|
|
|
|
useMessageStore.getState().currentMessage;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 更新消息状态
|
|
|
|
|
* @param messageId 消息ID
|
|
|
|
|
* @param status 状态
|
|
|
|
|
* @returns void
|
|
|
|
|
*/
|
|
|
|
|
export const updateMessageStatus = (messageId: number, status: string) =>
|
|
|
|
|
useMessageStore.getState().updateMessageStatus(messageId, status);
|