diff --git a/apps/studio/components/interfaces/Database/Backups/BackupItem.tsx b/apps/studio/components/interfaces/Database/Backups/BackupItem.tsx index 96d2c57b55f..67e66b60f19 100644 --- a/apps/studio/components/interfaces/Database/Backups/BackupItem.tsx +++ b/apps/studio/components/interfaces/Database/Backups/BackupItem.tsx @@ -1,13 +1,13 @@ import { PermissionAction } from '@supabase/shared-types/out/constants' -import dayjs from 'dayjs' import { Download } from 'lucide-react' +import { useParams } from 'common' import { ButtonTooltip } from 'components/ui/ButtonTooltip' import { useBackupDownloadMutation } from 'data/database/backup-download-mutation' import type { DatabaseBackup } from 'data/database/backups-query' import { useCheckPermissions } from 'hooks/misc/useCheckPermissions' import { Badge } from 'ui' -import { useParams } from 'common' +import { TimestampInfo } from 'ui-patterns' interface BackupItemProps { index: number @@ -36,8 +36,9 @@ const BackupItem = ({ index, isHealthy, backup, onSelectBackup }: BackupItemProp }, }) - const generateSideButtons = (backup: any) => { - if (backup.status === 'COMPLETED') + const generateSideButtons = (backup: DatabaseBackup) => { + // [Joshen] API typing is incorrect here, status is getting typed as Record + if ((backup as any).status === 'COMPLETED') return (
Backup In Progress... } - const generateBackupName = (backup: any) => { - if (backup.status == 'COMPLETED') { - return `${dayjs(backup.inserted_at).format('DD MMM YYYY HH:mm:ss')} UTC` - } - return dayjs(backup.inserted_at).format('DD MMM YYYY') - } - return (
-

{generateBackupName(backup)}

+
{generateSideButtons(backup)}
) diff --git a/apps/studio/data/database/backups-query.ts b/apps/studio/data/database/backups-query.ts index 5c267947088..63824aff058 100644 --- a/apps/studio/data/database/backups-query.ts +++ b/apps/studio/data/database/backups-query.ts @@ -2,9 +2,9 @@ import { useQuery, UseQueryOptions } from '@tanstack/react-query' import type { components } from 'data/api' import { get, handleError } from 'data/fetchers' +import { useIsOrioleDb } from 'hooks/misc/useSelectedProject' import type { ResponseError } from 'types' import { databaseKeys } from './keys' -import { useIsOrioleDb } from 'hooks/misc/useSelectedProject' export type BackupsVariables = { projectRef?: string diff --git a/packages/ui-patterns/TimestampInfo/index.tsx b/packages/ui-patterns/TimestampInfo/index.tsx index 9c6d3c5af2b..ef318ccb7b0 100644 --- a/packages/ui-patterns/TimestampInfo/index.tsx +++ b/packages/ui-patterns/TimestampInfo/index.tsx @@ -6,7 +6,6 @@ import { cn } from 'ui/src/lib/utils' import dayjs from 'dayjs' import relativeTime from 'dayjs/plugin/relativeTime' import utc from 'dayjs/plugin/utc' -import { Clipboard } from 'lucide-react' dayjs.extend(relativeTime) dayjs.extend(utc) @@ -94,7 +93,7 @@ export const TimestampInfo = ({ const [copied, setCopied] = useState(false) return ( - { e.stopPropagation() }} @@ -112,23 +111,24 @@ export const TimestampInfo = ({ }, 1000) }} className={cn( - 'relative cursor-default grid grid-cols-2 gap-2 hover:bg-surface-100 px-2 py-1 group', + 'relative cursor-pointer flex gap-y-2 gap-x-0.5 hover:bg-surface-100 px-2 py-1 group', { 'bg-surface-100': copied } )} > - {label}: -
+
+

{label}

+
+
+
+
{copied && ( - + Copied! )} - - {value} - - + {value}
- +
) } @@ -145,9 +145,9 @@ export const TimestampInfo = ({ : timestampUtcFormatter({ utcTimestamp, format: labelFormat })} - + - +