fix: accept File instances on cast-mode file/files read path#9
Open
Abhishek5Sharma wants to merge 2 commits into
Open
fix: accept File instances on cast-mode file/files read path#9Abhishek5Sharma wants to merge 2 commits into
Abhishek5Sharma wants to merge 2 commits into
Conversation
Cast mode assigned a File object to a `file`/`files` leaf got silently
nulled: DataField construction/setValue routes the value through
ValueCaster::castNativeRead, whose resolveFiles only accepted a decoded
{model_type, model_id} array and dropped live File instances. Row mode
was unaffected because its write path already handled File objects.
resolveFiles now passes an already-hydrated File instance straight
through (single and list forms) while still resolving stored reference
arrays on reload, so the authoring round-trip is consistent end-to-end.
Add cast-mode file/files coverage to DataFieldCastTest, matching the
documented README examples (file -> File, files -> array<File>, single
File wrapped to a list, empty files round-trips as []).
f2bece9 to
1e1be81
Compare
…list
A bare {model_type, model_id} ref stored under a `files` field read back
as [] — resolveFiles iterated the assoc ref's scalar members instead of
treating it as one item. Wrap a single decoded ref into a one-item list
on both the read and write paths so a single ref (e.g. legacy/migrated
data) is still readable as a list.
Also make encodeFiles store null instead of stringifying an unresolvable
value, avoiding a lossy "Array" cast.
Add row-mode and json-mode regression tests for the single-ref case.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cast mode assigned a File object to a
file/filesleaf got silently nulled: DataField construction/setValue routes the value through ValueCaster::castNativeRead, whose resolveFiles only accepted a decoded {model_type, model_id} array and dropped live File instances. Row mode was unaffected because its write path already handled File objects.resolveFiles now passes an already-hydrated File instance straight through (single and list forms) while still resolving stored reference arrays on reload, so the authoring round-trip is consistent end-to-end.
Add cast-mode file/files coverage to DataFieldCastTest, matching the documented README examples (file -> File, files -> array, single File wrapped to a list, empty files round-trips as []).