diff --git a/.betterer.results b/.betterer.results
index 152968f9869..e1996888277 100644
--- a/.betterer.results
+++ b/.betterer.results
@@ -5626,7 +5626,8 @@ exports[`better eslint`] = {
],
"public/swagger/SwaggerPage.tsx:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
- [0, 0, 0, "No untranslated strings. Wrap text with ", "1"]
+ [0, 0, 0, "No untranslated strings. Wrap text with ", "1"],
+ [0, 0, 0, "No untranslated strings. Wrap text with ", "2"]
],
"public/swagger/index.tsx:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"],
diff --git a/public/swagger/SwaggerPage.tsx b/public/swagger/SwaggerPage.tsx
index f32033cc206..e74f411e867 100644
--- a/public/swagger/SwaggerPage.tsx
+++ b/public/swagger/SwaggerPage.tsx
@@ -4,7 +4,7 @@ import { useAsync } from 'react-use';
import SwaggerUI from 'swagger-ui-react';
import { createTheme, monacoLanguageRegistry, SelectableValue } from '@grafana/data';
-import { Stack, Select } from '@grafana/ui';
+import { Stack, Select, UserIcon, UserView, Button } from '@grafana/ui';
import { setMonacoEnv } from 'app/core/monacoEnv';
import { ThemeProvider } from 'app/core/utils/ConfigProvider';
@@ -49,16 +49,34 @@ export const Page = () => {
return urls;
});
+ const [userView, setUserView] = useState();
+
const namespace = useAsync(async () => {
const response = await fetch('api/frontend/settings');
if (!response.ok) {
console.warn('No settings found');
- return '';
+ return 'default';
}
const val = await response.json();
return val.namespace;
});
+ useAsync(async () => {
+ const response = await fetch('api/user');
+ if (!response.ok) {
+ console.warn('No user found, show login button');
+ return;
+ }
+ const val = await response.json();
+ setUserView({
+ user: {
+ name: val.email || val.login,
+ avatarUrl: val.avatarUrl,
+ },
+ lastActiveAt: new Date(),
+ });
+ });
+
return (
@@ -83,6 +101,15 @@ export const Page = () => {
value={url}
isLoading={urls.loading}
/>
+