summary refs log tree commit diff
path: root/src/api
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-02-03 23:29:41 +0100
committerRory& <root@rory.gay>2026-02-03 23:30:08 +0100
commitd3d87079845a5c4e879a58bc329f8798e016e294 (patch)
tree247a2035287540435056debf0471afca665b88d8 /src/api
parentEnv var to disable db migrations, nix: drop pre-start service (diff)
downloadserver-ts-d3d87079845a5c4e879a58bc329f8798e016e294.tar.xz
Guild discovery: option to hide already joined guilds
Diffstat (limited to 'src/api')
-rw-r--r--src/api/routes/discoverable-guilds.ts14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/api/routes/discoverable-guilds.ts b/src/api/routes/discoverable-guilds.ts

index dcecec38..8f059f57 100644 --- a/src/api/routes/discoverable-guilds.ts +++ b/src/api/routes/discoverable-guilds.ts
@@ -16,11 +16,11 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import { Config, Guild } from "@spacebar/util"; +import { Config, Guild, Member } from "@spacebar/util"; import { route } from "@spacebar/api"; import { Request, Response, Router } from "express"; -import { Like } from "typeorm"; +import { In, Like, Not } from "typeorm"; const router = Router({ mergeParams: true }); @@ -37,6 +37,13 @@ router.get( const { offset, limit, categories } = req.query; const showAllGuilds = Config.get().guild.discovery.showAllGuilds; const configLimit = Config.get().guild.discovery.limit; + const hideJoinedGuilds = Config.get().guild.discovery.hideJoinedGuilds; + const hiddenGuildIds = hideJoinedGuilds + ? await Member.find({ + where: { id: req.user_id }, + select: { guild_id: true }, + }).then((members) => members.map((member) => member.guild_id)) + : []; let guilds; if (categories == undefined) { guilds = showAllGuilds @@ -50,13 +57,14 @@ router.get( } else { guilds = showAllGuilds ? await Guild.find({ - where: { primary_category_id: categories.toString() }, + where: { primary_category_id: categories.toString(), id: Not(In(hiddenGuildIds)) }, take: Math.abs(Number(limit || configLimit)), }) : await Guild.find({ where: { primary_category_id: categories.toString(), features: Like("%DISCOVERABLE%"), + id: Not(In(hiddenGuildIds)), }, take: Math.abs(Number(limit || configLimit)), });