diff --git a/extensions/qa-matrix/src/substrate/e2ee-client.ts b/extensions/qa-matrix/src/substrate/e2ee-client.ts index 1ec6057174b..090a72ba6db 100644 --- a/extensions/qa-matrix/src/substrate/e2ee-client.ts +++ b/extensions/qa-matrix/src/substrate/e2ee-client.ts @@ -17,7 +17,7 @@ import type { MessageEventContent, } from "@openclaw/matrix/test-api.js"; import { buildMatrixQaMessageContent } from "./client.js"; -import { normalizeMatrixQaObservedEvent } from "./events.js"; +import { findMatrixQaObservedEventMatch, normalizeMatrixQaObservedEvent } from "./events.js"; import type { MatrixQaObservedEvent } from "./events.js"; import type { MatrixQaRoomEventWaitResult } from "./sync.js"; @@ -186,27 +186,6 @@ async function createMatrixQaE2eeMatrixClient(params: MatrixQaE2eeClientParams) }); } -function findMatrixQaObservedEventMatch(params: { - cursorIndex: number; - events: MatrixQaObservedEvent[]; - predicate: (event: MatrixQaObservedEvent) => boolean; - roomId: string; -}) { - for (let index = params.cursorIndex; index < params.events.length; index += 1) { - const event = params.events[index]; - if (event?.roomId !== params.roomId) { - continue; - } - if (params.predicate(event)) { - return { - event, - nextCursorIndex: index + 1, - }; - } - } - return undefined; -} - export async function createMatrixQaE2eeScenarioClient( params: MatrixQaE2eeClientParams & { observedEvents: MatrixQaObservedEvent[]; diff --git a/extensions/qa-matrix/src/substrate/events.ts b/extensions/qa-matrix/src/substrate/events.ts index b15a53c90a9..e5434a368d5 100644 --- a/extensions/qa-matrix/src/substrate/events.ts +++ b/extensions/qa-matrix/src/substrate/events.ts @@ -224,3 +224,24 @@ export function normalizeMatrixQaObservedEvent( ...(attachment ? { attachment } : {}), }; } + +export function findMatrixQaObservedEventMatch(params: { + cursorIndex: number; + events: MatrixQaObservedEvent[]; + predicate: (event: MatrixQaObservedEvent) => boolean; + roomId: string; +}) { + for (let index = params.cursorIndex; index < params.events.length; index += 1) { + const event = params.events[index]; + if (event?.roomId !== params.roomId) { + continue; + } + if (params.predicate(event)) { + return { + event, + nextCursorIndex: index + 1, + }; + } + } + return undefined; +} diff --git a/extensions/qa-matrix/src/substrate/sync.ts b/extensions/qa-matrix/src/substrate/sync.ts index 9e72a20840c..966c3052740 100644 --- a/extensions/qa-matrix/src/substrate/sync.ts +++ b/extensions/qa-matrix/src/substrate/sync.ts @@ -1,5 +1,9 @@ -import type { MatrixQaObservedEvent } from "./events.js"; -import { normalizeMatrixQaObservedEvent, type MatrixQaRoomEvent } from "./events.js"; +import { + findMatrixQaObservedEventMatch, + normalizeMatrixQaObservedEvent, + type MatrixQaObservedEvent, + type MatrixQaRoomEvent, +} from "./events.js"; import { requestMatrixJson, type MatrixQaFetchLike } from "./request.js"; type MatrixQaSyncResponse = { @@ -116,27 +120,6 @@ async function pollMatrixQaRoomObserver( } } -function findObservedEventMatch(params: { - cursorIndex: number; - events: MatrixQaObservedEvent[]; - predicate: (event: MatrixQaObservedEvent) => boolean; - roomId: string; -}) { - for (let index = params.cursorIndex; index < params.events.length; index += 1) { - const event = params.events[index]; - if (event?.roomId !== params.roomId) { - continue; - } - if (params.predicate(event)) { - return { - event, - nextCursorIndex: index + 1, - }; - } - } - return undefined; -} - export function createMatrixQaRoomObserver( params: MatrixQaSyncParams & { observedEvents: MatrixQaObservedEvent[]; @@ -162,7 +145,7 @@ export function createMatrixQaRoomObserver( const startedAt = Date.now(); let cursorIndex = roomObserver.cursorIndex; while (Date.now() - startedAt < waitParams.timeoutMs) { - const matched = findObservedEventMatch({ + const matched = findMatrixQaObservedEventMatch({ cursorIndex, events: roomObserver.events, predicate: waitParams.predicate,