Skip to content

Commit

Permalink
Add blocked in app feature
Browse files Browse the repository at this point in the history
  • Loading branch information
teodorus-nathaniel committed Dec 1, 2023
1 parent 3afc5e1 commit 42d923b
Show file tree
Hide file tree
Showing 5 changed files with 169 additions and 16 deletions.
6 changes: 6 additions & 0 deletions src/hooks/useIsMessageBlocked.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { getPostQuery } from '@/services/api/query'
import { getBlockedResourcesQuery } from '@/services/datahub/moderation/query'
import { isMessageBlocked } from '@/utils/chat'
import { getAppId } from '@/utils/env/client'
import { PostData } from '@subsocial/api/types'
import { useMemo } from 'react'

Expand All @@ -27,6 +28,9 @@ export default function useIsMessageBlocked(
message: PostData | null | undefined,
chatId: string
) {
const { data: appModerationData } = getBlockedResourcesQuery.useQuery({
appId: getAppId(),
})
const { data: hubModerationData } = getBlockedResourcesQuery.useQuery(
{ spaceId: hubId },
{
Expand All @@ -39,6 +43,8 @@ export default function useIsMessageBlocked(
{ postEntityId: entityId },
{ enabled: !!entityId }
)
// TODO: use blocked in app
const blockedInApp = appModerationData?.blockedResources
const blockedInHub = hubModerationData?.blockedResources
const blockedInChat = chatModerationData?.blockedResources

Expand Down
5 changes: 4 additions & 1 deletion src/pages/[hubId]/[slug]/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,10 @@ export const getStaticProps = getCommonStaticProps<

if (blockedData) {
let isChatModerated = false
blockedData.blockedInSpaceIds.forEach(({ blockedResources }) => {
;[
...blockedData.blockedInSpaceIds,
...blockedData.blockedInAppIds,
].forEach(({ blockedResources }) => {
if (blockedResources.postId.includes(chatId)) {
isChatModerated = true
}
Expand Down
20 changes: 15 additions & 5 deletions src/server/moderation/prefetch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import {
getBlockedResources,
getBlockedResourcesQuery,
} from '@/services/datahub/moderation/query'
import { getAppId } from '@/utils/env/client'
import { QueryClient } from '@tanstack/react-query'

export async function prefetchBlockedEntities(
Expand All @@ -10,10 +11,12 @@ export async function prefetchBlockedEntities(
postIds: string[]
) {
try {
const { blockedInPostIds, blockedInSpaceIds } = await getBlockedResources({
spaceIds,
postEntityIds: postIds,
})
const { blockedInPostIds, blockedInSpaceIds, blockedInAppIds } =
await getBlockedResources({
spaceIds,
postEntityIds: postIds,
appIds: [getAppId()],
})
blockedInSpaceIds.forEach((data) => {
getBlockedResourcesQuery.setQueryData(
queryClient,
Expand All @@ -28,8 +31,15 @@ export async function prefetchBlockedEntities(
{ ...data, type: 'postEntityId' }
)
})
blockedInAppIds.forEach((data) => {
getBlockedResourcesQuery.setQueryData(
queryClient,
{ appId: data.id },
{ ...data, type: 'appId' }
)
})

return { blockedInSpaceIds, blockedInPostIds }
return { blockedInSpaceIds, blockedInPostIds, blockedInAppIds }
} catch (err) {
console.log('Error prefetching blocked entities', err)
}
Expand Down
113 changes: 110 additions & 3 deletions src/services/datahub/generated-query.ts
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,15 @@ export enum ContentExtensionSchemaId {
SubsocialSecretBox = 'subsocial_secret_box',
}

export type CreateOrganizationInput = {
ctxAppIds?: InputMaybe<Array<Scalars['String']['input']>>
ctxPostIds?: InputMaybe<Array<Scalars['String']['input']>>
ctxSpaceIds?: InputMaybe<Array<Scalars['String']['input']>>
description?: InputMaybe<Scalars['String']['input']>
name?: InputMaybe<Scalars['String']['input']>
ownedByAccountAddress: Scalars['String']['input']
}

export enum DataHubSubscriptionEventEnum {
EvmAddressLinkedToAccount = 'EVM_ADDRESS_LINKED_TO_ACCOUNT',
EvmAddressLinkToAccountStateUpdated = 'EVM_ADDRESS_LINK_TO_ACCOUNT_STATE_UPDATED',
Expand Down Expand Up @@ -200,6 +209,14 @@ export type FindPostsResponseDto = {
total?: Maybe<Scalars['Int']['output']>
}

export type GetModeratorByInput = {
substrateAccountAddress: Scalars['String']['input']
}

export type GetOrganizationWhere = {
id: Scalars['String']['input']
}

export type IdTimestampPair = {
id: Scalars['String']['input']
timestamp_gt: Scalars['String']['input']
Expand All @@ -214,6 +231,14 @@ export enum InReplyToKind {
Post = 'Post',
}

export type InitModeratorInputDto = {
ctxAppIds?: InputMaybe<Array<Scalars['String']['input']>>
ctxPostIds?: InputMaybe<Array<Scalars['String']['input']>>
ctxSpaceIds?: InputMaybe<Array<Scalars['String']['input']>>
substrateAddress: Scalars['String']['input']
withOrganization?: InputMaybe<Scalars['Boolean']['input']>
}

export type LinkedIdentitiesArgs = {
externalId?: InputMaybe<Scalars['String']['input']>
id?: InputMaybe<Scalars['String']['input']>
Expand Down Expand Up @@ -271,6 +296,15 @@ export type ModerationBlockedResourceSubscriptionPayload = {
event: DataHubSubscriptionEventEnum
}

export type ModerationCreateOrganizationModeratorInput = {
defaultCtxAppIds?: InputMaybe<Array<Scalars['String']['input']>>
defaultCtxPostIds?: InputMaybe<Array<Scalars['String']['input']>>
defaultCtxSpaceIds?: InputMaybe<Array<Scalars['String']['input']>>
moderatorId: Scalars['String']['input']
organizationId: Scalars['String']['input']
role: ModeratorRole
}

export type ModerationOrganization = {
__typename?: 'ModerationOrganization'
ctxAppIds?: Maybe<Array<Scalars['String']['output']>>
Expand Down Expand Up @@ -314,6 +348,15 @@ export enum ModerationResourceType {
Post = 'POST',
}

export type ModerationUpdateOrganizationModeratorInput = {
defaultCtxAppIds?: InputMaybe<Array<Scalars['String']['input']>>
defaultCtxPostIds?: InputMaybe<Array<Scalars['String']['input']>>
defaultCtxSpaceIds?: InputMaybe<Array<Scalars['String']['input']>>
moderatorId: Scalars['String']['input']
organizationId: Scalars['String']['input']
role?: InputMaybe<ModeratorRole>
}

export type Moderator = {
__typename?: 'Moderator'
id: Scalars['String']['output']
Expand All @@ -324,9 +367,9 @@ export type Moderator = {

export enum ModeratorRole {
Admin = 'admin',
Editor = 'editor',
Moderator = 'moderator',
Owner = 'owner',
Reader = 'reader',
Spectator = 'spectator',
}

export type ModeratorSubscriptionPayload = {
Expand Down Expand Up @@ -354,6 +397,35 @@ export type ModeratorsWhereArgs = {
substrateAddress?: InputMaybe<Scalars['String']['input']>
}

export type Mutation = {
__typename?: 'Mutation'
moderationCreateOrganization: ModerationOrganization
moderationCreateOrganizationModerator?: Maybe<ModerationOrganizationModerator>
moderationInitModerator?: Maybe<Moderator>
moderationUpdateOrganization: ModerationOrganization
moderationUpdateOrganizationModerator?: Maybe<ModerationOrganizationModerator>
}

export type MutationModerationCreateOrganizationArgs = {
args: CreateOrganizationInput
}

export type MutationModerationCreateOrganizationModeratorArgs = {
args: ModerationCreateOrganizationModeratorInput
}

export type MutationModerationInitModeratorArgs = {
args: InitModeratorInputDto
}

export type MutationModerationUpdateOrganizationArgs = {
args: UpdateOrganizationInput
}

export type MutationModerationUpdateOrganizationModeratorArgs = {
args: ModerationUpdateOrganizationModeratorInput
}

export enum PinnedResourceType {
Post = 'Post',
Space = 'Space',
Expand Down Expand Up @@ -461,6 +533,9 @@ export type Query = {
moderationBlockedResourceIds: Array<Scalars['String']['output']>
moderationBlockedResourceIdsBatch: BlockedResourceIdsBatchResponse
moderationBlockedResourcesDetailed: Array<ModerationBlockedResource>
moderationModerator?: Maybe<Moderator>
moderationOrganization?: Maybe<ModerationOrganization>
moderationOrganizations?: Maybe<Array<ModerationOrganization>>
moderationReason: ModerationBlockReason
moderationReasonsAll: Array<ModerationBlockReason>
moderators?: Maybe<ModeratorsResponse>
Expand Down Expand Up @@ -511,6 +586,14 @@ export type QueryModerationBlockedResourcesDetailedArgs = {
spaceId?: InputMaybe<Scalars['String']['input']>
}

export type QueryModerationModeratorArgs = {
where: GetModeratorByInput
}

export type QueryModerationOrganizationArgs = {
where: GetOrganizationWhere
}

export type QueryModerationReasonArgs = {
id: Scalars['String']['input']
}
Expand Down Expand Up @@ -615,9 +698,19 @@ export type UnreadPostsCountResponse = {
unreadCount: Scalars['Int']['output']
}

export type UpdateOrganizationInput = {
ctxAppIds?: InputMaybe<Array<Scalars['String']['input']>>
ctxPostIds?: InputMaybe<Array<Scalars['String']['input']>>
ctxSpaceIds?: InputMaybe<Array<Scalars['String']['input']>>
description?: InputMaybe<Scalars['String']['input']>
id: Scalars['String']['input']
name?: InputMaybe<Scalars['String']['input']>
}

export type GetBlockedResourcesQueryVariables = Exact<{
spaceIds: Array<Scalars['String']['input']> | Scalars['String']['input']
postIds: Array<Scalars['String']['input']> | Scalars['String']['input']
appIds: Array<Scalars['String']['input']> | Scalars['String']['input']
}>

export type GetBlockedResourcesQuery = {
Expand All @@ -634,6 +727,11 @@ export type GetBlockedResourcesQuery = {
id: string
blockedResourceIds: Array<string>
}>
byCtxAppIds: Array<{
__typename?: 'BlockedResourceIdsBatchItem'
id: string
blockedResourceIds: Array<string>
}>
}
}

Expand Down Expand Up @@ -1098,10 +1196,15 @@ export const DatahubPostFragment = gql`
}
`
export const GetBlockedResources = gql`
query GetBlockedResources($spaceIds: [String!]!, $postIds: [String!]!) {
query GetBlockedResources(
$spaceIds: [String!]!
$postIds: [String!]!
$appIds: [String!]!
) {
moderationBlockedResourceIdsBatch(
ctxSpaceIds: $spaceIds
ctxPostIds: $postIds
ctxAppIds: $appIds
) {
byCtxSpaceIds {
id
Expand All @@ -1111,6 +1214,10 @@ export const GetBlockedResources = gql`
id
blockedResourceIds
}
byCtxAppIds {
id
blockedResourceIds
}
}
}
`
Expand Down
Loading

0 comments on commit 42d923b

Please sign in to comment.