Commit graph

386 commits

Author SHA1 Message Date
Laura Hausmann
e772f45a35
[backend/masto-client] Increase advertised reaction limit to 100 2025-03-20 22:41:28 +01:00
Laura Hausmann
eb65294219
[bakend/akko-api] Don't send note/notification entity pleroma extensions unless isPleroma is enabled for the auth token 2025-03-18 09:25:37 +01:00
Laura Hausmann
94c07d3d06
[backend/masto-client] Add endpoints for filing reports (ISH-749) 2025-03-15 02:44:43 +01:00
Laura Hausmann
ffcc8d0582
[backend/akko-client] Set status visibility to local when client is marked as isPleroma and note is local only (ISH-658) 2025-03-15 02:13:07 +01:00
Laura Hausmann
caa5263af6
[backend/akko-client] Add LocalOnly to PleromaStatusExtensions (ISH-658) 2025-03-15 02:06:47 +01:00
Laura Hausmann
4b5a9386c7
[backend/masto-client] Add /api/v1/preferences endpoint (ISH-746) 2025-03-07 21:56:35 +01:00
Kopper
5d27233d08
[backend/masto-client] Expose AccountEntity.last_status_at
For performance reasons (it's set on the same query as the one that
increments the user notes counter) this does not take renotes into
account
2025-03-07 21:22:48 +01:00
pancakes
e73c719416
[backend/masto-client] Fix InstanceInfoV2 streaming URL 2025-02-22 23:44:44 +01:00
Laura Hausmann
df3e56f422
[backend/core] Prevent creation of pure renote replies 2025-02-19 16:37:11 +01:00
Laura Hausmann
88dee6b410
[backend/api] Replace IEntity with IIdentifiable, move EntityWrapper<T> to shared project 2025-02-18 21:47:33 +01:00
Laura Hausmann
b9724e29fb
[backend/masto-client] Fix concurrent DbContext use in UserRenderer 2025-02-06 14:37:45 +01:00
pancakes
82a2331ae0
[backend/masto-client] Add avatar_description and header_description to AccountEntity 2025-02-06 13:09:49 +01:00
Kopper
7595f257f8 [backend/masto-client] Use List<> instead of HashSet<> for batch endpoints
CustomCollectionModelBinder's `as IList` cast does not work for HashSet,
breaking the code around trailing []s in query arguments.

The values are still being treated as a set in the query so adding the
same value multiple times shouldn't do anything except hit the max limit
quicker.

The intention was to aid clients which may not be doing their own
deduplication but I haven't really observed that behavior in the wild
and I doubt it's anything too much to expect from clients.

That said, testing on mastodon.social shows Mastodon itself may be doing
deduplication here before checking the limit, though I'm not entirely sure
if this will ever be noticed in the wild.
2025-02-04 10:19:24 +03:00
pancakes
464008b2e1
[backend/masto-client] Add rules endpoint and include rules in InstanceV1 and Instance2 2025-01-30 11:09:26 +01:00
Laura Hausmann
013ed7380f
[backend/masto-client] Don't require authentication for /accounts/{id}/statuses (ISH-688) 2025-01-21 21:31:38 +01:00
Laura Hausmann
f32cd81ada
[backend/masto-client] Reformat AccountController 2025-01-21 21:30:59 +01:00
Kopper
02d4b35ab1
[backend/masto-client] Limit batch endpoints 2025-01-20 18:21:21 +01:00
Kopper
7e3320e3b1
[backend/masto-client] Populate Status.tags 2025-01-20 18:21:20 +01:00
Kopper
ad00ddd14e
[backend/masto-client] Implement /api/v1/statuses (View multiple statuses) 2025-01-20 18:21:20 +01:00
Kopper
f6957ba4de
[backend/masto-client] Implement /api/v1/accounts (Get multiple accounts) 2025-01-20 18:21:20 +01:00
Laura Hausmann
113bd98b0e
[backend/drive] Proxy remote media by default 2025-01-09 12:36:34 +01:00
Laura Hausmann
76a3f94fe8
[backend/masto-client] Fix missing replyInaccessible marker 2025-01-07 08:29:15 +01:00
Laura Hausmann
9de6d15a0c
[backend/masto-client] Move replyInaccessible marker into CW field for notes with CW 2025-01-07 08:14:33 +01:00
Laura Hausmann
b70de11da8
[backend/masto-client] Deduplicate filter matches by filter id 2025-01-01 02:12:01 +01:00
Laura Hausmann
9865f3dde7
[backend/core] Replace MFM line endings during user/note ingestion
This saves significant amounts of time & memory during parsing.
2024-12-15 00:11:31 +01:00
Kopper
149fae3363
[backend] address review 2024-12-13 22:19:31 +01:00
Kopper
1e1364e2bb
[backend/masto-client] Add feature flag for inline media 2024-12-13 22:19:31 +01:00
Kopper
89060599eb
[backend] Implement inline media
Inline media can be created by:

1. Attach media to note as usual
2. Copy media URL (public one, for remote instances)
3. Use the new $[media url ] MFM extension to place it wherever you
   wish. (The trailing space is necessary as the parser currently
   treats the closing ] as a part of the URL)

The Iceshrimp frontend may make this easier later on (by having a
"copy inline MFM" button on attachments, maybe?)

Federates as <img>, <video>, <audio>, or <a download> HTML tags
depending on the media type for interoperability. (<a download> is
not handled for incoming media yet).

The media will also be present in the attachments field, both as a
fallback for instance software that do not support inline media,
but also for MFM federation to discover which media it is allowed to
embed (and metadata like alt text and sensitive-ness). This is not
required for remote instances sending inline media, as it will be
extracted out from the HTML.

The Iceshrimp frontend does not render inline media yet. That is
blocked on #67.
2024-12-13 22:19:30 +01:00
Laura Hausmann
f013520b84
[backend] Remove unused import 2024-12-12 00:41:24 +01:00
Laura Hausmann
7dc3143089
[backend/masto-client] Return attachment metadata when available (ISH-657) 2024-12-12 00:34:34 +01:00
Laura Hausmann
55943bacc6
[backend/streaming] Echo back specified WebSocket protocol for mastodon streaming connections when set (ISH-635) 2024-12-06 18:55:37 +01:00
Laura Hausmann
00e157cc7e
[parsing] Switch to MfmSharp 2024-12-06 18:14:00 +01:00
Laura Hausmann
c0e8a6d680
[backend/streaming] Fix streaming updates not containing html markup if supported 2024-11-20 02:36:32 +01:00
Laura Hausmann
862d477dec
[backend/masto-client] Remove confusing status context logic
This does technically match Mastodon's behavior, but it doesn't match the behavior of iceshrimp-js, or the Iceshrimp.NET web API. It's also very confusing.
2024-11-20 01:56:41 +01:00
Laura Hausmann
51e4846635
[backend/core] Revert Task.ContinueWithResult naming 2024-11-20 01:14:50 +01:00
Laura Hausmann
24b412bd75
[sln] Reformat code 2024-11-20 00:48:29 +01:00
Laura Hausmann
7dec2514da
[sln] Apply code style 2024-11-20 00:48:29 +01:00
Laura Hausmann
4356a47b9d
[backend/asp] Make services runtime-discoverable 2024-11-18 19:02:44 +01:00
Laura Hausmann
3b8a4b89a9
[backend/openapi] Replace ConsumesHybrid condition with FromHybrid 2024-11-18 19:02:43 +01:00
Kopper
40b35a7bd2 [backend/akko-client] Handle "local" visibility (ISH-559) 2024-11-06 13:06:18 +03:00
pancakes
43307d655f
[backend] Don't include UserProfile 2024-11-03 12:41:43 +10:00
pancakes
e10fafa805
[backend/masto-client] Add accounts/{id}/remove_from_followers 2024-11-03 12:19:33 +10:00
Laura Hausmann
f2853d2d40
[backend] Fix typo 2024-11-02 22:56:52 +01:00
Laura Hausmann
e391aebce5
[backend] Consistently enforce https URIs 2024-10-29 18:43:58 +01:00
Laura Hausmann
dc7e45c7cb
[backend/masto-client] Fix StatusController quote lookup precedence 2024-10-29 16:14:54 +01:00
Laura Hausmann
7aec669d73
[backend] Code cleanup 2024-10-25 06:49:28 +02:00
5a63787c39 [backend] refactor mastoapi bitecontroller routes 2024-10-25 01:44:54 +02:00
0a8b7dbf7a [backend] add mastoapi routes for biting notes and biting back users, add alternate route for biting users, and fix biting through mastoapi 2024-10-25 01:44:54 +02:00
kopper
27ac36d747
[backend] Add config option to sign reply backfills with requesting user
Signed-off-by: Laura Hausmann <laura@hausmann.dev>
2024-10-24 21:18:58 +02:00
kopper
7173373330
[backend/federation] Improved reply backfill
Instead of backfilling every note we come across that has a reply
collection, only schedule a backfill job if someone wants to see the
replies (on GET MastoAPI /context, or Iceshrimp API /descendants)

Reply backfilling is also done on a ThreadIdOrId basis as opposed to the
previous way of backfilling individual notes. This allows us finer
grained control over the recursion and frees up the job queue, alongside
allowing for easier implementation of context collection backfill in the
future (by mapping each context collection to a thread)

---

Currently, note threads are implicit based on the "threadId" column of a
note, which can be null (where it's the same as the note's "id")

This commit turns note threads into an actual entity, and as a part of
that, makes "threadId" non-nullable (by specifically setting it to "id"
for those cases)

This is done to attach extra metadata to the entire thread, currently
just the time of when it was last backfilled, but more may be added in
the future (the context collection associated with this thread, for example)

---

The data format for backfill jobs have backwards-incompatibly changed
since the introduction of the feature. We can drop all old jobs without
causing too much trouble as they will be re-scheduled on demand

---

Signed-off-by: Laura Hausmann <laura@hausmann.dev>
2024-10-24 21:18:57 +02:00