From 64f0b1f1a16c89c7f47facf2d0a73400e377cbe2 Mon Sep 17 00:00:00 2001 From: Nobody Date: Wed, 9 Mar 2022 06:04:50 -0300 Subject: fix(api): working replies in dm channels --- api/src/util/handlers/Message.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'api') diff --git a/api/src/util/handlers/Message.ts b/api/src/util/handlers/Message.ts index 21664368..2d9f7032 100644 --- a/api/src/util/handlers/Message.ts +++ b/api/src/util/handlers/Message.ts @@ -82,10 +82,12 @@ export async function handleMessage(opts: MessageOptions): Promise { if (opts.message_reference) { permission.hasThrow("READ_MESSAGE_HISTORY"); // code below has to be redone when we add custom message routing and cross-channel replies - const guild = await Guild.findOneOrFail({ id: channel.guild_id }); - if (!guild.features.includes("CROSS_CHANNEL_REPLIES")) { - if (opts.message_reference.guild_id !== channel.guild_id) throw new HTTPError("You can only reference messages from this guild"); - if (opts.message_reference.channel_id !== opts.channel_id) throw new HTTPError("You can only reference messages from this channel"); + if (message.guild_id !== null) { + const guild = await Guild.findOneOrFail({ id: channel.guild_id }); + if (!guild.features.includes("CROSS_CHANNEL_REPLIES")) { + if (opts.message_reference.guild_id !== channel.guild_id) throw new HTTPError("You can only reference messages from this guild"); + if (opts.message_reference.channel_id !== opts.channel_id) throw new HTTPError("You can only reference messages from this channel"); + } } // TODO: should be checked if the referenced message exists? // @ts-ignore -- cgit 1.5.1 From 134d746ebf41fe0682d8525b20c10bf8bcde25f8 Mon Sep 17 00:00:00 2001 From: Nobody <17956512+n0bodysec@users.noreply.github.com> Date: Wed, 9 Mar 2022 11:35:19 -0300 Subject: fix(api): add vanity urls creation/update (#665) * fix(api): add vanity urls creation/update * refactor(api): multiple vanity urls Old vanty urls will not be updated, instead a new one will be created. * feat(api): add ALIASABLE_NAMES feature Reference: https://github.com/fosscord/fosscord-server/issues/407 --- api/src/routes/guilds/#guild_id/vanity-url.ts | 33 +++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 5 deletions(-) (limited to 'api') diff --git a/api/src/routes/guilds/#guild_id/vanity-url.ts b/api/src/routes/guilds/#guild_id/vanity-url.ts index 63173345..29cd25e2 100644 --- a/api/src/routes/guilds/#guild_id/vanity-url.ts +++ b/api/src/routes/guilds/#guild_id/vanity-url.ts @@ -9,11 +9,19 @@ const InviteRegex = /\W/g; router.get("/", route({ permission: "MANAGE_GUILD" }), async (req: Request, res: Response) => { const { guild_id } = req.params; + const guild = await Guild.findOneOrFail({ id: guild_id }); - const invite = await Invite.findOne({ where: { guild_id: guild_id, vanity_url: true } }); - if (!invite) return res.json({ code: null }); + if (!guild.features.includes("ALIASABLE_NAMES")) { + const invite = await Invite.findOne({ where: { guild_id: guild_id, vanity_url: true } }); + if (!invite) return res.json({ code: null }); - return res.json({ code: invite.code, uses: invite.uses }); + return res.json({ code: invite.code, uses: invite.uses }); + } else { + const invite = await Invite.find({ where: { guild_id: guild_id, vanity_url: true } }); + if (!invite || invite.length == 0) return res.json({ code: null }); + + return res.json(invite.map((x) => ({ code: x.code, uses: x.uses }))); + } }); export interface VanityUrlSchema { @@ -24,18 +32,33 @@ export interface VanityUrlSchema { code?: string; } -// TODO: check if guild is elgible for vanity url router.patch("/", route({ body: "VanityUrlSchema", permission: "MANAGE_GUILD" }), async (req: Request, res: Response) => { const { guild_id } = req.params; const body = req.body as VanityUrlSchema; const code = body.code?.replace(InviteRegex, ""); + const guild = await Guild.findOneOrFail({ id: guild_id }); + if (!guild.features.includes("VANITY_URL")) throw new HTTPError("Your guild doesn't support vanity urls"); + + if (!code || code.length === 0) throw new HTTPError("Code cannot be null or empty"); + const invite = await Invite.findOne({ code }); if (invite) throw new HTTPError("Invite already exists"); const { id } = await Channel.findOneOrFail({ guild_id, type: ChannelType.GUILD_TEXT }); - await Invite.update({ vanity_url: true, guild_id }, { code: code, channel_id: id }); + await new Invite({ + vanity_url: true, + code: code, + temporary: false, + uses: 0, + max_uses: 0, + max_age: 0, + created_at: new Date(), + expires_at: new Date(), + guild_id: guild_id, + channel_id: id + }).save(); return res.json({ code: code }); }); -- cgit 1.5.1 From aa7a5b126be9e23a230d3ec8315ff5fb663df4de Mon Sep 17 00:00:00 2001 From: Erkin Alp Güney Date: Mon, 14 Mar 2022 19:45:25 +0300 Subject: close issue #684 --- api/assets/openapi.json | 4 ++-- api/assets/schemas.json | 4 ++-- util/src/entities/ConnectedAccount.ts | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'api') diff --git a/api/assets/openapi.json b/api/assets/openapi.json index 03550323..8e2a54cf 100644 --- a/api/assets/openapi.json +++ b/api/assets/openapi.json @@ -2960,7 +2960,7 @@ "type": { "type": "string" }, - "verifie": { + "verified": { "type": "boolean" }, "visibility": { @@ -2980,7 +2980,7 @@ "type", "user", "user_id", - "verifie", + "verified", "visibility" ] }, diff --git a/api/assets/schemas.json b/api/assets/schemas.json index d531df21..441752ad 100644 --- a/api/assets/schemas.json +++ b/api/assets/schemas.json @@ -355,11 +355,11 @@ "type": { "type": "string" }, - "verifie": { + "verified": { "type": "boolean" } }, - "required": ["name", "type", "verifie"] + "required": ["name", "type", "verified"] } }, "$schema": "http://json-schema.org/draft-07/schema#" diff --git a/util/src/entities/ConnectedAccount.ts b/util/src/entities/ConnectedAccount.ts index b8aa2889..09ae30ab 100644 --- a/util/src/entities/ConnectedAccount.ts +++ b/util/src/entities/ConnectedAccount.ts @@ -2,7 +2,7 @@ import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm"; import { BaseClass } from "./BaseClass"; import { User } from "./User"; -export interface PublicConnectedAccount extends Pick {} +export interface PublicConnectedAccount extends Pick {} @Entity("connected_accounts") export class ConnectedAccount extends BaseClass { @@ -35,7 +35,7 @@ export class ConnectedAccount extends BaseClass { type: string; @Column() - verifie: boolean; + verified: boolean; @Column({ select: false }) visibility: number; -- cgit 1.5.1 From e20fd0454725d57d3fb1e7d7faca381991a7a6a0 Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Tue, 1 Mar 2022 23:33:19 +0100 Subject: Fix `servers[0].url` in `openapi.json`. A tiny fix within `openapi.json`, that changes the URL in servers property to the correct ones. --- api/assets/openapi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'api') diff --git a/api/assets/openapi.json b/api/assets/openapi.json index 8e2a54cf..a8a657b2 100644 --- a/api/assets/openapi.json +++ b/api/assets/openapi.json @@ -2,7 +2,7 @@ "openapi": "3.0.0", "servers": [ { - "url": "https://api.fosscord.com/v{version}", + "url": "https://api.fosscord.com/api/v{version}", "description": "Official fosscord instance", "variables": { "version": { -- cgit 1.5.1 From 850ddcf3940a9d41ec5851b01f2899c82f0f6644 Mon Sep 17 00:00:00 2001 From: Luna Alfien Date: Sun, 16 Jan 2022 22:20:33 -0800 Subject: Create fosscord-login.js --- api/assets/preload-plugins/fosscord-login.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 api/assets/preload-plugins/fosscord-login.js (limited to 'api') diff --git a/api/assets/preload-plugins/fosscord-login.js b/api/assets/preload-plugins/fosscord-login.js new file mode 100644 index 00000000..1a36f0bd --- /dev/null +++ b/api/assets/preload-plugins/fosscord-login.js @@ -0,0 +1,8 @@ +// Remove `` from header when we're not accessing `/login` or `/register` +// fosscord-login.css replaces discord's TOS tooltip with something more fitting for fosscord, which when included in the main app, causes other tooltips +// to be affected, which is potentially unwanted. + +var token = JSON.parse(localStorage.getItem("token")); +if (!token && location.pathname !== "/login" && location.pathname !== "/register") { + document.getElementById("logincss").remove(); +} -- cgit 1.5.1 From e8355db1f46b617e892a51cde1cb61892145ec4c Mon Sep 17 00:00:00 2001 From: Luna Alfien Date: Sun, 23 Jan 2022 21:54:40 -0800 Subject: Make comments more accurate to use-case --- api/assets/preload-plugins/fosscord-login.js | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'api') diff --git a/api/assets/preload-plugins/fosscord-login.js b/api/assets/preload-plugins/fosscord-login.js index 1a36f0bd..38f82200 100644 --- a/api/assets/preload-plugins/fosscord-login.js +++ b/api/assets/preload-plugins/fosscord-login.js @@ -1,6 +1,10 @@ // Remove `` from header when we're not accessing `/login` or `/register` // fosscord-login.css replaces discord's TOS tooltip with something more fitting for fosscord, which when included in the main app, causes other tooltips // to be affected, which is potentially unwanted. +// +// This script removes fosscord-login.css when a user reloads the page. From testing, it appears fosscord already properly removes +// fosscord-login.css after login is successful, but not if you reload the page after logging in. This script is to remove fosscord-login.css in +// that specific case. var token = JSON.parse(localStorage.getItem("token")); if (!token && location.pathname !== "/login" && location.pathname !== "/register") { -- cgit 1.5.1