mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-07-19 12:03:37 +00:00
refactor: search file
This commit is contained in:
@@ -110,6 +110,44 @@ export class NTEventWrapper {
|
|||||||
resolve(retData);
|
resolve(retData);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
async RegisterListen<ListenerType extends (...args: any[]) => void>(ListenerName = '', waitTimes = 1, timeout = 5000, checker: (...args: Parameters<ListenerType>) => boolean) {
|
||||||
|
return new Promise<Parameters<ListenerType>>((resolve, reject) => {
|
||||||
|
const ListenerNameList = ListenerName.split('/');
|
||||||
|
const ListenerMainName = ListenerNameList[0];
|
||||||
|
const ListenerSubName = ListenerNameList[1];
|
||||||
|
const id = randomUUID();
|
||||||
|
let complete = 0;
|
||||||
|
let retData: Parameters<ListenerType> | undefined = undefined;
|
||||||
|
const databack = () => {
|
||||||
|
if (complete == 0) {
|
||||||
|
reject(new Error(' ListenerName:' + ListenerName + ' timeout'));
|
||||||
|
} else {
|
||||||
|
resolve(retData!);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const Timeouter = setTimeout(databack, timeout);
|
||||||
|
const eventCallbak = {
|
||||||
|
timeout: timeout,
|
||||||
|
createtime: Date.now(),
|
||||||
|
checker: checker,
|
||||||
|
func: (...args: Parameters<ListenerType>) => {
|
||||||
|
complete++;
|
||||||
|
retData = args;
|
||||||
|
if (complete >= waitTimes) {
|
||||||
|
clearTimeout(Timeouter);
|
||||||
|
databack();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if (!this.EventTask.get(ListenerMainName)) {
|
||||||
|
this.EventTask.set(ListenerMainName, new Map());
|
||||||
|
}
|
||||||
|
if (!(this.EventTask.get(ListenerMainName)?.get(ListenerSubName))) {
|
||||||
|
this.EventTask.get(ListenerMainName)?.set(ListenerSubName, new Map());
|
||||||
|
}
|
||||||
|
this.EventTask.get(ListenerMainName)?.get(ListenerSubName)?.set(id, eventCallbak);
|
||||||
|
});
|
||||||
|
}
|
||||||
async CallNormalEvent<EventType extends (...args: any[]) => Promise<any>, ListenerType extends (...args: any[]) => void>
|
async CallNormalEvent<EventType extends (...args: any[]) => Promise<any>, ListenerType extends (...args: any[]) => void>
|
||||||
(EventName = '', ListenerName = '', waitTimes = 1, timeout: number = 3000, checker: (...args: Parameters<ListenerType>) => boolean, ...args: Parameters<EventType>) {
|
(EventName = '', ListenerName = '', waitTimes = 1, timeout: number = 3000, checker: (...args: Parameters<ListenerType>) => boolean, ...args: Parameters<EventType>) {
|
||||||
return new Promise<[EventRet: Awaited<ReturnType<EventType>>, ...Parameters<ListenerType>]>(async (resolve, reject) => {
|
return new Promise<[EventRet: Awaited<ReturnType<EventType>>, ...Parameters<ListenerType>]>(async (resolve, reject) => {
|
||||||
|
@@ -187,16 +187,22 @@ export class NTQQFileApi {
|
|||||||
}[]
|
}[]
|
||||||
}[]
|
}[]
|
||||||
};
|
};
|
||||||
const [id, data] = await NTEventDispatch.CallNormalEvent<EventType, (params: OnListener) => void>(
|
// (params: OnListener) => void 'NodeIKernelSearchListener/onSearchFileKeywordsResult',
|
||||||
'NodeIKernelSearchService/searchFileWithKeywords',
|
// 1,
|
||||||
'NodeIKernelSearchListener/onSearchFileKeywordsResult',
|
// 10000,
|
||||||
1,
|
// (arg): boolean => { return id == data.searchId },
|
||||||
10000,
|
// keys,
|
||||||
(arg): boolean => { return id == data.searchId },
|
// 12
|
||||||
keys,
|
const Event = await NTEventDispatch.CreatEventFunction<EventType>('NodeIKernelSearchService/searchFileWithKeywords');
|
||||||
12
|
let id = '';
|
||||||
);
|
const [Listener] = await NTEventDispatch.RegisterListen<(params: OnListener) => void>('NodeIKernelSearchListener/onSearchFileKeywordsResult', 1, 5000, (params) => {
|
||||||
return data.resultItems[0];
|
if (id !== '' && params.searchId == id) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
id = await Event!(keys, 12);
|
||||||
|
return Listener.resultItems[0];
|
||||||
}
|
}
|
||||||
static async getImageUrl(element: PicElement) {
|
static async getImageUrl(element: PicElement) {
|
||||||
if (!element) {
|
if (!element) {
|
||||||
|
@@ -8,6 +8,23 @@ export enum UrlFileDownloadType {
|
|||||||
KURLFILEDOWNLOADCOMMON,
|
KURLFILEDOWNLOADCOMMON,
|
||||||
KURLFILEDOWNLOADINSTALLAPP
|
KURLFILEDOWNLOADINSTALLAPP
|
||||||
}
|
}
|
||||||
|
export enum RMBizTypeEnum {
|
||||||
|
KUNKNOWN,
|
||||||
|
KC2CFILE,
|
||||||
|
KGROUPFILE,
|
||||||
|
KC2CPIC,
|
||||||
|
KGROUPPIC,
|
||||||
|
KDISCPIC,
|
||||||
|
KC2CVIDEO,
|
||||||
|
KGROUPVIDEO,
|
||||||
|
KC2CPTT,
|
||||||
|
KGROUPPTT,
|
||||||
|
KFEEDCOMMENTPIC,
|
||||||
|
KGUILDFILE,
|
||||||
|
KGUILDPIC,
|
||||||
|
KGUILDPTT,
|
||||||
|
KGUILDVIDEO
|
||||||
|
}
|
||||||
export interface CommonFileInfo {
|
export interface CommonFileInfo {
|
||||||
bizType: number;
|
bizType: number;
|
||||||
chatType: number;
|
chatType: number;
|
||||||
@@ -227,13 +244,25 @@ export interface NodeIKernelRichMediaService {
|
|||||||
|
|
||||||
cancelSearcheGroupFile(arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
cancelSearcheGroupFile(arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
||||||
|
|
||||||
onlyDownloadFile(arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
onlyDownloadFile(peer: Peer, arg2: unknown, arg3: Array<{
|
||||||
|
fileId: string,
|
||||||
|
fileName: string,
|
||||||
|
fileSize: string,
|
||||||
|
fileModelId: string
|
||||||
|
}
|
||||||
|
>): unknown;
|
||||||
|
|
||||||
onlyUploadFile(arg1: unknown, arg2: unknown): unknown;
|
onlyUploadFile(arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
isExtraLargePic(arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
isExtraLargePic(arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
||||||
|
|
||||||
uploadRMFileWithoutMsg(arg: unknown): unknown;
|
uploadRMFileWithoutMsg(arg: {
|
||||||
|
bizType: RMBizTypeEnum,
|
||||||
|
filePath: string,
|
||||||
|
peerUid: string,
|
||||||
|
transferId: string
|
||||||
|
useNTV2: string
|
||||||
|
}): Promise<unknown>;
|
||||||
|
|
||||||
isNull(): boolean;
|
isNull(): boolean;
|
||||||
}
|
}
|
@@ -51,7 +51,7 @@ export interface NodeIKernelSearchService {
|
|||||||
|
|
||||||
cancelSearchMsgWithKeywords(...args: any[]): unknown;// needs 3 arguments
|
cancelSearchMsgWithKeywords(...args: any[]): unknown;// needs 3 arguments
|
||||||
|
|
||||||
searchFileWithKeywords(keywords: string[], source: number): Promise<unknown>;// needs 2 arguments
|
searchFileWithKeywords(keywords: string[], source: number): Promise<string>;// needs 2 arguments
|
||||||
|
|
||||||
searchMoreFileWithKeywordsr(...args: any[]): unknown;// needs 1 arguments
|
searchMoreFileWithKeywordsr(...args: any[]): unknown;// needs 1 arguments
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user