Spaces:
Sleeping
Sleeping
File size: 3,964 Bytes
f871fed |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
'use client'
import { useState } from 'react'
import { useRouter } from 'next/navigation'
import {
AlertDialog,
AlertDialogAction,
AlertDialogCancel,
AlertDialogContent,
AlertDialogDescription,
AlertDialogFooter,
AlertDialogHeader,
AlertDialogTitle,
} from '@/components/ui/alert-dialog'
import { Button } from '@/components/ui/button'
import { AlertTriangle, ExternalLink } from 'lucide-react'
interface EmbeddingModelChangeDialogProps {
open: boolean
onOpenChange: (open: boolean) => void
onConfirm: () => void
oldModelName?: string
newModelName?: string
}
export function EmbeddingModelChangeDialog({
open,
onOpenChange,
onConfirm,
oldModelName,
newModelName
}: EmbeddingModelChangeDialogProps) {
const router = useRouter()
const [isConfirming, setIsConfirming] = useState(false)
const handleConfirmAndRebuild = () => {
setIsConfirming(true)
onConfirm()
// Give a moment for the model to update, then redirect
setTimeout(() => {
router.push('/advanced')
onOpenChange(false)
setIsConfirming(false)
}, 500)
}
const handleConfirmOnly = () => {
onConfirm()
onOpenChange(false)
}
return (
<AlertDialog open={open} onOpenChange={onOpenChange}>
<AlertDialogContent className="max-w-lg">
<AlertDialogHeader>
<div className="flex items-center gap-2 mb-2">
<AlertTriangle className="h-5 w-5 text-yellow-500" />
<AlertDialogTitle>Embedding Model Change</AlertDialogTitle>
</div>
<AlertDialogDescription asChild>
<div className="space-y-3 text-base text-muted-foreground">
<p>
You are about to change your embedding model{' '}
{oldModelName && newModelName && (
<>
from <strong>{oldModelName}</strong> to <strong>{newModelName}</strong>
</>
)}
.
</p>
<div className="bg-muted p-4 rounded-md space-y-2">
<p className="font-semibold text-foreground">⚠️ Important: Rebuild Required</p>
<p className="text-sm">
Changing your embedding model requires rebuilding all existing embeddings to maintain consistency.
Without rebuilding, your searches may return incorrect or incomplete results.
</p>
</div>
<div className="space-y-2 text-sm">
<p className="font-medium text-foreground">What happens next:</p>
<ul className="list-disc list-inside space-y-1 ml-2">
<li>Your default embedding model will be updated</li>
<li>Existing embeddings will remain unchanged until rebuild</li>
<li>New content will use the new embedding model</li>
<li>You should rebuild embeddings as soon as possible</li>
</ul>
</div>
<p className="text-sm font-medium text-foreground">
Would you like to proceed to the Advanced page to start the rebuild now?
</p>
</div>
</AlertDialogDescription>
</AlertDialogHeader>
<AlertDialogFooter className="flex-col sm:flex-row gap-2">
<AlertDialogCancel disabled={isConfirming}>
Cancel
</AlertDialogCancel>
<Button
variant="outline"
onClick={handleConfirmOnly}
disabled={isConfirming}
>
Change Model Only
</Button>
<AlertDialogAction
onClick={handleConfirmAndRebuild}
disabled={isConfirming}
className="bg-primary"
>
<ExternalLink className="mr-2 h-4 w-4" />
Change & Go to Rebuild
</AlertDialogAction>
</AlertDialogFooter>
</AlertDialogContent>
</AlertDialog>
)
}
|