From 9440cafe86e6fd824b1286b18f2e8613b9068270 Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Fri, 20 Aug 2021 23:53:36 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=8E=20Displaying=20AirDCPP=20results?= =?UTF-8?q?=20on=20the=20UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/client/actions/airdcpp.actions.tsx | 62 ++++++---------------- src/client/components/AcquisitionPanel.tsx | 24 +++++++-- src/client/components/ComicDetail.tsx | 5 +- src/client/reducers/airdcpp.reducer.ts | 2 + src/client/reducers/index.js | 6 +-- 5 files changed, 44 insertions(+), 55 deletions(-) diff --git a/src/client/actions/airdcpp.actions.tsx b/src/client/actions/airdcpp.actions.tsx index 9ddf8fe..ac02462 100644 --- a/src/client/actions/airdcpp.actions.tsx +++ b/src/client/actions/airdcpp.actions.tsx @@ -1,5 +1,10 @@ import SocketService from "../services/DcppSearchService"; -import { SearchQuery, SearchInstance, PriorityEnum } from "threetwo-ui-typings"; +import { + SearchQuery, + SearchInstance, + PriorityEnum, + SearchResponse, +} from "threetwo-ui-typings"; import { AIRDCPP_SEARCH_INSTANCE_CREATED, AIRDCPP_SEARCH_RESULTS_RECEIVED, @@ -17,52 +22,19 @@ function sleep(ms: number): Promise { export const search = (data: SearchData) => async (dispatch) => { await SocketService.connect("admin", "password"); + await sleep(10000); const instance: SearchInstance = await SocketService.post("search"); - - dispatch({ - type: AIRDCPP_SEARCH_INSTANCE_CREATED, - searchInstance: instance, - }); - - const unsubscribe = await SocketService.addListener( - "search", - "search_hub_searches_sent", - (searchInfo) => { - onSearchSent(data, instance, unsubscribe, searchInfo); - }, - instance.id, - ); - - const searchQueueInfo = await SocketService.post( + await SocketService.post( `search/${instance.id}/hub_search`, data, ); - return searchQueueInfo; + await sleep(10000); + const results = await SocketService.get(`search/${instance.id}/results/0/25`); + console.log("results", results); + dispatch({ + type: AIRDCPP_SEARCH_RESULTS_RECEIVED, + results, + }); + SocketService.disconnect(); + return results; }; - -const onSearchSent = - (item, instance, unsubscribe, searchInfo) => async (dispatch) => { - // Collect the results for 5 seconds - await sleep(5000); - - // Get only the first result (results are sorted by relevance) - const results = await SocketService.get( - `search/${instance.id}/results/0/100`, - ); - - if (results.length > 0) { - // We have results, download the best one - console.log("SASAAAA", results); - dispatch({ - type: AIRDCPP_SEARCH_RESULTS_RECEIVED, - results, - }); - // const result = results[0]; - // SocketService.post(`search/${instance.id}/results/${result.id}/download`, { - // priority: Utils.toApiPriority(item.priority), - // target_directory: item.target_directory, - // }); - } - // Remove listener for this search instance - unsubscribe(); - }; diff --git a/src/client/components/AcquisitionPanel.tsx b/src/client/components/AcquisitionPanel.tsx index f2eee66..80e5ede 100644 --- a/src/client/components/AcquisitionPanel.tsx +++ b/src/client/components/AcquisitionPanel.tsx @@ -2,6 +2,7 @@ import React, { useState, useEffect, useCallback, ReactElement } from "react"; import { search } from "../actions/airdcpp.actions"; import { useDispatch, useSelector } from "react-redux"; import { RootState } from "threetwo-ui-typings"; +import { each, isNil, map } from "lodash"; interface IAcquisitionPanelProps { comicBookMetadata: any; @@ -13,9 +14,9 @@ export const AcquisitionPanel = ( const volumeName = props.comicBookMetadata.sourcedMetadata.comicvine.volumeInformation.name; const issueName = props.comicBookMetadata.sourcedMetadata.comicvine.name; - const airDCPPSearchResults = useSelector((state: RootState) => { - console.log(state); - }); + const airDCPPSearchResults = useSelector( + (state: RootState) => state.airdcpp.results, + ); const dispatch = useDispatch(); const getDCPPSearchResults = useCallback( (searchQuery) => { @@ -45,7 +46,22 @@ export const AcquisitionPanel = ( {/* results */} -
{JSON.stringify(airDCPPSearchResults)}
+ + + + + + + + {map(airDCPPSearchResults, ({ name, path }) => { + return ( + + + + + ); + })} +
NamePath
{name}{path}
); }; diff --git a/src/client/components/ComicDetail.tsx b/src/client/components/ComicDetail.tsx index 36a49ae..189bc81 100644 --- a/src/client/components/ComicDetail.tsx +++ b/src/client/components/ComicDetail.tsx @@ -60,6 +60,7 @@ export const ComicDetail = ({}: ComicDetailProps): ReactElement => { }, [page, dispatch]); const openDrawerWithCVMatches = useCallback(() => { + console.log("here") setVisible(true); dispatch(fetchComicVineMatches(comicBookDetailData)); }, [dispatch, comicBookDetailData]); @@ -299,7 +300,7 @@ export const ComicDetail = ({}: ComicDetailProps): ReactElement => { role="menu" >
-
@@ -307,7 +308,7 @@ export const ComicDetail = ({}: ComicDetailProps): ReactElement => { Match on ComicVine -
+
diff --git a/src/client/reducers/airdcpp.reducer.ts b/src/client/reducers/airdcpp.reducer.ts index 220b259..a0ac0af 100644 --- a/src/client/reducers/airdcpp.reducer.ts +++ b/src/client/reducers/airdcpp.reducer.ts @@ -28,6 +28,8 @@ function airdcppReducer(state = initialState, action) { isAirDCPPSearchInProgress: false, results: action.results, }; + default: + return state; } } diff --git a/src/client/reducers/index.js b/src/client/reducers/index.js index a93d21b..30af12b 100644 --- a/src/client/reducers/index.js +++ b/src/client/reducers/index.js @@ -2,14 +2,12 @@ import { combineReducers } from "redux"; import { connectRouter } from "connected-react-router"; import comicinfoReducer from "../reducers/comicinfo.reducer"; import fileOpsReducer from "../reducers/fileops.reducer"; -import airdcppReducer from "./airdcpp.reducer"; +import airdcppReducer from "../reducers/airdcpp.reducer"; export default (history) => combineReducers({ comicInfo: comicinfoReducer, fileOps: fileOpsReducer, - acquisition: { - airdcpp: airdcppReducer, - }, + airdcpp: airdcppReducer, router: connectRouter(history), });