123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import {Component} from 'react';
- import {fetchOrganizationDetails} from 'sentry/actionCreators/organizations';
- import type {Client} from 'sentry/api';
- 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<typeof SettingsLayout> & {
- api: Client;
- organization: Organization;
- };
- class AccountSettingsLayout extends Component<Props> {
- 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 (
- <SettingsLayout
- {...this.props}
- renderNavigation={() => <AccountSettingsNavigation organization={organization} />}
- >
- {this.props.children}
- </SettingsLayout>
- );
- }
- }
- export default withLatestContext(withApi(AccountSettingsLayout));
|