import { useParams } from 'common' import Link from 'next/link' import { Badge } from 'ui' import { getResourcesExceededLimits } from 'components/ui/OveragesBanner/OveragesBanner.utils' import { useProjectReadOnlyQuery } from 'data/config/project-read-only-query' import { useProjectUsageQuery } from 'data/usage/project-usage-query' import { useFlag, useSelectedOrganization, useSelectedProject } from 'hooks' import { IS_PLATFORM } from 'lib/constants' import BreadcrumbsView from './BreadcrumbsView' import FeedbackDropdown from './FeedbackDropdown' import HelpPopover from './HelpPopover' import NotificationsPopover from './NotificationsPopover' import OrgDropdown from './OrgDropdown' import ProjectDropdown from './ProjectDropdown' import { useProjectSubscriptionV2Query } from 'data/subscriptions/project-subscription-v2-query' const LayoutHeader = ({ customHeaderComponents, breadcrumbs = [], headerBorder = true }: any) => { const selectedOrganization = useSelectedOrganization() const selectedProject = useSelectedProject() const { ref: projectRef } = useParams() const { data: isReadOnlyMode } = useProjectReadOnlyQuery({ projectRef: selectedProject?.ref, connectionString: selectedProject?.connectionString, }) // Skip with org-level-billing, as quota is for the entire org const { data: usage } = useProjectUsageQuery( { projectRef }, { enabled: selectedOrganization && !selectedOrganization.subscription_id } ) const resourcesExceededLimits = getResourcesExceededLimits(usage) // Skip with org-level-billing, as quota is for the entire org const { data: subscription } = useProjectSubscriptionV2Query( { projectRef }, { enabled: selectedOrganization && !selectedOrganization.subscription_id } ) const projectHasNoLimits = subscription?.usage_billing_enabled === false const showOverUsageBadge = useFlag('overusageBadge') && subscription !== undefined && (subscription.plan.id === 'free' || subscription?.plan.id === 'pro') && !projectHasNoLimits && resourcesExceededLimits.length > 0 return (