'use client' import { useEffect, useState } from 'react' import { useRouter } from 'next/navigation' import { useQueryClient } from '@tanstack/react-query' import { Container, Title, Paper, TextInput, Group, Button, Radio } from '@mantine/core' import { useGetConfig } from '@/lib/client/query' import { updateConfig } from '@/lib/client/localstorage' export default function SetupPage() { const router = useRouter() const { data: appConfig } = useGetConfig() const [connectionString, setConnectionString] = useState(appConfig?.connectionString || '') const [tenant, setTenant] = useState(appConfig?.tenant || 'default_tenant') const [database, setDatabase] = useState(appConfig?.database || 'default_database') const [authType, setAuthType] = useState(appConfig?.authType || 'no_auth') const [username, setUsername] = useState(appConfig?.username || '') const [password, setPassword] = useState(appConfig?.password || '') const [token, setToken] = useState(appConfig?.token || '') useEffect(() => { if (appConfig != null && appConfig.connectionString) { setConnectionString(appConfig.connectionString) } }, [appConfig]) const queryClient = useQueryClient() const connectButtonClicked = () => { let formattedConnectionString = connectionString.trim() try { // Add http:// if no protocol specified if (!formattedConnectionString.startsWith('http://') && !formattedConnectionString.startsWith('https://')) { formattedConnectionString = 'http://' + formattedConnectionString } // Parse the URL const url = new URL(formattedConnectionString) // If no port specified, add default port 8000 if (!url.port) { url.port = '8000' formattedConnectionString = url.toString() } // Remove trailing slash if exists formattedConnectionString = formattedConnectionString.replace(/\/$/, '') } catch (error) { console.error(error) alert('Invalid connection string format. Please use format: http://hostname:port or https://hostname:port') return } updateConfig({ connectionString: formattedConnectionString, authType, username, password, token, currentCollection: '', tenant, database, }) queryClient.setQueryData(['config'], { connectionString: formattedConnectionString, tenant, database, }) router.push('/collections') } const backButtonClicked = () => { router.push('/collections') } return ( Chromadb Admin setConnectionString(e.currentTarget.value)} /> setTenant(e.currentTarget.value)} /> setDatabase(e.currentTarget.value)} /> {authType === 'token' && ( setToken(e.currentTarget.value)} /> )} {authType === 'basic' && (
setUsername(e.currentTarget.value)} /> setPassword(e.currentTarget.value)} type="password" />
)} {appConfig?.connectionString && ( )}
) }