Commit graph

56 commits

Author SHA1 Message Date
a4d127796c Slon/Api/V1/Statuses: Properly increment reblogs_count locally
We create a clone of the object to apply the user's actions (pinned,
reblogged, etc.) and we were passing this clone to
@slon_api_(reblog|unreblog)_status(), instead of the actual object.
2025-03-22 18:35:51 -04:00
0d19f9fa33 Slon/Api/V1/Accounts: Handle badly-behaved JSON API clients
An array of String is still an array, even if it contains a single
element. I'm looking at you,
[Tuba](https://github.com/GeopJr/Tuba/blob/main/src/API/Relationship.vala#L48).

Ref: https://docs.joinmastodon.org/methods/accounts/#relationships

It shouldn't be our responsibility to handle this, but life isn't fair,
so we'll begrudgingly handle it anyway.
2025-03-21 16:34:55 -04:00
0d88ccf0c4 Slon/Api/V1/Statuses: Don't require authorization for 'context' endpoint 2025-03-21 09:18:51 -04:00
022fceb21b Slon/Api/V1/Notifications: Add initial support for Notifications 2025-03-20 09:54:24 -04:00
966be78422 Slon/Api/V1/Polls: Implement Polls
Fixes #8
2025-03-16 19:21:44 -04:00
35ff50746c Slon/Api/V1/Statuses: Implement Boosts
Fixes #4
2025-03-15 20:28:04 -04:00
400d9c9c01 Slon/Api/V1/Bookmarks: Implement Bookmarks
Fixes #10
2025-03-14 18:24:10 -04:00
5a9bf4f32b Slon/Api/V1/CustomEmojis: Implement Custom Emojis
Fixes #6
2025-03-13 15:50:48 -04:00
a4a959d875 Meta: Suppress compiler warnings 2025-03-12 20:49:05 -04:00
401035a0d1 Slon/Api/V1/Favourites: Implement Favourites
Fixes #7
2025-03-12 20:33:39 -04:00
475e648feb Slon/Api/V1/Announcements: Implement Announcements
Fixes #9
2025-03-12 16:19:00 -04:00
5010de73a0 Slon/Api/V1/Accounts: Fix nested for loops in @slon_api_v1_accounts_get 2025-03-10 09:12:05 -04:00
ba296cceb8 Slon/Api/V1/Accounts: Create relationship object in session's mem_task
This fixes a crash when the Mona iOS client makes a GET request to the
/api/v1/accounts/relationships endpoint.
2025-03-10 08:21:40 -04:00
d5a09373e4 Everywhere: Update JSON API 2025-03-09 19:39:44 -04:00
74455c59ab Slon/Modules/Db: Add @slon_db_save_status_to_disk() to save an individual account's statuses 2025-03-06 15:03:05 -05:00
aded79c192 Slon/Modules/Db: Save/load accounts to/from individual JSON files 2025-03-06 10:54:25 -05:00
64f31de070 Everywhere: Use slon_mem_task for memory allocation 2025-03-06 09:54:26 -05:00
5333b64917 Everywhere: Store statuses by account id, generate timelines as array of object:account_id,status_id 2025-03-05 13:43:35 -05:00
33a92718c7 Slon/Api/V1/Accounts: Handle array of ids for /api/v1/accounts/relationships 2025-03-05 13:04:22 -05:00
62b6d75851 Slon/Modules/Api: Use @slon_api_find_status_by_id 2025-03-05 08:09:17 -05:00
b8fba64ab0 Slon/Api/V1/Accounts: Allow updating avatar/header images via PATCH /api/v1/accounts/update_credentials 2025-03-04 20:46:43 -05:00
3100707e78 Slon/Api/V2/Media: Remove unnecessary no_warn 2025-03-04 20:14:26 -05:00
a7649a00c8 Everywhere: Use Catbox API asynchronously
Fixes #2
2025-03-04 13:26:35 -05:00
04dce33aca Slon/Modules/Api: Move Catbox API routines here 2025-03-03 21:12:33 -05:00
5258ab19a8 Slon/Api/V1/Statuses: Allow retrieval of individual status from public timeline 2025-03-02 18:07:09 -05:00
715d119882 Slon/Api/V1/Statuses: Implement Context descendants
Fixes #1
2025-03-02 17:34:59 -05:00
27fa0f8aad Slon/Api/V2/Media: Add support for Catbox API 2025-03-02 15:08:39 -05:00
6f11f7830d Slon/Api/V1/Statuses: Handle 'sensitive' parameter if POSTed as string rather than boolean 2025-03-01 21:27:09 -05:00
b104551bbd Slon/Api/{V1,V2}/Media: Implement PUT /api/v1/media, POST /api/v2/media 2025-03-01 19:46:13 -05:00
95aecb9fb1 Slon/Api/V1/Markers: Implement /api/v1/markers 2025-02-28 18:39:20 -05:00
e223273300 Slon/Api/V1/Statuses: Refactor /api/v1/statues/:id/context 2025-02-28 18:35:23 -05:00
1ecc5f4995 Slon/Api/V1/Statuses: Don't clobber status with each lookup 2025-02-28 16:21:21 -05:00
88f4c39968 Api/V1/Statuses: Include parameter in @slon_api_v1_statuses_query 2025-02-28 12:35:38 -05:00
afee70ad38 Slon/Api/V1/Statuses: Implement GET /api/v1/statues/:id/context 2025-02-28 12:22:32 -05:00
90e553abc3 Slon/Api/V1/Statuses: Implement GET /api/v1/statuses/:id 2025-02-28 11:26:33 -05:00
19893a775d Slon/Api/V1/Accounts: Deduplicate relationship object creation into @slon_accounts_default_relationship_object 2025-02-23 06:13:19 -05:00
8838d0446d Everywhere: Deduplicate local account creation for remote actors in @slon_accounts_create_local_for_remote_actor 2025-02-22 21:43:19 -05:00
6c87604d56 Everywhere: Deduplicate status queries into @slon_api_v1_statuses_query 2025-02-22 20:58:56 -05:00
045893b6c6 Everywhere: Be more granular with @db_save_* calls 2025-02-22 20:38:35 -05:00
a9f5a1de0c Slon/Modules/ActivityPub: Deduplicate signed requests into @slon_activitypub_signed_request 2025-02-22 19:25:23 -05:00
d6c1b8dbfd Slon/Api/V1/Timelines: Implement public timeline 2025-02-21 18:38:11 -05:00
66074a5472 Everywhere: Use session->path() 2025-02-21 18:10:25 -05:00
ff5a07dc04 Everywhere: Make session->content_type() callable 2025-02-21 18:03:12 -05:00
545d408512 Everywhere: Make session->path(), session->path_count() callable 2025-02-21 16:51:22 -05:00
69a4d6916f Slon/Api/V1/Accounts,Timelines: Sort statuses by most recent first 2025-02-20 14:28:39 -05:00
c6f74cfa84 Everywhere: Make session->send() callable 2025-02-20 08:24:04 -05:00
71c8db66f1 Everywhere: Make session->header() callable 2025-02-19 21:53:31 -05:00
6813c13ab3 Everywhere: Make session->status() callable 2025-02-19 21:07:09 -05:00
cf5b8fe46a Slon/Api/V1/Statuses: Don't set internal deleted flag on status object being sent via ActivityPub 2025-02-17 18:50:04 -05:00
16d65c88ee Slon/Api/V1/Accounts: Implement Follow 2025-02-17 17:39:49 -05:00