@ant-design/x-sdk
Version:
placeholder for @ant-design/x-sdk
26 lines • 1.07 kB
JavaScript
import { useEffect, useState, useSyncExternalStore } from 'react';
import { ConversationStore } from "./store";
export default function useXConversations(config) {
const [store] = useState(() => {
const store = new ConversationStore(config?.defaultConversations || [], config?.defaultActiveConversationKey || '');
return store;
});
useEffect(() => {
return () => {
store.destroy();
};
}, []);
const conversations = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot);
const activeConversationKey = useSyncExternalStore(store.subscribe, store.getActiveConversationKey, store.getActiveConversationKey);
return {
conversations,
activeConversationKey: activeConversationKey,
setActiveConversationKey: store.setActiveConversationKey,
addConversation: store.addConversation,
removeConversation: store.removeConversation,
setConversation: store.setConversation,
getConversation: store.getConversation,
setConversations: store.setConversations,
getMessages: store.getMessages
};
}