diff --git a/CHANGELOG.md b/CHANGELOG.md index 4927aedb..51c6984a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Fixed + +- Fixed NPE on teams switch + ### Added - Optimize alert and alert group public api endpoints and add filter by id ([1274](https://github.com/grafana/oncall/pull/1274) diff --git a/grafana-plugin/src/PluginPage.tsx b/grafana-plugin/src/PluginPage.tsx index f8a240cb..2fbb8dae 100644 --- a/grafana-plugin/src/PluginPage.tsx +++ b/grafana-plugin/src/PluginPage.tsx @@ -22,7 +22,7 @@ function RealPlugin(props: AppPluginPageProps): React.ReactNode { {/* Render alerts at the top */} -
+
{pages[page]?.text &&

{pages[page].text}

} {props.children} diff --git a/grafana-plugin/src/containers/DefaultPageLayout/DefaultPageLayout.tsx b/grafana-plugin/src/containers/DefaultPageLayout/DefaultPageLayout.tsx index 46ef2f1b..c1fbd2d5 100644 --- a/grafana-plugin/src/containers/DefaultPageLayout/DefaultPageLayout.tsx +++ b/grafana-plugin/src/containers/DefaultPageLayout/DefaultPageLayout.tsx @@ -32,8 +32,10 @@ const DefaultPageLayout: FC = observer((props) => { return renderLegacyNavbar(); function renderTopNavbar(): JSX.Element { + const matchingPageNav = (pages[page] || pages[DEFAULT_PAGE]).getPageNav(); + return ( - +
{children}
); diff --git a/grafana-plugin/src/containers/GrafanaTeamSelect/GrafanaTeamSelect.tsx b/grafana-plugin/src/containers/GrafanaTeamSelect/GrafanaTeamSelect.tsx index 368042fb..7d3f25a4 100644 --- a/grafana-plugin/src/containers/GrafanaTeamSelect/GrafanaTeamSelect.tsx +++ b/grafana-plugin/src/containers/GrafanaTeamSelect/GrafanaTeamSelect.tsx @@ -16,14 +16,9 @@ import styles from './GrafanaTeamSelect.module.scss'; const cx = cn.bind(styles); -interface GrafanaTeamSelectProps { - currentPage: string; -} - -const GrafanaTeamSelect = observer((props: GrafanaTeamSelectProps) => { +const GrafanaTeamSelect = observer(() => { const store = useStore(); - const { currentPage } = props; const { userStore, grafanaTeamStore } = store; const grafanaTeams = grafanaTeamStore.getSearchResult(); const user = userStore.currentUser; @@ -35,16 +30,7 @@ const GrafanaTeamSelect = observer((props: GrafanaTeamSelectProps) => { const onTeamChange = async (teamId: GrafanaTeam['id']) => { await userStore.updateCurrentUser({ current_team: teamId }); - const queryParams = new URLSearchParams(); - queryParams.set('page', mapCurrentPage()); - window.location.search = queryParams.toString(); - - function mapCurrentPage() { - if (currentPage === 'incident') { - return 'incidents'; - } - return currentPage; - } + window.location.reload(); }; const content = ( diff --git a/grafana-plugin/src/navbar/Header/Header.tsx b/grafana-plugin/src/navbar/Header/Header.tsx index 157e74b9..0fac31b4 100644 --- a/grafana-plugin/src/navbar/Header/Header.tsx +++ b/grafana-plugin/src/navbar/Header/Header.tsx @@ -13,7 +13,7 @@ import styles from './Header.module.scss'; const cx = cn.bind(styles); -export default function Header({ page, backendLicense }: { page: string; backendLicense: string }) { +export default function Header({ backendLicense }: { backendLicense: string }) { return (
@@ -25,7 +25,7 @@ export default function Header({ page, backendLicense }: { page: string; backend
{renderHeading()}
- +
diff --git a/grafana-plugin/src/plugin/GrafanaPluginRootPage.tsx b/grafana-plugin/src/plugin/GrafanaPluginRootPage.tsx index 1769f0cb..aa36713f 100644 --- a/grafana-plugin/src/plugin/GrafanaPluginRootPage.tsx +++ b/grafana-plugin/src/plugin/GrafanaPluginRootPage.tsx @@ -110,7 +110,7 @@ export const Root = observer((props: AppRootProps) => { {!isTopNavbar() && ( <> -
+
)}