Skip to content

Commit a7e9a69

Browse files
authored
feat: support quotes of status API endpoint (#1380)
ref. statuses API methods - Mastodon documentation - https://docs.joinmastodon.org/methods/statuses/#quotes
1 parent f89b12b commit a7e9a69

2 files changed

Lines changed: 35 additions & 0 deletions

File tree

src/mastodon/rest/v1/statuses.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,15 @@ export interface Statuses$SelectFavouritedByResource {
151151
list: Method<Paginator<Account[]>>;
152152
}
153153

154+
export interface Statuses$SelectQuotesResource {
155+
/**
156+
* View quotes of a status.
157+
* @return Array of Status
158+
* @see https://docs.joinmastodon.org/methods/statuses/#quotes
159+
*/
160+
list: Method<Paginator<Status[]>>;
161+
}
162+
154163
export interface Statuses$SelectHistoryResource {
155164
/**
156165
* Get all known versions of a status, including the initial and current states.
@@ -174,6 +183,7 @@ export interface Statuses$SelectResource {
174183
card: Statuses$SelectCardResource;
175184
rebloggedBy: Statuses$SelectRebloggedByResource;
176185
favouritedBy: Statuses$SelectFavouritedByResource;
186+
quotes: Statuses$SelectQuotesResource;
177187
history: Statuses$SelectHistoryResource;
178188
source: Statuses$SelectSourceResource;
179189

tests/rest/v1/statuses.spec.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,31 @@ describe("status", () => {
174174
}
175175
});
176176

177+
it("quotes and undo a status", async () => {
178+
await using alice = await sessions.acquire();
179+
await using bob = await sessions.acquire();
180+
181+
const { id: aliceStatusId } = await alice.rest.v1.statuses.create({
182+
status: "status",
183+
});
184+
185+
const bobStatus = await bob.rest.v1.statuses.create({
186+
status: "quote",
187+
quotedStatusId: aliceStatusId,
188+
});
189+
let aliceStatus = await bob.rest.v1.statuses.$select(aliceStatusId).fetch();
190+
expect(aliceStatus.quotesCount).toBe(1);
191+
192+
const quotes = await bob.rest.v1.statuses
193+
.$select(aliceStatusId)
194+
.quotes.list();
195+
expect(quotes.map((quote) => quote.account)).toContainEqual(bob.account);
196+
197+
await bob.rest.v1.statuses.$select(bobStatus.id).remove();
198+
aliceStatus = await bob.rest.v1.statuses.$select(aliceStatusId).fetch();
199+
expect(aliceStatus.quotesCount).toBe(0);
200+
});
201+
177202
it("pins and unpin a status", async () => {
178203
await using client = await sessions.acquire();
179204
let status = await client.rest.v1.statuses.create({

0 commit comments

Comments
 (0)