index.tsx 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import {Fragment} from 'react';
  2. import {RouteComponentProps} from 'react-router';
  3. import {Client} from 'app/api';
  4. import NotFound from 'app/components/errors/notFound';
  5. import LoadingIndicator from 'app/components/loadingIndicator';
  6. import {Organization} from 'app/types';
  7. import withApi from 'app/utils/withApi';
  8. import withOrganization from 'app/utils/withOrganization';
  9. import DashboardDetail from './detail';
  10. import OrgDashboards from './orgDashboards';
  11. import {DashboardState} from './types';
  12. import {DashboardBasicFeature} from './view';
  13. type Props = RouteComponentProps<{orgId: string}, {}> & {
  14. api: Client;
  15. organization: Organization;
  16. children: React.ReactNode;
  17. };
  18. function DashboardsV2Container(props: Props) {
  19. const {organization, params, api, location, children} = props;
  20. if (organization.features.includes('dashboards-edit')) {
  21. return <Fragment>{children}</Fragment>;
  22. }
  23. return (
  24. <DashboardBasicFeature organization={organization}>
  25. <OrgDashboards
  26. api={api}
  27. location={location}
  28. params={params}
  29. organization={organization}
  30. >
  31. {({dashboard, dashboards, error, reloadData}) => {
  32. return error ? (
  33. <NotFound />
  34. ) : dashboard ? (
  35. <DashboardDetail
  36. {...props}
  37. initialState={DashboardState.VIEW}
  38. dashboard={dashboard}
  39. dashboards={dashboards}
  40. reloadData={reloadData}
  41. />
  42. ) : (
  43. <LoadingIndicator />
  44. );
  45. }}
  46. </OrgDashboards>
  47. </DashboardBasicFeature>
  48. );
  49. }
  50. export default withApi(withOrganization(DashboardsV2Container));