implement PATCH connection
This commit is contained in:
parent
6a52e65e27
commit
5c682137b2
Binary file not shown.
@ -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;
|
||||||
@ -32,10 +32,12 @@ export class ConnectedAccountDTO {
|
|||||||
this.show_activity = connectedAccount.show_activity;
|
this.show_activity = connectedAccount.show_activity;
|
||||||
this.type = connectedAccount.type;
|
this.type = connectedAccount.type;
|
||||||
this.verified = connectedAccount.verified;
|
this.verified = connectedAccount.verified;
|
||||||
this.visibility = connectedAccount.visibility;
|
this.visibility = +(connectedAccount.visibility || false);
|
||||||
this.integrations = connectedAccount.integrations;
|
this.integrations = connectedAccount.integrations;
|
||||||
this.metadata_ = connectedAccount.metadata_;
|
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;
|
this.two_way_link = connectedAccount.two_way_link;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -62,7 +62,7 @@ export class ConnectedAccount extends BaseClass {
|
|||||||
verified?: boolean = true;
|
verified?: boolean = true;
|
||||||
|
|
||||||
@Column({ select: false })
|
@Column({ select: false })
|
||||||
visibility?: number = 0;
|
visibility?: boolean = false;
|
||||||
|
|
||||||
@Column({ type: "simple-array" })
|
@Column({ type: "simple-array" })
|
||||||
integrations?: string[] = [];
|
integrations?: string[] = [];
|
||||||
@ -71,7 +71,7 @@ export class ConnectedAccount extends BaseClass {
|
|||||||
metadata_?: any;
|
metadata_?: any;
|
||||||
|
|
||||||
@Column()
|
@Column()
|
||||||
metadata_visibility?: number = 0;
|
metadata_visibility?: boolean = false;
|
||||||
|
|
||||||
@Column()
|
@Column()
|
||||||
two_way_link?: boolean = false;
|
two_way_link?: boolean = false;
|
||||||
|
|||||||
3
src/util/entities/ConnectionUpdateSchema.ts
Normal file
3
src/util/entities/ConnectionUpdateSchema.ts
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
export interface ConnectionUpdateSchema {
|
||||||
|
visibility?: boolean;
|
||||||
|
}
|
||||||
@ -28,6 +28,7 @@ export * from "./ClientRelease";
|
|||||||
export * from "./Config";
|
export * from "./Config";
|
||||||
export * from "./ConnectedAccount";
|
export * from "./ConnectedAccount";
|
||||||
export * from "./ConnectionConfigEntity";
|
export * from "./ConnectionConfigEntity";
|
||||||
|
export * from "./ConnectionUpdateSchema";
|
||||||
export * from "./EmbedCache";
|
export * from "./EmbedCache";
|
||||||
export * from "./Emoji";
|
export * from "./Emoji";
|
||||||
export * from "./Encryption";
|
export * from "./Encryption";
|
||||||
|
|||||||
@ -578,6 +578,7 @@ export const DiscordApiErrors = {
|
|||||||
UNKNOWN_EMOJI: new ApiError("Unknown emoji", 10014),
|
UNKNOWN_EMOJI: new ApiError("Unknown emoji", 10014),
|
||||||
UNKNOWN_WEBHOOK: new ApiError("Unknown webhook", 10015),
|
UNKNOWN_WEBHOOK: new ApiError("Unknown webhook", 10015),
|
||||||
UNKNOWN_WEBHOOK_SERVICE: new ApiError("Unknown webhook service", 10016),
|
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_SESSION: new ApiError("Unknown session", 10020),
|
||||||
UNKNOWN_BAN: new ApiError("Unknown ban", 10026),
|
UNKNOWN_BAN: new ApiError("Unknown ban", 10026),
|
||||||
UNKNOWN_SKU: new ApiError("Unknown SKU", 10027),
|
UNKNOWN_SKU: new ApiError("Unknown SKU", 10027),
|
||||||
|
|||||||
Reference in New Issue
Block a user