import React from 'react';
import superagent from 'superagent';
import { fromUnixTime, formatDistanceToNow } from "date-fns";
import { formatInTimeZone } from 'date-fns-tz'
import constants, { DEFAULT_TIMEZONE } from '../CloudApi/Constants.js';
import ApiButtonModal from '../CloudApi/ApiButtonModal.jsx';
import { splitUpperCamelCase } from '../CloudApi/ApiUtils.js';
import BigApiErrorMessage from '../CloudApi/BigApiErrorMessage.jsx';
import ScreenComponent from './ScreenComponent.jsx';
import {
Radio,
Segment,
Header,
Image,
Modal,
Icon,
Button,
Table,
Form,
Label, Dropdown
} from 'semantic-ui-react'
export function renderCompactTitle(storedRoom, liveRoom, extra) {
const name = storedRoom.name;
const participantsCount = (liveRoom.participantsIndex ? Object.keys(liveRoom.participantsIndex).length : 0);
const size = storedRoom.maxUsersPerInstance;
const instancePolicy = storedRoom.instancePolicy;
const isNSFWRoom = storedRoom.category === "NSFW";
const roomTitle = (
{isNSFWRoom && }
{name}
{(storedRoom.visibility === 'private') && }
{extra && (instancePolicy && instancePolicy.startsWith("Multiple") ? : )}
{extra && ((participantsCount > 0) ? : )}
);
return roomTitle;
}
class RoomComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
currentMediaProduct: null,
};
}
async componentDidMount() {
console.log(this.props.room);
if (this.props.room.content) {
const contentJSON = JSON.parse(decodeURIComponent(this.props.room.content));
let bigMediaId = contentJSON.bigMediaId;
const res = await superagent.post("/api/admin/media/query").send({ bigMediaId });
this.setState({ currentMediaProduct: res.body[0] })
}
}
showSetRoomPrivateModal(roomIndex, e) {
this.setState({ isShowingSetRoomPrivateModal: true });
}
async onSetRoomPrivate() {
this.setState({ isShowingSetRoomPrivateModal: false });
try {
console.log(`/cloud/admin/room/${this.props.liveRoom.roomId}`);
const res = await superagent.put(`/cloud/admin/room/${this.props.liveRoom.roomId}`).accept('json').send({ visibility: 'Private' });
console.log("Room is now private!");
} catch (e) {
console.error(e);
}
}
async onScreenUpdated(screenIndex, e) {
this.props.onReloadRoom();
}
closeSetRoomPrivateModal(e) {
this.setState({ isShowingSetRoomPrivateModal: false });
}
showDeleteRoomModal(roomIndex, e) {
this.setState({ isShowingDeleteRoomModal: true });
}
async onDeleteRoom(e) {
this.setState({ isShowingDeleteRoomModal: false });
try {
const res = await superagent.delete(`/cloud/admin/room/${this.props.room.roomId}`).accept('json');
} catch (e) {
console.error(e);
}
}
closeDeleteRoomModal(e) {
this.setState({ isShowingDeleteRoomModal: false });
}
sendMessage(selectedBigscreenUser, e) {
e.preventDefault();
this.setState({ selectedBigscreenUser, showMessageDialog: true });
}
closeMessageModal(e) {
this.setState({ showMessageDialog: false });
}
onUpdateMessageText(e, { name, value }) {
const state = this.state;
state[name] = value;
this.setState(state);
}
async onConfirmSendMessage(e) {
e.preventDefault();
try {
console.log(this.state.selectedBigscreenUser);
const payload = { message: this.state.message };
const result = await superagent.post(`/cloud/admin/account/${this.state.selectedBigscreenUser.bigscreenAccountId}/message`).send(payload).accept('json');
} catch (e) {
console.log(e);
}
this.setState({ showMessageDialog: false, message: undefined, selectedBigscreenUser: undefined });
}
async onUpdateAdminSettings(e, { name, value }) {
console.log(name, value);
return this.props.onUpdateRoom(this.props.roomIndex, e, { adminSettings: name, value });
}
renderTitle() {
let ownerLink = null;
if (this.props.ownerBigscreenAccount) {
ownerLink = (
by {this.props.ownerBigscreenAccount.username}
);
}
const title = (
{(this.props.liveRoom) ? : } Created: {createdAt} ({fromNow})
Are you sure you want to set the room {this.props.room.name} ({this.props.room.roomId}) to private?
Are you sure you want to delete the room {this.props.room.name} ({this.props.room.roomId})?
This will kick everyone from the room!!!
Enter a message to send to this user {this.state.selectedUser.username}:
}