import React, { useMemo, useCallback, ReactElement } from "react"; import { isNil, isEmpty } from "lodash"; import { IExtractedComicBookCoverFile, RootState } from "threetwo-ui-typings"; import { importToDB } from "../actions/fileops.actions"; import { useSelector, useDispatch } from "react-redux"; import { comicinfoAPICall } from "../actions/comicinfo.actions"; import { search } from "../services/api/SearchApi"; import { Form, Field } from "react-final-form"; import Card from "./Carda"; import ellipsize from "ellipsize"; import { convert } from "html-to-text"; import dayjs from "dayjs"; interface ISearchProps {} export const Search = ({}: ISearchProps): ReactElement => { const formData = { search: "", }; const dispatch = useDispatch(); const getCVSearchResults = useCallback( (searchQuery) => { dispatch( comicinfoAPICall({ callURIAction: "search", callMethod: "GET", callParams: { api_key: "a5fa0663683df8145a85d694b5da4b87e1c92c69", query: searchQuery.search, format: "json", limit: "10", offset: "0", field_list: "id,name,deck,api_detail_url,image,description,volume,cover_date", resources: "issue", }, }), ); }, [dispatch], ); const addToLibrary = useCallback( (sourceName: string, comicData) => dispatch(importToDB(sourceName, { comicvine: comicData })), [], ); const comicVineSearchResults = useSelector( (state: RootState) => state.comicInfo.searchResults, ); const createDescriptionMarkup = (html) => { return { __html: html }; }; return ( <>

Search

(
{({ input, meta }) => { return ( ); }}
)} /> {!isNil(comicVineSearchResults.results) && !isEmpty(comicVineSearchResults.results) ? (
{comicVineSearchResults.results.map((result) => { return (
{!isEmpty(result.name) ? ( result.name ) : ( No Name )}
Cover date {dayjs(result.cover_date).format("MMM D, YYYY")}
{result.id}
{result.api_detail_url}

{ellipsize( convert(result.description, { baseElements: { selectors: ["p"], }, }), 320, )}

); })}
) : (

Search the ComicVine database Search and add issues, series and trade paperbacks to your library. Then, download them using the configured AirDC++ or torrent clients.

)}
); }; export default Search;