summary refs log tree commit diff
diff options
context:
space:
mode:
authorMathMan05 <mathmanrm@gmail.com>2025-11-26 14:45:19 -0600
committerMathMan05 <mathmanrm@gmail.com>2025-11-26 14:45:19 -0600
commit12763d1c593daabe170cf10e48fb460f86e9bed7 (patch)
treefd4eed80b5632bf94b2d9ad0596ee39a33974eab
parentFix backwards condition (diff)
downloadserver-ts-12763d1c593daabe170cf10e48fb460f86e9bed7.tar.xz
remove distinct
-rw-r--r--src/api/routes/channels/#channel_id/recipients.ts32
-rw-r--r--src/gateway/opcodes/LazyRequest.ts5
-rw-r--r--src/util/entities/Channel.ts2
-rw-r--r--src/util/util/extensions/Array.test.ts6
-rw-r--r--src/util/util/extensions/Array.ts10
5 files changed, 7 insertions, 48 deletions
diff --git a/src/api/routes/channels/#channel_id/recipients.ts b/src/api/routes/channels/#channel_id/recipients.ts

index 65160274..6388cfe2 100644 --- a/src/api/routes/channels/#channel_id/recipients.ts +++ b/src/api/routes/channels/#channel_id/recipients.ts
@@ -17,15 +17,7 @@ */ import { route } from "@spacebar/api"; -import { - Channel, - ChannelRecipientAddEvent, - DiscordApiErrors, - DmChannelDTO, - emitEvent, - Recipient, - User, -} from "@spacebar/util"; +import { Channel, ChannelRecipientAddEvent, DiscordApiErrors, DmChannelDTO, emitEvent, Recipient, User } from "@spacebar/util"; import { Request, Response, Router } from "express"; import { ChannelType, PublicUserProjection } from "@spacebar/schemas"; @@ -47,24 +39,16 @@ router.put( }); if (channel.type !== ChannelType.GROUP_DM) { - const recipients = [ - ...(channel.recipients?.map((r) => r.user_id) || []), - user_id, - ].distinct(); + const recipients = [...new Set([...(channel.recipients?.map((r) => r.user_id) || []), user_id])]; - const new_channel = await Channel.createDMChannel( - recipients, - req.user_id, - ); + const new_channel = await Channel.createDMChannel(recipients, req.user_id); return res.status(201).json(new_channel); } else { if (channel.recipients?.map((r) => r.user_id).includes(user_id)) { throw DiscordApiErrors.INVALID_RECIPIENT; //TODO is this the right error? } - channel.recipients?.push( - Recipient.create({ channel_id: channel_id, user_id: user_id }), - ); + channel.recipients?.push(Recipient.create({ channel_id: channel_id, user_id: user_id })); await channel.save(); await emitEvent({ @@ -103,13 +87,7 @@ router.delete( where: { id: channel_id }, relations: ["recipients"], }); - if ( - !( - channel.type === ChannelType.GROUP_DM && - (channel.owner_id === req.user_id || user_id === req.user_id) - ) - ) - throw DiscordApiErrors.MISSING_PERMISSIONS; + if (!(channel.type === ChannelType.GROUP_DM && (channel.owner_id === req.user_id || user_id === req.user_id))) throw DiscordApiErrors.MISSING_PERMISSIONS; if (!channel.recipients?.map((r) => r.user_id).includes(user_id)) { throw DiscordApiErrors.INVALID_RECIPIENT; //TODO is this the right error? diff --git a/src/gateway/opcodes/LazyRequest.ts b/src/gateway/opcodes/LazyRequest.ts
index e7490ff3..bd22bdb0 100644 --- a/src/gateway/opcodes/LazyRequest.ts +++ b/src/gateway/opcodes/LazyRequest.ts
@@ -254,10 +254,7 @@ export async function onLazyRequest(this: WebSocket, { d }: Payload) { }); }); - const groups = ops - .map((x) => x.groups) - .flat() - .distinct(); + const groups = [...new Set(ops.map((x) => x.groups).flat())]; await Send(this, { op: OPCODES.Dispatch, diff --git a/src/util/entities/Channel.ts b/src/util/entities/Channel.ts
index 39ab04e4..ff3de280 100644 --- a/src/util/entities/Channel.ts +++ b/src/util/entities/Channel.ts
@@ -255,7 +255,7 @@ export class Channel extends BaseClass { } static async createDMChannel(recipients: string[], creator_user_id: string, name?: string) { - recipients = recipients.distinct().filter((x) => x !== creator_user_id); + recipients = [...new Set(recipients.distinct().filter((x) => x !== creator_user_id))]; // TODO: check config for max number of recipients /** if you want to disallow note to self channels, uncomment the conditional below diff --git a/src/util/util/extensions/Array.test.ts b/src/util/util/extensions/Array.test.ts
index 91619251..3550654a 100644 --- a/src/util/util/extensions/Array.test.ts +++ b/src/util/util/extensions/Array.test.ts
@@ -19,10 +19,4 @@ describe("Array extensions", () => { arr.remove(6); assert.deepEqual(arr, [1, 2, 4, 5]); }); - - it("distinct", () => { - const arr = [1, 2, 2, 3, 3, 3]; - assert.deepEqual(arr.distinct(), [1, 2, 3]); - assert.deepEqual([].distinct(), []); - }); }); diff --git a/src/util/util/extensions/Array.ts b/src/util/util/extensions/Array.ts
index 74cceb76..58ec0a1b 100644 --- a/src/util/util/extensions/Array.ts +++ b/src/util/util/extensions/Array.ts
@@ -20,7 +20,6 @@ declare global { interface Array<T> { partition(filter: (elem: T) => boolean): [T[], T[]]; remove(item: T): void; - distinct(): T[]; } } @@ -39,10 +38,6 @@ export function arrayRemove<T>(this: T[], item: T): void { } } -export function arrayDistinct<T>(this: T[]): T[] { - return Array.from(new Set(this)); -} - // register extensions if (!Array.prototype.partition) Array.prototype.partition = function <T>(this: T[], filter: (elem: T) => boolean) { @@ -53,8 +48,3 @@ if (!Array.prototype.remove) Array.prototype.remove = function <T>(this: T[], item: T) { return arrayRemove.call(this, item); }; - -if (!Array.prototype.distinct) - Array.prototype.distinct = function <T>(this: T[]) { - return arrayDistinct.call(this); - };