summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/federation/instances.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/src/server/api/endpoints/federation/instances.ts')
-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 be73e5dbb8..c8beefa9c7 100644
--- a/packages/backend/src/server/api/endpoints/federation/instances.ts
+++ b/packages/backend/src/server/api/endpoints/federation/instances.ts
@@ -36,6 +36,7 @@ export const paramDef = {
blocked: { type: 'boolean', nullable: true },
notResponding: { type: 'boolean', nullable: true },
suspended: { type: 'boolean', nullable: true },
+ silenced: { type: "boolean", nullable: true },
federating: { type: 'boolean', nullable: true },
subscribing: { type: 'boolean', nullable: true },
publishing: { type: 'boolean', nullable: true },
@@ -102,6 +103,23 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
}
+ if (typeof ps.silenced === "boolean") {
+ const meta = await this.metaService.fetch(true);
+
+ if (ps.silenced) {
+ if (meta.silencedHosts.length === 0) {
+ return [];
+ }
+ query.andWhere("instance.host IN (:...silences)", {
+ silences: meta.silencedHosts,
+ });
+ } else if (meta.silencedHosts.length > 0) {
+ query.andWhere("instance.host NOT IN (:...silences)", {
+ silences: meta.silencedHosts,
+ });
+ }
+ }
+
if (typeof ps.federating === 'boolean') {
if (ps.federating) {
query.andWhere('((instance.followingCount > 0) OR (instance.followersCount > 0))');