Finish TryGetValue cleanup in FromEventJson implementations - #409
Draft
damyanpetev with Copilot wants to merge 74 commits into
Draft
Finish TryGetValue cleanup in FromEventJson implementations#409damyanpetev with Copilot wants to merge 74 commits into
damyanpetev with Copilot wants to merge 74 commits into
Conversation
… return types in UnmarshalledDataSource
Co-authored-by: MayaKirova <10397980+MayaKirova@users.noreply.github.com>
…thread Fix Copilot review findings: null-safety, dash encoding, delegate mismatch
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
…in AdjustCapacity.
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
Co-authored-by: MayaKirova <10397980+MayaKirova@users.noreply.github.com>
Fix null-component task completion race in dynamic content resolution
…ui-blazor into mkirova/nullable
The full product made IgbDatePicker and IgbDateTimeInput Value, Min and Max nullable in 25.1.63, the shipped item templates bind a DateTime? field, and null is the only way to clear the element from Blazor. Generic value binding and EditForm integration for the date components are a separate change. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
ReturnToString never returns null, so the getters built on it return string. IgcChatMessage id, text and sender, IgcChatMessageAttachment id and IgcTileChangeStateEventArgs tile are required on the client. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… operators ConvertReturnValue returns object?, so the ReturnTo* guards and the component-side null checks are live again instead of being hidden behind null!. Dictionary getters return the raw value, the method-wide CS8604 pragmas are replaced by per-site checks, BuildSequenceInfo runs lazily rather than from the constructor, and collection notifications pass null items through as before. IgBlazor keeps the throwing getter: a nullable property would need about 150 guards at the module registration sites. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…htened Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: damyanpetev <3198469+damyanpetev@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Cleanup remaining FromEventJson dictionary lookups
Finish TryGetValue cleanup in FromEventJson implementations
Sep 11, 2026
20 tasks
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.
Follow-up to #365, which converted the 21
ContainsKey+ indexer lookups it had already touched (b304ed6). The remaining 63 sites across 23 hand-maintained event-args/component files undersrc/components/Blazorstill did a double dictionary lookup; this converts them to a singleTryGetValue.Changes
if (args != null && args.ContainsKey("x")) { … args["x"] … }in aFromEventJsonbody now usesTryGetValue, with theobject?result passed straight to the existingReturnTo*/ConvertReturnValue/StringToEnumhelper.<key>Obj, matching the convention established inb304ed6; no collisions with existing pattern variables such asdetail.TileChangeStateEventArgsused theargs?.ContainsKey("detail") == true && … args["detail"]variant; it now matches the sameargs != null && args.TryGetValue(...)form as its siblings.ContainsKeyuses insrc/componentsBase/BaseRendererControl.csare internal state lookups, not event payload reads, and are untouched.Behavior is unchanged —
TryGetValuereturningfalseleavesoutatnull, which the guarded body never reads, so each site keeps the same "only assign when the key is present" semantics.No new tests: the refactor is behavior-preserving and these decode paths are already exercised by the existing event tests (e.g.
ComboTestsdrivesComboChangeEventArgsDetail.FromEventJson).