From d12332ea5a25c8b59f44728aee5a93d09157ff9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kevin=20Gr=C3=BCneberg?= Date: Thu, 4 Jan 2024 17:27:49 +0100 Subject: [PATCH] chore: xmas cleanup (#19938) --- .../components/grid/SupabaseGrid.utils.ts | 2 +- .../grid/components/editor/JsonEditor.tsx | 26 +- .../footer/pagination/Pagination.tsx | 1 - .../grid/components/grid/ColumnHeader.tsx | 2 +- .../grid/components/header/sort/SortRow.tsx | 4 +- apps/studio/components/grid/constants.ts | 2 +- apps/studio/components/grid/utils/hooks.tsx | 11 - apps/studio/components/grid/utils/index.ts | 1 - .../FeaturePreview/FeaturePreviewContext.tsx | 6 - .../BasicAuthSettingsForm.tsx | 1 - .../Auth/Policies/Policies.utils.ts | 4 +- .../interfaces/Billing/InvoiceStatusBadge.tsx | 2 +- .../Database/Backups/PITR/PITR.utils.ts | 8 - .../Database/Backups/PITR/PITRSelection.tsx | 1 - .../Database/Hooks/Hooks.constants.ts | 15 - .../Publications/PublicationsTables.tsx | 27 - .../Database/Triggers/CreateTrigger.tsx | 1 - .../Wrappers/WrapperDynamicColumns.tsx | 2 +- .../Database/Wrappers/Wrappers.constants.ts | 30 - .../Database/Wrappers/Wrappers.utils.ts | 2 +- .../components/interfaces/Docs/RpcContent.tsx | 1 - .../interfaces/GraphQL/GraphiQL.tsx | 2 +- .../interfaces/Home/ProjectUsageSection.tsx | 1 - .../interfaces/Home/ServiceStatus.tsx | 3 +- .../Integrations/IntegrationPanels.tsx | 8 +- .../Integrations-Vercel.constants.ts | 2 +- .../Integrations/OrganizationPicker.tsx | 5 - .../BillingBreakdown.constants.ts | 9 - .../Subscription/Subscription.tsx | 1 - .../Organization/BillingSettings/helpers.ts | 2 +- .../Organization/OAuthApps/RevokeAppModal.tsx | 2 +- .../TeamSettings/MemberActions.tsx | 1 - .../interfaces/Organization/Usage/Compute.tsx | 2 +- .../Organization/Usage/Usage.constants.tsx | 2 - .../interfaces/Organization/Usage/Usage.tsx | 2 +- .../Organization/Usage/Usage.utils.ts | 4 +- .../Inspector/NoChannelEmptyState.tsx | 1 - .../Realtime/Inspector/useRealtimeMessages.ts | 3 - .../interfaces/Reports/ReportFilterBar.tsx | 9 - .../interfaces/Reports/Reports.constants.ts | 3 - .../components/interfaces/Reports/Reports.tsx | 2 +- .../Reports/renderers/ApiRenderers.tsx | 1 - .../SQLEditor/AISchemaSuggestionPopover.tsx | 2 +- .../SQLEditor/DownloadSnippetModal.tsx | 2 +- .../interfaces/SQLEditor/RenameQueryModal.tsx | 2 +- .../SQLEditor/SQLEditor.constants.ts | 2 +- .../interfaces/SQLEditor/SQLEditor.utils.ts | 12 - .../UtilityPanel/UtilityTabResults.tsx | 8 +- .../components/interfaces/SQLEditor/index.ts | 4 - .../Settings/Database/ConnectionPooling.tsx | 2 +- .../DatabaseConnectionString.tsx | 2 +- .../CustomDomainsConfigureHostname.tsx | 3 +- .../Infrastructure/InfrastructureActivity.tsx | 2 +- .../InstanceConfiguration.tsx | 2 +- .../GitHubIntegrationConnectionForm.tsx | 9 +- .../VercelIntegrationConnectionForm.tsx | 17 +- .../Settings/Logs/LogEventChart.tsx | 4 +- .../DatabaseApiSelectionRender.tsx | 7 - .../FunctionInvocationSelectionRender.tsx | 7 - .../Settings/Logs/LogTable.stories.tsx | 13 +- .../Settings/Logs/Logs.constants.ts | 6 - .../interfaces/Settings/Logs/Logs.utils.ts | 4 +- .../Settings/Logs/LogsFormatters.tsx | 14 - .../Settings/Logs/LogsPreviewer.tsx | 1 - .../interfaces/Settings/Logs/index.ts | 1 - .../interfaces/Support/Support.constants.ts | 18 - .../RowEditor/JsonEditor/JsonEditor.tsx | 2 +- .../RowEditor/RowEditor.utils.ts | 2 +- .../SidePanelEditor.constants.ts | 13 +- .../SpreadsheetImport.utils.ts | 2 +- .../TableEditor/HeaderTitle.tsx | 2 - .../layouts/AccountLayout/AccountLayout.tsx | 2 - .../layouts/AccountLayout/WithSidebar.tsx | 2 +- .../BranchingPITRNotice.tsx | 2 - .../BranchingPlanNotice.tsx | 1 - .../IntegrationWindowLayout.tsx | 1 - .../NotificationRows.utils.tsx | 1 - apps/studio/components/layouts/index.ts | 3 +- .../components/to-be-cleaned/ListIcons.tsx | 1 - .../to-be-cleaned/Reports/Reports.utils.ts | 24 - .../Storage/Storage.constants.ts | 10 - .../to-be-cleaned/Storage/Storage.utils.ts | 19 +- .../StorageExplorer/FileExplorerHeader.tsx | 6 - .../StorageExplorer/StorageExplorer.tsx | 2 +- .../to-be-cleaned/forms/AutoTextArea.tsx | 26 +- .../components/ui/Charts/Charts.utils.tsx | 1 - .../ui/Charts/Sparkline.stories.tsx | 47 - .../studio/components/ui/Charts/Sparkline.tsx | 43 - .../ui/Charts/StackedAreaChart.stories.tsx | 864 ------------------ .../components/ui/Charts/StackedAreaChart.tsx | 123 --- .../ui/Charts/StackedBarChart.stories.tsx | 3 +- .../ui/DatePicker/DatePicker.types.ts | 8 - apps/studio/components/ui/Flag/Flag.tsx | 17 - .../components/ui/Flag/FlagProvider.tsx | 1 - .../components/ui/Forms/FormSection.tsx | 2 +- .../components/ui/MultiSelect/index.tsx | 10 +- .../data/access-tokens/access-tokens-query.ts | 11 +- .../api-authorization-query.ts | 15 +- .../data/auth/session-access-token-query.ts | 13 +- apps/studio/data/branches/branch-query.ts | 31 - .../jwt-secret-updating-status-query.ts | 15 - apps/studio/data/config/project-api-query.ts | 15 +- .../config/project-postgrest-config-query.ts | 17 +- .../data/config/project-settings-query.ts | 15 +- .../config/project-storage-config-query.ts | 15 +- .../project-upgrade-eligibility-query.ts | 17 +- .../config/project-upgrade-status-query.ts | 16 - .../database-extensions-query.ts | 15 +- .../database-functions-query.ts | 15 +- .../database-policies-query.ts | 19 +- .../database-publications-query.ts | 15 +- .../database-roles/database-roles-query.ts | 15 +- .../database-triggers-query.ts | 15 +- .../data/database/entity-definitions-query.ts | 18 +- .../database/foreign-key-constraints-query.ts | 18 +- apps/studio/data/database/functions-query.ts | 18 +- apps/studio/data/database/keywords-query.ts | 18 +- apps/studio/data/database/migrations-query.ts | 18 +- .../database/pooling-configuration-query.ts | 15 +- .../data/database/table-columns-query.ts | 3 +- .../data/database/table-definition-query.ts | 18 +- .../data/database/view-definition-query.ts | 18 +- .../data/docs/project-json-schema-query.ts | 15 +- .../edge-functions/edge-function-query.ts | 15 +- .../edge-functions/edge-functions-query.ts | 15 +- .../data/entity-types/entity-type-query.ts | 30 +- apps/studio/data/fdw/fdws-query.ts | 18 +- .../foreign-tables/foreign-tables-query.ts | 49 - ...ions-vercel-installed-connections-query.ts | 60 -- .../materialized-views-query.ts | 52 -- .../network-restrictions-query.ts | 15 +- .../data/notifications/notifications-query.ts | 11 +- .../data/oauth/authorized-apps-query.ts | 15 +- apps/studio/data/oauth/oauth-apps-query.ts | 15 +- .../data/organizations/organizations-query.ts | 10 - .../data/permissions/permissions-query.ts | 11 +- .../data/platform/platform-status-query.ts | 11 +- .../data/profile/password-check-mutation.ts | 43 - .../pooler-service-status-query.ts | 52 -- apps/studio/data/sql/execute-sql-query.ts | 42 +- .../ssl-enforcement/ssl-enforcement-query.ts | 15 +- .../data/table-rows/table-rows-count-query.ts | 33 +- .../data/table-rows/table-rows-query.ts | 38 +- apps/studio/hooks/deprecated.ts | 75 +- apps/studio/hooks/ui/index.ts | 1 - apps/studio/hooks/ui/useIsActive.ts | 23 - apps/studio/lib/api/apiHelpers.ts | 58 +- apps/studio/lib/auth.tsx | 8 +- apps/studio/lib/configcat.ts | 2 +- apps/studio/lib/constants/index.ts | 67 -- apps/studio/lib/constants/infrastructure.ts | 28 +- apps/studio/lib/constants/metrics.tsx | 77 -- apps/studio/lib/gotrue.ts | 2 - apps/studio/lib/helpers.ts | 30 - apps/studio/lib/integration-utils.ts | 4 +- apps/studio/lib/local-storage.ts | 3 +- apps/studio/lib/role-impersonation.ts | 11 +- .../StorageExploreStore.types.ts | 30 - apps/studio/pages/new/index.tsx | 1 - .../[ref]/functions/[functionSlug]/index.tsx | 1 - .../pages/project/[ref]/reports/database.tsx | 2 +- .../pages/project/[ref]/sql/quickstarts.tsx | 2 +- .../pages/project/[ref]/sql/templates.tsx | 2 +- .../AuthProvidersFormValidation.tsx | 2 +- apps/studio/stores/pgmeta/TableStore.ts | 23 +- apps/studio/stores/projectContentStore.ts | 4 +- .../pages/projects/PreviewFilterPanel.test.js | 57 +- .../pages/projects/reports/api-report.test.js | 47 - 168 files changed, 132 insertions(+), 3009 deletions(-) delete mode 100644 apps/studio/components/grid/utils/hooks.tsx delete mode 100644 apps/studio/components/interfaces/SQLEditor/index.ts delete mode 100644 apps/studio/components/ui/Charts/Sparkline.stories.tsx delete mode 100644 apps/studio/components/ui/Charts/Sparkline.tsx delete mode 100644 apps/studio/components/ui/Charts/StackedAreaChart.stories.tsx delete mode 100644 apps/studio/components/ui/Charts/StackedAreaChart.tsx delete mode 100644 apps/studio/components/ui/Flag/Flag.tsx delete mode 100644 apps/studio/data/branches/branch-query.ts delete mode 100644 apps/studio/data/foreign-tables/foreign-tables-query.ts delete mode 100644 apps/studio/data/integrations/integrations-vercel-installed-connections-query.ts delete mode 100644 apps/studio/data/materialized-views/materialized-views-query.ts delete mode 100644 apps/studio/data/profile/password-check-mutation.ts delete mode 100644 apps/studio/data/service-status/pooler-service-status-query.ts delete mode 100644 apps/studio/hooks/ui/useIsActive.ts delete mode 100644 apps/studio/localStores/storageExplorer/StorageExploreStore.types.ts diff --git a/apps/studio/components/grid/SupabaseGrid.utils.ts b/apps/studio/components/grid/SupabaseGrid.utils.ts index bf99076c468..5894e1cd472 100644 --- a/apps/studio/components/grid/SupabaseGrid.utils.ts +++ b/apps/studio/components/grid/SupabaseGrid.utils.ts @@ -177,7 +177,7 @@ export function parseSupaTable( } } -export function onLoadStorage(storageRef: string, tableName: string, schema?: string | null) { +function onLoadStorage(storageRef: string, tableName: string, schema?: string | null) { const storageKey = getStorageKey(STORAGE_KEY_PREFIX, storageRef) const jsonStr = localStorage.getItem(storageKey) if (!jsonStr) return diff --git a/apps/studio/components/grid/components/editor/JsonEditor.tsx b/apps/studio/components/grid/components/editor/JsonEditor.tsx index 7a4250b89fc..1d6de055297 100644 --- a/apps/studio/components/grid/components/editor/JsonEditor.tsx +++ b/apps/studio/components/grid/components/editor/JsonEditor.tsx @@ -5,7 +5,7 @@ import { IconMaximize, Popover } from 'ui' import { BlockKeys, MonacoEditor, NullValue } from 'components/grid/components/common' import { useTrackedState } from 'components/grid/store' -import { tryParseJson } from 'lib/helpers' +import { prettifyJSON, tryParseJson } from 'lib/helpers' import { isNil } from 'lodash' interface JsonEditorProps @@ -147,29 +147,7 @@ export const JsonEditor = ({ ) } -export const prettifyJSON = (value: string) => { - if (value.length > 0) { - try { - return JSON.stringify(JSON.parse(value), undefined, 2) - } catch (err) { - // dont need to throw error, just return text value - // Users have to fix format if they want to save - return value - } - } else { - return value - } -} - -export const minifyJSON = (value: string) => { - try { - return JSON.stringify(JSON.parse(value)) - } catch (err) { - throw err - } -} - -export const verifyJSON = (value: string) => { +const verifyJSON = (value: string) => { try { JSON.parse(value) return true diff --git a/apps/studio/components/grid/components/footer/pagination/Pagination.tsx b/apps/studio/components/grid/components/footer/pagination/Pagination.tsx index 5d9de68d070..938270a48db 100644 --- a/apps/studio/components/grid/components/footer/pagination/Pagination.tsx +++ b/apps/studio/components/grid/components/footer/pagination/Pagination.tsx @@ -1,6 +1,5 @@ import { useEffect, useState } from 'react' -import AwesomeDebouncePromise from 'awesome-debounce-promise' import { formatFilterURLParams } from 'components/grid/SupabaseGrid.utils' import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext' import ConfirmationModal from 'components/ui/ConfirmationModal' diff --git a/apps/studio/components/grid/components/grid/ColumnHeader.tsx b/apps/studio/components/grid/components/grid/ColumnHeader.tsx index 8fd15a6bb3f..a0443ce381e 100644 --- a/apps/studio/components/grid/components/grid/ColumnHeader.tsx +++ b/apps/studio/components/grid/components/grid/ColumnHeader.tsx @@ -1,7 +1,7 @@ import * as Tooltip from '@radix-ui/react-tooltip' import { getForeignKeyCascadeAction } from 'components/interfaces/TableGridEditor/SidePanelEditor/ColumnEditor/ColumnEditor.utils' import { FOREIGN_KEY_CASCADE_ACTION } from 'data/database/database-query-constants' -import { XYCoord } from 'dnd-core' +import type { XYCoord } from 'dnd-core' import * as React from 'react' import { useDrag, useDrop } from 'react-dnd' import { IconArrowRight, IconKey, IconLink, IconLock } from 'ui' diff --git a/apps/studio/components/grid/components/header/sort/SortRow.tsx b/apps/studio/components/grid/components/header/sort/SortRow.tsx index d9fac2859ee..3ccc908f691 100644 --- a/apps/studio/components/grid/components/header/sort/SortRow.tsx +++ b/apps/studio/components/grid/components/header/sort/SortRow.tsx @@ -1,6 +1,6 @@ -import { XYCoord } from 'dnd-core' +import type { XYCoord } from 'dnd-core' import { memo, useRef } from 'react' -import { DropTargetMonitor, useDrag, useDrop } from 'react-dnd' +import { useDrag, useDrop } from 'react-dnd' import { Button, IconMenu, IconX, Toggle } from 'ui' import { DragItem, Sort, SupaTable } from 'components/grid/types' diff --git a/apps/studio/components/grid/constants.ts b/apps/studio/components/grid/constants.ts index 4750c7db7c6..6fe451e7931 100644 --- a/apps/studio/components/grid/constants.ts +++ b/apps/studio/components/grid/constants.ts @@ -15,7 +15,7 @@ export const ADD_COLUMN_KEY = 'supabase-grid-add-column' export const ERROR_PRIMARY_KEY_NOTFOUND = 'Please add a primary key column to your table to update or delete rows' -export const RLS_ACKNOWLEDGED_KEY = 'supabase-acknowledge-rls-warning' +const RLS_ACKNOWLEDGED_KEY = 'supabase-acknowledge-rls-warning' export const rlsAcknowledgedKey = (tableID?: string | number) => `${RLS_ACKNOWLEDGED_KEY}-${String(tableID)}` diff --git a/apps/studio/components/grid/utils/hooks.tsx b/apps/studio/components/grid/utils/hooks.tsx deleted file mode 100644 index 9614449501d..00000000000 --- a/apps/studio/components/grid/utils/hooks.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import * as React from 'react' - -export function useFocusRef(isCellSelected: boolean) { - const ref = React.useRef(null) - React.useLayoutEffect(() => { - if (!isCellSelected) return - ref.current?.focus({ preventScroll: true }) - }, [isCellSelected]) - - return ref -} diff --git a/apps/studio/components/grid/utils/index.ts b/apps/studio/components/grid/utils/index.ts index 02c0d00b230..819f23dc149 100644 --- a/apps/studio/components/grid/utils/index.ts +++ b/apps/studio/components/grid/utils/index.ts @@ -1,4 +1,3 @@ export * from './common' export * from './column' -export * from './hooks' export * from './types' diff --git a/apps/studio/components/interfaces/App/FeaturePreview/FeaturePreviewContext.tsx b/apps/studio/components/interfaces/App/FeaturePreview/FeaturePreviewContext.tsx index 80eef0fa180..e5c64bf162b 100644 --- a/apps/studio/components/interfaces/App/FeaturePreview/FeaturePreviewContext.tsx +++ b/apps/studio/components/interfaces/App/FeaturePreview/FeaturePreviewContext.tsx @@ -14,8 +14,6 @@ const FeaturePreviewContext = createContext({ onUpdateFlag: noop, }) -export default FeaturePreviewContext - export const useFeaturePreviewContext = () => useContext(FeaturePreviewContext) export const FeaturePreviewContextProvider = ({ children }: PropsWithChildren<{}>) => { @@ -53,10 +51,6 @@ export const FeaturePreviewContextProvider = ({ children }: PropsWithChildren<{} } // Helpers -export const useIsNavigationPreviewEnabled = () => { - const { flags } = useFeaturePreviewContext() - return flags[LOCAL_STORAGE_KEYS.UI_PREVIEW_NAVIGATION_LAYOUT] -} export const useIsAPIDocsSidePanelEnabled = () => { const { flags } = useFeaturePreviewContext() diff --git a/apps/studio/components/interfaces/Auth/BasicAuthSettingsForm/BasicAuthSettingsForm.tsx b/apps/studio/components/interfaces/Auth/BasicAuthSettingsForm/BasicAuthSettingsForm.tsx index 31ff63a854d..edec80576b2 100644 --- a/apps/studio/components/interfaces/Auth/BasicAuthSettingsForm/BasicAuthSettingsForm.tsx +++ b/apps/studio/components/interfaces/Auth/BasicAuthSettingsForm/BasicAuthSettingsForm.tsx @@ -14,7 +14,6 @@ import { IconEyeOff, Input, InputNumber, - Radio, Toggle, } from 'ui' import { boolean, number, object, string } from 'yup' diff --git a/apps/studio/components/interfaces/Auth/Policies/Policies.utils.ts b/apps/studio/components/interfaces/Auth/Policies/Policies.utils.ts index 046c4fb16bf..f0b1ea30fd2 100644 --- a/apps/studio/components/interfaces/Auth/Policies/Policies.utils.ts +++ b/apps/studio/components/interfaces/Auth/Policies/Policies.utils.ts @@ -58,9 +58,7 @@ export const createSQLPolicy = ( return {} } -export const createSQLStatementForCreatePolicy = ( - policyFormFields: PolicyFormField -): PolicyForReview => { +const createSQLStatementForCreatePolicy = (policyFormFields: PolicyFormField): PolicyForReview => { const { name, definition, check, command, schema, table } = policyFormFields const roles = policyFormFields.roles.length === 0 ? ['public'] : policyFormFields.roles const description = `Add policy for the ${command} operation under the policy "${name}"` diff --git a/apps/studio/components/interfaces/Billing/InvoiceStatusBadge.tsx b/apps/studio/components/interfaces/Billing/InvoiceStatusBadge.tsx index c1eb93e70ac..4e5ca362712 100644 --- a/apps/studio/components/interfaces/Billing/InvoiceStatusBadge.tsx +++ b/apps/studio/components/interfaces/Billing/InvoiceStatusBadge.tsx @@ -7,7 +7,7 @@ interface InvoiceStatusBadgeProps { status: InvoiceStatus } -export const invoiceStatusMapping: Record = { +const invoiceStatusMapping: Record = { [InvoiceStatus.DRAFT]: { label: 'Upcoming', badgeColor: 'yellow', diff --git a/apps/studio/components/interfaces/Database/Backups/PITR/PITR.utils.ts b/apps/studio/components/interfaces/Database/Backups/PITR/PITR.utils.ts index c0edb57e96a..878c553fd9e 100644 --- a/apps/studio/components/interfaces/Database/Backups/PITR/PITR.utils.ts +++ b/apps/studio/components/interfaces/Database/Backups/PITR/PITR.utils.ts @@ -40,14 +40,6 @@ export const formatTimeToTimeString = (time: Time) => { )}:${formatNumberToTwoDigits(time.s)}` } -export const getTimezoneOffsetText = (timezone: Timezone) => { - return timezone.text.split(')')[0].slice(1) -} - -export const getTimezoneOffset = (timezone: Timezone) => { - return timezone.text.split(')')[0].slice(4) -} - export function constrainDateToRange(current: dayjs.Dayjs, lower: dayjs.Dayjs, upper: dayjs.Dayjs) { if (current.isBefore(lower)) { return lower diff --git a/apps/studio/components/interfaces/Database/Backups/PITR/PITRSelection.tsx b/apps/studio/components/interfaces/Database/Backups/PITR/PITRSelection.tsx index 790bddce705..6b1b09c71a7 100644 --- a/apps/studio/components/interfaces/Database/Backups/PITR/PITRSelection.tsx +++ b/apps/studio/components/interfaces/Database/Backups/PITR/PITRSelection.tsx @@ -15,7 +15,6 @@ import { IconAlertTriangle, IconChevronLeft, IconChevronRight, - IconExternalLink, IconHelpCircle, Modal, } from 'ui' diff --git a/apps/studio/components/interfaces/Database/Hooks/Hooks.constants.ts b/apps/studio/components/interfaces/Database/Hooks/Hooks.constants.ts index 4470b0e1e40..eef13828364 100644 --- a/apps/studio/components/interfaces/Database/Hooks/Hooks.constants.ts +++ b/apps/studio/components/interfaces/Database/Hooks/Hooks.constants.ts @@ -1,20 +1,5 @@ import { BASE_PATH, IS_PLATFORM } from 'lib/constants' -export const ENABLED_MODE_OPTIONS = [ - { label: 'Origin', value: 'ORIGIN', description: 'This is the default behaviour' }, - { - label: 'Replica', - value: 'REPLICA', - description: 'Will only fire if the session is in “replica” mode', - }, - { - label: 'Always', - value: 'ALWAYS', - description: 'Will fire regardless of the current replication role', - }, - { label: 'Disabled', value: 'DISABLED', description: 'Will not fire' }, -] - export const HOOK_EVENTS = [ { label: 'Insert', diff --git a/apps/studio/components/interfaces/Database/Publications/PublicationsTables.tsx b/apps/studio/components/interfaces/Database/Publications/PublicationsTables.tsx index 80e326943b1..2365eb1c034 100644 --- a/apps/studio/components/interfaces/Database/Publications/PublicationsTables.tsx +++ b/apps/studio/components/interfaces/Database/Publications/PublicationsTables.tsx @@ -50,33 +50,6 @@ const PublicationsTables = ({ selectedPublication, onSelectBack }: PublicationsT } ) - // const publication = selectedPublication - // const enabledForAllTables = publication.tables == null - - // const toggleReplicationForAllTables = async (publication: any, disable: boolean) => { - // const toggle = disable ? 'disable' : 'enable' - // ConfirmAlert({ - // title: 'Confirm', - // type: 'warn', - // message: `Are you sure you want to ${toggle} replication for all tables in ${publication.name}?`, - // onAsyncConfirm: async () => { - // try { - // const res: any = await meta.publications.recreate(publication.id) - // if (res.error) { - // throw res.error - // } else { - // onPublicationUpdated(res) - // } - // } catch (error: any) { - // ui.setNotification({ - // category: 'error', - // message: `Failed to toggle replication for all tables: ${error.message}`, - // }) - // } - // }, - // }) - // } - return ( <>
diff --git a/apps/studio/components/interfaces/Database/Triggers/CreateTrigger.tsx b/apps/studio/components/interfaces/Database/Triggers/CreateTrigger.tsx index 0ff14b3e5c4..462bb509098 100644 --- a/apps/studio/components/interfaces/Database/Triggers/CreateTrigger.tsx +++ b/apps/studio/components/interfaces/Database/Triggers/CreateTrigger.tsx @@ -1,4 +1,3 @@ -import { PostgresFunction } from '@supabase/postgres-meta' import { has, isEmpty, mapValues, union, without } from 'lodash' import { makeAutoObservable } from 'mobx' import { observer, useLocalObservable } from 'mobx-react-lite' diff --git a/apps/studio/components/interfaces/Database/Wrappers/WrapperDynamicColumns.tsx b/apps/studio/components/interfaces/Database/Wrappers/WrapperDynamicColumns.tsx index 62ca0eff63f..1f23ca8f297 100644 --- a/apps/studio/components/interfaces/Database/Wrappers/WrapperDynamicColumns.tsx +++ b/apps/studio/components/interfaces/Database/Wrappers/WrapperDynamicColumns.tsx @@ -1,7 +1,7 @@ import ColumnType from 'components/interfaces/TableGridEditor/SidePanelEditor/ColumnEditor/ColumnType' import useLatest from 'hooks/misc/useLatest' import { useEffect, useReducer } from 'react' -import { Button, IconX, IconXCircle, Input } from 'ui' +import { Button, IconX, Input } from 'ui' export type SimpleColumn = { id: number diff --git a/apps/studio/components/interfaces/Database/Wrappers/Wrappers.constants.ts b/apps/studio/components/interfaces/Database/Wrappers/Wrappers.constants.ts index c1c7562640c..6dbc3a8b2af 100644 --- a/apps/studio/components/interfaces/Database/Wrappers/Wrappers.constants.ts +++ b/apps/studio/components/interfaces/Database/Wrappers/Wrappers.constants.ts @@ -219,13 +219,6 @@ export const WRAPPERS: WrapperMeta[] = [ required: true, type: 'text', }, - // { - // name: 'rowid_column', - // label: 'Row ID Column', - // defaultValue: 'id', - // editable: true, - // required: true, - // }, ], }, { @@ -367,13 +360,6 @@ export const WRAPPERS: WrapperMeta[] = [ required: true, type: 'text', }, - // { - // name: 'rowid_column', - // label: 'Row ID Column', - // defaultValue: 'id', - // editable: true, - // required: true, - // }, ], }, { @@ -413,13 +399,6 @@ export const WRAPPERS: WrapperMeta[] = [ required: true, type: 'text', }, - // { - // name: 'rowid_column', - // label: 'Row ID Column', - // defaultValue: 'id', - // editable: true, - // required: true, - // }, ], }, ], @@ -450,15 +429,6 @@ export const WRAPPERS: WrapperMeta[] = [ isTextArea: true, urlHelper: 'https://firebase.google.com/docs/admin/setup#initialize-sdk', }, - // NOTE(alaister): this is a valid option, but it may confuse the basic use case - // so I'm omitting it for now. We can add back once we make it's use clearer. - // { - // name: 'access_token', - // label: 'OAuth2 token to access Firebase', - // required: false, - // encrypted: false, - // hidden: false, - // }, ], }, tables: [ diff --git a/apps/studio/components/interfaces/Database/Wrappers/Wrappers.utils.ts b/apps/studio/components/interfaces/Database/Wrappers/Wrappers.utils.ts index a843d72916d..06e49f0beb7 100644 --- a/apps/studio/components/interfaces/Database/Wrappers/Wrappers.utils.ts +++ b/apps/studio/components/interfaces/Database/Wrappers/Wrappers.utils.ts @@ -1,4 +1,4 @@ -import { WRAPPERS, WRAPPER_HANDLERS } from './Wrappers.constants' +import { WRAPPER_HANDLERS } from './Wrappers.constants' import { WrapperMeta } from './Wrappers.types' export const makeValidateRequired = (options: { name: string; required: boolean }[]) => { diff --git a/apps/studio/components/interfaces/Docs/RpcContent.tsx b/apps/studio/components/interfaces/Docs/RpcContent.tsx index 73c541a015d..b7ba1558eb2 100644 --- a/apps/studio/components/interfaces/Docs/RpcContent.tsx +++ b/apps/studio/components/interfaces/Docs/RpcContent.tsx @@ -32,7 +32,6 @@ const RpcContent = ({ const rpcParams = Object.entries(rpcParamsObject) .map(([k, v]: any) => ({ name: k, ...v })) .filter((x) => !!x.name) - const paramList = rpcParams.map((x) => x.type).join(', ') return ( <> diff --git a/apps/studio/components/interfaces/GraphQL/GraphiQL.tsx b/apps/studio/components/interfaces/GraphQL/GraphiQL.tsx index 0aa2b8bdb15..29c72835740 100644 --- a/apps/studio/components/interfaces/GraphQL/GraphiQL.tsx +++ b/apps/studio/components/interfaces/GraphQL/GraphiQL.tsx @@ -71,7 +71,7 @@ interface GraphiQLInterfaceProps { theme: 'dark' | 'light' } -export const GraphiQLInterface = ({ theme }: GraphiQLInterfaceProps) => { +const GraphiQLInterface = ({ theme }: GraphiQLInterfaceProps) => { const editorContext = useEditorContext({ nonNull: true }) const executionContext = useExecutionContext({ nonNull: true }) const schemaContext = useSchemaContext({ nonNull: true }) diff --git a/apps/studio/components/interfaces/Home/ProjectUsageSection.tsx b/apps/studio/components/interfaces/Home/ProjectUsageSection.tsx index 31604153d0b..1f089979f4c 100644 --- a/apps/studio/components/interfaces/Home/ProjectUsageSection.tsx +++ b/apps/studio/components/interfaces/Home/ProjectUsageSection.tsx @@ -1,4 +1,3 @@ -import { useParams } from 'common' import { observer } from 'mobx-react-lite' import { IconAlertCircle } from 'ui' diff --git a/apps/studio/components/interfaces/Home/ServiceStatus.tsx b/apps/studio/components/interfaces/Home/ServiceStatus.tsx index 600ac7b57d1..8999e80dcc8 100644 --- a/apps/studio/components/interfaces/Home/ServiceStatus.tsx +++ b/apps/studio/components/interfaces/Home/ServiceStatus.tsx @@ -35,8 +35,7 @@ const ServiceStatus = () => { // [Joshen] Need pooler service check eventually const { data: status, isLoading } = useProjectServiceStatusQuery({ projectRef: ref }) - const { data: edgeFunctionsStatus, isLoading: isLoadingEdgeFunctions } = - useEdgeFunctionServiceStatusQuery({ projectRef: ref }) + const { data: edgeFunctionsStatus } = useEdgeFunctionServiceStatusQuery({ projectRef: ref }) const { isLoading: isLoadingPostgres, isSuccess: isSuccessPostgres } = usePostgresServiceStatusQuery({ projectRef: ref, diff --git a/apps/studio/components/interfaces/Integrations/IntegrationPanels.tsx b/apps/studio/components/interfaces/Integrations/IntegrationPanels.tsx index 2bad1d4eeeb..d795d676b50 100644 --- a/apps/studio/components/interfaces/Integrations/IntegrationPanels.tsx +++ b/apps/studio/components/interfaces/Integrations/IntegrationPanels.tsx @@ -68,7 +68,7 @@ const Avatar = ({ src }: { src: string | undefined }) => { } const IntegrationInstallation = React.forwardRef( - ({ title, integration, disabled, ...props }, ref) => { + ({ integration, disabled, ...props }, ref) => { const IntegrationIconBlock = () => { return (
@@ -206,7 +206,7 @@ const IntegrationConnection = React.forwardRef( - ({ className, connection, type, ...props }, ref) => { + ({ connection, type, ...props }, ref) => { const { data: projects } = useProjectsQuery() const project = projects?.find((project) => project.ref === connection.supabase_project_ref) @@ -246,7 +246,7 @@ const EmptyIntegrationConnection = React.forwardRef< orgSlug?: string onClick: () => void } ->(({ className, showNode = true, orgSlug = '_', onClick, ...props }, ref) => { +>(({ className, showNode = true, onClick, ...props }, ref) => { return (
( - ({ className, name, markdown = '', showNode = true, ...props }, ref) => { + ({ className, markdown = '', showNode = true, ...props }, ref) => { return (
{ permissions ?? [] ) - const isExpired = isInviteExpired(member?.invited_at ?? '') const isPendingInviteAcceptance = member.invited_id const roleId = member.role_ids?.[0] ?? -1 diff --git a/apps/studio/components/interfaces/Organization/Usage/Compute.tsx b/apps/studio/components/interfaces/Organization/Usage/Compute.tsx index 898f9793f16..2c2a667e78b 100644 --- a/apps/studio/components/interfaces/Organization/Usage/Compute.tsx +++ b/apps/studio/components/interfaces/Organization/Usage/Compute.tsx @@ -2,7 +2,7 @@ import { DataPoint } from 'data/analytics/constants' import { ComputeUsageMetric, computeUsageMetricLabel } from 'data/analytics/org-daily-stats-query' import { OrgSubscription } from 'data/subscriptions/org-subscription-query' import SectionContent from './SectionContent' -import ShimmeringLoader, { GenericSkeletonLoader } from 'components/ui/ShimmeringLoader' +import { GenericSkeletonLoader } from 'components/ui/ShimmeringLoader' import AlertError from 'components/ui/AlertError' import Panel from 'components/ui/Panel' import { IconBarChart2 } from 'ui' diff --git a/apps/studio/components/interfaces/Organization/Usage/Usage.constants.tsx b/apps/studio/components/interfaces/Organization/Usage/Usage.constants.tsx index 52cb9c5f817..088b4c984c3 100644 --- a/apps/studio/components/interfaces/Organization/Usage/Usage.constants.tsx +++ b/apps/studio/components/interfaces/Organization/Usage/Usage.constants.tsx @@ -18,8 +18,6 @@ export const COLOR_MAP = { purple: { bar: 'fill-purple-900', marker: 'bg-purple-900' }, } -export const Y_DOMAIN_CEILING_MULTIPLIER = 4 / 3 - export const USAGE_STATUS = { NORMAL: 'NORMAL', APPROACHING: 'APPROACHING', diff --git a/apps/studio/components/interfaces/Organization/Usage/Usage.tsx b/apps/studio/components/interfaces/Organization/Usage/Usage.tsx index 5ead89fd691..84b5d788383 100644 --- a/apps/studio/components/interfaces/Organization/Usage/Usage.tsx +++ b/apps/studio/components/interfaces/Organization/Usage/Usage.tsx @@ -12,7 +12,7 @@ import { useProjectsQuery } from 'data/projects/projects-query' import { useOrgSubscriptionQuery } from 'data/subscriptions/org-subscription-query' import { useOrgUsageQuery } from 'data/usage/org-usage-query' import { useSelectedOrganization } from 'hooks' -import { TIME_PERIODS_BILLING, TIME_PERIODS_REPORTS } from 'lib/constants' +import { TIME_PERIODS_BILLING, TIME_PERIODS_REPORTS } from 'lib/constants/metrics' import Link from 'next/link' import { Alert, Button, IconExternalLink, IconInfo, Listbox } from 'ui' import Activity from './Activity' diff --git a/apps/studio/components/interfaces/Organization/Usage/Usage.utils.ts b/apps/studio/components/interfaces/Organization/Usage/Usage.utils.ts index 574f9f844da..4d94cbd44c9 100644 --- a/apps/studio/components/interfaces/Organization/Usage/Usage.utils.ts +++ b/apps/studio/components/interfaces/Organization/Usage/Usage.utils.ts @@ -60,7 +60,7 @@ export const ChartTooltipValueFormatter = (number: number | string, unit: string const sizes = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] -export const formatBytesCompact = (bytes: number) => { +const formatBytesCompact = (bytes: number) => { if (bytes === 0 || bytes === undefined) return '0 bytes' const k = 1024 @@ -78,7 +78,7 @@ export const formatBytesCompact = (bytes: number) => { return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + unit } -export const formatBytesPrecision = (bytes: any) => { +const formatBytesPrecision = (bytes: any) => { if (bytes === 0 || bytes === undefined) return '0 bytes' const k = 1024 diff --git a/apps/studio/components/interfaces/Realtime/Inspector/NoChannelEmptyState.tsx b/apps/studio/components/interfaces/Realtime/Inspector/NoChannelEmptyState.tsx index 46937e4b2c3..c3025a105ff 100644 --- a/apps/studio/components/interfaces/Realtime/Inspector/NoChannelEmptyState.tsx +++ b/apps/studio/components/interfaces/Realtime/Inspector/NoChannelEmptyState.tsx @@ -1,4 +1,3 @@ -import { PlayCircle } from 'lucide-react' import { Button, IconExternalLink } from 'ui' const NoChannelEmptyState = () => { diff --git a/apps/studio/components/interfaces/Realtime/Inspector/useRealtimeMessages.ts b/apps/studio/components/interfaces/Realtime/Inspector/useRealtimeMessages.ts index f16eaca6627..b92206f91ec 100644 --- a/apps/studio/components/interfaces/Realtime/Inspector/useRealtimeMessages.ts +++ b/apps/studio/components/interfaces/Realtime/Inspector/useRealtimeMessages.ts @@ -118,9 +118,6 @@ export const useRealtimeMessages = ({ // Hack to confirm Postgres is subscribed // Need to add 'extension' key in the 'payload' newChannel.on('system' as any, {} as any, (payload: any) => { - // if (payload.extension === 'postgres_changes' && payload.status === 'ok') { - // pushMessageTo('#conn_info', 'postgres_subscribed', {}) - // } pushMessage('SYSTEM', payload) }) diff --git a/apps/studio/components/interfaces/Reports/ReportFilterBar.tsx b/apps/studio/components/interfaces/Reports/ReportFilterBar.tsx index 08d63c6fd1c..24c2e95b290 100644 --- a/apps/studio/components/interfaces/Reports/ReportFilterBar.tsx +++ b/apps/studio/components/interfaces/Reports/ReportFilterBar.tsx @@ -67,15 +67,6 @@ const PRODUCT_FILTERS = [ description: 'Realtime connection requests', icon: IconZap, }, - // TODO: support functions once union parsing is fixed - // { - // key: 'functions', - // filterKey: 'request.host', - // filterValue: '.functions.', - // label: 'Edge Functions', - // description: 'Edge function calls', - // icon: IconCode, - // }, { key: 'graphql', filterKey: 'request.path', diff --git a/apps/studio/components/interfaces/Reports/Reports.constants.ts b/apps/studio/components/interfaces/Reports/Reports.constants.ts index 62609b3cc07..8785c5a05ff 100644 --- a/apps/studio/components/interfaces/Reports/Reports.constants.ts +++ b/apps/studio/components/interfaces/Reports/Reports.constants.ts @@ -379,6 +379,3 @@ select }, }, } - -export const DATETIME_FORMAT = 'MMM D, ha' -export const DATETIME_SECOND_FORMAT = 'MMM D, ha' diff --git a/apps/studio/components/interfaces/Reports/Reports.tsx b/apps/studio/components/interfaces/Reports/Reports.tsx index e771c900aaf..b699757d6c7 100644 --- a/apps/studio/components/interfaces/Reports/Reports.tsx +++ b/apps/studio/components/interfaces/Reports/Reports.tsx @@ -27,7 +27,7 @@ import DateRangePicker from 'components/to-be-cleaned/DateRangePicker' import Loading from 'components/ui/Loading' import NoPermission from 'components/ui/NoPermission' import { useCheckPermissions, useIsFeatureEnabled } from 'hooks' -import { METRICS, METRIC_CATEGORIES, TIME_PERIODS_REPORTS } from 'lib/constants' +import { METRICS, METRIC_CATEGORIES, TIME_PERIODS_REPORTS } from 'lib/constants/metrics' import { uuidv4 } from 'lib/helpers' import { useProfile } from 'lib/profile' import { useProjectContentStore } from 'stores/projectContentStore' diff --git a/apps/studio/components/interfaces/Reports/renderers/ApiRenderers.tsx b/apps/studio/components/interfaces/Reports/renderers/ApiRenderers.tsx index 60d7c8bce73..89ced5c0ad2 100644 --- a/apps/studio/components/interfaces/Reports/renderers/ApiRenderers.tsx +++ b/apps/studio/components/interfaces/Reports/renderers/ApiRenderers.tsx @@ -10,7 +10,6 @@ import { Fragment, useState } from 'react' import { Button, Collapsible, IconChevronRight } from 'ui' import { queryParamsToObject } from '../Reports.utils' import { ReportWidgetProps, ReportWidgetRendererProps } from '../ReportWidget' -import Link from 'next/link' import { useParams } from 'common/hooks' export const NetworkTrafficRenderer = ( diff --git a/apps/studio/components/interfaces/SQLEditor/AISchemaSuggestionPopover.tsx b/apps/studio/components/interfaces/SQLEditor/AISchemaSuggestionPopover.tsx index f0342aaecbb..4e9f3a6f9a7 100644 --- a/apps/studio/components/interfaces/SQLEditor/AISchemaSuggestionPopover.tsx +++ b/apps/studio/components/interfaces/SQLEditor/AISchemaSuggestionPopover.tsx @@ -1,6 +1,6 @@ import * as Popover from '@radix-ui/react-popover' import { motion } from 'framer-motion' -import { useLocalStorageQuery, useSelectedOrganization, useSelectedProject } from 'hooks' +import { useLocalStorageQuery, useSelectedOrganization } from 'hooks' import { IS_PLATFORM, OPT_IN_TAGS } from 'lib/constants' import { PropsWithChildren, useEffect, useState } from 'react' import { Button, IconInfo } from 'ui' diff --git a/apps/studio/components/interfaces/SQLEditor/DownloadSnippetModal.tsx b/apps/studio/components/interfaces/SQLEditor/DownloadSnippetModal.tsx index ba9cc6a11f3..213ce51acf4 100644 --- a/apps/studio/components/interfaces/SQLEditor/DownloadSnippetModal.tsx +++ b/apps/studio/components/interfaces/SQLEditor/DownloadSnippetModal.tsx @@ -2,7 +2,7 @@ import { ModalProps } from '@ui/components/Modal/Modal' import { snakeCase } from 'lodash' import Link from 'next/link' import { useState } from 'react' -import { Button, CodeBlock, IconExternalLink, Modal, Separator, Tabs, TabsProvider } from 'ui' +import { Button, CodeBlock, IconExternalLink, Modal, Tabs, TabsProvider } from 'ui' import TwoOptionToggle from 'components/ui/TwoOptionToggle' import { useSqlEditorStateSnapshot } from 'state/sql-editor' diff --git a/apps/studio/components/interfaces/SQLEditor/RenameQueryModal.tsx b/apps/studio/components/interfaces/SQLEditor/RenameQueryModal.tsx index 84728b0100d..268dea8c989 100644 --- a/apps/studio/components/interfaces/SQLEditor/RenameQueryModal.tsx +++ b/apps/studio/components/interfaces/SQLEditor/RenameQueryModal.tsx @@ -3,7 +3,7 @@ import { useParams } from 'common' import { useSqlTitleGenerateMutation } from 'data/ai/sql-title-mutation' import { SqlSnippet } from 'data/content/sql-snippets-query' import { isError } from 'data/utils/error-check' -import { useFlag, useSelectedOrganization, useStore } from 'hooks' +import { useSelectedOrganization, useStore } from 'hooks' import { useEffect, useState } from 'react' import { useSqlEditorStateSnapshot } from 'state/sql-editor' import { AiIconAnimation, Button, Form, Input, Modal } from 'ui' diff --git a/apps/studio/components/interfaces/SQLEditor/SQLEditor.constants.ts b/apps/studio/components/interfaces/SQLEditor/SQLEditor.constants.ts index 082b9396d2d..b76db0b0475 100644 --- a/apps/studio/components/interfaces/SQLEditor/SQLEditor.constants.ts +++ b/apps/studio/components/interfaces/SQLEditor/SQLEditor.constants.ts @@ -1513,7 +1513,7 @@ revoke execute on function public.custom_access_token_hook from authenticated, a }, ] -export const SQL_SNIPPET_SCHEMA_VERSION = '1.0' +const SQL_SNIPPET_SCHEMA_VERSION = '1.0' export const NEW_SQL_SNIPPET_SKELETON: UserContent = { name: 'New Query', diff --git a/apps/studio/components/interfaces/SQLEditor/SQLEditor.utils.ts b/apps/studio/components/interfaces/SQLEditor/SQLEditor.utils.ts index b9d484dad0e..24012e3a73c 100644 --- a/apps/studio/components/interfaces/SQLEditor/SQLEditor.utils.ts +++ b/apps/studio/components/interfaces/SQLEditor/SQLEditor.utils.ts @@ -1,22 +1,10 @@ // @ts-ignore -import MarkdownTable from 'markdown-table' import { NEW_SQL_SNIPPET_SKELETON, destructiveSqlRegex } from './SQLEditor.constants' import { SqlSnippets, UserContent } from 'types' import { DiffType } from './SQLEditor.types' import { removeCommentsFromSql } from 'lib/helpers' import { stripIndent } from 'common-tags' -export const getResultsMarkdown = (results: any[]) => { - const columns = Object.keys(results[0]) - const rows = results.map((x: any) => { - const temp: any[] = [] - columns.forEach((col) => temp.push(x[col])) - return temp - }) - const table = [columns].concat(rows) - return MarkdownTable(table) -} - export const createSqlSnippetSkeleton = ({ id, name, diff --git a/apps/studio/components/interfaces/SQLEditor/UtilityPanel/UtilityTabResults.tsx b/apps/studio/components/interfaces/SQLEditor/UtilityPanel/UtilityTabResults.tsx index 67435b6607a..d30ed5a332f 100644 --- a/apps/studio/components/interfaces/SQLEditor/UtilityPanel/UtilityTabResults.tsx +++ b/apps/studio/components/interfaces/SQLEditor/UtilityPanel/UtilityTabResults.tsx @@ -2,13 +2,7 @@ import { subscriptionHasHipaaAddon } from 'components/interfaces/Billing/Subscri import { useSqlDebugMutation } from 'data/ai/sql-debug-mutation' import { useEntityDefinitionsQuery } from 'data/database/entity-definitions-query' import { isError } from 'data/utils/error-check' -import { - useFlag, - useLocalStorageQuery, - useSelectedOrganization, - useSelectedProject, - useStore, -} from 'hooks' +import { useLocalStorageQuery, useSelectedOrganization, useSelectedProject, useStore } from 'hooks' import { IS_PLATFORM, OPT_IN_TAGS } from 'lib/constants' import { format } from 'sql-formatter' import { useSqlEditorStateSnapshot } from 'state/sql-editor' diff --git a/apps/studio/components/interfaces/SQLEditor/index.ts b/apps/studio/components/interfaces/SQLEditor/index.ts deleted file mode 100644 index 47aa5345512..00000000000 --- a/apps/studio/components/interfaces/SQLEditor/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import SQLTemplates from './SQLTemplates/SQLTemplates' -import SQLQuickstarts from './SQLTemplates/SQLQuickstarts' - -export { SQLTemplates, SQLQuickstarts } diff --git a/apps/studio/components/interfaces/Settings/Database/ConnectionPooling.tsx b/apps/studio/components/interfaces/Settings/Database/ConnectionPooling.tsx index bd8a6526352..740ad9b0815 100644 --- a/apps/studio/components/interfaces/Settings/Database/ConnectionPooling.tsx +++ b/apps/studio/components/interfaces/Settings/Database/ConnectionPooling.tsx @@ -125,7 +125,7 @@ interface MainConfigProps { poolingInfo: PoolingConfigurationData } -export const MainConfig = ({ projectRef, poolingInfo }: MainConfigProps) => { +const MainConfig = ({ projectRef, poolingInfo }: MainConfigProps) => { const { ui } = useStore() const { project } = useProjectContext() diff --git a/apps/studio/components/interfaces/Settings/Database/DatabaseSettings/DatabaseConnectionString.tsx b/apps/studio/components/interfaces/Settings/Database/DatabaseSettings/DatabaseConnectionString.tsx index f49ec00fde2..ca710732df1 100644 --- a/apps/studio/components/interfaces/Settings/Database/DatabaseSettings/DatabaseConnectionString.tsx +++ b/apps/studio/components/interfaces/Settings/Database/DatabaseSettings/DatabaseConnectionString.tsx @@ -1,6 +1,6 @@ import { useParams, useTelemetryProps } from 'common' import { useRouter } from 'next/router' -import { useEffect, useRef, useState } from 'react' +import { useEffect, useRef } from 'react' import { Input, Tabs } from 'ui' import AlertError from 'components/ui/AlertError' diff --git a/apps/studio/components/interfaces/Settings/General/CustomDomainConfig/CustomDomainsConfigureHostname.tsx b/apps/studio/components/interfaces/Settings/General/CustomDomainConfig/CustomDomainsConfigureHostname.tsx index 6ba31c290b8..379cfe4c432 100644 --- a/apps/studio/components/interfaces/Settings/General/CustomDomainConfig/CustomDomainsConfigureHostname.tsx +++ b/apps/studio/components/interfaces/Settings/General/CustomDomainConfig/CustomDomainsConfigureHostname.tsx @@ -16,14 +16,13 @@ import { import { useProjectApiQuery } from 'data/config/project-api-query' import { useCheckCNAMERecordMutation } from 'data/custom-domains/check-cname-mutation' import { useCustomDomainCreateMutation } from 'data/custom-domains/custom-domains-create-mutation' -import { useCheckPermissions, useStore } from 'hooks' +import { useCheckPermissions } from 'hooks' const schema = yup.object({ domain: yup.string().required('A value for your custom domain is required'), }) const CustomDomainsConfigureHostname = () => { - const { ui } = useStore() const { ref } = useParams() const { project } = useProjectContext() diff --git a/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureActivity.tsx b/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureActivity.tsx index 2f5b85c78d7..035992db678 100644 --- a/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureActivity.tsx +++ b/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureActivity.tsx @@ -27,7 +27,7 @@ import { useOrgSubscriptionQuery } from 'data/subscriptions/org-subscription-que import { useProjectAddonsQuery } from 'data/subscriptions/project-addons-query' import { useResourceWarningsQuery } from 'data/usage/resource-warnings-query' import { useFlag, useSelectedOrganization } from 'hooks' -import { TIME_PERIODS_BILLING, TIME_PERIODS_REPORTS } from 'lib/constants' +import { TIME_PERIODS_BILLING, TIME_PERIODS_REPORTS } from 'lib/constants/metrics' import { INFRA_ACTIVITY_METRICS } from './Infrastructure.constants' const InfrastructureActivity = () => { diff --git a/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureConfiguration/InstanceConfiguration.tsx b/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureConfiguration/InstanceConfiguration.tsx index 539f54aeaa1..4b1cca429ba 100644 --- a/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureConfiguration/InstanceConfiguration.tsx +++ b/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureConfiguration/InstanceConfiguration.tsx @@ -1,5 +1,5 @@ import { useParams } from 'common' -import { isEqual, partition } from 'lodash' +import { partition } from 'lodash' import { Globe2, Loader2, Network } from 'lucide-react' import { useTheme } from 'next-themes' import { useEffect, useMemo, useRef, useState } from 'react' diff --git a/apps/studio/components/interfaces/Settings/Integrations/GithubIntegration/GitHubIntegrationConnectionForm.tsx b/apps/studio/components/interfaces/Settings/Integrations/GithubIntegration/GitHubIntegrationConnectionForm.tsx index e61121f43b6..6307c617114 100644 --- a/apps/studio/components/interfaces/Settings/Integrations/GithubIntegration/GitHubIntegrationConnectionForm.tsx +++ b/apps/studio/components/interfaces/Settings/Integrations/GithubIntegration/GitHubIntegrationConnectionForm.tsx @@ -55,12 +55,7 @@ const GitHubIntegrationConnectionForm = ({ const [repoOwner, repoName] = githubProjectIntegration?.metadata.name.split('/') ?? [] - const { - data: githubBranches, - error: githubBranchesError, - isLoading: isLoadingBranches, - isSuccess: isSuccessBranches, - } = useGithubBranchesQuery({ + const { data: githubBranches, isLoading: isLoadingBranches } = useGithubBranchesQuery({ organizationIntegrationId: integration?.id, repoOwner, repoName, @@ -76,7 +71,7 @@ const GitHubIntegrationConnectionForm = ({ }, }) - const { data: previewBranches, isLoading: isLoadingPreviewBranches } = useBranchesQuery( + const { data: previewBranches } = useBranchesQuery( { projectRef: project?.parentRef }, { enabled: project !== undefined } ) diff --git a/apps/studio/components/interfaces/Settings/Integrations/VercelIntegration/VercelIntegrationConnectionForm.tsx b/apps/studio/components/interfaces/Settings/Integrations/VercelIntegration/VercelIntegrationConnectionForm.tsx index fa313707ef2..204ce0aefc3 100644 --- a/apps/studio/components/interfaces/Settings/Integrations/VercelIntegration/VercelIntegrationConnectionForm.tsx +++ b/apps/studio/components/interfaces/Settings/Integrations/VercelIntegration/VercelIntegrationConnectionForm.tsx @@ -52,15 +52,14 @@ const VercelIntegrationConnectionForm = ({ }, }) - const { mutate: updateVercelConnection, isLoading: isUpdatingVercelConnection } = - useVercelConnectionUpdateMutation({ - onSuccess: (data) => { - ui.setNotification({ - category: 'success', - message: `Updated Supabase directory`, - }) - }, - }) + const { mutate: updateVercelConnection } = useVercelConnectionUpdateMutation({ + onSuccess: (data) => { + ui.setNotification({ + category: 'success', + message: `Updated Supabase directory`, + }) + }, + }) function onSubmit(data: z.infer) { /** diff --git a/apps/studio/components/interfaces/Settings/Logs/LogEventChart.tsx b/apps/studio/components/interfaces/Settings/Logs/LogEventChart.tsx index 0f13cec73f5..b96a88dfc5a 100644 --- a/apps/studio/components/interfaces/Settings/Logs/LogEventChart.tsx +++ b/apps/studio/components/interfaces/Settings/Logs/LogEventChart.tsx @@ -1,6 +1,6 @@ -import BarChart, { BarChartProps } from 'components/ui/Charts/BarChart' +import BarChart from 'components/ui/Charts/BarChart' import { Datum } from 'components/ui/Charts/Charts.types' -import { EventChartData, isUnixMicro, LogData, unixMicroToIsoTimestamp } from '.' +import { EventChartData } from '.' export interface LogEventChartProps { data: EventChartData[] diff --git a/apps/studio/components/interfaces/Settings/Logs/LogSelectionRenderers/DatabaseApiSelectionRender.tsx b/apps/studio/components/interfaces/Settings/Logs/LogSelectionRenderers/DatabaseApiSelectionRender.tsx index fd0146dc4c6..050a1f4b040 100644 --- a/apps/studio/components/interfaces/Settings/Logs/LogSelectionRenderers/DatabaseApiSelectionRender.tsx +++ b/apps/studio/components/interfaces/Settings/Logs/LogSelectionRenderers/DatabaseApiSelectionRender.tsx @@ -60,11 +60,4 @@ const DatabaseApiSelectionRender = ({ log }: any) => { ) } -export const DatabaseApiSelectionHeaderRender = (log: any) => { - const method = log?.metadata[0]?.request[0]?.method - const path = log?.metadata[0]?.request[0]?.path - - return `${method} ${path}` -} - export default DatabaseApiSelectionRender diff --git a/apps/studio/components/interfaces/Settings/Logs/LogSelectionRenderers/FunctionInvocationSelectionRender.tsx b/apps/studio/components/interfaces/Settings/Logs/LogSelectionRenderers/FunctionInvocationSelectionRender.tsx index da1521fdfb6..4c9e49685c3 100644 --- a/apps/studio/components/interfaces/Settings/Logs/LogSelectionRenderers/FunctionInvocationSelectionRender.tsx +++ b/apps/studio/components/interfaces/Settings/Logs/LogSelectionRenderers/FunctionInvocationSelectionRender.tsx @@ -63,11 +63,4 @@ const FunctionInvocationSelectionRender = ({ log }: { log: PreviewLogData }) => ) } -export const FunctionInvocationHeaderRender = (log: any) => { - const method = log?.method - const path = log?.request?.url - - return `${method} ${path}` -} - export default FunctionInvocationSelectionRender diff --git a/apps/studio/components/interfaces/Settings/Logs/LogTable.stories.tsx b/apps/studio/components/interfaces/Settings/Logs/LogTable.stories.tsx index 6be4b415564..b4f692bbcfb 100644 --- a/apps/studio/components/interfaces/Settings/Logs/LogTable.stories.tsx +++ b/apps/studio/components/interfaces/Settings/Logs/LogTable.stories.tsx @@ -7,18 +7,7 @@ export default { } export const Functions = (args: any) => ( -
+
`regexp_contains(event_message, '${value}')`, } diff --git a/apps/studio/components/interfaces/Settings/Logs/Logs.utils.ts b/apps/studio/components/interfaces/Settings/Logs/Logs.utils.ts index 95be9f8610b..bdabec39cc9 100644 --- a/apps/studio/components/interfaces/Settings/Logs/Logs.utils.ts +++ b/apps/studio/components/interfaces/Settings/Logs/Logs.utils.ts @@ -240,7 +240,7 @@ export const genCountQuery = (table: LogsTableName, filters: Filters): string => } /** calculates how much the chart start datetime should be offset given the current datetime filter params */ -export const calcChartStart = (params: Partial): [Dayjs, string] => { +const calcChartStart = (params: Partial): [Dayjs, string] => { const ite = params.iso_timestamp_end ? dayjs(params.iso_timestamp_end) : dayjs() // todo @TzeYiing needs typing const its: any = params.iso_timestamp_start ? dayjs(params.iso_timestamp_start) : dayjs() @@ -458,7 +458,7 @@ export const fillTimeseries = ( return newData } -export const getTimestampTruncation = (samples: Dayjs[]): 'second' | 'minute' | 'hour' | 'day' => { +const getTimestampTruncation = (samples: Dayjs[]): 'second' | 'minute' | 'hour' | 'day' => { const truncationCounts = samples.reduce( (acc, sample) => { const truncation = _getTruncation(sample) diff --git a/apps/studio/components/interfaces/Settings/Logs/LogsFormatters.tsx b/apps/studio/components/interfaces/Settings/Logs/LogsFormatters.tsx index e29b38dc7e9..a186f7ac9b2 100644 --- a/apps/studio/components/interfaces/Settings/Logs/LogsFormatters.tsx +++ b/apps/studio/components/interfaces/Settings/Logs/LogsFormatters.tsx @@ -244,20 +244,6 @@ export const timestampLocalFormatter = (value: string | number) => { return dayjs(timestamp).format('DD MMM HH:mm:ss') } -/* - * Header Formatter - * - * for http response codes - */ - -export const HeaderFormmater = ({ value }: any) => { - return ( -
- {value} -
- ) -} - /* * JSON Syntax Highlighter * diff --git a/apps/studio/components/interfaces/Settings/Logs/LogsPreviewer.tsx b/apps/studio/components/interfaces/Settings/Logs/LogsPreviewer.tsx index c176ea46cbf..f2f33ed0bc1 100644 --- a/apps/studio/components/interfaces/Settings/Logs/LogsPreviewer.tsx +++ b/apps/studio/components/interfaces/Settings/Logs/LogsPreviewer.tsx @@ -11,7 +11,6 @@ import { LogTemplate, LogsTableName, QueryType, - TEMPLATES, ensureNoTimestampConflict, maybeShowUpgradePrompt, } from 'components/interfaces/Settings/Logs' diff --git a/apps/studio/components/interfaces/Settings/Logs/index.ts b/apps/studio/components/interfaces/Settings/Logs/index.ts index 3b642f686dd..abf537037d6 100644 --- a/apps/studio/components/interfaces/Settings/Logs/index.ts +++ b/apps/studio/components/interfaces/Settings/Logs/index.ts @@ -5,4 +5,3 @@ export { default as LogsSavedQueriesItem } from './Logs.SavedQueriesItem' export { default as LogsQueryPanel } from './LogsQueryPanel' export { default as LogTable } from './LogTable' export { default as LogEventChart } from './LogEventChart' -export { default as LogsFilterPopover } from './LogsFilterPopover' diff --git a/apps/studio/components/interfaces/Support/Support.constants.ts b/apps/studio/components/interfaces/Support/Support.constants.ts index 2014a77ee77..d24c0d9f499 100644 --- a/apps/studio/components/interfaces/Support/Support.constants.ts +++ b/apps/studio/components/interfaces/Support/Support.constants.ts @@ -124,21 +124,3 @@ export const SERVICE_OPTIONS = [ disabled: false, }, ] - -export const GITHUB_LINKS = [ - { - name: 'supabase-js', - description: 'For issues with our Javascript client', - url: 'https://github.com/supabase/supabase-js/issues', - }, - { - name: 'supabase-flutter', - description: 'For issues with our Flutter integration', - url: 'https://github.com/supabase-community/supabase-flutter/issues', - }, - { - name: 'supabase', - description: 'For other issues about our API', - url: 'https://github.com/supabase/supabase/issues', - }, -] diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/JsonEditor.tsx b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/JsonEditor.tsx index 723ec658a74..8daaa6d1b27 100644 --- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/JsonEditor.tsx +++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/JsonEditor.tsx @@ -1,5 +1,5 @@ import { useEffect, useState } from 'react' -import { Button, IconAlignLeft, IconAlignRight, SidePanel } from 'ui' +import { Button, IconAlignLeft, SidePanel } from 'ui' import * as Tooltip from '@radix-ui/react-tooltip' import TwoOptionToggle from 'components/ui/TwoOptionToggle' diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/RowEditor.utils.ts b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/RowEditor.utils.ts index b94520ec195..1ce268496bd 100644 --- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/RowEditor.utils.ts +++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/RowEditor.utils.ts @@ -82,7 +82,7 @@ export const validateFields = (fields: RowField[]) => { return errors } -export const parseValue = (originalValue: any, format: string) => { +const parseValue = (originalValue: any, format: string) => { try { if ( originalValue === null || diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SidePanelEditor.constants.ts b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SidePanelEditor.constants.ts index ddee6d5ee0c..e9d7dd63492 100644 --- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SidePanelEditor.constants.ts +++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SidePanelEditor.constants.ts @@ -1,16 +1,7 @@ import { sortBy, concat } from 'lodash' import { PostgresDataTypeOption } from './SidePanelEditor.types' -export const DATE_FORMAT = 'YYYY-MM-DDTHH:mm:ssZ' -export const NUMERICAL_TYPES = [ - 'int2', - 'int4', - 'int8', - 'float4', - 'float8', - 'numeric', - 'double precision', -] +const NUMERICAL_TYPES = ['int2', 'int4', 'int8', 'float4', 'float8', 'numeric', 'double precision'] export const JSON_TYPES = ['json', 'jsonb'] export const TEXT_TYPES = ['text', 'varchar'] @@ -19,7 +10,7 @@ export const DATE_TYPES = ['date'] export const TIME_TYPES = ['time', 'timetz'] export const DATETIME_TYPES = concat(TIMESTAMP_TYPES, DATE_TYPES, TIME_TYPES) -export const OTHER_DATA_TYPES = ['uuid', 'bool', 'vector'] +const OTHER_DATA_TYPES = ['uuid', 'bool', 'vector'] export const POSTGRES_DATA_TYPES = sortBy( concat(NUMERICAL_TYPES, JSON_TYPES, TEXT_TYPES, DATETIME_TYPES, OTHER_DATA_TYPES) ) diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SpreadsheetImport/SpreadsheetImport.utils.ts b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SpreadsheetImport/SpreadsheetImport.utils.ts index 0c3e0bd8ba3..8db00cb90b5 100644 --- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SpreadsheetImport/SpreadsheetImport.utils.ts +++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SpreadsheetImport/SpreadsheetImport.utils.ts @@ -97,7 +97,7 @@ export const revertSpreadsheet = (headers: string[], rows: any[]) => { return Papa.unparse(rows, { columns: headers }) } -export const inferColumnType = (column: string, rows: object[]) => { +const inferColumnType = (column: string, rows: object[]) => { // General strategy is to check the first row first, before checking across all the rows // to ensure uniformity in data type. Thinking we do this as an optimization instead of // checking all the rows up front. diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/HeaderTitle.tsx b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/HeaderTitle.tsx index 9c71dcce12c..3099ca5b14a 100644 --- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/HeaderTitle.tsx +++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/HeaderTitle.tsx @@ -1,5 +1,3 @@ -import type { PostgresTable } from '@supabase/postgres-meta' - interface HeaderTitleProps { schema: string table?: { name: string } diff --git a/apps/studio/components/layouts/AccountLayout/AccountLayout.tsx b/apps/studio/components/layouts/AccountLayout/AccountLayout.tsx index 8cd7f21487e..424141ac029 100644 --- a/apps/studio/components/layouts/AccountLayout/AccountLayout.tsx +++ b/apps/studio/components/layouts/AccountLayout/AccountLayout.tsx @@ -172,5 +172,3 @@ const AccountLayout = ({ children, title, breadcrumbs }: PropsWithChildren {customSidebarContent} - {sections.map((section, i) => { + {sections.map((section) => { return Boolean(section.heading) ? ( { const { ref } = useParams() const snap = useAppStateSnapshot() - const org = useSelectedOrganization() return ( diff --git a/apps/studio/components/layouts/AppLayout/EnableBranchingButton/BranchingPlanNotice.tsx b/apps/studio/components/layouts/AppLayout/EnableBranchingButton/BranchingPlanNotice.tsx index fff692f34fd..b818fecf66f 100644 --- a/apps/studio/components/layouts/AppLayout/EnableBranchingButton/BranchingPlanNotice.tsx +++ b/apps/studio/components/layouts/AppLayout/EnableBranchingButton/BranchingPlanNotice.tsx @@ -1,4 +1,3 @@ -import { useParams } from 'common' import Link from 'next/link' import { AlertDescription_Shadcn_, AlertTitle_Shadcn_, Alert_Shadcn_, Button } from 'ui' diff --git a/apps/studio/components/layouts/IntegrationsLayout/IntegrationWindowLayout.tsx b/apps/studio/components/layouts/IntegrationsLayout/IntegrationWindowLayout.tsx index d0c4944c62b..82a640f50a5 100644 --- a/apps/studio/components/layouts/IntegrationsLayout/IntegrationWindowLayout.tsx +++ b/apps/studio/components/layouts/IntegrationsLayout/IntegrationWindowLayout.tsx @@ -1,4 +1,3 @@ -import { useParams } from 'common' import { useFlag, withAuth } from 'hooks' import { BASE_PATH } from 'lib/constants' import { PropsWithChildren, ReactNode, forwardRef } from 'react' diff --git a/apps/studio/components/layouts/ProjectLayout/LayoutHeader/NotificationsPopover/NotificationRows.utils.tsx b/apps/studio/components/layouts/ProjectLayout/LayoutHeader/NotificationsPopover/NotificationRows.utils.tsx index 2617ed0f640..4e6875d16b1 100644 --- a/apps/studio/components/layouts/ProjectLayout/LayoutHeader/NotificationsPopover/NotificationRows.utils.tsx +++ b/apps/studio/components/layouts/ProjectLayout/LayoutHeader/NotificationsPopover/NotificationRows.utils.tsx @@ -13,7 +13,6 @@ import Link from 'next/link' import { Button, IconArrowRight, IconExternalLink } from 'ui' import { Markdown } from 'components/interfaces/Markdown' -import { Project } from 'data/projects/project-detail-query' export const formatNotificationText = (projectName: string, notification: Notification) => { if (notification.data.name === NotificationName.ProjectExceedingTierLimit) { diff --git a/apps/studio/components/layouts/index.ts b/apps/studio/components/layouts/index.ts index 70bc8107837..1240d37c30a 100644 --- a/apps/studio/components/layouts/index.ts +++ b/apps/studio/components/layouts/index.ts @@ -1,4 +1,4 @@ -import AccountLayout, { AccountLayoutWithoutAuth } from './AccountLayout/AccountLayout' +import AccountLayout from './AccountLayout/AccountLayout' import AuthLayout from './AuthLayout/AuthLayout' import BillingLayout from './BillingLayout' import DatabaseLayout from './DatabaseLayout/DatabaseLayout' @@ -18,7 +18,6 @@ import WizardLayout, { WizardLayoutWithoutAuth } from './WizardLayout' export { AccountLayout, - AccountLayoutWithoutAuth, AuthLayout, BillingLayout, DatabaseLayout, diff --git a/apps/studio/components/to-be-cleaned/ListIcons.tsx b/apps/studio/components/to-be-cleaned/ListIcons.tsx index 026d7548c86..1f15ace10ce 100644 --- a/apps/studio/components/to-be-cleaned/ListIcons.tsx +++ b/apps/studio/components/to-be-cleaned/ListIcons.tsx @@ -1,5 +1,4 @@ import { IconDatabase } from 'ui' -import SVG from 'react-inlinesvg' export const vercelIcon = (
diff --git a/apps/studio/components/to-be-cleaned/Reports/Reports.utils.ts b/apps/studio/components/to-be-cleaned/Reports/Reports.utils.ts index 4908a994be5..95f69d1d70f 100644 --- a/apps/studio/components/to-be-cleaned/Reports/Reports.utils.ts +++ b/apps/studio/components/to-be-cleaned/Reports/Reports.utils.ts @@ -22,27 +22,3 @@ export const createReport = async ({ router }: any) => { await contentStore.load() router.push(`/project/${ref}/reports/${newReport[0].id}`) } - -/* - * deleteReport() - * - * Deletes a new report with a basic skeleton - * also pushes route another report in list - * - * returns :object - */ -export const deleteReport = async ({ router, id }: any) => { - const { ref } = router.query - // [Alaister] despite it's name, useProjectContentStore is not a real react hook - // so we can safely disable the eslint rule here - // eslint-disable-next-line react-hooks/rules-of-hooks - const contentStore = useProjectContentStore(ref) - const { data: delReport, error } = await contentStore.del(id) - - if (error) throw error - - await contentStore.load() - // push route to report index - router.push(`/project/${ref}/reports`) - return delReport -} diff --git a/apps/studio/components/to-be-cleaned/Storage/Storage.constants.ts b/apps/studio/components/to-be-cleaned/Storage/Storage.constants.ts index 94fecf605f3..e3a858d7a47 100644 --- a/apps/studio/components/to-be-cleaned/Storage/Storage.constants.ts +++ b/apps/studio/components/to-be-cleaned/Storage/Storage.constants.ts @@ -33,16 +33,6 @@ export const STORAGE_ROW_STATUS = { EDITING: 'EDITING', } -export const STORAGE_POLICY_DEFAULT_DEFINITION_PLACEHOLDER = `/* - Example: Apply this policy to all authenticated users - for a folder called 'public' - - storage.foldername(name))[[1]] = 'public' - and auth.role() = 'authenticated' -*/ - -` - export const STORAGE_CLIENT_LIBRARY_MAPPINGS = { upload: ['INSERT'], download: ['SELECT'], diff --git a/apps/studio/components/to-be-cleaned/Storage/Storage.utils.ts b/apps/studio/components/to-be-cleaned/Storage/Storage.utils.ts index 59a96394fd1..79406cf3487 100644 --- a/apps/studio/components/to-be-cleaned/Storage/Storage.utils.ts +++ b/apps/studio/components/to-be-cleaned/Storage/Storage.utils.ts @@ -1,8 +1,8 @@ -import { trimEnd, groupBy, difference } from 'lodash' +import { groupBy, difference } from 'lodash' import { STORAGE_CLIENT_LIBRARY_MAPPINGS } from './Storage.constants' import { StoragePolicyFormField } from 'components/interfaces/Storage/Storage.types' -export const shortHash = (str: string) => { +const shortHash = (str: string) => { let hash = 0 for (let i = 0; i < str.length; i++) { const char = str.charCodeAt(i) @@ -40,7 +40,7 @@ export const formatPoliciesForStorage = (buckets: any[], policies: any[]) => { } /* Start: Internal methods to support formatPoliciesForStorage but exported for tests to cover */ -export const formatStoragePolicies = (buckets: any[], policies: any[]) => { +const formatStoragePolicies = (buckets: any[], policies: any[]) => { const availableBuckets = buckets.map((bucket) => bucket.name) const formattedPolicies = policies.map((policy) => { const { definition: policyDefinition, check: policyCheck } = policy @@ -65,14 +65,7 @@ export const formatStoragePolicies = (buckets: any[], policies: any[]) => { return formattedPolicies } -export const truncateDefinitionToExcludeBucket = (definition: string) => { - const definitionSegments = definition?.split(' AND ') ?? [] - return definitionSegments.length > 1 - ? trimEnd(definitionSegments.slice(1).join(' AND '), ')') + ')' - : '' -} - -export const extractBucketNameFromDefinition = (definition: string) => { +const extractBucketNameFromDefinition = (definition: string) => { const definitionSegments = definition?.split(' AND ') ?? [] const [bucketDefinition] = definitionSegments.filter((segment: string) => segment.includes('bucket_id') @@ -80,7 +73,7 @@ export const extractBucketNameFromDefinition = (definition: string) => { return bucketDefinition ? bucketDefinition.split("'")[1] : null } -export const groupPoliciesByBucket = (policies: any[]) => { +const groupPoliciesByBucket = (policies: any[]) => { const policiesByBucket = groupBy(policies, 'bucket') return Object.keys(policiesByBucket).map((bucketName) => { return { name: bucketName, policies: policiesByBucket[bucketName] } @@ -144,7 +137,7 @@ export const deriveAllowedClientLibraryMethods = (allowedOperations = []) => { // Create policy SQL statements on save based on configuration. // Used purely for previewing in the review step, not actually fired -export const createSQLStatementForCreatePolicy = ( +const createSQLStatementForCreatePolicy = ( idx: number, bucketName: string, policyName: string, diff --git a/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/FileExplorerHeader.tsx b/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/FileExplorerHeader.tsx index 289a0ce414e..451c70485b8 100644 --- a/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/FileExplorerHeader.tsx +++ b/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/FileExplorerHeader.tsx @@ -6,15 +6,11 @@ import { Button, DropdownMenu, DropdownMenuContent, - DropdownMenuRadioGroup, DropdownMenuSeparator, DropdownMenuItem, DropdownMenuTrigger, IconChevronLeft, IconChevronRight, - IconChevronsDown, - IconChevronsUp, - IconCode, IconColumns, IconEdit2, IconFolderPlus, @@ -29,14 +25,12 @@ import { DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, - DropdownMenuRadioItem, } from 'ui' import { useCheckPermissions } from 'hooks' import { useStorageStore } from 'localStores/storageExplorer/StorageExplorerStore' import { useStorageExplorerStateSnapshot } from 'state/storage-explorer' import { STORAGE_SORT_BY, STORAGE_SORT_BY_ORDER, STORAGE_VIEWS } from '../Storage.constants' -import { useAppStateSnapshot } from 'state/app-state' import APIDocsButton from 'components/ui/APIDocsButton' import { useIsAPIDocsSidePanelEnabled } from 'components/interfaces/App/FeaturePreview/FeaturePreviewContext' diff --git a/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/StorageExplorer.tsx b/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/StorageExplorer.tsx index 0ec2083583d..cb9bb604fb1 100644 --- a/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/StorageExplorer.tsx +++ b/apps/studio/components/to-be-cleaned/Storage/StorageExplorer/StorageExplorer.tsx @@ -7,7 +7,7 @@ import { useProjectSettingsQuery } from 'data/config/project-settings-query' import { useCustomDomainsQuery } from 'data/custom-domains/custom-domains-query' import { Bucket } from 'data/storage/buckets-query' import { useStore } from 'hooks' -import { DEFAULT_PROJECT_API_SERVICE_ID, IS_PLATFORM } from 'lib/constants' +import { DEFAULT_PROJECT_API_SERVICE_ID } from 'lib/constants' import { copyToClipboard } from 'lib/helpers' import { useStorageStore } from 'localStores/storageExplorer/StorageExplorerStore' import { STORAGE_ROW_TYPES, STORAGE_VIEWS } from '../Storage.constants' diff --git a/apps/studio/components/to-be-cleaned/forms/AutoTextArea.tsx b/apps/studio/components/to-be-cleaned/forms/AutoTextArea.tsx index 9b4fd125fd7..0494f3535f1 100644 --- a/apps/studio/components/to-be-cleaned/forms/AutoTextArea.tsx +++ b/apps/studio/components/to-be-cleaned/forms/AutoTextArea.tsx @@ -1,42 +1,20 @@ import { TextAreaProps } from '@ui/components/Input/Input' -import { useRef, useState } from 'react' import { Input } from 'ui' const AutoTextArea = (props: TextAreaProps) => { - const textAreaRef = useRef(null) - const [text, setText] = useState('') - const [textAreaHeight, setTextAreaHeight] = useState('auto') - const [parentHeight, setParentHeight] = useState('auto') - - // useEffect(() => { - // setParentHeight(`${textAreaRef?.current.scrollHeight}px`) - // setTextAreaHeight(`${textAreaRef?.current.scrollHeight}px`) - // }, [text]) - - // const onChangeHandler = (event) => { - // setTextAreaHeight('auto') - // setParentHeight(`${textAreaRef?.current.scrollHeight}px`) - // setText(event.target.value) - - // if (props.onChange) { - // props.onChange(event) - // } - // } - return (
- -const DATA = [290, 430, 649, 422, 321].flatMap((value, index) => [ - { - count: value, - level: 'error', - timestamp: dayjs().subtract(index, 'day').toISOString(), - }, -]) - -const PROPS = { - title: 'Memory usage', - xAxisKey: 'timestamp', - yAxisKey: 'count', - data: DATA, -} -export const Sparkline = () => ( -
- Examples -
- {[ - { title: 'Small', props: { size: 'small' as const } }, - { title: 'Normal', props: {} }, - { title: 'Large', props: { size: 'large' as const } }, - { title: 'No data', props: { data: [] } }, - ].map(({ title, props }, i) => ( -
- {title} -
- -
-
- ))} -
-
-) - -const ExampleName: React.FC = ({ children }) => ( -

{children}

-) diff --git a/apps/studio/components/ui/Charts/Sparkline.tsx b/apps/studio/components/ui/Charts/Sparkline.tsx deleted file mode 100644 index 7f36b90257c..00000000000 --- a/apps/studio/components/ui/Charts/Sparkline.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { LineChart, XAxis, Line } from 'recharts' -import { CHART_COLORS } from './Charts.constants' -import { CommonChartProps } from './Charts.types' -import { useChartSize } from './Charts.utils' -interface Props extends CommonChartProps { - xAxisKey: string - yAxisKey: string -} -const Sparkline: React.FC = ({ size, data, xAxisKey, yAxisKey }) => { - const { Container } = useChartSize(size, { - tiny: 30, - small: 50, - normal: 90, - large: 140, - }) - if (data.length === 0) return null - return ( - - - - - - - ) -} - -export default Sparkline diff --git a/apps/studio/components/ui/Charts/StackedAreaChart.stories.tsx b/apps/studio/components/ui/Charts/StackedAreaChart.stories.tsx deleted file mode 100644 index 7f94d6aa5a5..00000000000 --- a/apps/studio/components/ui/Charts/StackedAreaChart.stories.tsx +++ /dev/null @@ -1,864 +0,0 @@ -import React from 'react' -import { ComponentStory, ComponentMeta } from '@storybook/react' - -import StackedAreaChart from './StackedAreaChart' - -export default { - title: 'Charts/StackedAreaChart', - component: StackedAreaChart, -} as ComponentMeta - -const Template: ComponentStory = (args) => - -export const Default = Template.bind({}) -Default.args = { - stackKey: 'status_code', - xAxisKey: 'timestamp', - yAxisKey: 'count', - isLoading: false, - xAxisFormatAsDate: true, - size: 'large', - dateFormat: 'MMM D, ha', - data: [ - { - count: 8656, - status_code: 503, - timestamp: 1647777600000000, - }, - { - count: 2, - status_code: 524, - timestamp: 1647777600000000, - }, - { - count: 502195, - status_code: 200, - timestamp: 1647777600000000, - }, - { - count: 423, - status_code: 204, - timestamp: 1647777600000000, - }, - { - count: 1, - status_code: 429, - timestamp: 1647777600000000, - }, - { - count: 27, - status_code: 304, - timestamp: 1647777600000000, - }, - { - count: 1052, - status_code: 206, - timestamp: 1647777600000000, - }, - { - count: 1, - status_code: 101, - timestamp: 1647777600000000, - }, - { - count: 51, - status_code: 404, - timestamp: 1647777600000000, - }, - { - count: 191, - status_code: 400, - timestamp: 1647777600000000, - }, - { - count: 46, - status_code: 303, - timestamp: 1647777600000000, - }, - { - count: 1, - status_code: 416, - timestamp: 1647777600000000, - }, - { - count: 71635, - status_code: 401, - timestamp: 1647777600000000, - }, - { - count: 437, - status_code: 201, - timestamp: 1647777600000000, - }, - { - count: 5, - status_code: 409, - timestamp: 1647777600000000, - }, - { - count: 48, - status_code: 303, - timestamp: 1647781200000000, - }, - { - count: 257, - status_code: 400, - timestamp: 1647781200000000, - }, - { - count: 7, - status_code: 404, - timestamp: 1647781200000000, - }, - { - count: 2, - status_code: 416, - timestamp: 1647781200000000, - }, - { - count: 1093, - status_code: 206, - timestamp: 1647781200000000, - }, - { - count: 1, - status_code: 524, - timestamp: 1647781200000000, - }, - { - count: 7, - status_code: 409, - timestamp: 1647781200000000, - }, - { - count: 1, - status_code: 500, - timestamp: 1647781200000000, - }, - { - count: 530460, - status_code: 200, - timestamp: 1647781200000000, - }, - { - count: 490, - status_code: 204, - timestamp: 1647781200000000, - }, - { - count: 6963, - status_code: 503, - timestamp: 1647781200000000, - }, - { - count: 70794, - status_code: 401, - timestamp: 1647781200000000, - }, - { - count: 441, - status_code: 201, - timestamp: 1647781200000000, - }, - { - count: 14, - status_code: 304, - timestamp: 1647781200000000, - }, - { - count: 1, - status_code: 502, - timestamp: 1647781200000000, - }, - { - count: 2, - status_code: 429, - timestamp: 1647781200000000, - }, - { - count: 255, - status_code: 400, - timestamp: 1647784800000000, - }, - { - count: 3, - status_code: 429, - timestamp: 1647784800000000, - }, - { - count: 475, - status_code: 201, - timestamp: 1647784800000000, - }, - { - count: 469, - status_code: 204, - timestamp: 1647784800000000, - }, - { - count: 7, - status_code: 404, - timestamp: 1647784800000000, - }, - { - count: 2, - status_code: 524, - timestamp: 1647784800000000, - }, - { - count: 12624, - status_code: 503, - timestamp: 1647784800000000, - }, - { - count: 8, - status_code: 409, - timestamp: 1647784800000000, - }, - { - count: 23, - status_code: 304, - timestamp: 1647784800000000, - }, - { - count: 508621, - status_code: 200, - timestamp: 1647784800000000, - }, - { - count: 751, - status_code: 206, - timestamp: 1647784800000000, - }, - { - count: 2, - status_code: 416, - timestamp: 1647784800000000, - }, - { - count: 53, - status_code: 303, - timestamp: 1647784800000000, - }, - { - count: 70778, - status_code: 401, - timestamp: 1647784800000000, - }, - { - count: 1, - status_code: 502, - timestamp: 1647788400000000, - }, - { - count: 372, - status_code: 204, - timestamp: 1647788400000000, - }, - { - count: 71464, - status_code: 401, - timestamp: 1647788400000000, - }, - { - count: 38, - status_code: 303, - timestamp: 1647788400000000, - }, - { - count: 502675, - status_code: 200, - timestamp: 1647788400000000, - }, - { - count: 20941, - status_code: 503, - timestamp: 1647788400000000, - }, - { - count: 409, - status_code: 201, - timestamp: 1647788400000000, - }, - { - count: 889, - status_code: 206, - timestamp: 1647788400000000, - }, - { - count: 52, - status_code: 304, - timestamp: 1647788400000000, - }, - { - count: 1, - status_code: 409, - timestamp: 1647788400000000, - }, - { - count: 48, - status_code: 404, - timestamp: 1647788400000000, - }, - { - count: 345, - status_code: 400, - timestamp: 1647788400000000, - }, - { - count: 1, - status_code: 416, - timestamp: 1647788400000000, - }, - { - count: 9, - status_code: 416, - timestamp: 1647792000000000, - }, - { - count: 12694, - status_code: 503, - timestamp: 1647792000000000, - }, - { - count: 554, - status_code: 206, - timestamp: 1647792000000000, - }, - { - count: 15, - status_code: 304, - timestamp: 1647792000000000, - }, - { - count: 269, - status_code: 204, - timestamp: 1647792000000000, - }, - { - count: 180, - status_code: 201, - timestamp: 1647792000000000, - }, - { - count: 4, - status_code: 524, - timestamp: 1647792000000000, - }, - { - count: 72056, - status_code: 401, - timestamp: 1647792000000000, - }, - { - count: 3, - status_code: 429, - timestamp: 1647792000000000, - }, - { - count: 1, - status_code: 502, - timestamp: 1647792000000000, - }, - { - count: 139, - status_code: 400, - timestamp: 1647792000000000, - }, - { - count: 37, - status_code: 303, - timestamp: 1647792000000000, - }, - { - count: 1, - status_code: 409, - timestamp: 1647792000000000, - }, - { - count: 81, - status_code: 404, - timestamp: 1647792000000000, - }, - { - count: 505478, - status_code: 200, - timestamp: 1647792000000000, - }, - { - count: 71971, - status_code: 401, - timestamp: 1647795600000000, - }, - { - count: 573, - status_code: 206, - timestamp: 1647795600000000, - }, - { - count: 35, - status_code: 303, - timestamp: 1647795600000000, - }, - { - count: 2790, - status_code: 503, - timestamp: 1647795600000000, - }, - { - count: 536343, - status_code: 200, - timestamp: 1647795600000000, - }, - { - count: 284, - status_code: 204, - timestamp: 1647795600000000, - }, - { - count: 9, - status_code: 409, - timestamp: 1647795600000000, - }, - { - count: 231, - status_code: 400, - timestamp: 1647795600000000, - }, - { - count: 32, - status_code: 304, - timestamp: 1647795600000000, - }, - { - count: 2, - status_code: 524, - timestamp: 1647795600000000, - }, - { - count: 9, - status_code: 416, - timestamp: 1647795600000000, - }, - { - count: 6, - status_code: 429, - timestamp: 1647795600000000, - }, - { - count: 8, - status_code: 404, - timestamp: 1647795600000000, - }, - { - count: 263, - status_code: 201, - timestamp: 1647795600000000, - }, - { - count: 2, - status_code: 429, - timestamp: 1647799200000000, - }, - { - count: 1, - status_code: 404, - timestamp: 1647799200000000, - }, - { - count: 1, - status_code: 524, - timestamp: 1647799200000000, - }, - { - count: 285, - status_code: 201, - timestamp: 1647799200000000, - }, - { - count: 680, - status_code: 206, - timestamp: 1647799200000000, - }, - { - count: 22, - status_code: 304, - timestamp: 1647799200000000, - }, - { - count: 3449, - status_code: 503, - timestamp: 1647799200000000, - }, - { - count: 1, - status_code: 422, - timestamp: 1647799200000000, - }, - { - count: 4, - status_code: 409, - timestamp: 1647799200000000, - }, - { - count: 8, - status_code: 416, - timestamp: 1647799200000000, - }, - { - count: 31, - status_code: 303, - timestamp: 1647799200000000, - }, - { - count: 549926, - status_code: 200, - timestamp: 1647799200000000, - }, - { - count: 151, - status_code: 400, - timestamp: 1647799200000000, - }, - { - count: 72473, - status_code: 401, - timestamp: 1647799200000000, - }, - { - count: 374, - status_code: 204, - timestamp: 1647799200000000, - }, - { - count: 27, - status_code: 303, - timestamp: 1647802800000000, - }, - { - count: 240, - status_code: 201, - timestamp: 1647802800000000, - }, - { - count: 493, - status_code: 206, - timestamp: 1647802800000000, - }, - { - count: 1, - status_code: 502, - timestamp: 1647802800000000, - }, - { - count: 19, - status_code: 404, - timestamp: 1647802800000000, - }, - { - count: 72814, - status_code: 401, - timestamp: 1647802800000000, - }, - { - count: 5, - status_code: 409, - timestamp: 1647802800000000, - }, - { - count: 112, - status_code: 400, - timestamp: 1647802800000000, - }, - { - count: 236, - status_code: 204, - timestamp: 1647802800000000, - }, - { - count: 3, - status_code: 416, - timestamp: 1647802800000000, - }, - { - count: 554578, - status_code: 200, - timestamp: 1647802800000000, - }, - { - count: 28, - status_code: 304, - timestamp: 1647802800000000, - }, - { - count: 1, - status_code: 524, - timestamp: 1647802800000000, - }, - { - count: 2733, - status_code: 503, - timestamp: 1647802800000000, - }, - { - count: 3, - status_code: 429, - timestamp: 1647802800000000, - }, - { - count: 566745, - status_code: 200, - timestamp: 1647806400000000, - }, - { - count: 369, - status_code: 201, - timestamp: 1647806400000000, - }, - { - count: 11, - status_code: 416, - timestamp: 1647806400000000, - }, - { - count: 1, - status_code: 502, - timestamp: 1647806400000000, - }, - { - count: 72115, - status_code: 401, - timestamp: 1647806400000000, - }, - { - count: 103, - status_code: 400, - timestamp: 1647806400000000, - }, - { - count: 756, - status_code: 206, - timestamp: 1647806400000000, - }, - { - count: 18, - status_code: 304, - timestamp: 1647806400000000, - }, - { - count: 19, - status_code: 404, - timestamp: 1647806400000000, - }, - { - count: 21, - status_code: 303, - timestamp: 1647806400000000, - }, - { - count: 367, - status_code: 204, - timestamp: 1647806400000000, - }, - { - count: 3174, - status_code: 503, - timestamp: 1647806400000000, - }, - { - count: 3, - status_code: 524, - timestamp: 1647806400000000, - }, - { - count: 208, - status_code: 204, - timestamp: 1647810000000000, - }, - { - count: 1, - status_code: 404, - timestamp: 1647810000000000, - }, - { - count: 71259, - status_code: 401, - timestamp: 1647810000000000, - }, - { - count: 3, - status_code: 416, - timestamp: 1647810000000000, - }, - { - count: 561794, - status_code: 200, - timestamp: 1647810000000000, - }, - { - count: 3503, - status_code: 503, - timestamp: 1647810000000000, - }, - { - count: 151, - status_code: 400, - timestamp: 1647810000000000, - }, - { - count: 14, - status_code: 304, - timestamp: 1647810000000000, - }, - { - count: 453, - status_code: 206, - timestamp: 1647810000000000, - }, - { - count: 4, - status_code: 524, - timestamp: 1647810000000000, - }, - { - count: 103, - status_code: 201, - timestamp: 1647810000000000, - }, - { - count: 8, - status_code: 409, - timestamp: 1647810000000000, - }, - { - count: 31, - status_code: 303, - timestamp: 1647810000000000, - }, - { - count: 1, - status_code: 502, - timestamp: 1647813600000000, - }, - { - count: 2, - status_code: 409, - timestamp: 1647813600000000, - }, - { - count: 23, - status_code: 304, - timestamp: 1647813600000000, - }, - { - count: 2, - status_code: 524, - timestamp: 1647813600000000, - }, - { - count: 564270, - status_code: 200, - timestamp: 1647813600000000, - }, - { - count: 15, - status_code: 404, - timestamp: 1647813600000000, - }, - { - count: 70733, - status_code: 401, - timestamp: 1647813600000000, - }, - { - count: 79, - status_code: 400, - timestamp: 1647813600000000, - }, - { - count: 617, - status_code: 206, - timestamp: 1647813600000000, - }, - { - count: 4, - status_code: 429, - timestamp: 1647813600000000, - }, - { - count: 3810, - status_code: 503, - timestamp: 1647813600000000, - }, - { - count: 35, - status_code: 303, - timestamp: 1647813600000000, - }, - { - count: 219, - status_code: 204, - timestamp: 1647813600000000, - }, - { - count: 3, - status_code: 416, - timestamp: 1647813600000000, - }, - { - count: 157, - status_code: 201, - timestamp: 1647813600000000, - }, - { - count: 3, - status_code: 524, - timestamp: 1647817200000000, - }, - { - count: 172, - status_code: 201, - timestamp: 1647817200000000, - }, - { - count: 552900, - status_code: 200, - timestamp: 1647817200000000, - }, - { - count: 21, - status_code: 304, - timestamp: 1647817200000000, - }, - { - count: 1, - status_code: 429, - timestamp: 1647817200000000, - }, - { - count: 246, - status_code: 204, - timestamp: 1647817200000000, - }, - { - count: 2, - status_code: 409, - timestamp: 1647817200000000, - }, - { - count: 446, - status_code: 206, - timestamp: 1647817200000000, - }, - { - count: 35, - status_code: 303, - timestamp: 1647817200000000, - }, - { - count: 233, - status_code: 400, - timestamp: 1647817200000000, - }, - ], -} diff --git a/apps/studio/components/ui/Charts/StackedAreaChart.tsx b/apps/studio/components/ui/Charts/StackedAreaChart.tsx deleted file mode 100644 index f67fac87aed..00000000000 --- a/apps/studio/components/ui/Charts/StackedAreaChart.tsx +++ /dev/null @@ -1,123 +0,0 @@ -import dayjs from 'dayjs' -import { useMemo } from 'react' -import { - AreaChart, - XAxis, - YAxis, - Area, - Tooltip, - ResponsiveContainer, - CartesianGrid, - AreaProps, -} from 'recharts' -import EmptyState from './EmptyState' - -type Datum = { - [key: string]: any -} - -type Data = Datum[] -interface Props { - data?: Data - isLoading: boolean - xAxisKey: string - xAxisFormatAsDate?: boolean - dateFormat?: string - yAxisKey: string - stackKey: string - size?: 'small' | 'normal' | 'large' - styleMap: { - [key: string]: Pick - } -} - -const StackedAreaChart: React.FC = ({ - data, - xAxisKey, - dateFormat, - yAxisKey, - stackKey, - isLoading, - size = 'normal', - styleMap = {}, - xAxisFormatAsDate = false, -}) => { - const transformed = useMemo(() => { - if (!data) return [] - const mapping = data.reduce((acc, datum) => { - const x = datum[xAxisKey] - const y = datum[yAxisKey] - const s = datum[stackKey] - if (!acc[x]) { - acc[x] = {} - } - acc[x][s] = y - return acc - }, {}) - - const flattened = Object.entries(mapping).map(([x, sMap]) => ({ - ...(sMap as Datum), - [xAxisKey]: x, - })) - return flattened - }, [JSON.stringify(data)]) - - if (!isLoading && (data === undefined || data === null)) return - - const dataKeys = Object.keys(transformed[0] || {}).filter((k) => k !== xAxisKey && k !== yAxisKey) - - const formatToDate = (value: string | number | any) => { - if (!dateFormat) return value - if (!isNaN(Number(value))) { - const unix = String(value).length > 10 ? Number(String(value).slice(0, 10)) : value - return dayjs.unix(unix).format(dateFormat) - } else { - return dayjs(value).format(dateFormat) - } - } - const minHeight = { small: 120, normal: 160, large: 280 }[size] - return ( - - {}}> - - - - {dataKeys.map((k, index) => ( - - ))} - - - - ) -} - -export default StackedAreaChart diff --git a/apps/studio/components/ui/Charts/StackedBarChart.stories.tsx b/apps/studio/components/ui/Charts/StackedBarChart.stories.tsx index edf38164bda..0ce36d93de4 100644 --- a/apps/studio/components/ui/Charts/StackedBarChart.stories.tsx +++ b/apps/studio/components/ui/Charts/StackedBarChart.stories.tsx @@ -1,8 +1,7 @@ import React from 'react' -import { ComponentStory, ComponentMeta } from '@storybook/react' +import { ComponentMeta } from '@storybook/react' import dayjs from 'dayjs' import Chart from './StackedBarChart' -import { StackedChartProps } from './Charts.types' import { DEFAULT_STACK_COLORS, genStackColorScales } from './Charts.constants' export default { diff --git a/apps/studio/components/ui/DatePicker/DatePicker.types.ts b/apps/studio/components/ui/DatePicker/DatePicker.types.ts index feeb68dfd74..0f535d7c628 100644 --- a/apps/studio/components/ui/DatePicker/DatePicker.types.ts +++ b/apps/studio/components/ui/DatePicker/DatePicker.types.ts @@ -17,11 +17,3 @@ export interface TimeSplitInputProps { startDate: any endDate: any } - -export type Date = { - YYYY: string - MM: string - DD: string -} - -export type DateType = 'YYYY' | 'MM' | 'DD' diff --git a/apps/studio/components/ui/Flag/Flag.tsx b/apps/studio/components/ui/Flag/Flag.tsx deleted file mode 100644 index 7788408badc..00000000000 --- a/apps/studio/components/ui/Flag/Flag.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React, { ReactNode } from 'react' -import { useFlag } from 'hooks' - -interface Props { - children: ReactNode - name: string -} - -function Flag({ children, name }: Props) { - const flagValue = useFlag(name) - if (!flagValue) { - return null - } - return <>{children} -} - -export default Flag diff --git a/apps/studio/components/ui/Flag/FlagProvider.tsx b/apps/studio/components/ui/Flag/FlagProvider.tsx index fdd8f97f42b..e949bca4201 100644 --- a/apps/studio/components/ui/Flag/FlagProvider.tsx +++ b/apps/studio/components/ui/Flag/FlagProvider.tsx @@ -1,6 +1,5 @@ import { User } from '@supabase/supabase-js' import { PropsWithChildren, useEffect, useState } from 'react' -import * as configcat from 'configcat-js' import { IS_PLATFORM } from 'lib/constants' import FlagContext from './FlagContext' diff --git a/apps/studio/components/ui/Forms/FormSection.tsx b/apps/studio/components/ui/Forms/FormSection.tsx index 831b5da0e6b..b4908e38159 100644 --- a/apps/studio/components/ui/Forms/FormSection.tsx +++ b/apps/studio/components/ui/Forms/FormSection.tsx @@ -81,7 +81,7 @@ const FormSectionContent = ({ ${className} `} > - {loading ? Children.map(children, (child) => ) : children} + {loading ? Children.map(children, () => ) : children}
) } diff --git a/apps/studio/components/ui/MultiSelect/index.tsx b/apps/studio/components/ui/MultiSelect/index.tsx index d16c8e2a702..c22641b89b9 100644 --- a/apps/studio/components/ui/MultiSelect/index.tsx +++ b/apps/studio/components/ui/MultiSelect/index.tsx @@ -1,6 +1,6 @@ import clsx from 'clsx' import { filter, orderBy, without } from 'lodash' -import { KeyboardEvent, ReactNode, useEffect, useRef, useState } from 'react' +import { ReactNode, useEffect, useRef, useState } from 'react' import { IconAlertCircle, IconCheck, @@ -120,14 +120,6 @@ export default function MultiSelect({ onChange(formattedPayload) } - const onKeyPress = (e: KeyboardEvent) => { - if (e.key === 'Enter') { - if (searchString.length > 0 && filteredOptions.length === 1) { - handleChange(filteredOptions[0]) - } - } - } - return (
{label && } diff --git a/apps/studio/data/access-tokens/access-tokens-query.ts b/apps/studio/data/access-tokens/access-tokens-query.ts index 858ba912795..27e2fe6fd78 100644 --- a/apps/studio/data/access-tokens/access-tokens-query.ts +++ b/apps/studio/data/access-tokens/access-tokens-query.ts @@ -1,7 +1,6 @@ -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { get, isResponseOk } from 'lib/common/fetch' import { API_URL } from 'lib/constants' -import { useCallback } from 'react' import { accessTokenKeys } from './keys' export type AccessToken = { @@ -37,11 +36,3 @@ export const useAccessTokensQuery = ({ ({ signal }) => getAccessTokens(signal), options ) - -export const useAccessTokensPrefetch = () => { - const client = useQueryClient() - - return useCallback(() => { - client.prefetchQuery(accessTokenKeys.list(), ({ signal }) => getAccessTokens(signal)) - }, []) -} diff --git a/apps/studio/data/api-authorization/api-authorization-query.ts b/apps/studio/data/api-authorization/api-authorization-query.ts index 506461f479b..bfd3efc235a 100644 --- a/apps/studio/data/api-authorization/api-authorization-query.ts +++ b/apps/studio/data/api-authorization/api-authorization-query.ts @@ -1,8 +1,7 @@ import { OAuthScope } from '@supabase/shared-types/out/constants' -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { get } from 'lib/common/fetch' import { API_ADMIN_URL } from 'lib/constants' -import { useCallback } from 'react' import { resourceKeys } from './keys' export type ApiAuthorizationVariables = { @@ -46,15 +45,3 @@ export const useApiAuthorizationQuery = ( ...options, } ) - -export const useApiAuthorizationPrefetch = ({ id }: ApiAuthorizationVariables) => { - const client = useQueryClient() - - return useCallback(() => { - if (id) { - client.prefetchQuery(resourceKeys.resource(id), ({ signal }) => - getApiAuthorizationDetails({ id }, signal) - ) - } - }, [id]) -} diff --git a/apps/studio/data/auth/session-access-token-query.ts b/apps/studio/data/auth/session-access-token-query.ts index 89843071276..095a57d48fa 100644 --- a/apps/studio/data/auth/session-access-token-query.ts +++ b/apps/studio/data/auth/session-access-token-query.ts @@ -1,8 +1,7 @@ -import { useCallback } from 'react' -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { authKeys } from './keys' -import { auth, getAccessToken } from 'lib/gotrue' +import { getAccessToken } from 'lib/gotrue' export async function getSessionAccessToken() { // ignore if server-side @@ -28,11 +27,3 @@ export const useSessionAccessTokenQuery = ({ () => getSessionAccessToken(), options ) - -export const useSessionAccessTokenPrefetch = () => { - const client = useQueryClient() - return useCallback( - () => client.prefetchQuery(authKeys.accessToken(), () => getSessionAccessToken()), - [] - ) -} diff --git a/apps/studio/data/branches/branch-query.ts b/apps/studio/data/branches/branch-query.ts deleted file mode 100644 index 3eba27d674f..00000000000 --- a/apps/studio/data/branches/branch-query.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { useQuery, UseQueryOptions } from '@tanstack/react-query' -import { get } from 'data/fetchers' -import { branchKeys } from './keys' -import { ResponseError } from 'types' - -export type BranchVariables = { - id: string -} - -export async function getBranch({ id }: BranchVariables, signal?: AbortSignal) { - const { data, error } = await get(`/v1/branches/{branch_id}`, { - params: { path: { branch_id: id } }, - signal, - }) - - if (error) throw error - return data -} - -export type BranchData = Awaited> -export type BranchError = ResponseError - -export const useBranchQuery = ( - { id }: BranchVariables, - { enabled = true, ...options }: UseQueryOptions = {} -) => - useQuery( - branchKeys.detail(id), - ({ signal }) => getBranch({ id }, signal), - { enabled: enabled && typeof id !== 'undefined', ...options } - ) diff --git a/apps/studio/data/config/jwt-secret-updating-status-query.ts b/apps/studio/data/config/jwt-secret-updating-status-query.ts index 80f7024f0cc..e364826dbfb 100644 --- a/apps/studio/data/config/jwt-secret-updating-status-query.ts +++ b/apps/studio/data/config/jwt-secret-updating-status-query.ts @@ -2,7 +2,6 @@ import { JwtSecretUpdateStatus } from '@supabase/shared-types/out/events' import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' import { get } from 'lib/common/fetch' import { API_URL } from 'lib/constants' -import { useCallback } from 'react' import { configKeys } from './keys' export type JwtSecretUpdatingStatusVariables = { @@ -76,17 +75,3 @@ export const useJwtSecretUpdatingStatusQuery = { - const client = useQueryClient() - - return useCallback(() => { - if (projectRef) { - client.prefetchQuery(configKeys.jwtSecretUpdatingStatus(projectRef), ({ signal }) => - getJwtSecretUpdatingStatus({ projectRef }, signal) - ) - } - }, [projectRef]) -} diff --git a/apps/studio/data/config/project-api-query.ts b/apps/studio/data/config/project-api-query.ts index ac745d737ec..64ae4284cfa 100644 --- a/apps/studio/data/config/project-api-query.ts +++ b/apps/studio/data/config/project-api-query.ts @@ -1,7 +1,6 @@ -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { get } from 'lib/common/fetch' import { API_URL } from 'lib/constants' -import { useCallback } from 'react' import { configKeys } from './keys' import { ResponseError } from 'types' @@ -104,15 +103,3 @@ export const useProjectApiQuery = ( ...options, } ) - -export const useProjectApiPrefetch = ({ projectRef }: ProjectApiVariables) => { - const client = useQueryClient() - - return useCallback(() => { - if (projectRef) { - client.prefetchQuery(configKeys.api(projectRef), ({ signal }) => - getProjectApi({ projectRef }, signal) - ) - } - }, [projectRef]) -} diff --git a/apps/studio/data/config/project-postgrest-config-query.ts b/apps/studio/data/config/project-postgrest-config-query.ts index 4a8abe2ee13..f278ab01a9b 100644 --- a/apps/studio/data/config/project-postgrest-config-query.ts +++ b/apps/studio/data/config/project-postgrest-config-query.ts @@ -1,7 +1,6 @@ -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { get } from 'lib/common/fetch' import { API_URL } from 'lib/constants' -import { useCallback } from 'react' import { configKeys } from './keys' export type ProjectPostgrestConfigVariables = { @@ -53,17 +52,3 @@ export const useProjectPostgrestConfigQuery = { - const client = useQueryClient() - - return useCallback(() => { - if (projectRef) { - client.prefetchQuery(configKeys.postgrest(projectRef), ({ signal }) => - getProjectPostgrestConfig({ projectRef }, signal) - ) - } - }, [projectRef]) -} diff --git a/apps/studio/data/config/project-settings-query.ts b/apps/studio/data/config/project-settings-query.ts index d103444013f..a85ef8debe7 100644 --- a/apps/studio/data/config/project-settings-query.ts +++ b/apps/studio/data/config/project-settings-query.ts @@ -1,7 +1,6 @@ -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { get } from 'lib/common/fetch' import { API_URL, DEFAULT_PROJECT_API_SERVICE_ID } from 'lib/constants' -import { useCallback } from 'react' import { configKeys } from './keys' import { ResponseError } from 'types' @@ -104,15 +103,3 @@ export const useProjectSettingsQuery = ( ...options, } ) - -export const useProjectSettingsPrefetch = ({ projectRef }: ProjectSettingsVariables) => { - const client = useQueryClient() - - return useCallback(() => { - if (projectRef) { - client.prefetchQuery(configKeys.settings(projectRef), ({ signal }) => - getProjectSettings({ projectRef }, signal) - ) - } - }, [projectRef]) -} diff --git a/apps/studio/data/config/project-storage-config-query.ts b/apps/studio/data/config/project-storage-config-query.ts index fb6d717880e..4322d26c0be 100644 --- a/apps/studio/data/config/project-storage-config-query.ts +++ b/apps/studio/data/config/project-storage-config-query.ts @@ -1,7 +1,6 @@ -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { get } from 'lib/common/fetch' import { API_URL } from 'lib/constants' -import { useCallback } from 'react' import { configKeys } from './keys' export type ProjectStorageConfigVariables = { @@ -44,15 +43,3 @@ export const useProjectStorageConfigQuery = ( ({ signal }) => getProjectStorageConfig({ projectRef }, signal), { enabled: enabled && typeof projectRef !== 'undefined', ...options } ) - -export const useProjectStorageConfigPrefetch = ({ projectRef }: ProjectStorageConfigVariables) => { - const client = useQueryClient() - - return useCallback(() => { - if (projectRef) { - client.prefetchQuery(configKeys.storage(projectRef), ({ signal }) => - getProjectStorageConfig({ projectRef }, signal) - ) - } - }, [projectRef]) -} diff --git a/apps/studio/data/config/project-upgrade-eligibility-query.ts b/apps/studio/data/config/project-upgrade-eligibility-query.ts index 1dd96207a83..1968c3efa75 100644 --- a/apps/studio/data/config/project-upgrade-eligibility-query.ts +++ b/apps/studio/data/config/project-upgrade-eligibility-query.ts @@ -1,5 +1,4 @@ -import { useCallback } from 'react' -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { get } from 'lib/common/fetch' import { API_ADMIN_URL } from 'lib/constants' @@ -47,17 +46,3 @@ export const useProjectUpgradeEligibilityQuery = getProjectUpgradeEligibility({ projectRef }, signal), { enabled: enabled && typeof projectRef !== 'undefined', ...options } ) - -export const useProjectUpgradeEligibilityPrefetch = ({ - projectRef, -}: ProjectUpgradeEligibilityVariables) => { - const client = useQueryClient() - - return useCallback(() => { - if (projectRef) { - client.prefetchQuery(configKeys.upgradeEligibility(projectRef), ({ signal }) => - getProjectUpgradeEligibility({ projectRef }, signal) - ) - } - }, [projectRef]) -} diff --git a/apps/studio/data/config/project-upgrade-status-query.ts b/apps/studio/data/config/project-upgrade-status-query.ts index d212e0387b5..24315943109 100644 --- a/apps/studio/data/config/project-upgrade-status-query.ts +++ b/apps/studio/data/config/project-upgrade-status-query.ts @@ -6,7 +6,6 @@ import { } from '@supabase/shared-types/out/events' import { get } from 'lib/common/fetch' import { API_ADMIN_URL, PROJECT_STATUS } from 'lib/constants' -import { useCallback } from 'react' import { configKeys } from './keys' export type ProjectUpgradingStatusVariables = { @@ -78,18 +77,3 @@ export const useProjectUpgradingStatusQuery = { - const client = useQueryClient() - - //[josheh] need to invalidate the eligibility key - return useCallback(() => { - if (projectRef) { - client.prefetchQuery(configKeys.upgradeStatus(projectRef), ({ signal }) => - getProjectUpgradingStatus({ projectRef }, signal) - ) - } - }, [projectRef]) -} diff --git a/apps/studio/data/database-extensions/database-extensions-query.ts b/apps/studio/data/database-extensions/database-extensions-query.ts index aeef1d83bd3..47b2086eb42 100644 --- a/apps/studio/data/database-extensions/database-extensions-query.ts +++ b/apps/studio/data/database-extensions/database-extensions-query.ts @@ -1,6 +1,5 @@ -import { UseQueryOptions, useQuery, useQueryClient } from '@tanstack/react-query' +import { UseQueryOptions, useQuery } from '@tanstack/react-query' import { get } from 'data/fetchers' -import { useCallback } from 'react' import { ResponseError } from 'types' import { databaseExtensionsKeys } from './keys' @@ -53,15 +52,3 @@ export const useDatabaseExtensionsQuery = ( ...options, } ) - -export const useDatabaseExtensionsPrefetch = ({ projectRef }: DatabaseExtensionsVariables) => { - const client = useQueryClient() - - return useCallback(() => { - if (projectRef) { - client.prefetchQuery(databaseExtensionsKeys.list(projectRef), ({ signal }) => - getDatabaseExtensions({ projectRef }, signal) - ) - } - }, [projectRef]) -} diff --git a/apps/studio/data/database-functions/database-functions-query.ts b/apps/studio/data/database-functions/database-functions-query.ts index 03fc1a5605c..4f2af0855ed 100644 --- a/apps/studio/data/database-functions/database-functions-query.ts +++ b/apps/studio/data/database-functions/database-functions-query.ts @@ -1,6 +1,5 @@ -import { UseQueryOptions, useQuery, useQueryClient } from '@tanstack/react-query' +import { UseQueryOptions, useQuery } from '@tanstack/react-query' import { get } from 'data/fetchers' -import { useCallback } from 'react' import { ResponseError } from 'types' import { databaseFunctionsKeys } from './keys' import { components } from 'data/api' @@ -50,15 +49,3 @@ export const useDatabaseFunctionsQuery = ( ...options, } ) - -export const useDatabaseFunctionsPrefetch = ({ projectRef }: DatabaseFunctionsVariables) => { - const client = useQueryClient() - - return useCallback(() => { - if (projectRef) { - client.prefetchQuery(databaseFunctionsKeys.list(projectRef), ({ signal }) => - getDatabaseFunctions({ projectRef }, signal) - ) - } - }, [projectRef]) -} diff --git a/apps/studio/data/database-policies/database-policies-query.ts b/apps/studio/data/database-policies/database-policies-query.ts index e0a457af2b4..7245e5af1d1 100644 --- a/apps/studio/data/database-policies/database-policies-query.ts +++ b/apps/studio/data/database-policies/database-policies-query.ts @@ -1,5 +1,4 @@ -import { UseQueryOptions, useQuery, useQueryClient } from '@tanstack/react-query' -import { useCallback } from 'react' +import { UseQueryOptions, useQuery } from '@tanstack/react-query' import { get } from 'data/fetchers' import { ResponseError } from 'types' @@ -55,19 +54,3 @@ export const useDatabasePoliciesQuery = ( ...options, } ) - -export const useDatabasePoliciesPrefetch = ({ - projectRef, - connectionString, - schema, -}: DatabasePoliciesVariables) => { - const client = useQueryClient() - - return useCallback(() => { - if (projectRef) { - client.prefetchQuery(databasePoliciesKeys.list(projectRef, schema), ({ signal }) => - getDatabasePolicies({ projectRef, connectionString, schema }, signal) - ) - } - }, [projectRef]) -} diff --git a/apps/studio/data/database-publications/database-publications-query.ts b/apps/studio/data/database-publications/database-publications-query.ts index 869dca97dac..4c4055703f1 100644 --- a/apps/studio/data/database-publications/database-publications-query.ts +++ b/apps/studio/data/database-publications/database-publications-query.ts @@ -1,6 +1,5 @@ -import { UseQueryOptions, useQuery, useQueryClient } from '@tanstack/react-query' +import { UseQueryOptions, useQuery } from '@tanstack/react-query' import { get } from 'data/fetchers' -import { useCallback } from 'react' import { ResponseError } from 'types' import { databasePublicationsKeys } from './keys' @@ -53,15 +52,3 @@ export const useDatabasePublicationsQuery = ( ...options, } ) - -export const useDatabasePublicationsPrefetch = ({ projectRef }: DatabasePublicationsVariables) => { - const client = useQueryClient() - - return useCallback(() => { - if (projectRef) { - client.prefetchQuery(databasePublicationsKeys.list(projectRef), ({ signal }) => - getDatabasePublications({ projectRef }, signal) - ) - } - }, [projectRef]) -} diff --git a/apps/studio/data/database-roles/database-roles-query.ts b/apps/studio/data/database-roles/database-roles-query.ts index 9d8691ca980..4c276154d39 100644 --- a/apps/studio/data/database-roles/database-roles-query.ts +++ b/apps/studio/data/database-roles/database-roles-query.ts @@ -1,5 +1,4 @@ -import { UseQueryOptions, useQuery, useQueryClient } from '@tanstack/react-query' -import { useCallback } from 'react' +import { UseQueryOptions, useQuery } from '@tanstack/react-query' import { PostgresRole } from '@supabase/postgres-meta' import { get } from 'data/fetchers' @@ -48,15 +47,3 @@ export const useDatabaseRolesQuery = ( ...options, } ) - -export const useDatabaseRolesPrefetch = ({ projectRef }: DatabaseRolesVariables) => { - const client = useQueryClient() - - return useCallback(() => { - if (projectRef) { - client.prefetchQuery(databaseRolesKeys.list(projectRef), ({ signal }) => - getDatabaseRoles({ projectRef }, signal) - ) - } - }, [projectRef]) -} diff --git a/apps/studio/data/database-triggers/database-triggers-query.ts b/apps/studio/data/database-triggers/database-triggers-query.ts index c02d1582fba..98551a261f2 100644 --- a/apps/studio/data/database-triggers/database-triggers-query.ts +++ b/apps/studio/data/database-triggers/database-triggers-query.ts @@ -1,8 +1,7 @@ import { PostgresTrigger } from '@supabase/postgres-meta' -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { get } from 'lib/common/fetch' import { API_URL } from 'lib/constants' -import { useCallback } from 'react' import { databaseTriggerKeys } from './keys' import { ResponseError } from 'types' @@ -71,15 +70,3 @@ export const useDatabaseTriggersQuery = ( ...options, } ) - -export const useDatabaseTriggersPrefetch = ({ projectRef }: DatabaseTriggersVariables) => { - const client = useQueryClient() - - return useCallback(() => { - if (projectRef) { - client.prefetchQuery(databaseTriggerKeys.list(projectRef), ({ signal }) => - getDatabaseTriggers({ projectRef }, signal) - ) - } - }, [projectRef]) -} diff --git a/apps/studio/data/database/entity-definitions-query.ts b/apps/studio/data/database/entity-definitions-query.ts index e660a869236..5c6d93a1dac 100644 --- a/apps/studio/data/database/entity-definitions-query.ts +++ b/apps/studio/data/database/entity-definitions-query.ts @@ -1,6 +1,5 @@ import { UseQueryOptions } from '@tanstack/react-query' -import { useCallback } from 'react' -import { ExecuteSqlData, useExecuteSqlPrefetch, useExecuteSqlQuery } from '../sql/execute-sql-query' +import { ExecuteSqlData, useExecuteSqlQuery } from '../sql/execute-sql-query' import { CREATE_PG_GET_TABLEDEF_SQL } from './database-query-constants' export const getEntityDefinitionsQuery = (limit = 100) => { @@ -106,18 +105,3 @@ export const useEntityDefinitionsQuery = < } ) } - -export const useEntityDefinitionsQueryPrefetch = () => { - const prefetch = useExecuteSqlPrefetch() - - return useCallback( - ({ projectRef, connectionString }: EntityDefinitionsVariables) => - prefetch({ - projectRef, - connectionString, - sql: getEntityDefinitionsQuery(), - queryKey: ['entity-definitions'], - }), - [prefetch] - ) -} diff --git a/apps/studio/data/database/foreign-key-constraints-query.ts b/apps/studio/data/database/foreign-key-constraints-query.ts index e6cd657c733..28978c86bc4 100644 --- a/apps/studio/data/database/foreign-key-constraints-query.ts +++ b/apps/studio/data/database/foreign-key-constraints-query.ts @@ -1,6 +1,5 @@ import { UseQueryOptions } from '@tanstack/react-query' -import { useCallback } from 'react' -import { ExecuteSqlData, useExecuteSqlPrefetch, useExecuteSqlQuery } from '../sql/execute-sql-query' +import { ExecuteSqlData, useExecuteSqlQuery } from '../sql/execute-sql-query' type GetForeignKeyConstraintsVariables = { schema?: string @@ -109,18 +108,3 @@ export const useForeignKeyConstraintsQuery = < } ) } - -export const useForeignKeyConstraintsPrefetch = () => { - const prefetch = useExecuteSqlPrefetch() - - return useCallback( - ({ projectRef, connectionString, schema }: ForeignKeyConstraintsVariables) => - prefetch({ - projectRef, - connectionString, - sql: getForeignKeyConstraintsQuery({ schema }), - queryKey: ['foreign-key-constraints'], - }), - [prefetch] - ) -} diff --git a/apps/studio/data/database/functions-query.ts b/apps/studio/data/database/functions-query.ts index 7d6b7da50ee..e4607d7b878 100644 --- a/apps/studio/data/database/functions-query.ts +++ b/apps/studio/data/database/functions-query.ts @@ -1,6 +1,5 @@ -import { useCallback } from 'react' import { UseQueryOptions } from '@tanstack/react-query' -import { ExecuteSqlData, useExecuteSqlPrefetch, useExecuteSqlQuery } from '../sql/execute-sql-query' +import { ExecuteSqlData, useExecuteSqlQuery } from '../sql/execute-sql-query' export type DatabaseFunction = { schema: string @@ -70,18 +69,3 @@ export const useFunctionsQuery = ( } ) } - -export const useFunctionsPrefetch = () => { - const prefetch = useExecuteSqlPrefetch() - - return useCallback( - ({ projectRef, connectionString }: FunctionsVariables) => - prefetch({ - projectRef, - connectionString, - sql: getFunctionsQuery(), - queryKey: ['functions'], - }), - [prefetch] - ) -} diff --git a/apps/studio/data/database/keywords-query.ts b/apps/studio/data/database/keywords-query.ts index 5ee48633263..3ada32f254c 100644 --- a/apps/studio/data/database/keywords-query.ts +++ b/apps/studio/data/database/keywords-query.ts @@ -1,6 +1,5 @@ -import { useCallback } from 'react' import { UseQueryOptions } from '@tanstack/react-query' -import { ExecuteSqlData, useExecuteSqlPrefetch, useExecuteSqlQuery } from '../sql/execute-sql-query' +import { ExecuteSqlData, useExecuteSqlQuery } from '../sql/execute-sql-query' export type DatabaseKeyword = { word: string } @@ -41,18 +40,3 @@ export const useKeywordsQuery = ( } ) } - -export const useKeywordsPrefetch = () => { - const prefetch = useExecuteSqlPrefetch() - - return useCallback( - ({ projectRef, connectionString }: KeywordsVariables) => - prefetch({ - projectRef, - connectionString, - sql: getKeywordsQuery(), - queryKey: ['keywords'], - }), - [prefetch] - ) -} diff --git a/apps/studio/data/database/migrations-query.ts b/apps/studio/data/database/migrations-query.ts index 89f089c7511..619cb0fdd41 100644 --- a/apps/studio/data/database/migrations-query.ts +++ b/apps/studio/data/database/migrations-query.ts @@ -1,6 +1,5 @@ -import { useCallback } from 'react' import { UseQueryOptions } from '@tanstack/react-query' -import { ExecuteSqlData, useExecuteSqlPrefetch, useExecuteSqlQuery } from '../sql/execute-sql-query' +import { ExecuteSqlData, useExecuteSqlQuery } from '../sql/execute-sql-query' export type DatabaseMigration = { version: string @@ -50,18 +49,3 @@ export const useMigrationsQuery = { - const prefetch = useExecuteSqlPrefetch() - - return useCallback( - ({ projectRef, connectionString }: MigrationsVariables) => - prefetch({ - projectRef, - connectionString, - sql: getMigrationsQuery(), - queryKey: ['migrations'], - }), - [prefetch] - ) -} diff --git a/apps/studio/data/database/pooling-configuration-query.ts b/apps/studio/data/database/pooling-configuration-query.ts index b4d47e0bb4d..9a02f1b5e21 100644 --- a/apps/studio/data/database/pooling-configuration-query.ts +++ b/apps/studio/data/database/pooling-configuration-query.ts @@ -1,6 +1,5 @@ -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { get } from 'data/fetchers' -import { useCallback } from 'react' import { ResponseError } from 'types' import { databaseKeys } from './keys' @@ -38,15 +37,3 @@ export const usePoolingConfigurationQuery = ( ...options, } ) - -export const usePoolingConfigurationPrefetch = ({ projectRef }: PoolingConfigurationVariables) => { - const client = useQueryClient() - - return useCallback(() => { - if (projectRef) { - client.prefetchQuery(databaseKeys.poolingConfiguration(projectRef), ({ signal }) => - getPoolingConfiguration({ projectRef }, signal) - ) - } - }, [projectRef]) -} diff --git a/apps/studio/data/database/table-columns-query.ts b/apps/studio/data/database/table-columns-query.ts index 8759c26e6c2..d1cae3c3159 100644 --- a/apps/studio/data/database/table-columns-query.ts +++ b/apps/studio/data/database/table-columns-query.ts @@ -1,6 +1,5 @@ -import { useCallback } from 'react' import { UseQueryOptions } from '@tanstack/react-query' -import { ExecuteSqlData, useExecuteSqlPrefetch, useExecuteSqlQuery } from '../sql/execute-sql-query' +import { ExecuteSqlData, useExecuteSqlQuery } from '../sql/execute-sql-query' export type TableColumn = { schemaname: string diff --git a/apps/studio/data/database/table-definition-query.ts b/apps/studio/data/database/table-definition-query.ts index 1590c7f072c..3e3ed730b4e 100644 --- a/apps/studio/data/database/table-definition-query.ts +++ b/apps/studio/data/database/table-definition-query.ts @@ -1,6 +1,5 @@ import { UseQueryOptions } from '@tanstack/react-query' -import { useCallback } from 'react' -import { ExecuteSqlData, useExecuteSqlPrefetch, useExecuteSqlQuery } from '../sql/execute-sql-query' +import { ExecuteSqlData, useExecuteSqlQuery } from '../sql/execute-sql-query' import { CREATE_PG_GET_TABLEDEF_SQL } from './database-query-constants' type GetTableDefinition = { @@ -51,18 +50,3 @@ export const useTableDefinitionQuery = { - const prefetch = useExecuteSqlPrefetch() - - return useCallback( - ({ projectRef, connectionString, schema, name }: TableDefinitionVariables) => - prefetch({ - projectRef, - connectionString, - sql: getTableDefinitionQuery({ schema, name }), - queryKey: ['table-definition', schema, name], - }), - [prefetch] - ) -} diff --git a/apps/studio/data/database/view-definition-query.ts b/apps/studio/data/database/view-definition-query.ts index b9036ccc565..21cbd47ae2a 100644 --- a/apps/studio/data/database/view-definition-query.ts +++ b/apps/studio/data/database/view-definition-query.ts @@ -1,6 +1,5 @@ import { UseQueryOptions } from '@tanstack/react-query' -import { useCallback } from 'react' -import { ExecuteSqlData, useExecuteSqlPrefetch, useExecuteSqlQuery } from '../sql/execute-sql-query' +import { ExecuteSqlData, useExecuteSqlQuery } from '../sql/execute-sql-query' type GetViewDefinition = { schema?: string @@ -44,18 +43,3 @@ export const useViewDefinitionQuery = { - const prefetch = useExecuteSqlPrefetch() - - return useCallback( - ({ projectRef, connectionString, schema, name }: ViewDefinitionVariables) => - prefetch({ - projectRef, - connectionString, - sql: getViewDefinitionQuery({ schema, name }), - queryKey: ['view-definition', schema, name], - }), - [prefetch] - ) -} diff --git a/apps/studio/data/docs/project-json-schema-query.ts b/apps/studio/data/docs/project-json-schema-query.ts index 1155f7c14a6..43bc304a840 100644 --- a/apps/studio/data/docs/project-json-schema-query.ts +++ b/apps/studio/data/docs/project-json-schema-query.ts @@ -1,7 +1,6 @@ -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { get } from 'lib/common/fetch' import { API_URL } from 'lib/constants' -import { useCallback } from 'react' import { docsKeys } from './keys' export type ProjectJsonSchemaVariables = { @@ -42,15 +41,3 @@ export const useProjectJsonSchemaQuery = ( ...options, } ) - -export const useProjectJsonSchemaPrefetch = ({ projectRef }: ProjectJsonSchemaVariables) => { - const client = useQueryClient() - - return useCallback(() => { - if (projectRef) { - client.prefetchQuery(docsKeys.jsonSchema(projectRef), ({ signal }) => - getProjectJsonSchema({ projectRef }, signal) - ) - } - }, [projectRef]) -} diff --git a/apps/studio/data/edge-functions/edge-function-query.ts b/apps/studio/data/edge-functions/edge-function-query.ts index f2888ef0d1f..fe8d0c0d83d 100644 --- a/apps/studio/data/edge-functions/edge-function-query.ts +++ b/apps/studio/data/edge-functions/edge-function-query.ts @@ -1,7 +1,6 @@ -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { get } from 'lib/common/fetch' import { API_ADMIN_URL, IS_PLATFORM } from 'lib/constants' -import { useCallback } from 'react' import { edgeFunctionsKeys } from './keys' export type EdgeFunctionVariables = { @@ -52,15 +51,3 @@ export const useEdgeFunctionQuery = ( ...options, } ) - -export const useResourcePrefetch = ({ projectRef, slug }: EdgeFunctionVariables) => { - const client = useQueryClient() - - return useCallback(() => { - if (projectRef && slug) { - client.prefetchQuery(edgeFunctionsKeys.detail(projectRef, slug), ({ signal }) => - getEdgeFunction({ projectRef, slug }, signal) - ) - } - }, [projectRef, slug]) -} diff --git a/apps/studio/data/edge-functions/edge-functions-query.ts b/apps/studio/data/edge-functions/edge-functions-query.ts index b93342b2835..2c34d320c9d 100644 --- a/apps/studio/data/edge-functions/edge-functions-query.ts +++ b/apps/studio/data/edge-functions/edge-functions-query.ts @@ -1,7 +1,6 @@ -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { get } from 'lib/common/fetch' import { API_ADMIN_URL, IS_PLATFORM } from 'lib/constants' -import { useCallback } from 'react' import { edgeFunctionsKeys } from './keys' import { ResponseError } from 'types' @@ -44,15 +43,3 @@ export const useEdgeFunctionsQuery = ( ({ signal }) => getEdgeFunctions({ projectRef }, signal), { enabled: IS_PLATFORM && enabled && typeof projectRef !== 'undefined', ...options } ) - -export const useEdgeFunctionsPrefetch = ({ projectRef }: EdgeFunctionsVariables) => { - const client = useQueryClient() - - return useCallback(() => { - if (projectRef) { - client.prefetchQuery(edgeFunctionsKeys.list(projectRef), ({ signal }) => - getEdgeFunctions({ projectRef }, signal) - ) - } - }, [projectRef]) -} diff --git a/apps/studio/data/entity-types/entity-type-query.ts b/apps/studio/data/entity-types/entity-type-query.ts index 96c2fb624bb..36bb8c2dd97 100644 --- a/apps/studio/data/entity-types/entity-type-query.ts +++ b/apps/studio/data/entity-types/entity-type-query.ts @@ -1,6 +1,5 @@ import { UseQueryOptions } from '@tanstack/react-query' -import { useCallback } from 'react' -import { ExecuteSqlData, useExecuteSqlPrefetch, useExecuteSqlQuery } from '../sql/execute-sql-query' +import { ExecuteSqlData, useExecuteSqlQuery } from '../sql/execute-sql-query' import { ENTITY_TYPE } from './entity-type-constants' type EntityTypeArgs = { @@ -75,30 +74,3 @@ export const useEntityTypeQuery = prefetch({ ...args })}> - * Start loading on hover - * - * ) - */ -export const useEntityTypePrefetch = () => { - const prefetch = useExecuteSqlPrefetch() - - return useCallback( - ({ projectRef, connectionString, id, ...args }: EntityTypeVariables) => - prefetch({ - projectRef, - connectionString, - sql: entityTypeSqlQuery({ id, ...args }), - queryKey: ['entity-type', id], - }), - [prefetch] - ) -} diff --git a/apps/studio/data/fdw/fdws-query.ts b/apps/studio/data/fdw/fdws-query.ts index 832126b5ec2..8851d54d6ee 100644 --- a/apps/studio/data/fdw/fdws-query.ts +++ b/apps/studio/data/fdw/fdws-query.ts @@ -1,6 +1,5 @@ import { UseQueryOptions } from '@tanstack/react-query' -import { useCallback } from 'react' -import { ExecuteSqlData, useExecuteSqlPrefetch, useExecuteSqlQuery } from '../sql/execute-sql-query' +import { ExecuteSqlData, useExecuteSqlQuery } from '../sql/execute-sql-query' export const getFDWsSql = () => { const sql = /* SQL */ ` @@ -88,18 +87,3 @@ export const useFDWsQuery = ( }, options ) - -export const useFDWsPrefetch = () => { - const prefetch = useExecuteSqlPrefetch() - - return useCallback( - ({ projectRef, connectionString }: FDWsVariables) => - prefetch({ - projectRef, - connectionString, - sql: getFDWsSql(), - queryKey: ['fdws'], - }), - [prefetch] - ) -} diff --git a/apps/studio/data/foreign-tables/foreign-tables-query.ts b/apps/studio/data/foreign-tables/foreign-tables-query.ts deleted file mode 100644 index 99ce73a2a0f..00000000000 --- a/apps/studio/data/foreign-tables/foreign-tables-query.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { PostgresTable } from '@supabase/postgres-meta' -import { useQuery, UseQueryOptions } from '@tanstack/react-query' -import { get } from 'lib/common/fetch' -import { API_URL } from 'lib/constants' -import { ForeignTable } from './foreign-table-query' -import { foreignTableKeys } from './keys' - -export type ForeignTablesVariables = { - projectRef?: string - connectionString?: string -} - -export type ForeignTablesResponse = ForeignTable[] | { error?: any } - -export async function getForeignTables( - { projectRef, connectionString }: ForeignTablesVariables, - signal?: AbortSignal -) { - if (!projectRef) { - throw new Error('projectRef is required') - } - - let headers = new Headers() - if (connectionString) headers.set('x-connection-encrypted', connectionString) - - const response = (await get(`${API_URL}/pg-meta/${projectRef}/foreign-tables`, { - headers: Object.fromEntries(headers), - signal, - })) as ForeignTablesResponse - - if (!Array.isArray(response) && response.error) { - throw response.error - } - - return response as PostgresTable[] -} - -export type ForeignTablesData = Awaited> -export type ForeignTablesError = unknown - -export const useForeignTablesQuery = ( - { projectRef, connectionString }: ForeignTablesVariables, - { enabled = true, ...options }: UseQueryOptions = {} -) => - useQuery( - foreignTableKeys.list(projectRef), - ({ signal }) => getForeignTables({ projectRef, connectionString }, signal), - { enabled: enabled && typeof projectRef !== 'undefined', ...options } - ) diff --git a/apps/studio/data/integrations/integrations-vercel-installed-connections-query.ts b/apps/studio/data/integrations/integrations-vercel-installed-connections-query.ts deleted file mode 100644 index 6ed09c53ee7..00000000000 --- a/apps/studio/data/integrations/integrations-vercel-installed-connections-query.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' -import { get } from 'lib/common/fetch' -import { API_URL } from 'lib/constants' -import { useCallback } from 'react' -import { integrationKeys } from './keys' - -export type VercelProjectsVariables = { - organization_integration_id?: string -} - -export type VercelProjectsResponse = { - id: string - name: string - metadata: { - id: string - name: string - framework: string - link: string - } -} - -export async function getVercelInstalledConnections( - { organization_integration_id }: VercelProjectsVariables, - signal?: AbortSignal -) { - if (!organization_integration_id) { - throw new Error('organization_integration_id is required') - } - - const response = await get( - `${API_URL}/integrations/vercel/connections/${organization_integration_id}`, - { - signal, - } - ) - if (response.error) { - throw response.error - } - - return response as VercelProjectsResponse[] -} - -export type VercelProjectsData = Awaited> -export type VercelProjectsError = unknown - -export const useVercelProjectConnectionsQuery = ( - { organization_integration_id }: VercelProjectsVariables, - { - enabled = true, - ...options - }: UseQueryOptions = {} -) => - useQuery( - integrationKeys.vercelConnectionsList(organization_integration_id), - ({ signal }) => getVercelInstalledConnections({ organization_integration_id }, signal), - { - enabled: enabled && typeof organization_integration_id !== 'undefined', - ...options, - } - ) diff --git a/apps/studio/data/materialized-views/materialized-views-query.ts b/apps/studio/data/materialized-views/materialized-views-query.ts deleted file mode 100644 index 5f84c001834..00000000000 --- a/apps/studio/data/materialized-views/materialized-views-query.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { PostgresMaterializedView } from '@supabase/postgres-meta' -import { useQuery, UseQueryOptions } from '@tanstack/react-query' -import { get } from 'lib/common/fetch' -import { API_URL } from 'lib/constants' -import { materializedViewKeys } from './keys' -import { MaterializedView } from './materialized-view-query' - -export type MaterializedViewsVariables = { - projectRef?: string - connectionString?: string -} - -export type MaterializedViewsResponse = MaterializedView[] | { error?: any } - -export async function getMaterializedViews( - { projectRef, connectionString }: MaterializedViewsVariables, - signal?: AbortSignal -) { - if (!projectRef) { - throw new Error('projectRef is required') - } - - let headers = new Headers() - if (connectionString) headers.set('x-connection-encrypted', connectionString) - - const response = (await get(`${API_URL}/pg-meta/${projectRef}/materialized-views`, { - headers: Object.fromEntries(headers), - signal, - })) as MaterializedViewsResponse - - if (!Array.isArray(response) && response.error) { - throw response.error - } - - return response as PostgresMaterializedView[] -} - -export type MaterializedViewsData = Awaited> -export type MaterializedViewsError = unknown - -export const useMaterializedViewsQuery = ( - { projectRef, connectionString }: MaterializedViewsVariables, - { - enabled = true, - ...options - }: UseQueryOptions = {} -) => - useQuery( - materializedViewKeys.list(projectRef), - ({ signal }) => getMaterializedViews({ projectRef, connectionString }, signal), - { enabled: enabled && typeof projectRef !== 'undefined', ...options } - ) diff --git a/apps/studio/data/network-restrictions/network-restrictions-query.ts b/apps/studio/data/network-restrictions/network-restrictions-query.ts index 41b70733b8f..366f53ecd2f 100644 --- a/apps/studio/data/network-restrictions/network-restrictions-query.ts +++ b/apps/studio/data/network-restrictions/network-restrictions-query.ts @@ -1,5 +1,4 @@ -import { useCallback } from 'react' -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { networkRestrictionKeys } from './keys' import { get } from 'lib/common/fetch' @@ -61,15 +60,3 @@ export const useNetworkRestrictionsQuery = ( ({ signal }) => getNetworkRestrictions({ projectRef }, signal), { enabled: enabled && typeof projectRef !== 'undefined', ...options } ) - -export const useNetworkRestrictionsPrefetch = ({ projectRef }: NetworkRestrictionsVariables) => { - const client = useQueryClient() - - return useCallback(() => { - if (projectRef) { - client.prefetchQuery(networkRestrictionKeys.list(projectRef), ({ signal }) => - getNetworkRestrictions({ projectRef }, signal) - ) - } - }, [projectRef]) -} diff --git a/apps/studio/data/notifications/notifications-query.ts b/apps/studio/data/notifications/notifications-query.ts index 7cbc6fb0c98..031ba399f68 100644 --- a/apps/studio/data/notifications/notifications-query.ts +++ b/apps/studio/data/notifications/notifications-query.ts @@ -1,8 +1,7 @@ import { Notification } from '@supabase/shared-types/out/notifications' -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { get } from 'lib/common/fetch' import { API_URL } from 'lib/constants' -import { useCallback } from 'react' import { notificationKeys } from './keys' export type NotificationsResponse = Notification[] @@ -29,11 +28,3 @@ export const useNotificationsQuery = ( ({ signal }) => getNotifications(signal), options ) - -export const useNotificationsPrefetch = () => { - const client = useQueryClient() - - return useCallback(() => { - client.prefetchQuery(notificationKeys.list(), ({ signal }) => getNotifications(signal)) - }, []) -} diff --git a/apps/studio/data/oauth/authorized-apps-query.ts b/apps/studio/data/oauth/authorized-apps-query.ts index 6c37cdaf441..278920280cd 100644 --- a/apps/studio/data/oauth/authorized-apps-query.ts +++ b/apps/studio/data/oauth/authorized-apps-query.ts @@ -1,7 +1,6 @@ -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { get } from 'lib/common/fetch' import { API_ADMIN_URL } from 'lib/constants' -import { useCallback } from 'react' import { oauthAppKeys } from './keys' import { ResponseError } from 'types' @@ -45,15 +44,3 @@ export const useAuthorizedAppsQuery = ( ...options, } ) - -export const useAuthorizedAppsPrefetch = ({ slug }: AuthorizedAppsVariables) => { - const client = useQueryClient() - - return useCallback(() => { - if (slug) { - client.prefetchQuery(oauthAppKeys.authorizedApps(slug), ({ signal }) => - getAuthorizedApps({ slug }, signal) - ) - } - }, [slug]) -} diff --git a/apps/studio/data/oauth/oauth-apps-query.ts b/apps/studio/data/oauth/oauth-apps-query.ts index 78247b54dd1..5281f01c390 100644 --- a/apps/studio/data/oauth/oauth-apps-query.ts +++ b/apps/studio/data/oauth/oauth-apps-query.ts @@ -1,8 +1,7 @@ import { OAuthScope } from '@supabase/shared-types/out/constants' -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { get } from 'lib/common/fetch' import { API_ADMIN_URL } from 'lib/constants' -import { useCallback } from 'react' import { ResponseError } from 'types' import { oauthAppKeys } from './keys' @@ -47,15 +46,3 @@ export const useOAuthAppsQuery = ( ...options, } ) - -export const useOAuthAppsPrefetch = ({ slug }: OAuthAppsVariables) => { - const client = useQueryClient() - - return useCallback(() => { - if (slug) { - client.prefetchQuery(oauthAppKeys.oauthApps(slug), ({ signal }) => - getOAuthApps({ slug }, signal) - ) - } - }, [slug]) -} diff --git a/apps/studio/data/organizations/organizations-query.ts b/apps/studio/data/organizations/organizations-query.ts index c2c96520364..be097cd02e5 100644 --- a/apps/studio/data/organizations/organizations-query.ts +++ b/apps/studio/data/organizations/organizations-query.ts @@ -30,16 +30,6 @@ export const useOrganizationsQuery = ({ { enabled: enabled, ...options, staleTime: 30 * 60 * 1000 } ) -export function prefetchOrganizations(client: QueryClient) { - return client.prefetchQuery(organizationKeys.list(), ({ signal }) => getOrganizations(signal)) -} - -export const useOrganizationsPrefetch = () => { - const client = useQueryClient() - - return useCallback(() => prefetchOrganizations(client), []) -} - export function invalidateOrganizationsQuery(client: QueryClient) { return client.invalidateQueries(organizationKeys.list()) } diff --git a/apps/studio/data/permissions/permissions-query.ts b/apps/studio/data/permissions/permissions-query.ts index d98a9a2a15b..6d685c87c49 100644 --- a/apps/studio/data/permissions/permissions-query.ts +++ b/apps/studio/data/permissions/permissions-query.ts @@ -1,5 +1,4 @@ -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' -import { useCallback } from 'react' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { get } from 'lib/common/fetch' import { API_URL, IS_PLATFORM } from 'lib/constants' @@ -32,11 +31,3 @@ export const usePermissionsQuery = ( staleTime: 30 * 60 * 1000, } ) - -export const usePermissionsPrefetch = () => { - const client = useQueryClient() - - return useCallback(() => { - client.prefetchQuery(permissionKeys.list(), ({ signal }) => getPermissions(signal)) - }, []) -} diff --git a/apps/studio/data/platform/platform-status-query.ts b/apps/studio/data/platform/platform-status-query.ts index 0cff8bfd4f5..0f22169ec1d 100644 --- a/apps/studio/data/platform/platform-status-query.ts +++ b/apps/studio/data/platform/platform-status-query.ts @@ -1,7 +1,6 @@ -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { get } from 'lib/common/fetch' import { API_URL } from 'lib/constants' -import { useCallback } from 'react' import { platformKeys } from './keys' export type PlatformStatusResponse = { @@ -30,11 +29,3 @@ export const usePlatformStatusQuery = ( ({ signal }) => getPlatformStatus(signal), options ) - -export const usePlatformStatusPrefetch = () => { - const client = useQueryClient() - - return useCallback(() => { - client.prefetchQuery(platformKeys.status(), ({ signal }) => getPlatformStatus(signal)) - }, []) -} diff --git a/apps/studio/data/profile/password-check-mutation.ts b/apps/studio/data/profile/password-check-mutation.ts deleted file mode 100644 index 32e6bc7acd6..00000000000 --- a/apps/studio/data/profile/password-check-mutation.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { useMutation, UseMutationOptions } from '@tanstack/react-query' -import { toast } from 'react-hot-toast' - -import { post } from 'data/fetchers' -import { ResponseError } from 'types' - -export type PasswordCheckVariables = { - password: string -} - -export async function checkPasswordStrength({ password }: PasswordCheckVariables) { - const { data, error } = await post('/platform/profile/password-check', { body: { password } }) - if (error) throw error - return data -} - -type PasswordCheckData = Awaited> - -export const usePasswordCheckMutation = ({ - onSuccess, - onError, - ...options -}: Omit< - UseMutationOptions, - 'mutationFn' -> = {}) => { - return useMutation( - (vars) => checkPasswordStrength(vars), - { - async onSuccess(data, variables, context) { - await onSuccess?.(data, variables, context) - }, - async onError(data, variables, context) { - if (onError === undefined) { - toast.error(`Failed to check password: ${data.message}`) - } else { - onError(data, variables, context) - } - }, - ...options, - } - ) -} diff --git a/apps/studio/data/service-status/pooler-service-status-query.ts b/apps/studio/data/service-status/pooler-service-status-query.ts deleted file mode 100644 index 51df2547198..00000000000 --- a/apps/studio/data/service-status/pooler-service-status-query.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { useQuery, UseQueryOptions } from '@tanstack/react-query' - -import { post } from 'lib/common/fetch' -import { ResponseError } from 'types' -import { serviceStatusKeys } from './keys' -import { API_URL } from 'lib/constants' - -// [Joshen] Need API to return a separate connectionString for pooler before we can do this - -export type PoolerServiceStatusVariables = { - projectRef?: string - connectionString?: string -} - -export async function getPoolerServiceStatus( - { projectRef, connectionString }: PoolerServiceStatusVariables, - signal?: AbortSignal -) { - if (!projectRef) throw new Error('projectRef is required') - if (!connectionString) throw new Error('connectionString is required') - - let headers = new Headers() - headers.set('x-connection-encrypted', connectionString) - - const response = await post( - `${API_URL}/pg-meta/${projectRef}/query?key=service_status`, - { query: 'select 1' }, - { headers: Object.fromEntries(headers), signal } - ) - - return response.error === undefined -} - -export type PoolerServiceStatusData = Awaited> -export type PoolerServiceStatusError = ResponseError - -export const usePoolerServiceStatusQuery = ( - { projectRef, connectionString }: PoolerServiceStatusVariables, - { - enabled = true, - ...options - }: UseQueryOptions = {} -) => - useQuery( - serviceStatusKeys.postgres(projectRef), - ({ signal }) => getPoolerServiceStatus({ projectRef, connectionString }, signal), - { - enabled: - enabled && typeof projectRef !== 'undefined' && typeof connectionString !== 'undefined', - ...options, - } - ) diff --git a/apps/studio/data/sql/execute-sql-query.ts b/apps/studio/data/sql/execute-sql-query.ts index b869452979a..91156f3f07e 100644 --- a/apps/studio/data/sql/execute-sql-query.ts +++ b/apps/studio/data/sql/execute-sql-query.ts @@ -1,11 +1,4 @@ -import { - QueryClient, - QueryKey, - useQuery, - useQueryClient, - UseQueryOptions, -} from '@tanstack/react-query' -import { useCallback } from 'react' +import { QueryClient, QueryKey, useQuery, UseQueryOptions } from '@tanstack/react-query' import { post } from 'data/fetchers' import { @@ -138,36 +131,3 @@ export const prefetchExecuteSql = ( executeSql({ projectRef, connectionString, sql, queryKey, handleError }, signal) ) } - -/** - * useExecuteSqlPrefetch is used for prefetching a SQL query. For example, starting a query loading before a page is navigated to. - * - * @example - * const prefetch = useExecuteSqlPrefetch() - * - * return ( - * prefetch({ ...args })}> - * Start loading on hover - * - * ) - */ -export const useExecuteSqlPrefetch = () => { - const client = useQueryClient() - - return useCallback( - ({ projectRef, connectionString, sql, queryKey, handleError }: ExecuteSqlVariables) => { - if (projectRef) { - return prefetchExecuteSql(client, { - projectRef, - connectionString, - sql, - queryKey, - handleError, - }) - } - - return Promise.resolve() - }, - [client] - ) -} diff --git a/apps/studio/data/ssl-enforcement/ssl-enforcement-query.ts b/apps/studio/data/ssl-enforcement/ssl-enforcement-query.ts index 7f1d0f079d9..2828f01cd3b 100644 --- a/apps/studio/data/ssl-enforcement/ssl-enforcement-query.ts +++ b/apps/studio/data/ssl-enforcement/ssl-enforcement-query.ts @@ -1,7 +1,6 @@ -import { useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query' +import { useQuery, UseQueryOptions } from '@tanstack/react-query' import { get } from 'lib/common/fetch' import { API_ADMIN_URL } from 'lib/constants' -import { useCallback } from 'react' import { sslEnforcementKeys } from './keys' export type SSLEnforcementVariables = { projectRef?: string } @@ -59,15 +58,3 @@ export const useSSLEnforcementQuery = ( ({ signal }) => getSSLEnforcementConfiguration({ projectRef }, signal), { enabled: enabled && typeof projectRef !== 'undefined', ...options } ) - -export const useSSLEnforcementPrefetch = ({ projectRef }: SSLEnforcementVariables) => { - const client = useQueryClient() - - return useCallback(() => { - if (projectRef) { - client.prefetchQuery(sslEnforcementKeys.list(projectRef), ({ signal }) => - getSSLEnforcementConfiguration({ projectRef }, signal) - ) - } - }, [projectRef]) -} diff --git a/apps/studio/data/table-rows/table-rows-count-query.ts b/apps/studio/data/table-rows/table-rows-count-query.ts index 64ce238de04..9f2446d88f3 100644 --- a/apps/studio/data/table-rows/table-rows-count-query.ts +++ b/apps/studio/data/table-rows/table-rows-count-query.ts @@ -1,10 +1,9 @@ import { QueryKey, UseQueryOptions } from '@tanstack/react-query' -import { useCallback } from 'react' import { Filter, Query, SupaTable } from 'components/grid' import { ImpersonationRole, wrapWithRoleImpersonation } from 'lib/role-impersonation' import { useIsRoleImpersonationEnabled } from 'state/role-impersonation-state' -import { ExecuteSqlData, useExecuteSqlPrefetch, useExecuteSqlQuery } from '../sql/execute-sql-query' +import { ExecuteSqlData, useExecuteSqlQuery } from '../sql/execute-sql-query' import { formatFilterValue } from './utils' type GetTableRowsCountArgs = { @@ -88,33 +87,3 @@ export const useTableRowsCountQuery = prefetch({ ...args })}> - * Start loading on hover - * - * ) - */ -export const useTableRowsCountPrefetch = () => { - const prefetch = useExecuteSqlPrefetch() - - return useCallback( - ({ projectRef, connectionString, queryKey, table, ...args }: TableRowsCountVariables) => - prefetch({ - projectRef, - connectionString, - sql: getTableRowsCountSqlQuery({ table, ...args }), - queryKey: [ - ...(queryKey ?? []), - { table: { name: table?.name, schema: table?.schema }, ...args }, - ], - }), - [prefetch] - ) -} diff --git a/apps/studio/data/table-rows/table-rows-query.ts b/apps/studio/data/table-rows/table-rows-query.ts index 2b3930b5434..4be515b8e59 100644 --- a/apps/studio/data/table-rows/table-rows-query.ts +++ b/apps/studio/data/table-rows/table-rows-query.ts @@ -1,14 +1,8 @@ import { QueryKey, UseQueryOptions } from '@tanstack/react-query' import { Filter, Query, Sort, SupaRow, SupaTable } from 'components/grid' import { ImpersonationRole, wrapWithRoleImpersonation } from 'lib/role-impersonation' -import { useCallback } from 'react' import { useIsRoleImpersonationEnabled } from 'state/role-impersonation-state' -import { - ExecuteSqlData, - executeSql, - useExecuteSqlPrefetch, - useExecuteSqlQuery, -} from '../sql/execute-sql-query' +import { ExecuteSqlData, executeSql, useExecuteSqlQuery } from '../sql/execute-sql-query' import { getPagination } from '../utils/pagination' import { formatFilterValue } from './utils' import { IS_PLATFORM } from 'common' @@ -178,33 +172,3 @@ export const useTableRowsQuery = ( } ) } - -/** - * useTableRowsPrefetch is used for prefetching table rows. For example, starting a query loading before a page is navigated to. - * - * @example - * const prefetch = useTableRowsPrefetch({ projectRef }) - * - * return ( - * prefetch()}> - * Start loading on hover - * - * ) - */ -export const useTableRowsPrefetch = () => { - const prefetch = useExecuteSqlPrefetch() - - return useCallback( - ({ projectRef, connectionString, queryKey, table, ...args }: TableRowsVariables) => - prefetch({ - projectRef, - connectionString, - sql: getTableRowsSqlQuery({ table, ...args }), - queryKey: [ - ...(queryKey ?? []), - { table: { name: table?.name, schema: table?.schema }, ...args }, - ], - }), - [prefetch] - ) -} diff --git a/apps/studio/hooks/deprecated.ts b/apps/studio/hooks/deprecated.ts index 6fe17eb1b94..22309e7adc7 100644 --- a/apps/studio/hooks/deprecated.ts +++ b/apps/studio/hooks/deprecated.ts @@ -2,40 +2,6 @@ import { useRef, useEffect, useState } from 'react' import { includes } from 'lodash' import TooltipListener from 'components/to-be-cleaned/TooltipListener' -/** - * Hook for listening to clicks outside of the target element. - * - * @param {Function} onClickOutside - * - * @returns {Object} Ref for the target element - */ - -function clickOutsideListener(onClickOutside: any) { - const ref = useRef(null) - - const handleNavigate = (event: any) => { - if ( - !ref.current || - ref.current === event.target || - (ref.current as any).contains(event.target) - ) { - return - } - - onClickOutside(event) - } - - useEffect(() => { - document.body.addEventListener('click', handleNavigate) - - return () => { - document.body.removeEventListener('click', handleNavigate) - } - }) - - return ref -} - /** * Hook for listening on key events. * @@ -110,38 +76,6 @@ function useKeyboardShortcuts(keyMap: any, whitelistNodes = [], whitelistClasses }) } -function isMounted() { - const isMounted = useRef(false) - // @ts-ignore - useEffect(() => { - isMounted.current = true - return () => (isMounted.current = false) - }, []) - return isMounted -} - -function getWindowDimensions() { - if (typeof window === 'undefined' || !window) return { width: 0, height: 0 } - - const { innerWidth: width, innerHeight: height } = window - return { width, height } -} - -function useWindowDimensions() { - const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions()) - - useEffect(() => { - function handleResize() { - setWindowDimensions(getWindowDimensions()) - } - - window.addEventListener('resize', handleResize) - return () => window.removeEventListener('resize', handleResize) - }, []) - - return windowDimensions -} - function usePrevious(value: any) { const ref = useRef() useEffect(() => { @@ -150,11 +84,4 @@ function usePrevious(value: any) { return ref.current } -export { - clickOutsideListener, - useKeyboardShortcuts, - isMounted, - TooltipListener, - useWindowDimensions, - usePrevious, -} +export { useKeyboardShortcuts, TooltipListener, usePrevious } diff --git a/apps/studio/hooks/ui/index.ts b/apps/studio/hooks/ui/index.ts index 42c5f109a3c..6b0e00c8a29 100644 --- a/apps/studio/hooks/ui/index.ts +++ b/apps/studio/hooks/ui/index.ts @@ -1,4 +1,3 @@ export * from './useFlag' -export * from './useIsActive' export * from './useUrlState' export * from './useClickedOutside' diff --git a/apps/studio/hooks/ui/useIsActive.ts b/apps/studio/hooks/ui/useIsActive.ts deleted file mode 100644 index f1916a3c04c..00000000000 --- a/apps/studio/hooks/ui/useIsActive.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { useState, useEffect } from 'react' - -/** - * Returns boolean flag of whether a window is in focus - */ -export const useIsActive = () => { - const [active, setActive] = useState(false) - - // window listener - const onFocus = () => setActive(true) - const onBlur = () => setActive(false) - useEffect(() => { - window.addEventListener('focus', onFocus) - window.addEventListener('blur', onBlur) - // Specify how to clean up after this effect: - return () => { - window.removeEventListener('focus', onFocus) - window.removeEventListener('blur', onBlur) - } - }) - - return active -} diff --git a/apps/studio/lib/api/apiHelpers.ts b/apps/studio/lib/api/apiHelpers.ts index a6d23bf77ec..e361cd05419 100644 --- a/apps/studio/lib/api/apiHelpers.ts +++ b/apps/studio/lib/api/apiHelpers.ts @@ -1,4 +1,4 @@ -import { camelCase, snakeCase } from 'lodash' +import { snakeCase } from 'lodash' import { IS_PLATFORM } from 'lib/constants' /** @@ -66,59 +66,3 @@ export const toSnakeCase = (object) => { return object } } - -// Typically for HTTP response bodies -// @ts-ignore -export const toCamelCase = (object, whitelist = []) => { - const camelCaseObject: any = {} - const camelCaseArray: any[] = [] - - if (!object) return null - - if (Array.isArray(object)) { - for (const item of object) { - if (typeof item === 'object') { - camelCaseArray.push(toCamelCase(item)) - } else { - camelCaseArray.push(item) - } - } - return camelCaseArray - } else if (typeof object === 'object') { - for (const key of Object.keys(object)) { - // @ts-ignore - if (whitelist.length > 0 && whitelist.indexOf(key) >= 0) { - // @ts-ignore - snakeCaseObject[key] = value - } else if (typeof object[key] === 'object') { - camelCaseObject[camelCase(key)] = toCamelCase(object[key]) - } else { - camelCaseObject[camelCase(key)] = object[key] - } - } - return camelCaseObject - } else { - return object - } -} - -/** - * Moves all Namespaced variables to the root - * - * @example - * flattenNamespaceOnUser('https://supabase.io', { email: "copple@supabase.io", "https://supabase.io": { username: 'copple' } }) - * //=> - * { email: "copple@supabase.io", username: 'copple' }) - */ -export const flattenNamespaceOnUser = ( - NAMESPACE: string, - user: { - [prop: string]: any - } -) => { - let res = { ...user } - Object.entries(user[NAMESPACE]).forEach(([k, v]) => { - res[k] = v - }) - return res -} diff --git a/apps/studio/lib/auth.tsx b/apps/studio/lib/auth.tsx index f7bb022779e..4827c9c1d8a 100644 --- a/apps/studio/lib/auth.tsx +++ b/apps/studio/lib/auth.tsx @@ -1,17 +1,11 @@ import { useQueryClient } from '@tanstack/react-query' import { PropsWithChildren, useCallback, useEffect } from 'react' -import { - AuthContext as AuthContextInternal, - AuthProvider as AuthProviderInternal, - gotrueClient, -} from 'common' +import { AuthProvider as AuthProviderInternal, gotrueClient } from 'common' import { useStore } from 'hooks' import { GOTRUE_ERRORS, IS_PLATFORM } from './constants' import { clearLocalStorage } from './local-storage' -export const AuthContext = AuthContextInternal - export const AuthProvider = ({ children }: PropsWithChildren<{}>) => { const { ui } = useStore() diff --git a/apps/studio/lib/configcat.ts b/apps/studio/lib/configcat.ts index b937c33feda..6f9f4177679 100644 --- a/apps/studio/lib/configcat.ts +++ b/apps/studio/lib/configcat.ts @@ -3,7 +3,7 @@ import * as configcat from 'configcat-js' let client: configcat.IConfigCatClient -export function getClient() { +function getClient() { if (client) { return client } diff --git a/apps/studio/lib/constants/index.ts b/apps/studio/lib/constants/index.ts index 5f7479c8050..99c99f075f3 100644 --- a/apps/studio/lib/constants/index.ts +++ b/apps/studio/lib/constants/index.ts @@ -1,5 +1,4 @@ export * from './infrastructure' -export * from './metrics' export const IS_PLATFORM = process.env.NEXT_PUBLIC_IS_PLATFORM === 'true' export const DEFAULT_HOME = IS_PLATFORM ? '/projects' : '/project/default' @@ -18,72 +17,6 @@ export const DATE_FORMAT = 'YYYY-MM-DDTHH:mm:ssZ' // should be used for all dayjs formattings shown to the user. Includes timezone info. export const DATETIME_FORMAT = 'DD MMM YYYY, HH:mm:ss (ZZ)' -// Keyboard Shortcuts Related -export const SHORTCUT_KEYS = { - VIEW_ALL_SHORTCUTS: 'VIEW_ALL_SHORTCUTS', - TOGGLE_FILTER_MENU: 'TOGGLE_FILTER_MENU', - TOGGLE_SORT_MENU: 'TOGGLE_SORT_MENU', - CLOSE_SIDE_PANEL: 'CLOSE_SIDE_PANEL', - EDIT_CELL: 'EDIT_CELL', - COPY_CELL: 'COPY_CELL', - PASTE_CELL: 'PASTE_CELL', - CREATE_ROW: 'CREATE_ROW', - EDIT_ROW: 'EDIT_ROW', - DELETE_ROW: 'DELETE_ROW', - SCROLL_EDGES: 'SCROLL_EDGES', -} - -export const GENERAL_SHORTCUTS = [ - { - key: SHORTCUT_KEYS.VIEW_ALL_SHORTCUTS, - name: 'View all shortcuts', - keys: ['Shift+/'], - }, - { - key: SHORTCUT_KEYS.CLOSE_SIDE_PANEL, - name: 'Close side panel', - keys: ['Esc'], - }, -] - -export const generateEditorShortcuts = (clientOS: string) => { - const metaKey = clientOS === 'windows' ? 'Ctrl' : '⌘' - return [ - { - key: SHORTCUT_KEYS.EDIT_CELL, - name: 'Edit current cell', - keys: ['Enter'], - }, - { - key: SHORTCUT_KEYS.COPY_CELL, - name: 'Copy value of current cell', - keys: [`${metaKey}+C`], - }, - { - key: SHORTCUT_KEYS.PASTE_CELL, - name: 'Paste value into current cell', - keys: [`${metaKey}+V`], - }, - { - key: SHORTCUT_KEYS.CREATE_ROW, - name: 'Create a new row', - keys: ['Shift+Enter'], - }, - { - key: SHORTCUT_KEYS.SCROLL_EDGES, - name: 'Scroll to edges of the table', - keys: [`${metaKey}+↑`, `${metaKey}+→`, `${metaKey}+↓`, `${metaKey}+←`], - }, - ] -} - -export const POLICY_MODAL_VIEWS = { - SELECTION: 'SELECTION', - TEMPLATES: 'TEMPLATES', - EDITOR: 'EDITOR', - REVIEW: 'REVIEW', -} - export const GOTRUE_ERRORS = { UNVERIFIED_GITHUB_USER: 'Error sending confirmation mail', } diff --git a/apps/studio/lib/constants/infrastructure.ts b/apps/studio/lib/constants/infrastructure.ts index 680fd95cfc3..880d781d9cc 100644 --- a/apps/studio/lib/constants/infrastructure.ts +++ b/apps/studio/lib/constants/infrastructure.ts @@ -1,4 +1,4 @@ -import { Project } from 'data/projects/project-detail-query' +import { components } from 'data/api' export type CloudProvider = 'FLY' | 'AWS' export type Region = typeof AWS_REGIONS | typeof FLY_REGIONS @@ -34,7 +34,7 @@ export const AWS_REGIONS_DEFAULT = process.env.NEXT_PUBLIC_ENVIRONMENT !== 'prod' ? AWS_REGIONS.SOUTHEAST_ASIA : AWS_REGIONS.WEST_US // TO DO, change default to US region for prod -export const FLY_REGIONS_DEFAULT = FLY_REGIONS.SOUTHEAST_ASIA +const FLY_REGIONS_DEFAULT = FLY_REGIONS.SOUTHEAST_ASIA export const PRICING_TIER_LABELS_ORG = { FREE: 'Free - $0/month', @@ -102,25 +102,9 @@ export const PROVIDERS = { }, } as const -// @todo ini update for prod -export const AWS_SUPPORTED_AZ = { - EAST_US: ['us-east-1a', 'us-east-1b', 'us-east-1c', 'us-east-1d', 'us-east-1e', 'us-east-1f'], - SOUTHEAST_ASIA: ['ap-southeast-1a', 'ap-southeast-1b', 'ap-southeast-1c'], - WEST_EU: ['eu-west-1a', 'eu-west-1b', 'eu-west-1c'], -} - -export const SERVICE_STATUS = { - INACTIVE: 'INACTIVE', - ACTIVE_HEALTHY: 'ACTIVE_HEALTHY', - ACTIVE_UNHEALTHY: 'ACTIVE_UNHEALTHY', - COMING_UP: 'COMING_UP', - UNKNOWN: 'UNKNOWN', - GOING_DOWN: 'GOING_DOWN', - INIT_FAILED: 'INIT_FAILED', - REMOVED: 'REMOVED', -} - -export const PROJECT_STATUS: { [key: string]: Project['status'] } = { +export const PROJECT_STATUS: { + [key: string]: components['schemas']['ProjectDetailResponse']['status'] +} = { INACTIVE: 'INACTIVE', ACTIVE_HEALTHY: 'ACTIVE_HEALTHY', ACTIVE_UNHEALTHY: 'ACTIVE_UNHEALTHY', @@ -163,6 +147,4 @@ export const PASSWORD_STRENGTH_PERCENTAGE = { 4: '100%', } -export const DEFAULT_FREE_PROJECTS_LIMIT = 2 - export const DEFAULT_PROJECT_API_SERVICE_ID = 1 diff --git a/apps/studio/lib/constants/metrics.tsx b/apps/studio/lib/constants/metrics.tsx index 360ac5352e4..8e26b057e86 100644 --- a/apps/studio/lib/constants/metrics.tsx +++ b/apps/studio/lib/constants/metrics.tsx @@ -31,11 +31,6 @@ export const METRIC_CATEGORIES = { icon: , key: 'instance', }, - // POSTGRES: { - // label: 'Postgres usage', - // icon: '', - // key: 'postgres', - // }, } export const METRICS = [ @@ -93,12 +88,6 @@ export const METRICS = [ provider: 'daily-stats', category: METRIC_CATEGORIES.API_REALTIME, }, - // { - // key: 'total_realtime_post_requests', - // label: 'total_realtime_post_requests', - // provider: 'daily-stats', - // category: METRIC_CATEGORIES.API_REALTIME, - // }, /** * API @@ -156,13 +145,6 @@ export const METRICS = [ * Auth */ - // { - // key: 'total_auth_users', - // label: 'Total Auth Users', - // provider: 'daily-stats', - // category: METRIC_CATEGORIES.API_AUTH, - // }, - { key: 'total_auth_billing_period_mau', label: 'Auth Monthly Active User', @@ -282,18 +264,6 @@ export const METRICS = [ provider: 'daily-stats', category: METRIC_CATEGORIES.API, }, - // { - // key: 'total_auth_emails', - // name: 'total_auth_emails', - // provider: 'daily-stats', - // category: METRIC_CATEGORIES.API, - // }, - // { - // key: 'total_auth_texts', - // name: 'total_auth_texts', - // provider: 'daily-stats', - // category: METRIC_CATEGORIES.API, - // }, { key: 'total_get_requests', @@ -301,24 +271,6 @@ export const METRICS = [ provider: 'daily-stats', category: METRIC_CATEGORIES.API, }, - // { - // key: 'total_db_size_bytes', - // name: 'total_db_size_bytes', - // provider: 'daily-stats', - // category: METRIC_CATEGORIES.API, - // }, - // { - // key: 'total_storage_size_bytes', - // name: 'total_storage_size_bytes', - // provider: 'daily-stats', - // category: METRIC_CATEGORIES.API, - // }, - // { - // key: 'total_realtime_delete_requests', - // label: 'total_realtime_delete_requests', - // provider: 'daily-stats', - // category: METRIC_CATEGORIES.API_REALTIME, - // }, { key: 'total_storage_patch_requests', label: 'Storage PATCH Requests', @@ -331,13 +283,6 @@ export const METRICS = [ provider: 'daily-stats', category: METRIC_CATEGORIES.API, }, - // { - // key: 'total_realtime_options_requests', - // label: 'total_realtime_options_requests', - // provider: 'daily-stats', - // category: METRIC_CATEGORIES.API_REALTIME, - // }, - { key: 'total_patch_requests', label: 'All PATCH Requests', @@ -357,12 +302,6 @@ export const METRICS = [ provider: 'daily-stats', category: METRIC_CATEGORIES.API, }, - // { - // key: 'total_realtime_patch_requests', - // label: 'total_realtime_patch_requests', - // provider: 'daily-stats', - // category: METRIC_CATEGORIES.API_REALTIME, - // }, { key: 'total_delete_requests', label: 'All DELETE Requests', @@ -375,12 +314,6 @@ export const METRICS = [ provider: 'daily-stats', category: METRIC_CATEGORIES.API, }, - // { - // key: 'total_db_egress_bytes', - // name: 'total_db_egress_bytes', - // provider: 'daily-stats', - // category: METRIC_CATEGORIES.API, - // }, ] export const TIME_PERIODS_BILLING = [ @@ -407,16 +340,6 @@ export const TIME_PERIODS_REPORTS = [ label: 'Last 30 days', interval: '1d', }, - // { - // key: '60d', - // label: 'Last 60 days', - // interval: '1d', - // }, - // { - // key: '120d', - // label: 'Last 120 days', - // interval: '1d', - // }, { key: 'startMonth', label: 'This month', diff --git a/apps/studio/lib/gotrue.ts b/apps/studio/lib/gotrue.ts index 71400a43f0d..2884a5395fb 100644 --- a/apps/studio/lib/gotrue.ts +++ b/apps/studio/lib/gotrue.ts @@ -1,8 +1,6 @@ import { Session, User } from '@supabase/gotrue-js' import { gotrueClient } from 'common' -export { STORAGE_KEY } from 'common' - export const auth = gotrueClient let currentSession: Session | null = null diff --git a/apps/studio/lib/helpers.ts b/apps/studio/lib/helpers.ts index d095c23937f..6b0286ecc1a 100644 --- a/apps/studio/lib/helpers.ts +++ b/apps/studio/lib/helpers.ts @@ -86,36 +86,6 @@ export const pluckObjectFields = (model: any, fields: any[]) => { return o } -/** - * Trims down a JSON Schema only to the fields that a user wants. - * @param {object} jsonSchema - * @param {array} fields a list of properties to pluck. eg: ['first_name', 'last_name'] - */ -export const pluckJsonSchemaFields = (jsonSchema: any, fields: any) => { - let schema: any = { - type: 'object', - required: [], - properties: {}, - } - fields.forEach((field: any) => { - if (jsonSchema.properties[field]) { - schema.properties[field] = jsonSchema.properties[field] - if (jsonSchema.required.includes(field)) schema.required.push(field) - } - }) - return schema -} - -/** - * Before return to frontend, we should filter sensitive project props - */ -export const filterSensitiveProjectProps = (project: any) => { - project.db_user_supabase = undefined - project.db_pass_supabase = undefined - - return project -} - /** * Returns undefined if the string isn't parse-able */ diff --git a/apps/studio/lib/integration-utils.ts b/apps/studio/lib/integration-utils.ts index 37f18345ba2..b71945aa0bd 100644 --- a/apps/studio/lib/integration-utils.ts +++ b/apps/studio/lib/integration-utils.ts @@ -128,7 +128,7 @@ export function getIntegrationConfigurationUrl(integration: Integration) { return '' } -export function getVercelConfigurationUrl(integration: VercelIntegration) { +function getVercelConfigurationUrl(integration: VercelIntegration) { return `https://vercel.com/dashboard/${ integration.metadata?.account.type === 'Team' ? `${integration.metadata?.account.team_slug}/` @@ -136,7 +136,7 @@ export function getVercelConfigurationUrl(integration: VercelIntegration) { }integrations/${integration.metadata?.configuration_id}` } -export function getGitHubConfigurationUrl(integration: GitHubIntegration) { +function getGitHubConfigurationUrl(integration: GitHubIntegration) { return `https://github.com/${ integration.metadata?.account.type === 'Organization' ? `organizations/${integration.metadata?.account.name}/` diff --git a/apps/studio/lib/local-storage.ts b/apps/studio/lib/local-storage.ts index 5acd14bbce8..878cba9d6ad 100644 --- a/apps/studio/lib/local-storage.ts +++ b/apps/studio/lib/local-storage.ts @@ -1,7 +1,6 @@ import { LOCAL_STORAGE_KEYS } from 'common' -import { IS_PLATFORM } from './constants' -export const LOCAL_STORAGE_KEYS_ALLOWLIST = [ +const LOCAL_STORAGE_KEYS_ALLOWLIST = [ 'graphiql:theme', 'theme', 'supabaseDarkMode', diff --git a/apps/studio/lib/role-impersonation.ts b/apps/studio/lib/role-impersonation.ts index e1716782ac9..7e14e921297 100644 --- a/apps/studio/lib/role-impersonation.ts +++ b/apps/studio/lib/role-impersonation.ts @@ -3,7 +3,7 @@ import jwt from 'jwt-simple' import { User } from 'data/auth/users-query' import { uuidv4 } from './helpers' -export type PostgrestImpersonationRole = +type PostgrestImpersonationRole = | { type: 'postgrest' role: 'anon' @@ -63,10 +63,7 @@ function getPostgrestClaims(projectRef: string, role: PostgrestImpersonationRole } } -export function getPostgrestRoleImpersonationSql( - projectRef: string, - role: PostgrestImpersonationRole -) { +function getPostgrestRoleImpersonationSql(projectRef: string, role: PostgrestImpersonationRole) { const claims = getPostgrestClaims(projectRef, role) return /* SQL */ ` @@ -82,13 +79,13 @@ export function getPostgrestRoleImpersonationSql( export const ROLE_IMPERSONATION_SQL_LINE_COUNT = 11 export const ROLE_IMPERSONATION_NO_RESULTS = 'ROLE_IMPERSONATION_NO_RESULTS' -export function getCustomRoleImpersonationSql(roleName: string) { +function getCustomRoleImpersonationSql(roleName: string) { return /* SQL */ ` set local role '${roleName}'; ` } -export interface WrapWithRoleImpersonationOptions { +interface WrapWithRoleImpersonationOptions { projectRef: string role?: ImpersonationRole } diff --git a/apps/studio/localStores/storageExplorer/StorageExploreStore.types.ts b/apps/studio/localStores/storageExplorer/StorageExploreStore.types.ts deleted file mode 100644 index d995445ddf5..00000000000 --- a/apps/studio/localStores/storageExplorer/StorageExploreStore.types.ts +++ /dev/null @@ -1,30 +0,0 @@ -// [Joshen] This file isn't being used at the moment but its to prepare type files when we refactor -// storage dashboard and use typescript for it - -export interface ExplorerColumn { - id: string - name: string - items: ExplorerItem[] - status?: 'READY' | 'LOADING' - - // New variables to support infinite scrolling - hasMoreItems: boolean - isLoadingMoreItems: boolean -} - -export interface ExplorerItem { - id?: string - name: string - type: 'FILE' | 'FOLDER' - status: 'READY' | 'LOADING' | 'EDITING' - metadata?: ItemMetadata - updated_at?: string - last_accessed_at?: string - created_at?: string -} - -export interface ItemMetadata { - cacheControl: string - mimetype: string - size: number -} diff --git a/apps/studio/pages/new/index.tsx b/apps/studio/pages/new/index.tsx index 4a8eeba6074..5319effb991 100644 --- a/apps/studio/pages/new/index.tsx +++ b/apps/studio/pages/new/index.tsx @@ -1,7 +1,6 @@ import HCaptcha from '@hcaptcha/react-hcaptcha' import { Elements } from '@stripe/react-stripe-js' import { loadStripe } from '@stripe/stripe-js' -import { useParams } from 'common' import { useTheme } from 'next-themes' import { observer } from 'mobx-react-lite' import { useCallback, useEffect, useState } from 'react' diff --git a/apps/studio/pages/project/[ref]/functions/[functionSlug]/index.tsx b/apps/studio/pages/project/[ref]/functions/[functionSlug]/index.tsx index 15bde6c894b..5d6a17a6d0a 100644 --- a/apps/studio/pages/project/[ref]/functions/[functionSlug]/index.tsx +++ b/apps/studio/pages/project/[ref]/functions/[functionSlug]/index.tsx @@ -1,7 +1,6 @@ import { PermissionAction } from '@supabase/shared-types/out/constants' import { useParams } from 'common/hooks' import ReportWidget from 'components/interfaces/Reports/ReportWidget' -import { isUnixMicro, unixMicroToIsoTimestamp } from 'components/interfaces/Settings/Logs' import FunctionsLayout from 'components/layouts/FunctionsLayout' import AreaChart from 'components/ui/Charts/AreaChart' import BarChart from 'components/ui/Charts/BarChart' diff --git a/apps/studio/pages/project/[ref]/reports/database.tsx b/apps/studio/pages/project/[ref]/reports/database.tsx index 67080c3a1e3..a370f3d6eca 100644 --- a/apps/studio/pages/project/[ref]/reports/database.tsx +++ b/apps/studio/pages/project/[ref]/reports/database.tsx @@ -3,7 +3,7 @@ import dayjs from 'dayjs' import { observer } from 'mobx-react-lite' import { useState } from 'react' -import { TIME_PERIODS_INFRA } from 'lib/constants' +import { TIME_PERIODS_INFRA } from 'lib/constants/metrics' import { formatBytes } from 'lib/helpers' import { NextPageWithLayout } from 'types' import { diff --git a/apps/studio/pages/project/[ref]/sql/quickstarts.tsx b/apps/studio/pages/project/[ref]/sql/quickstarts.tsx index 62fd8b8337d..5b2edba2fdc 100644 --- a/apps/studio/pages/project/[ref]/sql/quickstarts.tsx +++ b/apps/studio/pages/project/[ref]/sql/quickstarts.tsx @@ -1,7 +1,7 @@ import { observer } from 'mobx-react-lite' import { NextPageWithLayout } from 'types' import { SQLEditorLayout } from 'components/layouts' -import { SQLQuickstarts } from 'components/interfaces/SQLEditor' +import SQLQuickstarts from 'components/interfaces/SQLEditor/SQLTemplates/SQLQuickstarts' const SqlEditorWelcome: NextPageWithLayout = () => { return diff --git a/apps/studio/pages/project/[ref]/sql/templates.tsx b/apps/studio/pages/project/[ref]/sql/templates.tsx index bcbeb763a7e..050b608233b 100644 --- a/apps/studio/pages/project/[ref]/sql/templates.tsx +++ b/apps/studio/pages/project/[ref]/sql/templates.tsx @@ -1,7 +1,7 @@ import { observer } from 'mobx-react-lite' import { NextPageWithLayout } from 'types' import { SQLEditorLayout } from 'components/layouts' -import { SQLTemplates } from 'components/interfaces/SQLEditor' +import SQLTemplates from 'components/interfaces/SQLEditor/SQLTemplates/SQLTemplates' const SqlEditorWelcome: NextPageWithLayout = () => { return diff --git a/apps/studio/stores/authConfig/schema/AuthProviders/AuthProvidersFormValidation.tsx b/apps/studio/stores/authConfig/schema/AuthProviders/AuthProvidersFormValidation.tsx index fc1df7233ce..40489576f63 100644 --- a/apps/studio/stores/authConfig/schema/AuthProviders/AuthProvidersFormValidation.tsx +++ b/apps/studio/stores/authConfig/schema/AuthProviders/AuthProvidersFormValidation.tsx @@ -1,4 +1,4 @@ -import { boolean, number, object, string, date, ValidationError } from 'yup' +import { boolean, number, object, string } from 'yup' import { urlRegex } from 'components/interfaces/Auth/Auth.constants' const parseBase64URL = (b64url: string) => { diff --git a/apps/studio/stores/pgmeta/TableStore.ts b/apps/studio/stores/pgmeta/TableStore.ts index 5f1e257275a..23088868c23 100644 --- a/apps/studio/stores/pgmeta/TableStore.ts +++ b/apps/studio/stores/pgmeta/TableStore.ts @@ -4,11 +4,8 @@ import type { PostgresColumn, PostgresTable } from '@supabase/postgres-meta' import PostgresMetaInterface, { IPostgresMetaInterface } from '../common/PostgresMetaInterface' import { IRootStore } from '../RootStore' import { get } from 'lib/common/fetch' -import { ResponseError } from 'types' -export interface ITableStore extends IPostgresMetaInterface { - loadById: (id: number | string) => Promise | { error: ResponseError }> -} +export interface ITableStore extends IPostgresMetaInterface {} export default class TableStore extends PostgresMetaInterface { constructor( @@ -20,9 +17,6 @@ export default class TableStore extends PostgresMetaInterface { options?: { identifier: string } ) { super(rootStore, dataUrl, headers, options) - makeObservable(this, { - loadById: action, - }) } // Customize TableStore fetchData method to improve request performance @@ -56,19 +50,4 @@ export default class TableStore extends PostgresMetaInterface { this.setDataArray(tables) return tables as any } - - async loadById(id: number | string) { - try { - const url = this.url.includes('?') ? `${this.url}&id=${id}` : `${this.url}?id=${id}` - const response = await get(url, { headers: this.headers }) - if (response.error) throw response.error - - const data = response as Partial - // @ts-ignore - this.data[id] = data - return data - } catch (error: any) { - return { error } - } - } } diff --git a/apps/studio/stores/projectContentStore.ts b/apps/studio/stores/projectContentStore.ts index 2ad1e7b7c7c..6abf8092fe0 100644 --- a/apps/studio/stores/projectContentStore.ts +++ b/apps/studio/stores/projectContentStore.ts @@ -1,6 +1,6 @@ -import { makeObservable, action, observable, computed, toJS, makeAutoObservable } from 'mobx' +import { makeObservable, observable, computed } from 'mobx' import { get, patch, post, delete_ } from 'lib/common/fetch' -import { keyBy, isEmpty } from 'lodash' +import { keyBy } from 'lodash' import { UserContent } from 'types' import { API_URL } from 'lib/constants' diff --git a/apps/studio/tests/pages/projects/PreviewFilterPanel.test.js b/apps/studio/tests/pages/projects/PreviewFilterPanel.test.js index 4b3f4a5838d..4b875f94569 100644 --- a/apps/studio/tests/pages/projects/PreviewFilterPanel.test.js +++ b/apps/studio/tests/pages/projects/PreviewFilterPanel.test.js @@ -1,5 +1,5 @@ import PreviewFilterPanel from 'components/interfaces/Settings/Logs/PreviewFilterPanel' -import { waitFor, screen } from '@testing-library/react' +import { screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' import { render } from '../../helpers' @@ -11,23 +11,6 @@ import { useFlag } from 'hooks' import { clickDropdown } from 'tests/helpers' useFlag.mockReturnValue(true) -test.todo('templates') -// , async () => { -// const mockFn = jest.fn() -// render() -// const search = screen.getByPlaceholderText(/Search/) -// userEvent.type(search, '12345') - -// // TODO templates dropdown interaction currently cannot be tested -// // https://github.com/supabase/ui/issues/299 -// // userEvent.click(screen.getByText("Templates")) -// // screen.debug() - -// // await waitFor(() => screen.getByText("Some option")) -// // userEvent.click(screen.getByText("Some option")) -// // expect(mockFn).toBeCalled() -// }) - test('filter input change and submit', async () => { const mockFn = jest.fn() render() @@ -57,44 +40,6 @@ test('Datepicker dropdown', async () => { expect(fn).toBeCalled() }) -test.todo('timestamp to/from filter default value') -// , async () => { -// render() -// userEvent.click(await screen.findByText('Custom')) -// await screen.findByDisplayValue('2022-01-18T10:43:39+0000') -// // TODO: use screen.findByLabelText when https://github.com/supabase/ui/issues/310 is resolved -// await screen.findByText('To') -// await screen.findByText('From') -// }) - -test.todo('timestamp to/from filter value change') -// , async () => { -// const mockFn = jest.fn() -// render() -// userEvent.click(await screen.findByText(/Now/)) -// // display iso timestamp -// const year = new Date().getFullYear() -// const inputs = await screen.findAllByDisplayValue(RegExp(year)) - -// for (const input of inputs) { -// // replace the input's value -// userEvent.clear(input) - -// // get time 20 mins before -// const newDate = new Date() -// newDate.setMinutes(new Date().getMinutes() - 20) -// userEvent.type(input, newDate.toISOString()) -// } - -// // input actions -// const set = await screen.findByRole('button', { name: 'Set' }) - -// userEvent.click(set) -// expect(mockFn).toBeCalled() -// await screen.findByText('Custom') -// await screen.findByTitle(/Clear timestamp filter/) -// }) - test('shortened count to K', async () => { render() await screen.findByText(/1\.2K/) diff --git a/apps/studio/tests/pages/projects/reports/api-report.test.js b/apps/studio/tests/pages/projects/reports/api-report.test.js index 1e172271d99..fdae49292f6 100644 --- a/apps/studio/tests/pages/projects/reports/api-report.test.js +++ b/apps/studio/tests/pages/projects/reports/api-report.test.js @@ -68,50 +68,3 @@ test('append - error routes', async () => { await screen.findAllByText(/some\-query/) await screen.findAllByText(/22/) }) - -// [Joshen] Temp commented out, timing out on GH actions -// test('append - error routes', async () => { -// get.mockImplementation(async (url) => { -// const uri = decodeURIComponent(url) -// if (uri.includes("avg") && uri.includes("request.path")) { -// return { result: [{ path: 'mypath', method: 'GET', status_code: 200, avg: 534, search: 'some-query', count: 22 }] } -// } -// return { result: [{ timestamp: new Date().toISOString(), count: 123 }] } -// }) -// render() -// await waitFor(() => expect(get).toBeCalled()) -// await screen.findAllByText(/mypath/) -// await screen.findAllByText(/GET/) -// await screen.findAllByText(/200/) -// await screen.findAllByText(/some\-query/) -// await screen.findAllByText(/22/) -// await screen.findAllByText(/534\.00ms/) -// }) - -// test('expandable error routes', async () => { -// get.mockImplementation(async (url) => { -// if (url.includes('path')) { -// return [{ data: [{ path: '/my-path', method: 'GET', search: '?=123', count: 22 }] }] -// } -// return [{ data: [{ timestamp: new Date().toISOString(), count: 123 }] }] -// }) - -// render() -// await screen.findByText(/\/my\-path/) -// await screen.findByText(/\?\=123/) -// await screen.findByText(/22/) -// }) - -// test('expandable high latency routes', async () => { -// get.mockImplementation(async (url) => { -// if (url.includes('path')) { -// return [{ data: [{ path: '/my-path', method: 'GET', search: '?=123', avg_ms: 55, count: 22 }] }] -// } -// return [{ data: [{ timestamp: new Date().toISOString(), avg_ms: 123 }] }] -// }) -// render() -// await screen.findByText(/\/my\-path/) -// await screen.findByText(/\?\=123/) -// await screen.findByText(/22/) -// await screen.findByText(/55/) -// })