-
-
Notifications
You must be signed in to change notification settings - Fork 875
Workaround to fix when __type is missing in received message from LiveQuery server #1863
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Workaround to fix when __type is missing in received message from LiveQuery server #1863
Conversation
…ormat but PFDecoder.m checks for __type key which is missing as shown in below example so this fix will add "__type ":"Object" key-value if dictionary has className and objectId representing PFObject. "object":{ "desc": "Technology", "createdAt": "2020-10-03T19:34:16.823Z", "updatedAt": "2025-09-27T17:55:02.360Z", "image_name": "technology.png", "className": "categories", "objectId": "kHnBntWHHW" }, "original": { "desc": "Technologyy", "createdAt": "2020-10-03T19:34:16.823Z", "updatedAt": "2025-09-27T17:54:10.800Z", "image_name": "technology.png", "className": "categories", "objectId": "kHnBntWHHW" }
🚀 Thanks for opening this pull request! |
📝 WalkthroughWalkthroughInjects "__type":"Object" into dictionaries missing Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant Caller as Caller
participant PFDecoder as PFDecoder.decodeDictionary
participant ObjBranch as Object Branch
participant PFObject as PFObject
Caller->>PFDecoder: decodeDictionary(data)
alt __type missing AND className & objectId present
note right of PFDecoder #DDEBF7: Inject "__type":"Object" into mutable copy
PFDecoder->>ObjBranch: route with type="Object"
else __type present
PFDecoder->>ObjBranch: route based on __type
end
ObjBranch->>PFDecoder: recursively decode remaining fields
ObjBranch->>PFObject: construct with defaultClassName, objectId, data
PFDecoder-->>Caller: decoded PFObject
sequenceDiagram
autonumber
participant Server as Server Event
participant ClientBefore as LiveQuery Client (before)
participant Decoder as PFDecoder.object()
participant App as App Code
Server-->>ClientBefore: object dictionary (className, objectId, fields)
ClientBefore->>ClientBefore: validate className & objectId
ClientBefore->>Decoder: decode(...) as T
alt success
ClientBefore-->>App: return T
else failure
ClientBefore-->>App: throw decoding error
end
sequenceDiagram
autonumber
participant Server as Server Event
participant ClientNow as LiveQuery Client (now)
participant App as App Code
Server-->>ClientNow: object dictionary (className, objectId, fields)
ClientNow->>ClientNow: validate className & objectId
note right of ClientNow #F7F3E8: Typed decoding step removed
ClientNow-->>App: proceed without returning typed T here
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches🧪 Generate unit tests
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
🔇 Additional comments (1)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
🎉 Snyk checks have passed. No issues have been found so far.✅ security/snyk check is complete. No issues have been found. (View Details) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
Parse/Parse/Source/PFDecoder.m
(1 hunks)ParseLiveQuery/ParseLiveQuery/Internal/ClientPrivate.swift
(0 hunks)
💤 Files with no reviewable changes (1)
- ParseLiveQuery/ParseLiveQuery/Internal/ClientPrivate.swift
…nd on the presence of additional data fields so that bare pointer stubs continue to fall back to the legacy dictionary path.
Issue Description
Response from websocket server does not include "__type":"Object" but PFDecoder expects this otherwise events failed to be caught.
Closes: Issue #1832
Approach
LiveryQuery server response sends data or events in "object":jsonf= format but PFDecoder.m checks for __type key which is missing as shown in below example so this fix will add "__type ":"Object" key-value if dictionary has className and objectId representing PFObject.
Requesting review.
Summary by CodeRabbit
Bug Fixes
Refactor