react-logo/frontend/src/pages/page.js

33 lines
892 B
JavaScript
Raw Normal View History

2020-02-17 22:28:57 +01:00
import React, { useEffect } from 'react'
2020-02-19 13:19:04 +01:00
import { MessageList } from '../components/message-list';
import { connect } from 'react-redux';
import { removeOldestMessage } from '../actions/message.actions';
2020-02-04 17:20:39 +01:00
2020-02-19 13:19:04 +01:00
export default function Page({ title, messages, dispatch, children }) {
2020-02-17 22:28:57 +01:00
useEffect(() => {
document.title = title ? `${title } - PleaseWait` : 'PleaseWait';
});
2020-02-19 13:19:04 +01:00
useEffect(() => {
if (!Array.isArray(messages) || messages.length === 0) return;
let timeoutId = setTimeout(() => {
dispatch(removeOldestMessage());
}, 5000);
return () => clearTimeout(timeoutId);
}, [messages])
2020-02-17 22:28:57 +01:00
return (
2020-02-19 11:53:32 +01:00
<div className="container">
2020-02-19 13:19:04 +01:00
<MessageList messages={messages} />
2020-02-17 22:28:57 +01:00
{ children }
</div>
);
2020-02-19 13:19:04 +01:00
}
function mapStateToProps(state) {
return { messages: state.messages.sortedByTimestamp };
}
export const ConnectedPage = connect(mapStateToProps)(Page);