Skip to content

Commit 34b3baf

Browse files
authored
Redirect to the correct URL for merged pages (#660)
When loading page data on the page details view, we might get a redirect from the API because a page was merged. This reflects that redirect in the UI's URL, ensuring that old change links redirect to the same view for the new, merged page. Merged pages are new in edgi-govdata-archiving/web-monitoring-db#793.
1 parent ab06d78 commit 34b3baf

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

src/components/page-details/page-details.jsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,12 @@ export default class PageDetails extends React.Component {
9696
return (<Loading />);
9797
}
9898

99+
if (this.state.page.merged_into) {
100+
const targetId = this.state.page.merged_into;
101+
const changeId = this.props.match.params.change || '';
102+
return <Redirect to={`/page/${targetId}/${changeId}`} />;
103+
}
104+
99105
// TODO: this HTML should probably be broken up a bit
100106
return (
101107
<div styleName="baseStyles.main pageStyles.page-details-main">
@@ -249,6 +255,11 @@ export default class PageDetails extends React.Component {
249255
*/
250256
Promise.resolve(fromList || this.context.api.getPage(pageId))
251257
.then(page => {
258+
// If we redirected to a different page ID, store a special object so
259+
// we can redirect on render.
260+
if (page.uuid !== pageId) {
261+
this.setState({ page: { uuid: pageId, merged_into: page.uuid } });
262+
}
252263
this._loadVersions(page, cutoffDate, '')
253264
.then(versions => {
254265
page.versions = versions;

0 commit comments

Comments
 (0)