import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { defineMessages } from 'react-intl'; import Button from '/imports/ui/components/button/component'; import Modal from '/imports/ui/components/modal/simple/component'; import { makeCall } from '/imports/ui/services/api'; import { styles } from './styles'; import { Meteor } from "meteor/meteor"; const propTypes = { intl: PropTypes.object.isRequired, responseDelay: PropTypes.number.isRequired, }; const intlMessages = defineMessages({ activityCheckTitle: { id: 'app.user.activityCheck', description: 'Title for activity check modal', }, activityCheckLabel: { id: 'app.user.activityCheck.label', description: 'Label for activity check modal', }, activityCheckButton: { id: 'app.user.activityCheck.check', description: 'Check button for activity modal', }, }); const handleInactivityDismiss = () => makeCall('userActivitySign'); class ActivityCheck extends Component { constructor(props) { super(props); const { responseDelay } = this.props; this.state = ({ responseDelay, }); this.stopRemainingTime = this.stopRemainingTime.bind(this); this.updateRemainingTime = this.updateRemainingTime.bind(this); this.playAudioAlert = this.playAudioAlert.bind(this); } componentDidMount() { this.playAudioAlert(); this.interval = this.updateRemainingTime(); } componentDidUpdate() { this.stopRemainingTime(); this.interval = this.updateRemainingTime(); } componentWillUnmount() { this.stopRemainingTime(); } updateRemainingTime() { const { responseDelay } = this.state; return setInterval(() => { const remainingTime = responseDelay - 1; this.setState({ responseDelay: remainingTime, }); }, 1000); } stopRemainingTime() { clearInterval(this.interval); } playAudioAlert() { this.alert = new Audio(`${Meteor.settings.public.app.cdn + Meteor.settings.public.app.basename + Meteor.settings.public.app.instanceId}/resources/sounds/notify.mp3`); alert.addEventListener('ended', () => { alert.src = null; }); this.alert.play(); } render() { const { intl } = this.props; const { responseDelay } = this.state; return (

{intl.formatMessage(intlMessages.activityCheckTitle)}

{intl.formatMessage(intlMessages.activityCheckLabel, { 0: responseDelay })}

); } } ActivityCheck.propTypes = propTypes; export default ActivityCheck;