Submit
Path:
~
/
/
usr
/
share
/
grafana
/
public
/
app
/
core
/
components
/
AppChrome
/
OrganizationSwitcher
/
File Content:
OrganizationSwitcher.tsx
import React, { useEffect, useState } from 'react'; import { SelectableValue } from '@grafana/data'; import { locationService } from '@grafana/runtime'; import { useTheme2 } from '@grafana/ui'; import { useMediaQueryChange } from 'app/core/hooks/useMediaQueryChange'; import { contextSrv } from 'app/core/services/context_srv'; import { getUserOrganizations, setUserOrganization } from 'app/features/org/state/actions'; import { useDispatch, useSelector, UserOrg } from 'app/types'; import { OrganizationPicker } from './OrganizationPicker'; import { OrganizationSelect } from './OrganizationSelect'; export function OrganizationSwitcher() { const theme = useTheme2(); const dispatch = useDispatch(); const orgs = useSelector((state) => state.organization.userOrgs); const onSelectChange = (option: SelectableValue<UserOrg>) => { if (option.value) { setUserOrganization(option.value.orgId); locationService.push(`/?orgId=${option.value.orgId}`); // TODO how to reload the current page window.location.reload(); } }; useEffect(() => { if ( contextSrv.isSignedIn && !(contextSrv.user.authenticatedBy === 'apikey' || contextSrv.user.authenticatedBy === 'render') ) { dispatch(getUserOrganizations()); } }, [dispatch]); const breakpoint = theme.breakpoints.values.sm; const [isSmallScreen, setIsSmallScreen] = useState(!window.matchMedia(`(min-width: ${breakpoint}px)`).matches); useMediaQueryChange({ breakpoint, onChange: (e) => { setIsSmallScreen(!e.matches); }, }); if (orgs?.length <= 1) { return null; } const Switcher = isSmallScreen ? OrganizationPicker : OrganizationSelect; return <Switcher orgs={orgs} onSelectChange={onSelectChange} />; }
Submit
FILE
FOLDER
INFO
Name
Size
Permission
Action
OrganizationPicker.tsx
964 bytes
0644
OrganizationSelect.tsx
1483 bytes
0644
OrganizationSwitcher.test.tsx
3594 bytes
0644
OrganizationSwitcher.tsx
1770 bytes
0644
types.ts
211 bytes
0644
N4ST4R_ID | Naxtarrr