Ife
12/31/2024, 5:14 PMincremental
payload being sent, with hasNext: true
each time, the query only sends two response when using .toFlow
-- initial data-fetch (without the deferred items) and empty payload which I believe concludes that call.
2. In the fetch call, we're calling like so for instance:
apolloClient.query(
GetUserQuery(
id = userId,
skipItem = true,
skipOther = false,
skipPreference = false,
skipDonations = true,
skipCards = true,
skipFriends = false
)
)
.toFlow()
.collect {
// handle error via it.hasErrors()
// OR
// emit(it.response) // it stops after the first emit
}
I thought the @defer should be abit usable now or at least with good error provision but after 5 hours, I'm going to have to drop it and manually fetch queries on a need-to-use bases.
Please let me know if there's anything I'm missing!
Happy New Year! 🚀bod
12/31/2024, 5:38 PMthe query only sends two response when usingThis sounds like this could be expected, but it depends on what is returned. Did you expect more emissions? Could you maybe paste your query, and the received payloads (e.g. from a curl)?-- initial data-fetch (without the deferred items) and empty payload which I believe concludes that call..toFlow
Ife
12/31/2024, 5:42 PMdeferred
queries e.g
... on User @defer(label: "posts") {
posts @skip(if: $skipOther) {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
...UserPostsFragment
}
}
}
}
... on User @defer(label: "followers") {
followers @skip(if: $skipFriends) {
user {
...UserFollowersFragment
}
}
}
...
Ife
12/31/2024, 5:44 PMIfe
12/31/2024, 6:01 PMbod
01/01/2025, 7:14 AMIfe
01/01/2025, 4:12 PMquery getUser(
$id: Int!
$skipPreference: Boolean!
$skipOther: Boolean!
$skipFriends: Boolean!
) {
user(id: $id) {
user_id
... on User @defer(label: "settings") {
settings {
...UserSettingsFragment
}
}
... on User @defer(label: "subscriptions") {
subscriptions {
...UserSubscriptionsFragment
}
}
... on User @defer(label: "user_preference") {
user_preference @skip(if: $skipPreference) {
...UserPreferenceFragment
}
}
... on User @defer(label: "groups") {
groups {
...UserGroupsFragment
}
}
... on User @defer(label: "posts") {
posts @skip(if: $skipOther) {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
...UserPostsFragment
}
}
}
}
... on User @defer(label: "followers") {
followers @skip(if: $skipFriends) {
user {
...UserFollowersFragment
}
}
}
}
}
All those other types are abstracted into fragment.Ife
01/01/2025, 4:19 PM// sample response
GraphQL Client: {"hasNext":true,"data":{"user":{"__typename":"User", "user_id": 100101 } } }
GraphQL Client: {"hasNext":true,"incremental":[{"data":{"settings":{"__typename":"UserSettings", "user_type", "other_user_types" } }] }}
GraphQL Client: {"hasNext":true,"incremental":[{"data":{"followers":[{"user":{"__typename":"User","John Doe" } }]}}]}
bod
01/02/2025, 9:34 AMIfe
01/02/2025, 9:57 AMbod
01/02/2025, 10:18 AMIfe
01/02/2025, 10:21 AMbod
01/02/2025, 1:32 PM