diff --git a/apps/studio/components/interfaces/Auth/ThirdPartyAuthForm/index.tsx b/apps/studio/components/interfaces/Auth/ThirdPartyAuthForm/index.tsx
index d519fd87584..39e81d3c9d7 100644
--- a/apps/studio/components/interfaces/Auth/ThirdPartyAuthForm/index.tsx
+++ b/apps/studio/components/interfaces/Auth/ThirdPartyAuthForm/index.tsx
@@ -12,7 +12,6 @@ import {
useThirdPartyAuthIntegrationsQuery,
} from 'data/third-party-auth/integrations-query'
import { useCheckPermissions } from 'hooks/misc/useCheckPermissions'
-import { useFlag } from 'hooks/ui/useFlag'
import { cn } from 'ui'
import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal'
import { AddIntegrationDropdown } from './AddIntegrationDropdown'
@@ -27,7 +26,6 @@ import {
} from './ThirdPartyAuthForm.utils'
export const ThirdPartyAuthForm = () => {
- const thirdPartyAuthEnabled = useFlag('thirdPartyAuth')
const { ref: projectRef } = useParams()
const {
data: integrationsData,
@@ -45,10 +43,6 @@ export const ThirdPartyAuthForm = () => {
const { mutateAsync: deleteIntegration } = useDeleteThirdPartyAuthIntegrationMutation()
const canUpdateConfig = useCheckPermissions(PermissionAction.UPDATE, 'custom_config_gotrue')
- if (!thirdPartyAuthEnabled) {
- return null
- }
-
if (isError) {
return (
{
const router = useRouter()
- const newRegions = ['EAST_US_2', 'WEST_EU_3', 'CENTRAL_EU_2', 'NORTH_EU']
- const enableNewRegions = useFlag('enableNewRegions')
const showNonProdFields =
process.env.NEXT_PUBLIC_ENVIRONMENT === 'local' ||
process.env.NEXT_PUBLIC_ENVIRONMENT === 'staging'
const availableRegions = getAvailableRegions(PROVIDERS[cloudProvider].id)
- const regionsArray = enableNewRegions
- ? Object.entries(availableRegions)
- : Object.entries(availableRegions).filter(([key]) => !newRegions.includes(key))
+ const regionsArray = Object.entries(availableRegions)
const { isLoading: isLoadingDefaultRegion } = useDefaultRegionQuery({
cloudProvider,
diff --git a/apps/studio/components/interfaces/Support/SupportFormV2.tsx b/apps/studio/components/interfaces/Support/SupportFormV2.tsx
index ba04ce4cbe6..360dacc27c1 100644
--- a/apps/studio/components/interfaces/Support/SupportFormV2.tsx
+++ b/apps/studio/components/interfaces/Support/SupportFormV2.tsx
@@ -10,12 +10,13 @@ import * as z from 'zod'
import { useDocsSearch, useParams, type DocsSearchResult as Page } from 'common'
import { CLIENT_LIBRARIES } from 'common/constants'
+import { getProjectAuthConfig } from 'data/auth/auth-config-query'
import { useSendSupportTicketMutation } from 'data/feedback/support-ticket-send'
import { useOrganizationsQuery } from 'data/organizations/organizations-query'
import type { Project } from 'data/projects/project-detail-query'
import { useProjectsQuery } from 'data/projects/projects-query'
import { useOrgSubscriptionQuery } from 'data/subscriptions/org-subscription-query'
-import { useFlag } from 'hooks/ui/useFlag'
+import { detectBrowser } from 'lib/helpers'
import { useProfile } from 'lib/profile'
import {
Badge,
@@ -37,8 +38,10 @@ import {
TextArea_Shadcn_,
} from 'ui'
import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout'
-import DisabledStateForFreeTier from './DisabledStateForFreeTier'
+import { MultiSelectV2 } from 'ui-patterns/MultiSelectDeprecated/MultiSelectV2'
import { DocsLinkGroup } from './DocsLink'
+import { IPV4SuggestionAlert } from './IPV4SuggestionAlert'
+import { LibrarySuggestions } from './LibrarySuggestions'
import { PlanExpectationInfoBox } from './PlanExpectationInfoBox'
import {
CATEGORY_OPTIONS,
@@ -46,12 +49,7 @@ import {
SERVICE_OPTIONS,
SEVERITY_OPTIONS,
} from './Support.constants'
-import { LibrarySuggestions } from './LibrarySuggestions'
-import { MultiSelectV2 } from 'ui-patterns/MultiSelectDeprecated/MultiSelectV2'
-import { IPV4SuggestionAlert } from './IPV4SuggestionAlert'
import { formatMessage, uploadAttachments } from './SupportForm.utils'
-import { detectBrowser } from 'lib/helpers'
-import { getProjectAuthConfig } from 'data/auth/auth-config-query'
const MAX_ATTACHMENTS = 5
const INCLUDE_DISCUSSIONS = ['Problem', 'Database_unresponsive']
@@ -68,7 +66,6 @@ export const SupportFormV2 = ({ setSentCategory, setSelectedProject }: SupportFo
const { profile } = useProfile()
const supabaseClient = useSupabaseClient()
const { ref, slug, category: urlCategory, subject: urlSubject, message: urlMessage } = useParams()
- const enableFreeSupport = useFlag('enableFreeSupport')
const uploadButtonRef = useRef(null)
const [isSubmitting, setIsSubmitting] = useState(false)
@@ -486,250 +483,239 @@ export const SupportFormV2 = ({ setSentCategory, setSelectedProject }: SupportFo
- {!enableFreeSupport || (category === 'Performance' && subscriptionPlanId === 'free') ? (
- o.value === category)?.label ?? ''}
- organizationSlug={organizationSlug}
- />
- ) : (
- <>
-
-
(
- 0 &&
- INCLUDE_DISCUSSIONS.includes(category) && (
-
- Check our
-
- Github discussions
-
-
- for a quick answer
-
- )
- }
- >
-
-
-
-
- )}
- />
-
- {docsResults.length > 0 && hasResults && (
-
-
- Suggested resources ({Math.min(docsResults.length, 5)})
-
- 3 ? 'h-[300px]' : ''}>
- {docsResults.slice(0, 5).map((page, i) => (
-
- ))}
-
-
- )}
-
-
- {category === 'Problem' && (
- (
-
-
-
+ (
+ 0 &&
+ INCLUDE_DISCUSSIONS.includes(category) && (
+
+ Check our
+
-
-
-
-
-
- {CLIENT_LIBRARIES.map((option) => (
-
- {option.language}
-
- ))}
-
-
-
-
-
- )}
- />
+ Github discussions
+
+
+ for a quick answer
+
+ )
+ }
+ >
+
+
+
+
)}
+ />
- {library.length > 0 && }
-
- {category !== 'Login_issues' && (
- (
-
-
-
- form.setValue('affectedServices', services.join(', '))
- }
- />
-
-
- )}
- />
- )}
-
- (
- field.value.includes(str)) && (
-
- )
- }
- >
-
-
-
-
- )}
- />
-
- {['Problem', 'Database_unresponsive', 'Performance'].includes(category) && (
- (
-
-
- field.onChange(value)}
- />
-
-
- )}
- />
- )}
-
-
-
-
Attachments
-
- Upload up to {MAX_ATTACHMENTS} screenshots that might be relevant to the issue
- that you're facing
-
-
-
-
- {uploadedDataUrls.map((x: any, idx: number) => (
-
-
removeUploadedFile(idx)}
- >
-
-
-
+ {docsResults.length > 0 && hasResults && (
+
+
+ Suggested resources ({Math.min(docsResults.length, 5)})
+
+
3 ? 'h-[300px]' : ''}>
+ {docsResults.slice(0, 5).map((page, i) => (
+
))}
- {uploadedFiles.length < MAX_ATTACHMENTS && (
- {
- if (uploadButtonRef.current) (uploadButtonRef.current as any).click()
- }}
- >
-
-
- )}
-
+
+ )}
+
-
-
-
We will contact you at
-
{respondToEmail}
-
-
-
- Please ensure you haven't blocked Hubspot in your emails
-
-
-
- }
- disabled={isSubmitting}
- loading={isSubmitting}
- >
- Send support request
-
-
-
- >
+ {category === 'Problem' && (
+ (
+
+
+
+
+
+
+
+
+ {CLIENT_LIBRARIES.map((option) => (
+
+ {option.language}
+
+ ))}
+
+
+
+
+
+ )}
+ />
)}
+
+ {library.length > 0 && }
+
+ {category !== 'Login_issues' && (
+ (
+
+
+ form.setValue('affectedServices', services.join(', '))}
+ />
+
+
+ )}
+ />
+ )}
+
+ (
+ field.value.includes(str)) && (
+
+ )
+ }
+ >
+
+
+
+
+ )}
+ />
+
+ {['Problem', 'Database_unresponsive', 'Performance'].includes(category) && (
+ (
+
+
+ field.onChange(value)}
+ />
+
+
+ )}
+ />
+ )}
+
+
+
+
Attachments
+
+ Upload up to {MAX_ATTACHMENTS} screenshots that might be relevant to the issue that
+ you're facing
+
+
+
+
+ {uploadedDataUrls.map((x: any, idx: number) => (
+
+
removeUploadedFile(idx)}
+ >
+
+
+
+ ))}
+ {uploadedFiles.length < MAX_ATTACHMENTS && (
+
{
+ if (uploadButtonRef.current) (uploadButtonRef.current as any).click()
+ }}
+ >
+
+
+ )}
+
+
+
+
+
+
We will contact you at
+
{respondToEmail}
+
+
+
+ Please ensure you haven't blocked Hubspot in your emails
+
+
+
+ }
+ disabled={isSubmitting}
+ loading={isSubmitting}
+ >
+ Send support request
+
+
+
)
diff --git a/apps/studio/components/layouts/ProjectIntegrationsLayout/ProjectIntegrations.Commands.tsx b/apps/studio/components/layouts/ProjectIntegrationsLayout/ProjectIntegrations.Commands.tsx
deleted file mode 100644
index 0601598e5a8..00000000000
--- a/apps/studio/components/layouts/ProjectIntegrationsLayout/ProjectIntegrations.Commands.tsx
+++ /dev/null
@@ -1,107 +0,0 @@
-import { Code } from 'lucide-react'
-
-import { COMMAND_MENU_SECTIONS } from 'components/interfaces/App/CommandMenu/CommandMenu.utils'
-import type { CommandOptions } from 'ui-patterns/CommandMenu'
-import { useRegisterCommands } from 'ui-patterns/CommandMenu'
-import { useParams } from 'common'
-import { orderCommandSectionsByPriority } from 'components/interfaces/App/CommandMenu/ordering'
-
-export function useDatabaseGotoCommands(options?: CommandOptions) {
- let { ref } = useParams()
- ref ||= '_'
-
- useRegisterCommands(
- COMMAND_MENU_SECTIONS.QUERY,
- [
- {
- id: 'run-sql',
- name: 'Run SQL',
- route: `/project/${ref}/sql/new`,
- icon: () => ,
- },
- ],
- {
- ...options,
- deps: [ref],
- orderSection: orderCommandSectionsByPriority,
- sectionMeta: { priority: 2 },
- }
- )
-
- useRegisterCommands(
- COMMAND_MENU_SECTIONS.NAVIGATE,
- [
- {
- id: 'nav-database-tables',
- name: 'Tables',
- value: 'Database: Tables',
- route: `/project/${ref}/database/tables`,
- defaultHidden: true,
- },
- {
- id: 'nav-database-triggers',
- name: 'Triggers',
- value: 'Database: Triggers',
- route: `/project/${ref}/database/triggers`,
- defaultHidden: true,
- },
- {
- id: 'nav-database-functions',
- name: 'Functions',
- value: 'Database: Functions',
- route: `/project/${ref}/database/functions`,
- defaultHidden: true,
- },
- {
- id: 'nav-database-extensions',
- name: 'Extensions',
- value: 'Database: Extensions',
- route: `/project/${ref}/database/extensions`,
- defaultHidden: true,
- },
- {
- id: 'nav-database-roles',
- name: 'Roles',
- value: 'Database: Roles',
- route: `/project/${ref}/database/roles`,
- defaultHidden: true,
- },
- {
- id: 'nav-database-replication',
- name: 'Replication',
- value: 'Database: Replication',
- route: `/project/${ref}/database/replication`,
- defaultHidden: true,
- },
- {
- id: 'nav-database-hooks',
- name: 'Webhooks',
- value: 'Database: Webhooks',
- route: `/project/${ref}/integrations/hooks`,
- defaultHidden: true,
- },
- {
- id: 'nav-database-backups',
- name: 'Backups',
- value: 'Database: Backups',
- route: `/project/${ref}/database/backups/scheduled`,
- defaultHidden: true,
- },
- {
- id: 'nav-database-wrappers',
- name: 'Wrappers',
- value: 'Database: Wrappers',
- route: `/project/${ref}/integrations/wrappers`,
- defaultHidden: true,
- },
- {
- id: 'nav-database-migrations',
- name: 'Migrations',
- value: 'Database: Migrations',
- route: `/project/${ref}/database/migrations`,
- defaultHidden: true,
- },
- ],
- { ...options, deps: [ref] }
- )
-}
diff --git a/apps/studio/components/layouts/ProjectIntegrationsLayout/ProjectIntegrationsLayout.tsx b/apps/studio/components/layouts/ProjectIntegrationsLayout/ProjectIntegrationsLayout.tsx
deleted file mode 100644
index b9496ba2ba6..00000000000
--- a/apps/studio/components/layouts/ProjectIntegrationsLayout/ProjectIntegrationsLayout.tsx
+++ /dev/null
@@ -1,67 +0,0 @@
-import { useRouter } from 'next/router'
-import { PropsWithChildren } from 'react'
-
-import { IS_PLATFORM } from 'common'
-import { ProductMenu } from 'components/ui/ProductMenu'
-import { useDatabaseExtensionsQuery } from 'data/database-extensions/database-extensions-query'
-import { useSelectedProject } from 'hooks/misc/useSelectedProject'
-import { withAuth } from 'hooks/misc/withAuth'
-import { useFlag } from 'hooks/ui/useFlag'
-import ProjectLayout from '../ProjectLayout/ProjectLayout'
-import { generateProjectIntegrationsMenu } from './ProjectIntegrationsMenu.utils'
-
-export interface ProjectIntegrationsLayoutProps {
- title: string
-}
-
-const ProjectIntegrationsMenu = () => {
- // if running on self-hosted, cron UI should be always enabled
- const cronUiEnabled = useFlag('cronUi') || !IS_PLATFORM
- const queuesUiEnabled = useFlag('queues')
- const project = useSelectedProject()
-
- const router = useRouter()
- const page = router.pathname.split('/')[4]
-
- const { data } = useDatabaseExtensionsQuery({
- projectRef: project?.ref,
- connectionString: project?.connectionString,
- })
-
- const pgNetExtensionExists = (data ?? []).find((ext) => ext.name === 'pg_net') !== undefined
- const graphqlExtensionExists = (data ?? []).find((ext) => ext.name === 'pg_graphql') !== undefined
- const pgmqExtensionExists = (data ?? []).find((ext) => ext.name === 'pgmq') !== undefined
-
- return (
- <>
-
- >
- )
-}
-
-const ProjectIntegrationsLayout = ({
- children,
- title,
-}: PropsWithChildren) => {
- return (
- }
- isBlocking={false}
- >
- {children}
-
- )
-}
-
-export default withAuth(ProjectIntegrationsLayout)
diff --git a/apps/studio/components/layouts/ProjectIntegrationsLayout/ProjectIntegrationsMenu.utils.tsx b/apps/studio/components/layouts/ProjectIntegrationsLayout/ProjectIntegrationsMenu.utils.tsx
deleted file mode 100644
index 1811d28d2ad..00000000000
--- a/apps/studio/components/layouts/ProjectIntegrationsLayout/ProjectIntegrationsMenu.utils.tsx
+++ /dev/null
@@ -1,84 +0,0 @@
-import type { ProductMenuGroup } from 'components/ui/ProductMenu/ProductMenu.types'
-import type { Project } from 'data/projects/project-detail-query'
-
-export const generateProjectIntegrationsMenu = (
- project?: Project,
- flags?: {
- pgNetExtensionExists: boolean
- cronUiEnabled: boolean
- queuesUiEnabled: boolean
- graphqlExtensionExists: boolean
- pgmqExtensionExists: boolean
- }
-): ProductMenuGroup[] => {
- const ref = project?.ref ?? 'default'
- const {
- pgNetExtensionExists,
- cronUiEnabled,
- queuesUiEnabled,
- graphqlExtensionExists,
- pgmqExtensionExists,
- } = flags || {}
-
- return [
- {
- title: 'Manage',
- items: [
- {
- name: 'Wrappers',
- key: 'wrappers',
- url: `/project/${ref}/integrations/wrappers`,
- items: [],
- },
- ...(!!pgNetExtensionExists
- ? [
- {
- name: 'Webhooks',
- key: 'hooks',
- url: `/project/${ref}/integrations/hooks`,
- items: [],
- },
- ]
- : []),
-
- ...(!!cronUiEnabled
- ? [
- {
- name: 'Cron',
- key: 'cron-jobs',
- url: `/project/${ref}/integrations/cron`,
- items: [],
- },
- ]
- : []),
- ...(!!graphqlExtensionExists
- ? [
- {
- name: 'GraphiQL',
- key: 'graphiql',
- url: `/project/${ref}/integrations/graphiql`,
- items: [],
- },
- ]
- : []),
- {
- name: 'Vault',
- key: 'vault',
- url: `/project/${ref}/integrations/vault/secrets`,
- items: [],
- label: 'BETA',
- },
- ...(!!(queuesUiEnabled && pgmqExtensionExists)
- ? [
- {
- name: 'Queues',
- key: 'queues',
- url: `/project/${ref}/integrations/queues`,
- items: [],
- },
- ]
- : []),
- ],
- },
- ]
-}
diff --git a/apps/studio/components/layouts/ProjectSettingsLayout/SettingsLayout.tsx b/apps/studio/components/layouts/ProjectSettingsLayout/SettingsLayout.tsx
index 8b5bdd929e3..81af839800a 100644
--- a/apps/studio/components/layouts/ProjectSettingsLayout/SettingsLayout.tsx
+++ b/apps/studio/components/layouts/ProjectSettingsLayout/SettingsLayout.tsx
@@ -47,7 +47,6 @@ const SettingsLayout = ({ title, children }: PropsWithChildren {
@@ -26,7 +25,6 @@ export const generateSettingsMenu = (
const edgeFunctionsEnabled = features?.edgeFunctions ?? true
const storageEnabled = features?.storage ?? true
const warehouseEnabled = features?.warehouse ?? false
- const logDrainsEnabled = features?.logDrains ?? false
const newDiskComputeEnabled = features?.diskAndCompute ?? false
return [
@@ -136,7 +134,7 @@ export const generateSettingsMenu = (
},
]
: []),
- ...(IS_PLATFORM && logDrainsEnabled
+ ...(IS_PLATFORM
? [
{
name: `Log Drains`,
diff --git a/apps/studio/pages/account/me.tsx b/apps/studio/pages/account/me.tsx
index c94b58eb601..9c1f90281ab 100644
--- a/apps/studio/pages/account/me.tsx
+++ b/apps/studio/pages/account/me.tsx
@@ -2,7 +2,6 @@ import {
AccountInformation,
AnalyticsSettings,
ThemeSettings,
- ThemeSettingsOld,
} from 'components/interfaces/Account/Preferences'
import { AccountDeletion } from 'components/interfaces/Account/Preferences/AccountDeletion'
import { ProfileInformation } from 'components/interfaces/Account/Preferences/ProfileInformation'
@@ -11,7 +10,6 @@ import AlertError from 'components/ui/AlertError'
import Panel from 'components/ui/Panel'
import { GenericSkeletonLoader } from 'components/ui/ShimmeringLoader'
import { useIsFeatureEnabled } from 'hooks/misc/useIsFeatureEnabled'
-import { useFlag } from 'hooks/ui/useFlag'
import { useProfile } from 'lib/profile'
import type { NextPageWithLayout } from 'types'
@@ -41,11 +39,8 @@ export default User
const ProfileCard = () => {
const profileUpdateEnabled = useIsFeatureEnabled('profile:update')
-
const { profile, error, isLoading, isError, isSuccess } = useProfile()
- const experimentalThemeEnabled = useFlag('enableExperimentalTheme')
-
return (
{isLoading && (
@@ -71,7 +66,9 @@ const ProfileCard = () => {
>
)}
- {experimentalThemeEnabled ? : }
+