summary refs log tree commit diff
path: root/src/api/routes/users/@me/connections/#connection_name/#connection_id/index.ts
blob: 76eb99363e0b2c7372d1a5bbf474e9b694b4a1dc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import { route } from "@fosscord/api";
import { Request, Response, Router } from "express";
import {
	ConnectedAccount,
	DiscordApiErrors,
	OrmUtils,
} from "../../../../../../../util";
const router = Router();

// TODO: connection update schema
router.patch(
	"/",
	route({ body: "ConnectionUpdateSchema" }),
	async (req: Request, res: Response) => {
		const { connection_name, connection_id } = req.params;

		const connection = await ConnectedAccount.findOne({
			where: {
				user_id: req.user_id,
				external_id: connection_id,
				type: connection_name,
			},
			select: [
				"external_id",
				"type",
				"name",
				"verified",
				"visibility",
				"show_activity",
				"revoked",
				"friend_sync",
				"integrations",
			],
		});

		if (!connection) return DiscordApiErrors.UNKNOWN_CONNECTION;
		// TODO: do we need to do anything if the connection is revoked?
		OrmUtils.mergeDeep(connection, req.body);
		await ConnectedAccount.update(
			{
				user_id: req.user_id,
				external_id: connection_id,
				type: connection_name,
			},
			connection,
		);
		res.json(connection.toJSON());
	},
);

export default router;