import { useMemo, useState } from 'react'; import { Trans, t } from '@grafana/i18n'; import { Alert, ConfirmModal, Stack, Tab, TabContent, TabsBar } from '@grafana/ui'; import { useDeletecollectionRepositoryMutation, useGetFrontendSettingsQuery, } from 'app/api/clients/provisioning/v0alpha1'; import { Page } from 'app/core/components/Page/Page'; import GettingStarted from './GettingStarted/GettingStarted'; import GettingStartedPage from './GettingStarted/GettingStartedPage'; import { RepositoryList } from './Shared/RepositoryList'; import { useRepositoryList } from './hooks/useRepositoryList'; enum TabSelection { Repositories = 'repositories', GettingStarted = 'getting-started', } export default function HomePage() { const [items, isLoading] = useRepositoryList({ watch: true }); const settings = useGetFrontendSettingsQuery(); const [deleteAll] = useDeletecollectionRepositoryMutation(); const [showDeleteModal, setShowDeleteModal] = useState(false); const [activeTab, setActiveTab] = useState(TabSelection.Repositories); const tabInfo = useMemo( () => [ { value: TabSelection.Repositories, label: t('provisioning.home-page.tab-repositories', 'Repositories'), title: t('provisioning.home-page.tab-repositories-title', 'List of repositories'), }, { value: TabSelection.GettingStarted, label: t('provisioning.home-page.tab-getting-started', 'Getting started'), title: t('provisioning.home-page.tab-getting-started-title', 'Getting started'), }, ], [] ); // Early return for onboarding if (!items?.length && !isLoading) { return ; } const onConfirmDelete = () => { deleteAll({}); setShowDeleteModal(false); }; const renderTabContent = () => { switch (activeTab) { case TabSelection.Repositories: return ; case TabSelection.GettingStarted: return ; default: return null; } }; return ( {settings.data?.legacyStorage && ( Remove all configured repositories } onRemove={() => { setShowDeleteModal(true); }} > Configured repositories will not work while running legacy storage. )} setShowDeleteModal(false)} /> {tabInfo.map((t) => ( setActiveTab(t.value)} title={t.title} /> ))} {renderTabContent()} ); }