fix: data updating after subscribing

This commit is contained in:
DIYgod 2023-01-17 15:02:25 +00:00
parent dcb6f043e9
commit 5d5bb98fa3
No known key found for this signature in database
3 changed files with 34 additions and 17 deletions

View File

@ -38,9 +38,15 @@ export const FollowingButton: React.FC<{
router.push(`${SITE_URL}/dashboard/new-site`)
} else if (characterId) {
if (subscription.data) {
unsubscribeFromSite.mutate({ characterId })
unsubscribeFromSite.mutate({
characterId,
siteId: site?.username,
} as any)
} else {
subscribeToSite.mutate({ characterId })
subscribeToSite.mutate({
characterId,
siteId: site?.username,
} as any)
}
}
}

View File

@ -134,7 +134,8 @@ export default function Home({ region }: { region: string | null }) {
?.map((s: { characterId?: string }) => s.characterId)
.filter(Boolean)
.map(Number),
})
siteIds: showcaseSites.data?.map((s: { handle: string }) => s.handle),
} as any)
})
const followAll = async () => {

View File

@ -123,14 +123,18 @@ export function useSubscribeToSite() {
const account = useAccountState((s) => s.computed.account)
return useFollowCharacter({
onSuccess: (data, { characterId }) => {
const siteId = `${characterId}`
onSuccess: (data, variables: any) => {
return Promise.all([
queryClient.invalidateQueries(["useGetSiteSubscriptions", siteId]),
queryClient.invalidateQueries([
"getSiteSubscriptions",
{
siteId: variables.siteId,
},
]),
queryClient.invalidateQueries([
"getSubscription",
siteId,
variables.siteId,
account?.characterId,
]),
])
@ -145,13 +149,16 @@ export function useSubscribeToSites() {
)
return useFollowCharacters({
onSuccess: (_, { characterIds = [] }) =>
onSuccess: (_, variables: any) =>
Promise.all(
characterIds.flatMap((characterId) => {
const siteId = `${characterId}`
variables.siteIds.flatMap((siteId: string) => {
return [
queryClient.invalidateQueries(["useGetSiteSubscriptions", siteId]),
queryClient.invalidateQueries([
"getSiteSubscriptions",
{
siteId,
},
]),
queryClient.invalidateQueries([
"getSubscription",
@ -169,14 +176,17 @@ export function useUnsubscribeFromSite() {
const account = useAccountState((s) => s.computed.account)
return useUnfollowCharacter({
onSuccess: (data, { characterId }) => {
const siteId = `${characterId}`
onSuccess: (data, variables: any) => {
return Promise.all([
queryClient.invalidateQueries(["useGetSiteSubscriptions", siteId]),
queryClient.invalidateQueries([
"getSiteSubscriptions",
{
siteId: variables.siteId,
},
]),
queryClient.invalidateQueries([
"getSubscription",
siteId,
variables.siteId,
account?.characterId,
]),
])