From 0b2448127327211c91678d1735c2f5b6bd2243f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicole=20Miko=C5=82ajczyk?= Date: Wed, 9 Apr 2025 14:32:23 +0200 Subject: [PATCH] pl-api: add more mitra features MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Nicole Mikołajczyk --- packages/pl-api/lib/client.ts | 22 ++++++++++++++++++++++ packages/pl-api/lib/features.ts | 12 ++++++++++++ 2 files changed, 34 insertions(+) diff --git a/packages/pl-api/lib/client.ts b/packages/pl-api/lib/client.ts index bf3570237..8156e947c 100644 --- a/packages/pl-api/lib/client.ts +++ b/packages/pl-api/lib/client.ts @@ -888,6 +888,17 @@ class PlApiClient { return v.parse(scrobbleSchema, response.json); }, + + /** + * Load latest activities from outbox + * + * Requires features{@link Features['loadActivities']} + */ + loadActivities: async (accountId: string) => { + const response = await this.request<{}>(`/api/v1/accounts/${accountId}/load_activities`); + + return response.json; + }, }; public readonly myAccount = { @@ -2471,6 +2482,17 @@ class PlApiClient { getStatusMentionedUsers: async (statusId: string, params?: GetStatusMentionedUsersParams) => this.#paginatedGet(`/api/v1/statuses/${statusId}/mentioned_by`, { params }, accountSchema), + + /** + * Load conversation from a remote server. + * + * Requires features{@link Features['loadConversation']}. + */ + loadConversation: async (statusId: string) => { + const response = await this.request <{}>(`/api/v1/statuses/${statusId}/load_conversation`, { method: 'POST' }); + + return response.json; + } }; public readonly media = { diff --git a/packages/pl-api/lib/features.ts b/packages/pl-api/lib/features.ts index 05bbc5788..f1a9a889c 100644 --- a/packages/pl-api/lib/features.ts +++ b/packages/pl-api/lib/features.ts @@ -945,6 +945,18 @@ const getFeatures = (instance: Instance) => { */ listsFavourites: instance.api_versions['favourite_list.fedibird.pl-api'] >= 1, + /** + * Can load latest activities from outbox. + * @see POST /api/v1/accounts/:id/load_activities + */ + loadActivities: v.software === MITRA && gte(v.version, '2.16.0'), + + /** + * Can load conversation from a remote server. + * @see POST /api/v1/statuses/:id/load_conversation + */ + loadConversation: v.software === MITRA && gte(v.version, '2.25.0'), + /** * Ability to post statuses that don't federate. * @see POST /api/v1/statuses