diff --git a/src/App.tsx b/src/App.tsx
index b968c265..74878cd9 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -52,6 +52,7 @@ import TeamsOverviewPage from 'pages/teams/overview/TeamsOverviewPage'
import WorkloadsCreateEditPage from 'pages/workloads/create-edit/WorkloadsCreateEditPage'
import WorkloadsOverviewPage from 'pages/workloads/overview/WorkloadsOverviewPage'
import WorkloadCatalogsPage from 'pages/workloads/catalog/WorkloadCatalogsPage'
+import ThemeViewInitializer from 'components/ThemeViewInitializer'
import { HttpErrorBadRequest } from './utils/error'
import { NotistackProvider, SnackbarUtilsConfigurator } from './utils/snack'
@@ -84,6 +85,7 @@ function App() {
+
{
setCookiesLoaded(false)
}, [themeView])
- // reset themeView to team if user is not admin
- React.useEffect(() => {
- const { isPlatformAdmin } = user
- if (!isPlatformAdmin) onChangeView({ target: { value: 'team' } } as React.ChangeEvent)
- }, [])
// platform view base iframe urls
const clusterResourceUtilization = `https://grafana.${domain}/d-solo/efa86fd1d0c121a26444b636a3f509a8/kubernetes-compute-resources-cluster?orgId=1&refresh=30s&theme=${theme.palette.mode}&panelId=`
diff --git a/src/components/ThemeViewInitializer.tsx b/src/components/ThemeViewInitializer.tsx
new file mode 100644
index 00000000..4bfd0bc5
--- /dev/null
+++ b/src/components/ThemeViewInitializer.tsx
@@ -0,0 +1,19 @@
+import React, { useEffect } from 'react'
+import { useSession } from 'providers/Session'
+import useSettings from 'hooks/useSettings'
+
+/**
+ * Initializes theme view based on user role.
+ * Non-platform admin users are automatically set to 'team' view.
+ */
+export default function ThemeViewInitializer() {
+ const { user } = useSession()
+ const { onChangeView } = useSettings()
+
+ useEffect(() => {
+ const { isPlatformAdmin } = user
+ if (!isPlatformAdmin) onChangeView({ target: { value: 'team' } } as React.ChangeEvent)
+ }, [])
+
+ return null
+}
diff --git a/src/pages/Dashboard.tsx b/src/pages/Dashboard.tsx
index 30a94049..dd976bdd 100644
--- a/src/pages/Dashboard.tsx
+++ b/src/pages/Dashboard.tsx
@@ -28,11 +28,12 @@ export default function (): React.ReactElement {
const { data: teamData } = useGetTeamQuery({ teamId: oboTeamId }, { skip: !oboTeamId || isPlatformAdmin })
const teamId = isPlatformView ? undefined : oboTeamId
+
const {
data: dashboard,
isFetching: isFetchingDashboard,
refetch: refetchDashboard,
- } = useGetDashboardQuery({ teamId })
+ } = useGetDashboardQuery({ teamId }, { skip: !isPlatformAdmin && !teamId })
const isDirty = useAppSelector(({ global: { isDirty } }) => isDirty)
useEffect(() => {
diff --git a/src/redux/otomiApi.ts b/src/redux/otomiApi.ts
index 05f3ddf9..0a70cea1 100644
--- a/src/redux/otomiApi.ts
+++ b/src/redux/otomiApi.ts
@@ -5238,7 +5238,9 @@ export type GetDockerConfigApiArg = {
}
export type GetSessionApiResponse = /** status 200 Get the session for the logged in user */ {
ca?: string
- core?: object
+ core?: {
+ [key: string]: any
+ }
corrupt?: boolean
editor?: string
inactivityTimeout?: number
@@ -5277,7 +5279,9 @@ export type GetSessionApiResponse = /** status 200 Get the session for the logge
console?: string
values?: string
}
- valuesSchema?: object
+ valuesSchema?: {
+ [key: string]: any
+ }
}
export type GetSessionApiArg = void
export type GetApiDocApiResponse = /** status 200 The requested apiDoc. */ object
@@ -5868,8 +5872,12 @@ export type EditSettingsApiArg = {
export type GetAppsApiResponse = /** status 200 The request is successful. */ {
enabled?: boolean
id: string
- rawValues?: object
- values?: object
+ rawValues?: {
+ [key: string]: any
+ }
+ values?: {
+ [key: string]: any
+ }
}[]
export type GetAppsApiArg = {
teamId: string
@@ -5885,8 +5893,12 @@ export type ToggleAppsApiArg = {
export type GetTeamAppApiResponse = /** status 200 The request is successful. */ {
enabled?: boolean
id: string
- rawValues?: object
- values?: object
+ rawValues?: {
+ [key: string]: any
+ }
+ values?: {
+ [key: string]: any
+ }
}
export type GetTeamAppApiArg = {
teamId: string
@@ -5900,8 +5912,12 @@ export type EditAppApiArg = {
body: {
enabled?: boolean
id: string
- rawValues?: object
- values?: object
+ rawValues?: {
+ [key: string]: any
+ }
+ values?: {
+ [key: string]: any
+ }
}
}
export type GetAiModelsApiResponse = /** status 200 Successfully obtained shared AI models */ ({