import React, {createRef, useState, Fragment, FC} from 'react'; import {Layout, Col, Row, Button, Image} from 'antd'; import { EditOutlined, CloseOutlined } from '@ant-design/icons'; import ConversationList from "@/components/ConversationList"; import Chatbox from "@/components/Chatbox"; import CustomerInfo from "@/components/CustomerInfo"; import ActionTabs from "@/components/ActionTabs"; import {HelpSideBar} from "@/components/Help"; import HeaderComponent from "@/components/HeaderComponent"; import {useDispatch, useSelector} from "react-redux"; import {AppState} from "@/store/typing"; import {UserInfo} from "@/typings/user"; import {actions} from "@/store/actions"; import GlobalModal from '@/components/GlobalModal'; import GlobalDrawer from "@/components/GlobalDrawer"; import BadgeStatus from "@/components/BadgeStatus"; import NetworkError from "@/components/Error/NetworkError"; import {ClientSettings} from "@/typings"; import TYPING_ANIMATION_IMAGE from "@/assets/typing-animation.gif"; import DashBoard from "@/components/DashBoard"; import {user_list} from "@/test/test_state"; import '@/styles/app.css'; const { Header, Content, Sider } = Layout; const WINDOW_HEIGHT = global.window.innerHeight; const UserNameForm = ({user}: {user: UserInfo | null}) => { const [openForm, setFormOpen] = useState(false); const dispatch = useDispatch(); if( ! user ) { return null; } const userInputRef = createRef(); const updateName = () => { let new_name = userInputRef.current?.value; dispatch(actions.updateUserInfo({ id: user.id, name: new_name, })); setFormOpen(false); } if(!openForm) { return ( {user.name} { user.typing && } ( setFormOpen(true)} title={'Thay đổi tên'} /> ) ) } return ( ) } function getUserById(user_list: UserInfo[], user_id: string) : UserInfo | null { let filtered_list = user_list.filter(user => user.id === user_id); return filtered_list.length > 0 ? filtered_list[0] : null; } const ShowUserSpace = () => { // TODO: const chatting_with_user = useSelector((state: AppState) => state.chatting_with_user ); const dispatch = useDispatch(); let chatting_user_info = getUserById(user_list, chatting_with_user); if( ! chatting_user_info && user_list.length > 0) { // auto show the first user in the list if there dispatch(actions.chatWithUser(user_list[0].id)); } // else show the dashboard if( ! chatting_user_info ) { return } return (
{/* add key to force to component to remount when user id change to simplify the component's code*/}

Lựa chọn

Thông tin khách hàng

) } const App: FC<{client_setting: ClientSettings}> = ({client_setting}) => { const HEADER_HEIGHT = 70; const [closeHelp, setHelpClose] = useState(false); const LAYOUT_CLOSED = closeHelp ? {width:1200, marginLeft:'auto', marginRight: 'auto'} : {marginTop: HEADER_HEIGHT, height: WINDOW_HEIGHT - HEADER_HEIGHT, overflow: 'auto'}; return (
{ !closeHelp &&

Trợ giúp setHelpClose(true)} title={'Đóng'} />

}
) }; export default App;