From 9510d6e730f05b701aa45d8e841b5e1524f07202 Mon Sep 17 00:00:00 2001 From: hexxa Date: Mon, 25 Jul 2022 21:54:26 +0800 Subject: [PATCH] feat(ui/clients): add search, reindex in client --- src/client/web/src/client/files.ts | 21 +++++++++++++++- src/client/web/src/client/files_mock.ts | 33 ++++++++++++++++++++----- src/client/web/src/client/index.ts | 4 +++ 3 files changed, 51 insertions(+), 7 deletions(-) diff --git a/src/client/web/src/client/files.ts b/src/client/web/src/client/files.ts index 148e3dd..8425819 100644 --- a/src/client/web/src/client/files.ts +++ b/src/client/web/src/client/files.ts @@ -14,6 +14,7 @@ export const filePathQuery = "fp"; export const listDirQuery = "dp"; export const shareIDQuery = "shid"; export const shareDirQuery = "shdir"; +export const keywordQuery = "k"; // TODO: get timeout from server function translateResp(resp: Response): Response { @@ -236,5 +237,23 @@ export class FilesClient extends BaseClient { method: "get", url, }); - } + }; + + search = (keyword: string): Promise => { + return this.do({ + method: "get", + url: `${this.url}/v1/fs/search`, + params: { + [keywordQuery]: keyword, + }, + }); + }; + + reindex = (): Promise => { + return this.do({ + method: "put", + url: `${this.url}/v1/fs/reindex`, + data: {}, + }); + }; } diff --git a/src/client/web/src/client/files_mock.ts b/src/client/web/src/client/files_mock.ts index 4d25b67..672d515 100644 --- a/src/client/web/src/client/files_mock.ts +++ b/src/client/web/src/client/files_mock.ts @@ -6,6 +6,7 @@ import { ListSharingsResp, ListSharingIDsResp, GetSharingDirResp, + SearchItemsResp, IFilesClient, } from "./"; @@ -34,6 +35,8 @@ export interface FilesClientResps { isSharingMockResp?: Response; generateHashMockResp?: Response; downloadMockResp: Response; + searchMockResp: Response; + reindexMockResp: Response; } const sharingIDs = new Map(); @@ -132,6 +135,18 @@ export const resps = { ], }, }, + searchMockResp: { + status: 200, + statusText: "", + data: { + results: ["mock_search_result1", "mock_search_result2"], + }, + }, + reindexMockResp: { + status: 200, + statusText: "", + data: {}, + }, deleteUploadingMockResp: { status: 200, statusText: "", data: {} }, addSharingMockResp: { status: 200, statusText: "", data: {} }, deleteSharingMockResp: { status: 200, statusText: "", data: {} }, @@ -263,6 +278,14 @@ export class MockFilesClient { download = (url: string): Promise => { return this.wrapPromise(this.resps.downloadMockResp); }; + + search = (keyword: string): Promise => { + return this.wrapPromise(this.resps.searchMockResp); + }; + + reindex = (): Promise => { + return this.wrapPromise(this.resps.reindexMockResp); + }; } // JestFilesClient supports jest function mockings @@ -291,15 +314,11 @@ export class JestFilesClient { deleteUploading = jest .fn() .mockReturnValue(makePromise(resps.deleteUploadingMockResp)); - addSharing = jest - .fn() - .mockReturnValue(makePromise(resps.addSharingMockResp)); + addSharing = jest.fn().mockReturnValue(makePromise(resps.addSharingMockResp)); deleteSharing = jest .fn() .mockReturnValue(makePromise(resps.deleteSharingMockResp)); - isSharing = jest - .fn() - .mockReturnValue(makePromise(resps.isSharingMockResp)); + isSharing = jest.fn().mockReturnValue(makePromise(resps.isSharingMockResp)); listSharings = jest .fn() .mockReturnValue(makePromise(resps.listSharingsMockResp)); @@ -313,6 +332,8 @@ export class JestFilesClient { .fn() .mockReturnValue(makePromise(resps.generateHashMockResp)); download = jest.fn().mockReturnValue(makePromise(resps.downloadMockResp)); + search = jest.fn().mockReturnValue(makePromise(resps.searchMockResp)); + reindex = jest.fn().mockReturnValue(makePromise(resps.reindexMockResp)); } export const NewMockFilesClient = (url: string): IFilesClient => { diff --git a/src/client/web/src/client/index.ts b/src/client/web/src/client/index.ts index 7ca7267..7a00e61 100644 --- a/src/client/web/src/client/index.ts +++ b/src/client/web/src/client/index.ts @@ -93,6 +93,10 @@ export interface GetSharingDirResp { sharingDir: string; } +export interface SearchItemsResp { + results: string[]; +} + export interface ClientConfig { siteName: string; siteDesc: string;