|
|
|
@ -6,6 +6,7 @@ import { |
|
|
|
RoomMembership, |
|
|
|
roomSetMembership, |
|
|
|
} from "modules/room/slice"; |
|
|
|
import RoomBanner from "modules/room/RoomBanner"; |
|
|
|
import RoomChatForm from "modules/room/RoomChatForm"; |
|
|
|
import RoomChatHeader from "modules/room/RoomChatHeader"; |
|
|
|
import RoomChatMessageList from "modules/room/RoomChatMessageList"; |
|
|
|
@ -13,29 +14,16 @@ import RoomDetails from "modules/room/RoomDetails"; |
|
|
|
|
|
|
|
interface Props { |
|
|
|
loginUserName: string; |
|
|
|
room?: RoomState; |
|
|
|
room: RoomState; |
|
|
|
} |
|
|
|
|
|
|
|
const RoomChat: FC<Props> = ({ loginUserName, room }) => { |
|
|
|
const dispatch = useDispatch(); |
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
if (room !== undefined && room.membership === RoomMembership.Left) { |
|
|
|
dispatch(roomSetMembership([room.name, RoomMembership.Joining])); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
const RoomChatInner: FC<Props> = ({ loginUserName, room }) => { |
|
|
|
const [showDetails, setShowDetails] = useState<boolean>(false); |
|
|
|
const toggleDetails = () => { |
|
|
|
setShowDetails(!showDetails); |
|
|
|
}; |
|
|
|
|
|
|
|
const header = <RoomChatHeader room={room} toggleDetails={toggleDetails} />; |
|
|
|
if (room === undefined || room.membership !== RoomMembership.Joined) { |
|
|
|
return ( |
|
|
|
<div className="flex h-full justify-center items-center">{header}</div> |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
let details; |
|
|
|
if (showDetails) { |
|
|
|
@ -62,4 +50,20 @@ const RoomChat: FC<Props> = ({ loginUserName, room }) => { |
|
|
|
); |
|
|
|
}; |
|
|
|
|
|
|
|
const RoomChat: FC<Props> = ({ loginUserName, room }) => { |
|
|
|
const dispatch = useDispatch(); |
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
if (room.membership === RoomMembership.Left) { |
|
|
|
dispatch(roomSetMembership([room.name, RoomMembership.Joining])); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
if (room.membership !== RoomMembership.Joined) { |
|
|
|
return <RoomBanner title={`Joining ${room.name}`} />; |
|
|
|
} |
|
|
|
|
|
|
|
return <RoomChatInner loginUserName={loginUserName} room={room} />; |
|
|
|
}; |
|
|
|
|
|
|
|
export default RoomChat; |