@@ -4,8 +4,10 @@ import Layout from '@src/components/layout';
4
4
import React , { useState } from 'react' ;
5
5
import { Account } from '@src/api/activitypub' ;
6
6
import { Button , H2 , LucideIcon , NoValueLabel , NoValueLabelIcon , Skeleton , Tabs , TabsContent , TabsList , TabsTrigger } from '@tryghost/shade' ;
7
+ import { handleProfileClick } from '@src/utils/handle-profile-click' ;
7
8
import { toast } from 'sonner' ;
8
9
import { useBlockDomainMutationForUser , useBlockMutationForUser , useBlockedAccountsForUser , useBlockedDomainsForUser , useUnblockDomainMutationForUser , useUnblockMutationForUser } from '@hooks/use-activity-pub-queries' ;
10
+ import { useNavigate } from '@tryghost/admin-x-framework' ;
9
11
10
12
const Moderation : React . FC = ( ) => {
11
13
const { data : blockedAccountsData , isLoading : blockedAccountsLoading } = useBlockedAccountsForUser ( 'index' ) ;
@@ -27,6 +29,7 @@ const Moderation: React.FC = () => {
27
29
const [ unblockedDomainIds , setUnblockedDomainIds ] = useState < Set < string > > ( new Set ( ) ) ;
28
30
29
31
const [ hoveredItemId , setHoveredItemId ] = useState < string | null > ( null ) ;
32
+ const navigate = useNavigate ( ) ;
30
33
31
34
const handleUnblock = ( account : Account ) => {
32
35
setUnblockedAccountIds ( ( prev ) => {
@@ -98,16 +101,20 @@ const Moderation: React.FC = () => {
98
101
</ NoValueLabel >
99
102
) : (
100
103
blockedAccounts . map ( ( account , index ) => (
101
- < ActivityItem key = { account . apId ? account . apId : `loading-${ index } ` } >
102
- < APAvatar author = {
103
- {
104
- icon : {
105
- url : account . avatarUrl
106
- } ,
107
- name : account . name ,
108
- handle : account . handle
109
- }
110
- } />
104
+ < ActivityItem
105
+ key = { account . apId ? account . apId : `loading-${ index } ` }
106
+ onClick = { ! blockedAccountsLoading ? ( ) => handleProfileClick ( account . handle , navigate ) : undefined }
107
+ >
108
+ < APAvatar
109
+ author = {
110
+ {
111
+ icon : {
112
+ url : account . avatarUrl
113
+ } ,
114
+ name : account . name ,
115
+ handle : account . handle
116
+ }
117
+ } />
111
118
< div className = 'flex min-w-0 flex-col' >
112
119
< span className = 'block truncate font-semibold text-black dark:text-white' > { ! blockedAccountsLoading ? account . name : < Skeleton className = 'w-24' /> } </ span >
113
120
< span className = 'block truncate text-sm text-gray-600' > { ! blockedAccountsLoading ? account . handle : < Skeleton className = 'w-40' /> } </ span >
@@ -117,7 +124,10 @@ const Moderation: React.FC = () => {
117
124
< Button
118
125
className = 'ml-auto min-w-[90px] text-red hover:!bg-red/5 hover:text-red-400'
119
126
variant = 'outline'
120
- onClick = { ( ) => handleBlock ( account ) }
127
+ onClick = { ( e ) => {
128
+ e . stopPropagation ( ) ;
129
+ handleBlock ( account ) ;
130
+ } }
121
131
>
122
132
Block
123
133
</ Button >
@@ -126,7 +136,10 @@ const Moderation: React.FC = () => {
126
136
< Button
127
137
className = 'ml-auto min-w-[90px]'
128
138
variant = 'destructive'
129
- onClick = { ( ) => handleUnblock ( account ) }
139
+ onClick = { ( e ) => {
140
+ e . stopPropagation ( ) ;
141
+ handleUnblock ( account ) ;
142
+ } }
130
143
onMouseEnter = { ( ) => setHoveredItemId ( account . apId ) }
131
144
onMouseLeave = { ( ) => setHoveredItemId ( null ) }
132
145
>
0 commit comments