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">;
|