Skip to content

Commit 18e99da

Browse files
committed
client: Move title setting into entries page
1 parent fa3bace commit 18e99da

File tree

2 files changed

+25
-9
lines changed

2 files changed

+25
-9
lines changed

assets/js/templates/App.jsx

+5-8
Original file line numberDiff line numberDiff line change
@@ -171,14 +171,9 @@ function PureApp({
171171
[]
172172
);
173173

174-
const isEntriesRoute = useRouteMatch(ENTRIES_ROUTE_PATTERN) !== null;
175-
React.useEffect(() => {
176-
if (isEntriesRoute && unreadItemsCount > 0) {
177-
document.title = configuration.htmlTitle + ' (' + unreadItemsCount + ')';
178-
} else {
179-
document.title = configuration.htmlTitle;
180-
}
181-
}, [configuration, unreadItemsCount, isEntriesRoute]);
174+
const setTitle = React.useCallback((title) => {
175+
document.title = title ?? configuration.htmlTitle;
176+
}, [configuration.htmlTitle]);
182177

183178
const _ = React.useContext(LocalizationContext);
184179

@@ -261,6 +256,8 @@ function PureApp({
261256
setNavExpanded={setNavExpanded}
262257
configuration={configuration}
263258
navSourcesExpanded={navSourcesExpanded}
259+
setTitle={setTitle}
260+
unreadItemsCount={unreadItemsCount}
264261
/>
265262
)}
266263
</Route>

assets/js/templates/EntriesPage.jsx

+20-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react';
2+
import { useEffect } from 'react';
23
import PropTypes from 'prop-types';
34
import { Link, useLocation, useParams } from 'react-router-dom';
45
import { useOnline } from 'rooks';
@@ -177,7 +178,7 @@ function handleRefreshSource({ event, source, setLoadingState, setNavExpanded, r
177178
});
178179
}
179180

180-
export function EntriesPage({ entries, hasMore, loadingState, setLoadingState, selectedEntry, expandedEntries, setNavExpanded, navSourcesExpanded, reload }) {
181+
export function EntriesPage({ entries, hasMore, loadingState, setLoadingState, selectedEntry, expandedEntries, setNavExpanded, navSourcesExpanded, reload, unreadItemsCount, setTitle }) {
181182
const allowedToUpdate = useAllowedToUpdate();
182183
const allowedToWrite = useAllowedToWrite();
183184
const configuration = React.useContext(ConfigurationContext);
@@ -190,6 +191,18 @@ export function EntriesPage({ entries, hasMore, loadingState, setLoadingState, s
190191
return queryString.get('search') ?? '';
191192
}, [location.search]);
192193

194+
useEffect(() => {
195+
if (unreadItemsCount > 0) {
196+
setTitle(configuration.htmlTitle + ' (' + unreadItemsCount + ')');
197+
} else {
198+
setTitle(configuration.htmlTitle);
199+
}
200+
201+
return () => {
202+
setTitle(null);
203+
};
204+
}, [configuration.htmlTitle, setTitle, unreadItemsCount]);
205+
193206
const params = useParams();
194207
const currentTag = params.category?.startsWith('tag-') ? params.category.replace(/^tag-/, '') : null;
195208
const currentSource = params.category?.startsWith('source-') ? parseInt(params.category.replace(/^source-/, ''), 10) : null;
@@ -417,6 +430,8 @@ EntriesPage.propTypes = {
417430
setNavExpanded: PropTypes.func.isRequired,
418431
navSourcesExpanded: PropTypes.bool.isRequired,
419432
reload: PropTypes.func.isRequired,
433+
setTitle: PropTypes.func.isRequired,
434+
unreadItemsCount: PropTypes.number.isRequired,
420435
};
421436

422437
const initialState = {
@@ -1018,6 +1033,8 @@ export default class StateHolder extends React.Component {
10181033
setNavExpanded={this.props.setNavExpanded}
10191034
navSourcesExpanded={this.props.navSourcesExpanded}
10201035
reload={this.reload}
1036+
setTitle={this.props.setTitle}
1037+
unreadItemsCount={this.props.unreadItemsCount}
10211038
/>
10221039
);
10231040
}
@@ -1029,4 +1046,6 @@ StateHolder.propTypes = {
10291046
match: PropTypes.object.isRequired,
10301047
setNavExpanded: PropTypes.func.isRequired,
10311048
navSourcesExpanded: PropTypes.bool.isRequired,
1049+
setTitle: PropTypes.func.isRequired,
1050+
unreadItemsCount: PropTypes.number.isRequired,
10321051
};

0 commit comments

Comments
 (0)