summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorPuyodead1 <puyodead@proton.me>2022-12-22 11:08:03 -0500
committerPuyodead1 <puyodead@proton.me>2023-03-18 19:16:41 -0400
commit5c682137b2ab6ecef2a52fc3974a2cc01931dbf2 (patch)
tree2d973a29caf46874cec2c1e031c5b615f58a4ff4 /src
parentadding connection now works (diff)
downloadserver-5c682137b2ab6ecef2a52fc3974a2cc01931dbf2.tar.xz
implement PATCH connection
Diffstat (limited to 'src')
-rw-r--r--src/api/routes/users/@me/connections/#connection_name/#connection_id/index.ts51
-rw-r--r--src/api/routes/users/@me/connections/index.ts (renamed from src/api/routes/users/@me/connections.ts)0
-rw-r--r--src/util/dtos/ConnectedAccountDTO.ts6
-rw-r--r--src/util/entities/ConnectedAccount.ts4
-rw-r--r--src/util/entities/ConnectionUpdateSchema.ts3
-rw-r--r--src/util/entities/index.ts1
-rw-r--r--src/util/util/Constants.ts1
7 files changed, 62 insertions, 4 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
diff --git a/src/util/dtos/ConnectedAccountDTO.ts b/src/util/dtos/ConnectedAccountDTO.ts
index 36a4e6b3..debc5535 100644 --- a/src/util/dtos/ConnectedAccountDTO.ts +++ b/src/util/dtos/ConnectedAccountDTO.ts
@@ -32,10 +32,12 @@ export class ConnectedAccountDTO { this.show_activity = connectedAccount.show_activity; this.type = connectedAccount.type; this.verified = connectedAccount.verified; - this.visibility = connectedAccount.visibility; + this.visibility = +(connectedAccount.visibility || false); this.integrations = connectedAccount.integrations; this.metadata_ = connectedAccount.metadata_; - this.metadata_visibility = connectedAccount.metadata_visibility; + this.metadata_visibility = +( + connectedAccount.metadata_visibility || false + ); this.two_way_link = connectedAccount.two_way_link; } } diff --git a/src/util/entities/ConnectedAccount.ts b/src/util/entities/ConnectedAccount.ts
index 25d5a0c7..714faf0c 100644 --- a/src/util/entities/ConnectedAccount.ts +++ b/src/util/entities/ConnectedAccount.ts
@@ -62,7 +62,7 @@ export class ConnectedAccount extends BaseClass { verified?: boolean = true; @Column({ select: false }) - visibility?: number = 0; + visibility?: boolean = false; @Column({ type: "simple-array" }) integrations?: string[] = []; @@ -71,7 +71,7 @@ export class ConnectedAccount extends BaseClass { metadata_?: any; @Column() - metadata_visibility?: number = 0; + metadata_visibility?: boolean = false; @Column() two_way_link?: boolean = false; diff --git a/src/util/entities/ConnectionUpdateSchema.ts b/src/util/entities/ConnectionUpdateSchema.ts new file mode 100644
index 00000000..ac234e7e --- /dev/null +++ b/src/util/entities/ConnectionUpdateSchema.ts
@@ -0,0 +1,3 @@ +export interface ConnectionUpdateSchema { + visibility?: boolean; +} diff --git a/src/util/entities/index.ts b/src/util/entities/index.ts
index ad34f67b..b4e3ecd0 100644 --- a/src/util/entities/index.ts +++ b/src/util/entities/index.ts
@@ -28,6 +28,7 @@ export * from "./ClientRelease"; export * from "./Config"; export * from "./ConnectedAccount"; export * from "./ConnectionConfigEntity"; +export * from "./ConnectionUpdateSchema"; export * from "./EmbedCache"; export * from "./Emoji"; export * from "./Encryption"; diff --git a/src/util/util/Constants.ts b/src/util/util/Constants.ts
index 1afdce49..3bdfcfa9 100644 --- a/src/util/util/Constants.ts +++ b/src/util/util/Constants.ts
@@ -578,6 +578,7 @@ export const DiscordApiErrors = { UNKNOWN_EMOJI: new ApiError("Unknown emoji", 10014), UNKNOWN_WEBHOOK: new ApiError("Unknown webhook", 10015), UNKNOWN_WEBHOOK_SERVICE: new ApiError("Unknown webhook service", 10016), + UNKNOWN_CONNECTION: new ApiError("Unknown connection", 10017, 400), UNKNOWN_SESSION: new ApiError("Unknown session", 10020), UNKNOWN_BAN: new ApiError("Unknown ban", 10026), UNKNOWN_SKU: new ApiError("Unknown SKU", 10027),