1
0
mirror of https://github.com/spacebarchat/server.git synced 2024-11-06 19:02:33 +01:00

Partnet + Discover fix and join

This commit is contained in:
Featyre 2022-01-24 22:59:14 +08:00
parent dc3fb1f519
commit 858a885b0c
8 changed files with 105 additions and 9 deletions

View File

@ -17,13 +17,13 @@ router.get("/", route({}), async (req: Request, res: Response) => {
if (categories == undefined) { if (categories == undefined) {
guilds = showAllGuilds guilds = showAllGuilds
? await Guild.find({ take: Math.abs(Number(limit || configLimit)) }) ? await Guild.find({ take: Math.abs(Number(limit || configLimit)) })
: await Guild.find({ where: `"features" LIKE '%COMMUNITY%'`, take: Math.abs(Number(limit || configLimit)) }); : await Guild.find({ where: `"features" LIKE '%DISCOVERABLE%'`, take: Math.abs(Number(limit || configLimit)) });
total = guilds.length; total = guilds.length;
} else { } else {
guilds = showAllGuilds guilds = showAllGuilds
? await Guild.find({ where: `"primary_category_id" = ${categories}`, take: Math.abs(Number(limit || configLimit)) }) ? await Guild.find({ where: `"primary_category_id" = ${categories}`, take: Math.abs(Number(limit || configLimit)) })
: await Guild.find({ : await Guild.find({
where: `"primary_category_id" = ${categories} AND "features" LIKE '%COMMUNITY%'`, where: `"primary_category_id" = ${categories} AND "features" LIKE '%DISCOVERABLE%'`,
take: Math.abs(Number(limit || configLimit)) take: Math.abs(Number(limit || configLimit))
}); });
total = guilds.length; total = guilds.length;

View File

@ -9,8 +9,12 @@ router.get("/categories", route({}), (req: Request, res: Response) => {
const { locale, primary_only } = req.query; const { locale, primary_only } = req.query;
let categories;
let out; let out;
switch (locale) { switch (locale) {
case "en-US": case "en-US":
switch (primary_only) { switch (primary_only) {

View File

@ -13,7 +13,7 @@ router.get("/", route({}), async (req: Request, res: Response) => {
// const guilds = await Guild.find({ where: { features: "DISCOVERABLE" } }); //, take: Math.abs(Number(limit)) }); // const guilds = await Guild.find({ where: { features: "DISCOVERABLE" } }); //, take: Math.abs(Number(limit)) });
const guilds = showAllGuilds const guilds = showAllGuilds
? await Guild.find({ take: Math.abs(Number(limit || 24)) }) ? await Guild.find({ take: Math.abs(Number(limit || 24)) })
: await Guild.find({ where: `"features" LIKE '%COMMUNITY%'`, take: Math.abs(Number(limit || 24)) }); : await Guild.find({ where: `"features" LIKE '%DISCOVERABLE%'`, take: Math.abs(Number(limit || 24)) });
res.send({ recommended_guilds: guilds }); res.send({ recommended_guilds: guilds });
}); });

View File

@ -0,0 +1,39 @@
import { Guild, Config } from "@fosscord/util";
import { Router, Request, Response } from "express";
import { route } from "@fosscord/api";
const router = Router();
router.get("/", route({}), async (req: Request, res: Response) => {
const { guild_id } = req.params;
// TODO:
// Load from database
// Admin control, but for now it allows anyone to be discoverable
res.send({
guild_id: guild_id,
safe_environment: true,
healthy: true,
health_score_pending: false,
size: true,
nsfw_properties: {},
protected: true,
sufficient: true,
sufficient_without_grace_period: true,
valid_rules_channel: true,
retention_healthy: true,
engagement_healthy: true,
age: true,
minimum_age: 0,
health_score: {
avg_nonnew_participators: 0,
avg_nonnew_communicators: 0,
num_intentful_joiners: 0,
perc_ret_w1_intentful: 0
},
minimum_size: 0
});
});
export default router;

View File

@ -34,7 +34,7 @@ router.get("/", route({}), async (req: Request, res: Response) => {
// @ts-ignore // @ts-ignore
guild.joined_at = member?.joined_at; guild.joined_at = member?.joined_at;
return res.json(guild); return res.send(guild);
}); });
router.patch("/", route({ body: "GuildUpdateSchema", permission: "MANAGE_GUILD" }), async (req: Request, res: Response) => { router.patch("/", route({ body: "GuildUpdateSchema", permission: "MANAGE_GUILD" }), async (req: Request, res: Response) => {

View File

@ -1,5 +1,5 @@
import { Request, Response, Router } from "express"; import { Request, Response, Router } from "express";
import { Member, getPermission, Role, GuildMemberUpdateEvent, emitEvent } from "@fosscord/util"; import { Member, getPermission, Role, GuildMemberUpdateEvent, emitEvent, Sticker, Emoji, Guild } from "@fosscord/util";
import { HTTPError } from "lambert-server"; import { HTTPError } from "lambert-server";
import { route } from "@fosscord/api"; import { route } from "@fosscord/api";
@ -43,13 +43,26 @@ router.patch("/", route({ body: "MemberChangeSchema" }), async (req: Request, re
}); });
router.put("/", route({}), async (req: Request, res: Response) => { router.put("/", route({}), async (req: Request, res: Response) => {
// TODO: Lurker mode
let { guild_id, member_id } = req.params; let { guild_id, member_id } = req.params;
if (member_id === "@me") member_id = req.user_id; if (member_id === "@me") member_id = req.user_id;
throw new HTTPError("Maintenance: Currently you can't add a member", 403); var guild = await Guild.findOneOrFail({
// TODO: only for oauth2 applications where: { id: guild_id } });
var emoji = await Emoji.find({
where: { guild_id: guild_id } });
var roles = await Role.find({
where: { guild_id: guild_id } });
var stickers = await Sticker.find({
where: { guild_id: guild_id } });
res.send({...guild, emojis: emoji, roles: roles, stickers: stickers});
await Member.addToGuild(member_id, guild_id); await Member.addToGuild(member_id, guild_id);
res.sendStatus(204);
}); });
router.delete("/", route({ permission: "KICK_MEMBERS" }), async (req: Request, res: Response) => { router.delete("/", route({ permission: "KICK_MEMBERS" }), async (req: Request, res: Response) => {

View File

@ -0,0 +1,40 @@
import { Guild, Config } from "@fosscord/util";
import { Router, Request, Response } from "express";
import { route } from "@fosscord/api";
const router = Router();
router.get("/", route({}), async (req: Request, res: Response) => {
const { guild_id } = req.params;
// TODO:
// Load from database
// Admin control, but for now it allows anyone to be discoverable
res.send({
guild_id: guild_id,
safe_environment: true,
healthy: true,
health_score_pending: false,
size: true,
nsfw_properties: {},
protected: true,
sufficient: true,
sufficient_without_grace_period: true,
valid_rules_channel: true,
retention_healthy: true,
engagement_healthy: true,
age: true,
minimum_age: 0,
health_score: {
avg_nonnew_participators: 0,
avg_nonnew_communicators: 0,
num_intentful_joiners: 0,
perc_ret_w1_intentful: 0
},
minimum_size: 0
});
});
export default router;

View File

@ -73,7 +73,7 @@ const normalizeBody = (body: any = {}) => {
} else { } else {
for (const [key, value] of Object.entries(object)) { for (const [key, value] of Object.entries(object)) {
if (value == null) { if (value == null) {
if (key === "icon" || key === "avatar" || key === "banner" || key === "splash") continue; if (key === "icon" || key === "avatar" || key === "banner" || key === "splash" || key === "discovery_splash") continue;
delete object[key]; delete object[key];
} else if (typeof value === "object") { } else if (typeof value === "object") {
normalizeObject(value); normalizeObject(value);