diff options
Diffstat (limited to 'src/api/routes')
-rw-r--r-- | src/api/routes/users/@me/connections/#connection_name/#connection_id/index.ts | 51 | ||||
-rw-r--r-- | src/api/routes/users/@me/connections/index.ts (renamed from src/api/routes/users/@me/connections.ts) | 0 |
2 files changed, 51 insertions, 0 deletions
diff --git a/src/api/routes/users/@me/connections/#connection_name/#connection_id/index.ts b/src/api/routes/users/@me/connections/#connection_name/#connection_id/index.ts new file mode 100644 index 00000000..76eb9936 --- /dev/null +++ b/src/api/routes/users/@me/connections/#connection_name/#connection_id/index.ts @@ -0,0 +1,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; diff --git a/src/api/routes/users/@me/connections.ts b/src/api/routes/users/@me/connections/index.ts index a5041be1..a5041be1 100644 --- a/src/api/routes/users/@me/connections.ts +++ b/src/api/routes/users/@me/connections/index.ts |