






















@@ -172,6 +172,7 @@ async function waitForObservedApprovalEvent(params: {
172172context: MatrixQaScenarioContext;
173173expectedApprovalId: string;
174174expectedKind: MatrixQaApprovalKind;
175+excludedRoomIds?: string[];
175176roomIds: string[];
176177timeoutMs: number;
177178}) {
@@ -183,16 +184,31 @@ async function waitForObservedApprovalEvent(params: {
183184if (!primaryRoomId) {
184185throw new Error("Matrix approval wait requires at least one candidate room");
185186}
186-const startedAt = Date.now();
187-while (Date.now() - startedAt < params.timeoutMs) {
188-const observedMatch = params.context.observedEvents.find((event) =>
187+const excludedRoomIds = new Set(params.excludedRoomIds ?? []);
188+const isExpectedObservedApproval = (event: MatrixQaObservedEvent) => {
189+if (excludedRoomIds.has(event.roomId)) {
190+return false;
191+}
192+if (
189193roomIds.some((roomId) =>
190194isExpectedApprovalEvent(event, {
191195 ...params,
192196 roomId,
193197}),
194-),
198+)
199+) {
200+return true;
201+}
202+return (
203+event.sender === params.context.sutUserId &&
204+event.type === "m.room.message" &&
205+event.approval?.kind === params.expectedKind &&
206+event.approval.id === params.expectedApprovalId
195207);
208+};
209+const startedAt = Date.now();
210+while (Date.now() - startedAt < params.timeoutMs) {
211+const observedMatch = params.context.observedEvents.find(isExpectedObservedApproval);
196212if (observedMatch) {
197213assertApprovalMetadata({
198214event: observedMatch,
@@ -209,13 +225,7 @@ async function waitForObservedApprovalEvent(params: {
209225}
210226await client.waitForOptionalRoomEvent({
211227observedEvents: params.context.observedEvents,
212-predicate: (event) =>
213-roomIds.some((roomId) =>
214-isExpectedApprovalEvent(event, {
215- ...params,
216- roomId,
217-}),
218-),
228+predicate: isExpectedObservedApproval,
219229roomId: primaryRoomId,
220230timeoutMs: Math.min(1_000, remainingMs),
221231});
@@ -674,6 +684,7 @@ export async function runApprovalChannelTargetBothScenario(context: MatrixQaScen
674684});
675685const dmApproval = await waitForObservedApprovalEvent({
676686 context,
687+excludedRoomIds: [context.roomId],
677688expectedApprovalId: approvalId,
678689expectedKind: "exec",
679690roomIds: dmRoomIds,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。