| "use client"; |
|
|
| import dynamic from "next/dynamic"; |
|
|
| import AuthInitializer from "@/components/authInitializer"; |
| import { useAppSelector, EMobileActiveTab, useIsCompactLayout } from "@/common"; |
| import Header from "@/components/Layout/Header"; |
| import Action from "@/components/Layout/Action"; |
| import { cn } from "@/lib/utils"; |
| import Avatar from "@/components/Agent/AvatarTrulience"; |
| import React from "react"; |
| import { IRtcUser, IUserTracks } from "@/manager"; |
| import { IMicrophoneAudioTrack } from "agora-rtc-sdk-ng"; |
|
|
| const DynamicRTCCard = dynamic(() => import("@/components/Dynamic/RTCCard"), { |
| ssr: false, |
| }); |
| const DynamicChatCard = dynamic(() => import("@/components/Chat/ChatCard"), { |
| ssr: false, |
| }); |
|
|
| export default function Home() { |
| const mobileActiveTab = useAppSelector( |
| (state) => state.global.mobileActiveTab |
| ); |
| const trulienceSettings = useAppSelector((state) => state.global.trulienceSettings); |
|
|
| const isCompactLayout = useIsCompactLayout(); |
| const useTrulienceAvatar = trulienceSettings.enabled; |
| const avatarInLargeWindow = trulienceSettings.avatarDesktopLargeWindow; |
| const [remoteuser, setRemoteUser] = React.useState<IRtcUser>() |
|
|
| React.useEffect(() => { |
| const { rtcManager } = require("../manager/rtc/rtc"); |
| rtcManager.on("remoteUserChanged", onRemoteUserChanged); |
| return () => { |
| rtcManager.off("remoteUserChanged", onRemoteUserChanged); |
| }; |
| }, []); |
|
|
| const onRemoteUserChanged = (user: IRtcUser) => { |
| if (useTrulienceAvatar) { |
| user.audioTrack?.stop(); |
| } |
| if (user.audioTrack) { |
| setRemoteUser(user) |
| } |
| } |
|
|
| return ( |
| <AuthInitializer> |
| <div className="relative mx-auto flex flex-1 min-h-screen flex-col md:h-screen"> |
| <Header className="h-[60px]" /> |
| <Action /> |
| <div className={cn( |
| "mx-2 mb-2 flex h-full max-h-[calc(100vh-108px-24px)] flex-col md:flex-row md:gap-2 flex-1", |
| { |
| ["flex-col-reverse"]: avatarInLargeWindow && isCompactLayout |
| } |
| )}> |
| <DynamicRTCCard |
| className={cn( |
| "m-0 w-full rounded-b-lg bg-[#181a1d] md:w-[480px] md:rounded-lg flex-1 flex", |
| { |
| ["hidden md:flex"]: mobileActiveTab === EMobileActiveTab.CHAT, |
| } |
| )} |
| /> |
| |
| {(!useTrulienceAvatar || isCompactLayout || !avatarInLargeWindow) && ( |
| <DynamicChatCard |
| className={cn( |
| "m-0 w-full rounded-b-lg bg-[#181a1d] md:rounded-lg flex-auto", |
| { |
| ["hidden md:flex"]: mobileActiveTab === EMobileActiveTab.AGENT, |
| } |
| )} |
| /> |
| )} |
| |
| {(useTrulienceAvatar && avatarInLargeWindow) && ( |
| <div className={cn( |
| "w-full", |
| { |
| ["h-60 flex-auto p-1 bg-[#181a1d]"]: isCompactLayout, |
| ["hidden md:block"]: mobileActiveTab === EMobileActiveTab.CHAT, |
| } |
| )}> |
| <Avatar audioTrack={remoteuser?.audioTrack} /> |
| </div> |
| )} |
| |
| </div> |
| </div> |
| </AuthInitializer> |
| ); |
| } |
|
|