mirror of
https://github.com/supabase/supabase.git
synced 2026-10-07 02:15:05 +03:00
Hides the "Multigres" term from user-facing surfaces — it's the tech powering High Availability projects, but "High Availability" is the only term users should see for now (per Slack discussion with Saxon/Ivan). **Changed:** - High Availability badge hover card (project overview) no longer says "Driven by Multigres" - Project creation HA toggle description drops the Multigres name + multigres.com link, keeps the informational copy - All schema dropdowns now hide the `multigres` schema on HA projects, by wiring in the previously-unused `filterSchemasForHighAvailability` helper: - `SchemaSelector` (shared — Table Editor, Functions, Indexes, Triggers, Schema Visualizer, etc.) - `ExposedSchemaSelector` (API settings → exposed schemas) - `EnableExtensionModal`, `CreateIndexSidePanel`, `ForeignKeySelector`, `WrapperTableEditor`, Integrations install sheet `AdvancedSettings` - SQL editor schema autocomplete (`useAddDefinitions`) - Schema list computations in the touched components are now memoized (incl. stabilizing `SchemaSelector`'s `excludedSchemas` default so the memo actually holds) **Added:** - Unit tests for `filterSchemasForHighAvailability` / `resolveHighAvailability` - MSW component test for `SchemaSelector` asserting `multigres` is hidden on HA projects and still shown on non-HA projects The filter is HA-gated on purpose: a self-hosted/non-HA user with their own schema named `multigres` still sees it. The flag-gated Multigres option in Logs is intentionally untouched — that exposure is kept for the Multigres team's debugging (separate track). ## To test - On an HA project (`high_availability: true`): hover the High Availability badge on project overview — no "Multigres" mention; open schema dropdowns in Table Editor / Database pages / SQL editor autocomplete — no `multigres` schema - Project creation with HA entitlement: toggle description has no Multigres wording/link - On a non-HA project: schema dropdowns behave as before <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Improvements** * Made schema dropdowns and related selectors high-availability aware across extensions, indexes, integrations, SQL editing, API exposed schemas, and relationship editors. * Updated project high-availability UI text and badge hover description to remove outdated branding and clarify horizontally scalable Postgres architecture. * **Tests** * Added coverage to ensure the schema “multigres” option is hidden/shown correctly based on high availability, and validated high-availability value handling. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Alaister Young <10985857+alaister@users.noreply.github.com>
43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import { useMemo } from 'react'
|
|
|
|
import { MULTIGRES_SCHEMA_NAME, resolveHighAvailability } from './useHighAvailability.constants'
|
|
import { useSelectedProjectQuery } from './useSelectedProject'
|
|
|
|
export { MULTIGRES_SCHEMA_NAME, resolveHighAvailability }
|
|
|
|
export function useHighAvailability() {
|
|
const { data: project, isPending } = useSelectedProjectQuery()
|
|
|
|
const isHighAvailability = resolveHighAvailability(project)
|
|
|
|
return {
|
|
isHighAvailability,
|
|
isHighAvailabilityDisabled: !isHighAvailability,
|
|
isPending,
|
|
}
|
|
}
|
|
|
|
export function filterSchemasForHighAvailability<T extends { name: string }>(
|
|
schemas: T[],
|
|
isHighAvailability: boolean
|
|
) {
|
|
if (!isHighAvailability) return schemas
|
|
|
|
return schemas.filter((schema) => schema.name !== MULTIGRES_SCHEMA_NAME)
|
|
}
|
|
|
|
/**
|
|
* Memoized `filterSchemasForHighAvailability` bound to the selected project's
|
|
* high availability state.
|
|
*/
|
|
export function useSchemasFilteredForHighAvailability<T extends { name: string }>(
|
|
schemas: T[] | undefined
|
|
): T[] {
|
|
const { isHighAvailability } = useHighAvailability()
|
|
|
|
return useMemo(
|
|
() => filterSchemasForHighAvailability(schemas ?? [], isHighAvailability),
|
|
[schemas, isHighAvailability]
|
|
)
|
|
}
|