Skip to content

Handling stale data & optimistic updates. #70

Closed Answered by bloodyowl
akselander asked this question in Q&A
Discussion options

You must be logged in to vote

yeah, you can do something like this:

const query = ...
const [mutation, optimisticValue] = ...

return {
  data: query.mapOk(data => {
    return match({query, mutation, optimisticValue})
      .with({ mutation: AsyncData.P.Loading, optimisticValue: P.select(P.not(P.nullish)))}, optimisticValue => {
        return optimisticValue
      })
      .with({ mutation: AsyncData.P.Done(Result.P.Ok(P.select()))}, dataFromMutation => dataFromMutation)
      .otherwise(() => data)
  }),
  // just to indicate that the mutation is currently running
  isLoading: mutation.isLoading(),
}

Replies: 2 comments 3 replies

Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
3 replies
@bloodyowl
Comment options

@akselander
Comment options

@bloodyowl
Comment options

Answer selected by akselander
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants