import React, { Component } from 'react'; import Draggable from 'react-draggable'; import { defineMessages, injectIntl } from 'react-intl'; import Styled from './styles'; import ChatLogger from '/imports/ui/components/chat/chat-logger/ChatLogger'; const intlMessages = defineMessages({ modalClose: { id: 'app.modal.close', description: 'Close', }, modalCloseDescription: { id: 'app.modal.close.description', description: 'Disregards changes and closes the modal', }, debugWindowTitle: { id: 'app.debugWindow.windowTitle', description: 'Debug window title', }, userAgentLabel: { id: 'app.debugWindow.form.userAgentLabel', description: 'User agent form label', }, copyButtonLabel: { id: 'app.debugWindow.form.button.copy', description: 'User agent form copy button', }, chatLoggerLabel: { id: 'app.debugWindow.form.chatLoggerLabel', description: 'Chat logger level form label', }, applyButtonLabel: { id: 'app.debugWindow.form.button.apply', description: 'Chat logger level form apply button', }, on: { id: 'app.switch.onLabel', description: 'label for toggle switch on state', }, off: { id: 'app.switch.offLabel', description: 'label for toggle switch off state', }, }); class DebugWindow extends Component { constructor(props) { super(props); this.state = { showDebugWindow: false, logLevel: ChatLogger.getLogLevel(), }; } componentDidMount() { const DEBUG_WINDOW_ENABLED = window.meetingClientSettings.public.app.enableDebugWindow; const SHOW_DEBUG_WINDOW_ACCESSKEY = window.meetingClientSettings.public.app.shortcuts.openDebugWindow.accesskey; document.addEventListener('keyup', (event) => { const { key, code } = event; const eventKey = key?.toUpperCase(); const eventCode = code; if (DEBUG_WINDOW_ENABLED && event?.altKey && (eventKey === SHOW_DEBUG_WINDOW_ACCESSKEY || eventCode === `Key${SHOW_DEBUG_WINDOW_ACCESSKEY}`)) { this.debugWindowToggle(); } }); } setShowDebugWindow(showDebugWindow) { this.setState({ showDebugWindow }); } debugWindowToggle() { const { showDebugWindow } = this.state; if (showDebugWindow) { this.setShowDebugWindow(false); } else { this.setShowDebugWindow(true); } } displaySettingsStatus(status) { const { intl } = this.props; return ( {status ? intl.formatMessage(intlMessages.on) : intl.formatMessage(intlMessages.off)} ); } render() { const { showDebugWindow, logLevel } = this.state; const chatLoggerLevelsNames = Object.keys(ChatLogger.levels); const DEBUG_WINDOW_ENABLED = window.meetingClientSettings.public.app.enableDebugWindow; if (!DEBUG_WINDOW_ENABLED || !showDebugWindow) return false; const { intl } = this.props; return ( {intl.formatMessage(intlMessages.debugWindowTitle)} this.setShowDebugWindow(false)} /> {`${intl.formatMessage(intlMessages.userAgentLabel)}:`} {`${intl.formatMessage(intlMessages.chatLoggerLabel)}:`} ); } } export default injectIntl(DebugWindow);