MCPcopy Index your code
hub / github.com/callstack/agent-device / dispatchFillViaRuntime

Function dispatchFillViaRuntime

src/daemon/handlers/interaction-touch.ts:402–477  ·  view source on GitHub ↗
(
  params: InteractionHandlerParams & {
    captureSnapshotForSession: CaptureSnapshotForSession;
    refSnapshotFlagGuardResponse: RefSnapshotFlagGuardResponse;
  },
)

Source from the content-addressed store, hash-verified

400}
401
402async function dispatchFillViaRuntime(
403 params: InteractionHandlerParams & {
404 captureSnapshotForSession: CaptureSnapshotForSession;
405 refSnapshotFlagGuardResponse: RefSnapshotFlagGuardResponse;
406 },
407): Promise<DaemonResponse> {
408 const { req, sessionName, sessionStore } = params;
409 const session = sessionStore.get(sessionName);
410 if (session) {
411 const unsupportedSurfaceResponse = unsupportedMacOsDesktopSurfaceInteraction(session, 'fill');
412 if (unsupportedSurfaceResponse) return unsupportedSurfaceResponse;
413 const unsupported = requireCommandSupported('fill', session.device);
414 if (unsupported) return unsupported;
415 }
416 if (!session) return noActiveSessionError();
417
418 const parsedTarget = parseFillTarget(req.positionals ?? []);
419 if (!parsedTarget.ok) return parsedTarget.response;
420 if (parsedTarget.target.kind === 'ref') {
421 const invalidRefFlagsResponse = params.refSnapshotFlagGuardResponse('fill', req.flags);
422 if (invalidRefFlagsResponse) return invalidRefFlagsResponse;
423 await refreshAndroidRefSnapshotIfFreshnessActive(params, session);
424 }
425 const directSelector = readDirectIosSelectorFillTarget({
426 session,
427 target: parsedTarget.target,
428 flags: req.flags,
429 });
430 if (directSelector) {
431 const directResponse = await dispatchDirectIosSelectorFill(
432 params,
433 session,
434 directSelector,
435 parsedTarget.text,
436 );
437 if (directResponse) return directResponse;
438 }
439
440 return await dispatchRuntimeInteraction(params, {
441 run: async (runtime) =>
442 await runtime.interactions.fill(parsedTarget.target, parsedTarget.text, {
443 session: sessionName,
444 requestId: req.meta?.requestId,
445 delayMs: req.flags?.delayMs,
446 }),
447 buildPayloads: (result) => {
448 const referenceFrame =
449 result.kind === 'point'
450 ? undefined
451 : readSnapshotNodesReferenceFrame(session.snapshot?.nodes ?? []);
452 const recordedResult = buildTouchVisualizationResult({
453 data: result.backendResult,
454 fallbackX: result.point?.x,
455 fallbackY: result.point?.y,
456 referenceFrame,
457 extra: {
458 ...interactionResultExtra(result),
459 text: parsedTarget.text,

Callers 1

Tested by

no test coverage detected