React 19 drops defaultProps on function components. Converted the 9 of
ours that used it (App, Navigation, ReSendEmail, Reconnect, OAuthLoginButton,
PageHeader, Page, EditDocument, EditSubscription) to destructured default
params; App defaults userId/emailAddress in its withTracker instead (it
spreads {...props} widely). Class components keep defaultProps (still
supported). The only defaultProps warnings left are from the react-share
npm package (CreatedButton/Icon), not our code. REST smoke byte-identical.
46 lines
1.2 KiB
JavaScript
46 lines
1.2 KiB
JavaScript
import React from 'react';
|
|
import PropTypes from 'prop-types';
|
|
import { Meteor } from 'meteor/meteor';
|
|
import { withTracker } from 'meteor/react-meteor-data';
|
|
import { ReactiveVar } from 'meteor/reactive-var';
|
|
import i18n from '/imports/startup/client/i18n';
|
|
import PageHeader from '../../components/PageHeader/PageHeader';
|
|
import Content from '../../components/Content/Content';
|
|
import { Helmet } from 'react-helmet-async';
|
|
|
|
import './Page.scss';
|
|
|
|
const Page = ({ title, subtitle = '', content }) => (
|
|
<div className="Page">
|
|
<Helmet>
|
|
<meta charSet="utf-8" />
|
|
<title>{i18n.t('AppName')}: {title}</title>
|
|
</Helmet>
|
|
<PageHeader title={title} subtitle={subtitle} />
|
|
<Content content={content} />
|
|
</div>
|
|
);
|
|
|
|
Page.propTypes = {
|
|
title: PropTypes.string.isRequired,
|
|
subtitle: PropTypes.string,
|
|
content: PropTypes.string.isRequired
|
|
};
|
|
|
|
const pageContent = new ReactiveVar('');
|
|
|
|
export default withTracker(({ content, page }) => {
|
|
window.scrollTo(0, 0); // Force window to top of page.
|
|
|
|
Meteor.call('utility.getPage', page, i18n.language, (error, response) => {
|
|
if (error) {
|
|
console.warn(error);
|
|
} else {
|
|
pageContent.set(response);
|
|
}
|
|
});
|
|
|
|
return {
|
|
content: content || pageContent.get()
|
|
};
|
|
})(Page);
|