UNPKG

@droppii-org/chat-sdk

Version:

Droppii React Chat SDK

63 lines (62 loc) 2.44 kB
"use client"; import { jsx as _jsx } from "react/jsx-runtime"; import "../styles/global.css"; import { createContext, useContext, useEffect, useState } from "react"; import { ConnectStatus, SyncStatus, } from "../types/chat"; import { DChatSDK } from "../constants/sdk"; import MainLayout from "../layout"; import useAuthStore from "../store/auth"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { ConfigProvider } from "antd"; const queryClient = new QueryClient(); export const ChatContext = createContext({ user: null, connectStatus: ConnectStatus.Disconnected, syncStatus: SyncStatus.Success, getSelfUserInfo: () => { }, updateConnectStatus: () => { }, updateSyncStatus: () => { }, }); export const useChatContext = () => useContext(ChatContext); export const ChatProvider = ({ children, config }) => { const [connectStatus, setConnectStatus] = useState(ConnectStatus.Disconnected); const [syncStatus, setSyncStatus] = useState(SyncStatus.Success); const [user, setUser] = useState(null); const initAuthStore = useAuthStore((state) => state.initAuthStore); const getSelfUserInfo = () => { DChatSDK.getSelfUserInfo() .then(({ data }) => { setUser(data); }) .catch(({ errCode, errMsg }) => { console.error("getSelfUserInfo", errCode, errMsg); }); }; const updateConnectStatus = (status) => { setConnectStatus(status); }; const updateSyncStatus = (status) => { setSyncStatus(status); }; useEffect(() => { if (config) { initAuthStore({ accessToken: config.accessToken, apiAddress: config.apiAddr, platformID: config.platformID, userID: config.userID, wsAddress: config.wsAddr, applicationType: config.applicationType, isCrm: config.isCrm, }); } }, [config]); return (_jsx(ChatContext.Provider, { value: { user, connectStatus, syncStatus, getSelfUserInfo, updateConnectStatus, updateSyncStatus, }, children: _jsx(ConfigProvider, { getPopupContainer: (triggerNode) => document.body, children: _jsx(QueryClientProvider, { client: queryClient, children: _jsx(MainLayout, { children: children }) }) }) })); };