optimistic update sample+count
This commit is contained in:
@@ -178,10 +178,32 @@ export function useListMembershipAddMutation({
|
|||||||
pages: old.pages.map(page => ({
|
pages: old.pages.map(page => ({
|
||||||
...page,
|
...page,
|
||||||
starterPacksWithMembership: page.starterPacksWithMembership.map(
|
starterPacksWithMembership: page.starterPacksWithMembership.map(
|
||||||
list => {
|
spWithMembership => {
|
||||||
if (list.starterPack.list?.uri === variables.listUri) {
|
if (
|
||||||
|
spWithMembership.starterPack.list?.uri === variables.listUri
|
||||||
|
) {
|
||||||
return {
|
return {
|
||||||
...list,
|
...spWithMembership,
|
||||||
|
starterPack: {
|
||||||
|
...spWithMembership.starterPack,
|
||||||
|
listItemsSample: [
|
||||||
|
{
|
||||||
|
uri: data.uri,
|
||||||
|
subject: subject as AppBskyActorDefs.ProfileView,
|
||||||
|
},
|
||||||
|
...(spWithMembership.starterPack.listItemsSample?.filter(
|
||||||
|
item => item.subject.did !== variables.actorDid,
|
||||||
|
) ?? []),
|
||||||
|
],
|
||||||
|
list: spWithMembership.starterPack.list
|
||||||
|
? {
|
||||||
|
...spWithMembership.starterPack.list,
|
||||||
|
listItemCount:
|
||||||
|
(spWithMembership.starterPack.list
|
||||||
|
.listItemCount ?? 0) + 1,
|
||||||
|
}
|
||||||
|
: undefined,
|
||||||
|
},
|
||||||
listItem: {
|
listItem: {
|
||||||
uri: data.uri,
|
uri: data.uri,
|
||||||
subject: subject as AppBskyActorDefs.ProfileView,
|
subject: subject as AppBskyActorDefs.ProfileView,
|
||||||
@@ -189,7 +211,7 @@ export function useListMembershipAddMutation({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return list
|
return spWithMembership
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
})),
|
})),
|
||||||
@@ -263,15 +285,34 @@ export function useListMembershipRemoveMutation({
|
|||||||
pages: old.pages.map(page => ({
|
pages: old.pages.map(page => ({
|
||||||
...page,
|
...page,
|
||||||
starterPacksWithMembership: page.starterPacksWithMembership.map(
|
starterPacksWithMembership: page.starterPacksWithMembership.map(
|
||||||
list => {
|
spWithMembership => {
|
||||||
if (list.starterPack.list?.uri === variables.listUri) {
|
if (
|
||||||
|
spWithMembership.starterPack.list?.uri === variables.listUri
|
||||||
|
) {
|
||||||
return {
|
return {
|
||||||
...list,
|
...spWithMembership,
|
||||||
|
starterPack: {
|
||||||
|
...spWithMembership.starterPack,
|
||||||
|
listItemsSample:
|
||||||
|
spWithMembership.starterPack.listItemsSample?.filter(
|
||||||
|
item => item.subject.did !== variables.actorDid,
|
||||||
|
),
|
||||||
|
list: spWithMembership.starterPack.list
|
||||||
|
? {
|
||||||
|
...spWithMembership.starterPack.list,
|
||||||
|
listItemCount: Math.max(
|
||||||
|
0,
|
||||||
|
(spWithMembership.starterPack.list
|
||||||
|
.listItemCount ?? 1) - 1,
|
||||||
|
),
|
||||||
|
}
|
||||||
|
: undefined,
|
||||||
|
},
|
||||||
listItem: undefined,
|
listItem: undefined,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return list
|
return spWithMembership
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
})),
|
})),
|
||||||
|
|||||||
Reference in New Issue
Block a user