🪢 Wired up CV basic search

This commit is contained in:
2021-08-11 23:05:37 -07:00
parent 0baf3e436f
commit d25720caba
3 changed files with 44 additions and 20 deletions

View File

@@ -41,7 +41,7 @@ export const comicinfoAPICall = (options) => async (dispatch) => {
case "search": case "search":
dispatch({ dispatch({
type: CV_SEARCH_SUCCESS, type: CV_SEARCH_SUCCESS,
result: response.data, searchResults: response.data,
}); });
break; break;

View File

@@ -64,12 +64,15 @@ export const ComicDetail = ({}: ComicDetailProps): ReactElement => {
const createDescriptionMarkup = (html) => { const createDescriptionMarkup = (html) => {
return { __html: html }; return { __html: html };
}; };
const isComicBookMetadataAvailable =
!isNil(comicBookDetailData.sourcedMetadata) &&
!isEmpty(comicBookDetailData.sourcedMetadata);
// Tab groups for ComicVine metadata // Tab groups for ComicVine metadata
const tabGroup = [ const tabGroup = [
{ {
id: 0, id: 0,
name: "Volume Information", name: "Volume Information",
content: !isNil(comicBookDetailData.sourcedMetadata) && ( content: isComicBookMetadataAvailable && (
<> <>
<div className="columns"> <div className="columns">
<div className="column is-narrow"> <div className="column is-narrow">

View File

@@ -6,7 +6,8 @@ import {
import { useTable } from "react-table"; import { useTable } from "react-table";
import prettyBytes from "pretty-bytes"; import prettyBytes from "pretty-bytes";
import ellipsize from "ellipsize"; import ellipsize from "ellipsize";
import { isNil, isUndefined, map, isEmpty } from "lodash";
import { IExtractedComicBookCoverFile, RootState } from "threetwo-ui-typings";
import { useSelector, useDispatch } from "react-redux"; import { useSelector, useDispatch } from "react-redux";
import { comicinfoAPICall } from "../actions/comicinfo.actions"; import { comicinfoAPICall } from "../actions/comicinfo.actions";
import { Form, Field } from "react-final-form"; import { Form, Field } from "react-final-form";
@@ -20,14 +21,13 @@ export const Search = ({}: ISearchProps): ReactElement => {
const dispatch = useDispatch(); const dispatch = useDispatch();
const getCVSearchResults = useCallback( const getCVSearchResults = useCallback(
(searchQuery) => { (searchQuery) => {
console.log(searchQuery);
dispatch( dispatch(
comicinfoAPICall({ comicinfoAPICall({
callURIAction: "search", callURIAction: "search",
method: "GET", callMethod: "GET",
params: { callParams: {
api_key: "a5fa0663683df8145a85d694b5da4b87e1c92c69", api_key: "a5fa0663683df8145a85d694b5da4b87e1c92c69",
query: searchQuery, query: searchQuery.search,
format: "json", format: "json",
limit: "10", limit: "10",
offset: "0", offset: "0",
@@ -39,6 +39,11 @@ export const Search = ({}: ISearchProps): ReactElement => {
}, },
[dispatch], [dispatch],
); );
const comicVineSearchResults = useSelector(
(state: RootState) => state.comicInfo.searchResults,
);
return ( return (
<> <>
<section className="container"> <section className="container">
@@ -72,19 +77,35 @@ export const Search = ({}: ISearchProps): ReactElement => {
</form> </form>
)} )}
/> />
{!isNil(comicVineSearchResults) &&
<article className="message is-dark is-half"> !isEmpty(comicVineSearchResults) ? (
<div className="message-body"> <>
<p className="mb-2"> {comicVineSearchResults.results.map(
<span className="tag is-medium is-info is-light"> ({ id, name, deck, api_detail_url }) => {
Search the ComicVine database return (
</span> <div key={id}>
Search and add issues, series and trade paperbacks to your {id} {name}
library. Then, download them using the configured AirDC++ or <p>{api_detail_url}</p>
torrent clients. <p>{deck}</p>
</p> </div>
</div> );
</article> },
)}
</>
) : (
<article className="message is-dark is-half">
<div className="message-body">
<p className="mb-2">
<span className="tag is-medium is-info is-light">
Search the ComicVine database
</span>
Search and add issues, series and trade paperbacks to your
library. Then, download them using the configured AirDC++ or
torrent clients.
</p>
</div>
</article>
)}
</div> </div>
</section> </section>
</> </>