diff --git a/src/util/dtos/ConnectedAccountDTO.ts b/src/util/dtos/ConnectedAccountDTO.ts
new file mode 100644
index 00000000..0a3604d5
--- /dev/null
+++ b/src/util/dtos/ConnectedAccountDTO.ts
@@ -0,0 +1,61 @@
+/*
+ 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_?: any;
+ 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;
+ }
+}
diff --git a/src/util/dtos/ReadyGuildDTO.ts b/src/util/dtos/ReadyGuildDTO.ts
index 1c1482dd..7ca268a0 100644
--- a/src/util/dtos/ReadyGuildDTO.ts
+++ b/src/util/dtos/ReadyGuildDTO.ts
@@ -22,11 +22,11 @@ import {
ChannelType,
Emoji,
Guild,
- Member,
PublicUser,
Role,
Sticker,
UserGuildSettings,
+ PublicMember,
} from "../entities";
// TODO: this is not the best place for this type
@@ -67,7 +67,7 @@ export interface IReadyGuildDTO {
large: boolean | undefined;
lazy: boolean;
member_count: number | undefined;
- members: Member[];
+ members: PublicMember[];
premium_subscription_count: number | undefined;
properties: {
name: string;
@@ -124,7 +124,7 @@ export class ReadyGuildDTO implements IReadyGuildDTO {
large: boolean | undefined;
lazy: boolean;
member_count: number | undefined;
- members: Member[];
+ members: PublicMember[];
premium_subscription_count: number | undefined;
properties: {
name: string;
@@ -191,7 +191,7 @@ export class ReadyGuildDTO implements IReadyGuildDTO {
this.large = guild.large;
this.lazy = true; // ??????????
this.member_count = guild.member_count;
- this.members = guild.members;
+ this.members = guild.members?.map((x) => x.toPublicMember());
this.premium_subscription_count = guild.premium_subscription_count;
this.properties = {
name: guild.name,
diff --git a/src/util/dtos/index.ts b/src/util/dtos/index.ts
index 04cd7b72..b7094227 100644
--- a/src/util/dtos/index.ts
+++ b/src/util/dtos/index.ts
@@ -16,6 +16,7 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
+export * from "./ConnectedAccountDTO";
export * from "./DmChannelDTO";
export * from "./ReadyGuildDTO";
export * from "./UserDTO";
|