import { Search, X } from "lucide-react"; import React, { useState } from "react"; import { useDebouncedCallback } from "use-debounce"; import { getHistoricalData, searchAssets } from "../services/yahooFinanceService"; import { usePortfolioStore } from "../store/portfolioStore"; import { Asset } from "../types"; export const AddAssetModal = ({ onClose }: { onClose: () => void }) => { const [search, setSearch] = useState(''); const [searchResults, setSearchResults] = useState([]); const [loading, setLoading] = useState(false); const { addAsset, dateRange } = usePortfolioStore((state) => ({ addAsset: state.addAsset, dateRange: state.dateRange, })); const handleSearch = async (query: string) => { if (query.length < 2) return; setLoading(true); try { const results = await searchAssets(query); setSearchResults(results); } catch (error) { console.error('Error searching assets:', error); } finally { setLoading(false); } }; const debouncedSearch = useDebouncedCallback(handleSearch, 750); const handleAssetSelect = async (asset: Asset) => { setLoading(true); try { const historicalData = await getHistoricalData( asset.symbol, dateRange.startDate, dateRange.endDate ); const assetWithHistory = { ...asset, historicalData, }; addAsset(assetWithHistory); onClose(); } catch (error) { console.error('Error fetching historical data:', error); } finally { setLoading(false); } }; return (

Add Asset

{ setSearch(e.target.value); debouncedSearch(e.target.value); }} />
{loading ? (
Loading...
) : ( searchResults.map((result) => ( )) )}
); };