import React, { useState, useEffect } from "react"; import { Text, Badge } from "@tremor/react"; import { DatabaseIcon } from "@heroicons/react/outline"; import { vectorStoreListCall } from "../networking"; interface VectorStoreDetails { vector_store_id: string; vector_store_name?: string; } interface VectorStorePermissionsProps { vectorStores: string[]; accessToken?: string | null; } export function VectorStorePermissions({ vectorStores, accessToken }: VectorStorePermissionsProps) { const [vectorStoreDetails, setVectorStoreDetails] = useState([]); // Fetch vector store details when component mounts useEffect(() => { const fetchVectorStores = async () => { if (!accessToken || vectorStores.length === 0) return; try { const response = await vectorStoreListCall(accessToken); if (response.data) { setVectorStoreDetails(response.data.map((store: any) => ({ vector_store_id: store.vector_store_id, vector_store_name: store.vector_store_name }))); } } catch (error) { console.error("Error fetching vector stores:", error); } }; fetchVectorStores(); }, [accessToken, vectorStores.length]); // Function to get display name for vector store const getVectorStoreDisplayName = (storeId: string) => { const storeDetail = vectorStoreDetails.find(store => store.vector_store_id === storeId); if (storeDetail) { return `${storeDetail.vector_store_name || storeDetail.vector_store_id} (${storeDetail.vector_store_id})`; } return storeId; }; return (
Vector Stores {vectorStores.length}
{vectorStores.length > 0 ? (
{vectorStores.map((store, index) => (
{getVectorStoreDisplayName(store)}
))}
) : (
No vector stores configured
)}
); } export default VectorStorePermissions;