import React, { ReactEventHandler, ChangeEvent } from 'react' import classnames from 'classnames' import screenfull from 'screenfull' import { Message } from '../actions/ChatActions' import { AddStreamPayload } from '../actions/StreamActions' const hidden = { display: 'none', } export interface ToolbarProps { messages: Message[] stream: AddStreamPayload onToggleChat: () => void onSendFile: (file: File) => void chatVisible: boolean } export interface ToolbarState { readMessages: number camDisabled: boolean micMuted: boolean fullScreenEnabled: boolean } export default class Toolbar extends React.PureComponent { file = React.createRef() constructor(props: ToolbarProps) { super(props) this.state = { readMessages: props.messages.length, camDisabled: false, micMuted: false, fullScreenEnabled: false, } } handleMicClick = () => { const { stream } = this.props stream.stream.getAudioTracks().forEach(track => { track.enabled = !track.enabled }) this.setState({ ...this.state, micMuted: !this.state.micMuted, }) } handleCamClick = () => { const { stream } = this.props stream.stream.getVideoTracks().forEach(track => { track.enabled = !track.enabled }) this.setState({ ...this.state, camDisabled: !this.state.camDisabled, }) } handleFullscreenClick = () => { if (screenfull.enabled) { screenfull.toggle() this.setState({ ...this.state, fullScreenEnabled: !this.state.fullScreenEnabled, }) } } handleHangoutClick = () => { window.location.href = '/' } handleSendFile = () => { this.file.current!.click() } handleSelectFiles = (event: React.ChangeEvent) => { Array .from(event.target!.files!) .forEach(file => this.props.onSendFile(file)) } handleToggleChat = () => { this.setState({ readMessages: this.props.messages.length, }) this.props.onToggleChat() } render () { const { messages, stream } = this.props return (
this.state.readMessages} title="Chat" >
{stream && (
)}
) } }