import React from 'react'; import superagent from 'superagent'; import { fromUnixTime, formatDistanceToNow } from "date-fns"; import constants from '../CloudApi/Constants.js'; import RoomComponent from './RoomComponent.jsx'; import { RoomsUpdater, RoomData } from './RoomsUpdater.jsx'; import RoomsTable from './RoomsTable.jsx'; import * as ApiUtils from '../CloudApi/ApiUtils.js'; import { Accordion, Segment, Grid, Header, Image, Icon, Button, Table, Form, Divider, Label, Modal, Statistic, Radio } from 'semantic-ui-react' export default class RoomsPanel extends React.Component { constructor(props) { super(props); this.state = { loadingRooms: false, activeIndex: -1, selectedRoomIndex: 0, statistics: { onlineUserCount: 0, roomCount: 0 }, autoUpdate: true, usersInChannels: 0, lastUpdated: "", environmentOptions: null }; } async componentDidMount() { const environmentOptions = await ApiUtils.getEnvironmentOptions(); this.setState({ environmentOptions }); } async refreshRoomData() { } async roomsUpdated() { this.setState({ loadingRooms: RoomData.isLoading }); } async onSwitchAutoUpdater() { const autoUpdate = !this.state.autoUpdate; this.setState({ autoUpdate }); if (autoUpdate) { await this.refreshData(); this.autoUpdater = setInterval(this.refreshData.bind(this), 5000); } else { clearTimeout(this.autoUpdater); this.autoUpdater = null; } } async showSetRoomPrivateModal() { } onMakeRoomPrivate(e) { e.preventDefault(); let rooms = RoomData.rooms; let roomId = rooms[this.state.selectedRoomIndex].roomId; rooms.splice(this.state.selectedRoomIndex, 1); this.setState({ rooms, isShowingSetRoomPrivateModal: false }); superagent.get(`/api/delete_room/${roomId}`).accept('json').end(function(err, res) { console.log("Deleted room!"); }.bind(this)); } closeDeleteRoomModal(e) { this.setState({isShowingSetRoomPrivateModal: false}); } onUpdateRoom(roomIndex, event, { name, value }) { console.log(roomIndex, event, name, value); event.preventDefault(); let rooms = RoomData.rooms; let room = rooms[roomIndex]; if (room) { let payload = {}; payload[name] = value; room[name] = value; rooms[roomIndex] = room; this.setState({ rooms }); superagent.put(`/cloud/admin/room/${room.roomId}`).send(payload).accept('json').end(function(err, res) { console.log("updated room"); }.bind(this)); } } onVerify(event) { event.preventDefault(); } getChannelRoomUsersCount() { let channelRoomUsers = 0; for (const room of RoomData.tvRooms) { channelRoomUsers += (room.participants ? room.participants : 0); } return channelRoomUsers; } getPrivateRoomsCount() { return RoomData.statistics.roomCount - (RoomData.statistics.publicRoomCount + RoomData.statistics.friendsOnlyRoomCount); } getPublicRoomsUserCount() { let publicRoomUsers = 0; for (const room of RoomData.rooms) { publicRoomUsers += (room.participantsIndex ? Object.keys(room.participantsIndex).length : 0); } for (const room of RoomData.tvRooms) { publicRoomUsers += (room.participantsIndex ? Object.keys(room.participantsIndex).length : 0); } for (const room of RoomData.lobbyRooms) { publicRoomUsers += (room.participantsIndex ? Object.keys(room.participantsIndex).length : 0); } return publicRoomUsers; } getPrivateRoomsUserCount() { let publicRoomUsers = this.getPublicRoomsUserCount(); return RoomData.statistics.onlineUserCount - (publicRoomUsers); } totalPublicRoomUsersInfo() { let publicRoomUserCount =this.getPublicRoomsUserCount(); let percent = 0.0; if (RoomData.statistics.onlineUserCount > 0) { percent = Math.round((publicRoomUserCount/RoomData.statistics.onlineUserCount) * 100); } return `${publicRoomUserCount} (${percent}%)`; } render() { /*const roomsSummary = (
Are you sure you want to set the room {RoomData.rooms[this.state.selectedRoomIndex].name} ({RoomData.rooms[this.state.selectedRoomIndex].roomId}) to private?
}