import { CursorShape, QIcon, QKeyEvent, QMouseEvent } from "@nodegui/nodegui"; import { LineEdit, ScrollArea, Text, View } from "@nodegui/react-nodegui"; import React, { useState } from "react"; import { useHistory } from "react-router"; import { QueryCacheKeys } from "../conf"; import { useLogger } from "../hooks/useLogger"; import useSpotifyQuery from "../hooks/useSpotifyQuery"; import { search } from "../icons"; import { TrackTableIndex } from "./PlaylistView"; import IconButton from "./shared/IconButton"; import PlaceholderApplet from "./shared/PlaceholderApplet"; import PlaylistCard from "./shared/PlaylistCard"; import { TrackButton } from "./shared/TrackButton"; function Search() { const logger = useLogger(Search.name); const history = useHistory<{ searchQuery: string }>(); const [searchQuery, setSearchQuery] = useState(""); const { data: searchResults, refetch, isError, isLoading, } = useSpotifyQuery( QueryCacheKeys.search, (spotifyApi) => spotifyApi .search(searchQuery, ["playlist", "track"], { limit: 4 }) .then((res) => res.body), { enabled: false }, ); async function handleSearch() { try { await refetch(); } catch (error: any) { logger.error("Failed to search through spotify", error); } } const placeholder = ( ); return ( 0} icon={new QIcon(search)} on={{ clicked: handleSearch }} /> {`

Songs

`}
{placeholder} {searchResults?.tracks?.items.map((track, index) => ( ))}
{`

Playlists

`}
{placeholder} {searchResults?.playlists?.items.map((playlist, index) => ( ))}
); } export default Search;