diff --git a/apps/admin-x-activitypub/src/api/activitypub.ts b/apps/admin-x-activitypub/src/api/activitypub.ts index fa409b84d9..0a3ee99d42 100644 --- a/apps/admin-x-activitypub/src/api/activitypub.ts +++ b/apps/admin-x-activitypub/src/api/activitypub.ts @@ -219,6 +219,11 @@ export class ActivityPubAPI { await this.fetchJSON(url, 'POST'); } + async repost(id: string): Promise { + const url = new URL(`.ghost/activitypub/actions/repost/${encodeURIComponent(id)}`, this.apiUrl); + await this.fetchJSON(url, 'POST'); + } + get activitiesApiUrl() { return new URL(`.ghost/activitypub/activities/${this.handle}`, this.apiUrl); } diff --git a/apps/admin-x-activitypub/src/components/feed/FeedItemStats.tsx b/apps/admin-x-activitypub/src/components/feed/FeedItemStats.tsx index 00febecd81..c9282a8e5e 100644 --- a/apps/admin-x-activitypub/src/components/feed/FeedItemStats.tsx +++ b/apps/admin-x-activitypub/src/components/feed/FeedItemStats.tsx @@ -1,7 +1,7 @@ import React, {useState} from 'react'; import {Button} from '@tryghost/admin-x-design-system'; import {ObjectProperties} from '@tryghost/admin-x-framework/api/activitypub'; -import {useLikeMutationForUser, useUnlikeMutationForUser} from '../../hooks/useActivityPubQueries'; +import {useLikeMutationForUser, useRepostMutationForUser, useUnlikeMutationForUser} from '../../hooks/useActivityPubQueries'; interface FeedItemStatsProps { object: ObjectProperties; @@ -21,8 +21,10 @@ const FeedItemStats: React.FC = ({ onCommentClick }) => { const [isLiked, setIsLiked] = useState(object.liked); + const [isReposted, setIsReposted] = useState(object.reposted); const likeMutation = useLikeMutationForUser('index'); const unlikeMutation = useUnlikeMutationForUser('index'); + const repostMutation = useRepostMutationForUser('index'); const handleLikeClick = async (e: React.MouseEvent) => { e.stopPropagation(); @@ -68,6 +70,22 @@ const FeedItemStats: React.FC = ({ onCommentClick(); }} /> +