From d9003bf2c78fcd6888ea18e16512ff6559e3e6eb Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Tue, 17 Aug 2021 20:58:14 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20WIP=20AirDCPP=20sockets?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/client/components/Search.tsx | 3 +- src/client/services/api/SearchApi.ts | 42 ++++++++++++++++++++++------ 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/client/components/Search.tsx b/src/client/components/Search.tsx index 66b9846..4f4a828 100644 --- a/src/client/components/Search.tsx +++ b/src/client/components/Search.tsx @@ -59,12 +59,13 @@ export const Search = ({}: ISearchProps): ReactElement => { onSubmit={() => getDCPPSearchResults({ query: { - pattern: "wolverine", + pattern: "Iron Man - V1 194", // file_type: "compressed", extensions: ["cbz", "cbr"], }, hub_urls: [ "adcs://novosibirsk.dc-dev.club:7111/?kp=SHA256/4XFHJFFBFEI2RS75FPRPPXPZMMKPXR764ABVVCC2QGJPQ34SDZGA", + "dc.fly-server.ru", ], priority: 1, }) diff --git a/src/client/services/api/SearchApi.ts b/src/client/services/api/SearchApi.ts index 1085259..55b96da 100644 --- a/src/client/services/api/SearchApi.ts +++ b/src/client/services/api/SearchApi.ts @@ -19,15 +19,41 @@ function sleep(ms: number): Promise { export const search = async (data: SearchData) => { await SocketService.connect("admin", "password"); - await sleep(10000); const instance: SearchInstance = await SocketService.post("search"); - await SocketService.post( - `${SearchConstants.INSTANCES_URL}/${instance.id}/hub_search`, + const unsubscribe = await SocketService.addListener( + "search", + "search_hub_searches_sent", + (searchInfo) => { + onSearchSent(data, instance, unsubscribe, searchInfo); + }, + instance.id, + ); + + const searchQueueInfo = await SocketService.post( + `search/${instance.id}/hub_search`, data, ); - await sleep(10000); - const results = await SocketService.get(`search/${instance.id}/results/0/20`); - console.log("results", results); - SocketService.disconnect(); - return results; +}; + +const onSearchSent = async (item, instance, unsubscribe, searchInfo): any => { + // 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); + // const result = results[0]; + // SocketService.post(`search/${instance.id}/results/${result.id}/download`, { + // priority: Utils.toApiPriority(item.priority), + // target_directory: item.target_directory, + // }); + } + return results; + // Remove listener for this search instance + unsubscribe(); };