Skip to content

RecordDetailView.modalActionHandler still carries the dead server fallthrough that objectstack#3959 removed from the shared runtime #3320

Description

@xuyushun441-sys

Found while converging the server-action dispatch for #2904 (deliberately NOT fixed there — different decision surface).

useConsoleActionRuntime.modalActionHandler was fixed by objectstack#3959: an unresolvable type: 'modal' target is reported as an authoring error, because the framework rejects type: 'modal' over REST with a 400 (headlessActionTypeError) — the "fall back to the server-side handler" path can never succeed and only converts an authoring mistake into a confusing round trip.

RecordDetailView.modalActionHandler still has the pre-#3959 shape:

const descriptor = schema != null ? await resolveModalTarget(schema) : null;
if (descriptor) return modalHandler(descriptor);
return serverActionHandler(action);   // ← dead fallthrough: server 400s type:'modal'

…and its doc comment claims "same rule as the shared console runtime", which is no longer true — the shared runtime returns the descriptive error, the record page POSTs and surfaces an opaque 400.

Fix: mirror the #3959 behavior (and its error copy) on the record page, or better, lift the modal dispatch into the shared wrapper so it cannot drift again. Test to update/add: a RecordDetailView-side counterpart of useConsoleActionRuntime.test.tsx's "reports an unresolvable target instead of POSTing to /actions".

Refs objectstack#3959, #2904.

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions