From e81b9f4f04e3769bea61ec0317c4ae7ce30e9a9a Mon Sep 17 00:00:00 2001 From: Evan Purkhiser <evanpurkhiser@gmail.com> Date: Mon, 27 Feb 2023 15:00:38 -0800 Subject: [PATCH] ref(js): Remove custom usage of DocumentTitle (#45165) --- static/app/views/projects/projectContext.tsx | 29 ++++---------------- 1 file changed, 5 insertions(+), 24 deletions(-) diff --git a/static/app/views/projects/projectContext.tsx b/static/app/views/projects/projectContext.tsx index e3c0ea9a5191b8..1eb4e5949a7016 100644 --- a/static/app/views/projects/projectContext.tsx +++ b/static/app/views/projects/projectContext.tsx @@ -1,5 +1,4 @@ -import {Component, createRef} from 'react'; -import DocumentTitle from 'react-document-title'; +import {Component} from 'react'; import styled from '@emotion/styled'; import {fetchOrgMembers} from 'sentry/actionCreators/members'; @@ -10,6 +9,7 @@ import * as Layout from 'sentry/components/layouts/thirds'; import LoadingError from 'sentry/components/loadingError'; import LoadingIndicator from 'sentry/components/loadingIndicator'; import MissingProjectMembership from 'sentry/components/projects/missingProjectMembership'; +import SentryDocumentTitle from 'sentry/components/sentryDocumentTitle'; import {t} from 'sentry/locale'; import SentryTypes from 'sentry/sentryTypes'; import MemberListStore from 'sentry/stores/memberListStore'; @@ -101,7 +101,7 @@ class ProjectContext extends Component<Props, State> { } } - componentDidUpdate(prevProps: Props, prevState: State) { + componentDidUpdate(prevProps: Props, _prevState: State) { if (prevProps.projectId !== this.props.projectId) { this.fetchData(); } @@ -116,23 +116,6 @@ class ProjectContext extends Component<Props, State> { if (prevProps.projects.length !== this.props.projects.length) { this.fetchData(); } - - // Call forceUpdate() on <DocumentTitle/> if either project or organization - // state has changed. This is because <DocumentTitle/>'s shouldComponentUpdate() - // returns false unless props differ; meaning context changes for project/org - // do NOT trigger renders for <DocumentTitle/> OR any subchildren. The end result - // being that child elements that listen for context changes on project/org will - // NOT update (without this hack). - // See: https://github.com/gaearon/react-document-title/issues/35 - - // intentionally shallow comparing references - if (prevState.project !== this.state.project) { - const docTitle = this.docTitleRef.current; - if (!docTitle) { - return; - } - docTitle.forceUpdate(); - } } componentWillUnmount() { @@ -140,8 +123,6 @@ class ProjectContext extends Component<Props, State> { this.unsubscribeProjects(); } - docTitleRef = createRef<DocumentTitle>(); - unsubscribeProjects = ProjectsStore.listen( (projectIds: Set<string>) => this.onProjectChange(projectIds), undefined @@ -287,9 +268,9 @@ class ProjectContext extends Component<Props, State> { render() { return ( - <DocumentTitle ref={this.docTitleRef} title={this.getTitle()}> + <SentryDocumentTitle noSuffix title={this.getTitle()}> {this.renderBody()} - </DocumentTitle> + </SentryDocumentTitle> ); } }