@@ -7,30 +7,52 @@ import { DatasetsTableRow } from '../components/Datasets/DatasetsTableRow';
7
7
import { useClient } from '../context/client-context' ;
8
8
import { useSnackbar } from 'notistack' ;
9
9
import { getSnackbarOptions } from '../components/Common/utils/snackbarOptions' ;
10
+ import { compareSemver } from '../lib/common-helpers' ;
11
+ import { useOutletContext } from 'react-router-dom' ;
10
12
11
13
function Datasets ( ) {
12
14
const [ datasets , setDatasets ] = useState ( [ ] ) ;
13
15
const { client : qdrantClient } = useClient ( ) ;
14
16
const [ isLoading , setIsLoading ] = useState ( false ) ;
15
17
const { enqueueSnackbar, closeSnackbar } = useSnackbar ( ) ;
16
18
const errorSnackbarOptions = getSnackbarOptions ( 'error' , closeSnackbar ) ;
19
+ const { version } = useOutletContext ( ) ;
17
20
18
21
useEffect ( ( ) => {
19
22
const fetchData = async ( ) => {
20
23
setIsLoading ( true ) ;
21
24
try {
22
25
const response = await fetch ( 'https://snapshots.qdrant.io/manifest.json' ) ;
23
26
const responseJson = await response . json ( ) ;
24
- const datasets = responseJson . map ( ( dataset ) => {
25
- return {
26
- name : dataset . name ,
27
- fileName : dataset . file_name ,
28
- size : dataset . size ,
29
- vectors : dataset . vectors ,
30
- vectorCount : dataset . vector_count ,
31
- description : dataset . description ,
32
- } ;
33
- } ) ;
27
+ const datasets = responseJson
28
+ . filter ( ( dataset ) => {
29
+ if ( dataset . version === undefined ) {
30
+ return true ;
31
+ }
32
+ // There are a few exceptions:
33
+ // - dev version is always allowed, it includes `dev` as a substring
34
+ // - `???` means we can't display the version, so we only allow unversioned datasets
35
+ // - empty or underfined means the same as `???`
36
+
37
+ if ( version || version === '???' ) {
38
+ return false ;
39
+ }
40
+
41
+ if ( version . includes ( 'dev' ) ) {
42
+ return true ;
43
+ }
44
+ return compareSemver ( version , dataset . version ) >= 0 ;
45
+ } )
46
+ . map ( ( dataset ) => {
47
+ return {
48
+ name : dataset . name ,
49
+ fileName : dataset . file_name ,
50
+ size : dataset . size ,
51
+ vectors : dataset . vectors ,
52
+ vectorCount : dataset . vector_count ,
53
+ description : dataset . description ,
54
+ } ;
55
+ } ) ;
34
56
setDatasets ( datasets ) ;
35
57
} catch ( error ) {
36
58
enqueueSnackbar ( error . message , errorSnackbarOptions ) ;
@@ -52,10 +74,9 @@ function Datasets() {
52
74
setImporting ( true ) ;
53
75
54
76
try {
55
- const response = await qdrantClient . recoverSnapshot ( collectionName , {
77
+ await qdrantClient . recoverSnapshot ( collectionName , {
56
78
location : `https://snapshots.qdrant.io/${ fileName } ` ,
57
79
} ) ;
58
- console . log ( response ) ;
59
80
enqueueSnackbar ( 'Snapshot successfully imported' , getSnackbarOptions ( 'success' , closeSnackbar , 2000 ) ) ;
60
81
} catch ( e ) {
61
82
enqueueSnackbar ( e . message , errorSnackbarOptions ) ;
0 commit comments