diff options
-rw-r--r-- | assets/schemas.json | 9 | ||||
-rw-r--r-- | src/api/routes/users/@me/settings.ts | 4 | ||||
-rw-r--r-- | src/util/entities/User.ts | 23 | ||||
-rw-r--r-- | src/util/schemas/UserModifySchema.ts | 4 | ||||
-rw-r--r-- | src/util/schemas/UserSettingsSchema.ts | 2 |
5 files changed, 20 insertions, 22 deletions
diff --git a/assets/schemas.json b/assets/schemas.json index f40bcd79..4a6825d1 100644 --- a/assets/schemas.json +++ b/assets/schemas.json @@ -8424,7 +8424,9 @@ }, "members": { "type": "array", - "items": {} + "items": { + "type": "string" + } }, "thread_member_lists": { "type": "array", @@ -21846,6 +21848,8 @@ "type": "string" }, "discriminator": { + "minLength": 4, + "maxLength": 4, "type": "string" } }, @@ -23047,9 +23051,6 @@ "UserSettingsSchema": { "type": "object", "properties": { - "index": { - "type": "string" - }, "afk_timeout": { "type": "integer" }, diff --git a/src/api/routes/users/@me/settings.ts b/src/api/routes/users/@me/settings.ts index c883bb30..cfcedec1 100644 --- a/src/api/routes/users/@me/settings.ts +++ b/src/api/routes/users/@me/settings.ts @@ -44,9 +44,9 @@ router.patch( user.settings.assign(body); - user.settings.save(); + await user.settings.save(); - res.json(user.settings); + res.json({ ...user.settings, index: undefined }); }, ); diff --git a/src/util/entities/User.ts b/src/util/entities/User.ts index fa8c7aa7..7b67c2ac 100644 --- a/src/util/entities/User.ts +++ b/src/util/entities/User.ts @@ -246,27 +246,20 @@ export class User extends BaseClass { if (this.discriminator) { const discrim = Number(this.discriminator); - if (this.discriminator.length > 4) - throw FieldErrors({ - discriminator: { - message: "Discriminator cannot be more than 4 digits.", - code: "DISCRIMINATOR_INVALID", - }, - }); - if (isNaN(discrim)) - throw FieldErrors({ - discriminator: { - message: "Discriminator must be a number.", - code: "DISCRIMINATOR_INVALID", - }, - }); - if (discrim <= 0 || discrim >= 10000) + if ( + isNaN(discrim) || + !(typeof discrim == "number") || + !Number.isInteger(discrim) || + discrim <= 0 || + discrim >= 10000 + ) throw FieldErrors({ discriminator: { message: "Discriminator must be a number.", code: "DISCRIMINATOR_INVALID", }, }); + this.discriminator = discrim.toString().padStart(4, "0"); } } diff --git a/src/util/schemas/UserModifySchema.ts b/src/util/schemas/UserModifySchema.ts index 2316477e..7851ec22 100644 --- a/src/util/schemas/UserModifySchema.ts +++ b/src/util/schemas/UserModifySchema.ts @@ -33,5 +33,9 @@ export interface UserModifySchema { new_password?: string; code?: string; email?: string; + /** + * @minLength 4 + * @maxLength 4 + */ discriminator?: string; } diff --git a/src/util/schemas/UserSettingsSchema.ts b/src/util/schemas/UserSettingsSchema.ts index 5a590b02..f315892e 100644 --- a/src/util/schemas/UserSettingsSchema.ts +++ b/src/util/schemas/UserSettingsSchema.ts @@ -18,4 +18,4 @@ import { UserSettings } from "@fosscord/util"; -export type UserSettingsSchema = Partial<UserSettings>; +export type UserSettingsSchema = Omit<Partial<UserSettings>, "index">; |