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',
},
});
const DEBUG_WINDOW_ENABLED = Meteor.settings.public.app.enableDebugWindow;
const SHOW_DEBUG_WINDOW_ACCESSKEY = Meteor.settings.public.app.shortcuts.openDebugWindow.accesskey;
class DebugWindow extends Component {
constructor(props) {
super(props);
this.state = {
showDebugWindow: false,
logLevel: ChatLogger.getLogLevel(),
};
}
componentDidMount() {
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);
if (!DEBUG_WINDOW_ENABLED || !showDebugWindow) return false;
const { intl } = this.props;
return (
{`${intl.formatMessage(intlMessages.userAgentLabel)}:`}
{`${intl.formatMessage(intlMessages.chatLoggerLabel)}:`}
);
}
}
export default injectIntl(DebugWindow);