summary refs log tree commit diff
path: root/src/util/dtos/ConnectedAccountDTO.ts
blob: 043c1e735c12924691228217277d5b83699ee40b (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
52
53
54
/*
	Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
	Copyright (C) 2023 Spacebar and Spacebar Contributors
	
	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU Affero General Public License as published
	by the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.
	
	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU Affero General Public License for more details.
	
	You should have received a copy of the GNU Affero General Public License
	along with this program.  If not, see <https://www.gnu.org/licenses/>.
*/

import { ConnectedAccount } from "../entities";

export class ConnectedAccountDTO {
	id: string;
	user_id: string;
	access_token?: string;
	friend_sync?: boolean;
	name: string;
	revoked?: boolean;
	show_activity?: number;
	type: string;
	verified?: boolean;
	visibility?: number;
	integrations?: string[];
	metadata_?: unknown;
	metadata_visibility?: number;
	two_way_link?: boolean;

	constructor(connectedAccount: ConnectedAccount, with_token: boolean = false) {
		this.id = connectedAccount.external_id;
		this.user_id = connectedAccount.user_id;
		this.access_token =
			connectedAccount.token_data && with_token ? connectedAccount.token_data.access_token : undefined;
		this.friend_sync = connectedAccount.friend_sync;
		this.name = connectedAccount.name;
		this.revoked = connectedAccount.revoked;
		this.show_activity = connectedAccount.show_activity;
		this.type = connectedAccount.type;
		this.verified = connectedAccount.verified;
		this.visibility = +(connectedAccount.visibility || false);
		this.integrations = connectedAccount.integrations;
		this.metadata_ = connectedAccount.metadata_;
		this.metadata_visibility = +(connectedAccount.metadata_visibility || false);
		this.two_way_link = connectedAccount.two_way_link;
	}
}