summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/federation
diff options
context:
space:
mode:
authorMarie <marie@kaifa.ch>2024-01-02 13:35:03 +0100
committerMarie <marie@kaifa.ch>2024-01-02 13:35:03 +0100
commita1a57889fc1e5094b2ff10989295a2d2eab544ff (patch)
tree1d459b286f052c98f5187054e7865a51f29cbc53 /packages/backend/src/server/api/endpoints/federation
parentupd: higher character limit for poll options (diff)
downloadsharkey-a1a57889fc1e5094b2ff10989295a2d2eab544ff.tar.gz
sharkey-a1a57889fc1e5094b2ff10989295a2d2eab544ff.tar.bz2
sharkey-a1a57889fc1e5094b2ff10989295a2d2eab544ff.zip
upd: add bubble to instance federation page as state
Closes #296
Diffstat (limited to 'packages/backend/src/server/api/endpoints/federation')
-rw-r--r--packages/backend/src/server/api/endpoints/federation/instances.ts18
1 files changed, 18 insertions, 0 deletions
diff --git a/packages/backend/src/server/api/endpoints/federation/instances.ts b/packages/backend/src/server/api/endpoints/federation/instances.ts
index 617ca65733..053da421d6 100644
--- a/packages/backend/src/server/api/endpoints/federation/instances.ts
+++ b/packages/backend/src/server/api/endpoints/federation/instances.ts
@@ -41,6 +41,7 @@ export const paramDef = {
subscribing: { type: 'boolean', nullable: true },
publishing: { type: 'boolean', nullable: true },
nsfw: { type: 'boolean', nullable: true },
+ bubble: { type: 'boolean', nullable: true },
limit: { type: 'integer', minimum: 1, maximum: 100, default: 30 },
offset: { type: 'integer', default: 0 },
sort: {
@@ -148,6 +149,23 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
}
+ if (typeof ps.bubble === 'boolean') {
+ const meta = await this.metaService.fetch(true);
+
+ if (ps.bubble) {
+ if (meta.bubbleInstances.length === 0) {
+ return [];
+ }
+ query.andWhere('instance.host IN (:...bubble)', {
+ silences: meta.bubbleInstances,
+ });
+ } else if (meta.bubbleInstances.length > 0) {
+ query.andWhere('instance.host NOT IN (:...bubble)', {
+ bubble: meta.bubbleInstances,
+ });
+ }
+ }
+
if (typeof ps.federating === 'boolean') {
if (ps.federating) {
query.andWhere('((instance.followingCount > 0) OR (instance.followersCount > 0))');