🪢 Wired up CV basic search
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
@@ -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>
|
||||||
</>
|
</>
|
||||||
|
|||||||
Reference in New Issue
Block a user