Skip to content

Commit

Permalink
Fix issue with moderator and org subscription
Browse files Browse the repository at this point in the history
  • Loading branch information
teodorus-nathaniel committed Nov 30, 2023
1 parent 4c14d4e commit 7c89c47
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 4 deletions.
11 changes: 9 additions & 2 deletions src/services/datahub/generated-query.ts
Original file line number Diff line number Diff line change
Expand Up @@ -702,7 +702,10 @@ export type SubscribeOrganizationSubscription = {
ctxPostIds?: Array<string> | null
organizationModerators?: Array<{
__typename?: 'ModerationOrganizationModerator'
id: string
moderator: {
__typename?: 'Moderator'
substrateAccount: { __typename?: 'Account'; id: string }
}
}> | null
}
}
Expand Down Expand Up @@ -1151,7 +1154,11 @@ export const SubscribeOrganization = gql`
event
entity {
organizationModerators {
id
moderator {
substrateAccount {
id
}
}
}
ctxPostIds
}
Expand Down
13 changes: 13 additions & 0 deletions src/services/datahub/moderation/mutation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@ import {
ApiModerationActionsBody,
ApiModerationActionsResponse,
} from '@/pages/api/moderation/actions'
import { queryClient } from '@/services/provider'
import { useMyAccount } from '@/stores/my-account'
import mutationWrapper from '@/subsocial-query/base'
import { SocialCallDataArgs, socialCallName } from '@subsocial/data-hub-sdk'
import axios, { AxiosResponse } from 'axios'
import { createSocialDataEventInput, DatahubParams } from '../utils'
import { getModeratorQuery } from './query'

type ModerationCallNames =
| (typeof socialCallName)['synth_moderation_init_moderator']
Expand Down Expand Up @@ -56,5 +58,16 @@ export const useModerationActions = mutationWrapper(
data: SimplifiedModerationActionParams<T>
) => {
return moderationActions(augmentModerationActionParams(data))
},
{
onSuccess: (_, variables) => {
// HOTFIX: there is no event from subscription when the new moderator and org is linked, so we invalidate the query manually
const completeArgs = augmentModerationActionParams(variables)
if (completeArgs.callName === 'synth_moderation_init_moderator') {
setTimeout(() => {
getModeratorQuery.invalidate(queryClient, completeArgs.address)
}, 1_000)
}
},
}
)
8 changes: 6 additions & 2 deletions src/services/datahub/moderation/subscription.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,11 @@ const SUBSCRIBE_ORGANIZATION = gql`
event
entity {
organizationModerators {
id
moderator {
substrateAccount {
id
}
}
}
ctxPostIds
}
Expand Down Expand Up @@ -172,7 +176,7 @@ async function processOrganization(
const moderators = entity.organizationModerators

moderators?.forEach((moderator) => {
const address = moderator.id
const address = moderator.moderator.substrateAccount.id
getModeratorQuery.setQueryData(queryClient, address, (oldData) => {
if (!oldData) return null
const postIdsSet = new Set(oldData.postIds)
Expand Down

0 comments on commit 7c89c47

Please sign in to comment.