import {Component} from 'react'; import {fetchOrganizationDetails} from 'sentry/actionCreators/organizations'; import type {Client} from 'sentry/api'; import {SentryPropTypeValidators} from 'sentry/sentryPropTypeValidators'; import type {Organization} from 'sentry/types'; import withApi from 'sentry/utils/withApi'; import withLatestContext from 'sentry/utils/withLatestContext'; import AccountSettingsNavigation from 'sentry/views/settings/account/accountSettingsNavigation'; import SettingsLayout from 'sentry/views/settings/components/settingsLayout'; type Props = React.ComponentProps & { api: Client; organization: Organization; }; class AccountSettingsLayout extends Component { static childContextTypes = { organization: SentryPropTypeValidators.isOrganization, }; getChildContext() { return { organization: this.props.organization, }; } componentDidUpdate(prevProps: Props) { const {api, organization} = this.props; if (prevProps.organization === organization) { return; } // if there is no org in context, SidebarDropdown uses an org from `withLatestContext` // (which queries the org index endpoint instead of org details) // and does not have `access` info if (organization && typeof organization.access === 'undefined') { fetchOrganizationDetails(api, organization.slug, { setActive: true, loadProjects: true, }); } } render() { const {organization} = this.props; return ( } > {this.props.children} ); } } export default withLatestContext(withApi(AccountSettingsLayout));