mirror of
https://github.com/ershisan99/flashcards-example-project.git
synced 2025-12-16 20:59:27 +00:00
4 - pessimistic final
This commit is contained in:
@@ -14,6 +14,30 @@ const decksService = flashcardsApi.injectEndpoints({
|
|||||||
endpoints: builder => ({
|
endpoints: builder => ({
|
||||||
createDeck: builder.mutation<DeckResponse, CreateDeckArgs>({
|
createDeck: builder.mutation<DeckResponse, CreateDeckArgs>({
|
||||||
invalidatesTags: ['Decks'],
|
invalidatesTags: ['Decks'],
|
||||||
|
async onQueryStarted(_, { dispatch, getState, queryFulfilled }) {
|
||||||
|
const cachedArgsForQuery = decksService.util.selectCachedArgsForQuery(
|
||||||
|
getState(),
|
||||||
|
'getDecks'
|
||||||
|
) as GetDecksArgs[]
|
||||||
|
|
||||||
|
try {
|
||||||
|
const { data } = await queryFulfilled
|
||||||
|
|
||||||
|
cachedArgsForQuery.forEach(cachedArgs => {
|
||||||
|
dispatch(
|
||||||
|
decksService.util.updateQueryData('getDecks', cachedArgs, draft => {
|
||||||
|
if (cachedArgs.currentPage !== 1) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
draft.items.unshift(data)
|
||||||
|
draft.items.pop()
|
||||||
|
})
|
||||||
|
)
|
||||||
|
})
|
||||||
|
} catch (e) {
|
||||||
|
console.log(e)
|
||||||
|
}
|
||||||
|
},
|
||||||
query: body => {
|
query: body => {
|
||||||
const { cover, isPrivate, name } = body
|
const { cover, isPrivate, name } = body
|
||||||
|
|
||||||
@@ -77,7 +101,7 @@ const decksService = flashcardsApi.injectEndpoints({
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.assign(draft.items[itemToUpdateIndex], args)
|
draft.items[itemToUpdateIndex] = { ...draft.items[itemToUpdateIndex], ...args }
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user