"use client"; import {Tabs, TabsContent, TabsList, TabsTrigger} from "@/components/ui/tabs"; import {useEffect, useState} from "react"; import {useRouter, useSearchParams} from "next/navigation"; import {BackupWith, DatabaseWith, Restoration} from "@/db/schema/07_database"; import {Setting} from "@/db/schema/01_setting"; import {DatabaseBackupList} from "@/components/wrappers/dashboard/projects/database/database-backup-list"; import {DatabaseRestoreList} from "@/components/wrappers/dashboard/projects/database/database-restore-list"; import {MemberWithUser} from "@/db/schema/03_organization"; export type DatabaseTabsProps = { settings: Setting, backups: BackupWith[], restorations: Restoration[], isAlreadyRestore: boolean, database: DatabaseWith, activeMember: MemberWithUser }; export const backupOnly = ["redis", "valkey"]; export const DatabaseTabs = (props: DatabaseTabsProps) => { const router = useRouter(); const searchParams = useSearchParams(); const [tab, setTab] = useState(() => searchParams.get("tab") ?? "backup"); useEffect(() => { const newTab = searchParams.get("tab") ?? "backup"; // eslint-disable-next-line react-hooks/set-state-in-effect setTab(newTab); }, [searchParams]); const handleChangeTab = (value: string) => { router.push(`?tab=${value}`); }; const isBackupOnly = backupOnly.some((type) => props.database.dbms === type) return ( <> {isBackupOnly ? : Backup Restoration } ); };