diff --git a/src/api/routes/users/@me/settings-proto/1.ts b/src/api/routes/users/@me/settings-proto/1.ts index 71ff46b9..dcbad884 100644 --- a/src/api/routes/users/@me/settings-proto/1.ts +++ b/src/api/routes/users/@me/settings-proto/1.ts @@ -19,6 +19,7 @@ import { route } from "@spacebar/api"; import { Request, Response, Router } from "express"; import { + emitEvent, OrmUtils, SettingsProtoJsonResponse, SettingsProtoResponse, @@ -192,6 +193,23 @@ async function patchUserSettings( userSettings.userSettings = settings; await userSettings.save(); + await emitEvent({ + event: "USER_SETTINGS_PROTO_UPDATE", + data: { + settings: { + proto: PreloadedUserSettings.toBase64(settings), + type: 1 + }, + json_settings: { + proto: PreloadedUserSettings.toJson(settings), + type: "user_settings" + }, + partial: false, // Unsure how this should behave + } + }); + // This should also send a USER_SETTINGS_UPDATE event, but that isn't sent + // when using the USER_SETTINGS_PROTOS capability, so we ignore it for now. + return { settings: settings, out_of_date: false, diff --git a/src/api/routes/users/@me/settings-proto/2.ts b/src/api/routes/users/@me/settings-proto/2.ts index dbb331f5..1ca34de7 100644 --- a/src/api/routes/users/@me/settings-proto/2.ts +++ b/src/api/routes/users/@me/settings-proto/2.ts @@ -19,6 +19,7 @@ import { route } from "@spacebar/api"; import { Request, Response, Router } from "express"; import { + emitEvent, OrmUtils, SettingsProtoJsonResponse, SettingsProtoResponse, @@ -194,6 +195,23 @@ async function patchUserSettings( userSettings.frecencySettings = settings; await userSettings.save(); + await emitEvent({ + event: "USER_SETTINGS_PROTO_UPDATE", + data: { + settings: { + proto: FrecencyUserSettings.toBase64(settings), + type: 2 + }, + json_settings: { + proto: FrecencyUserSettings.toJson(settings), + type: "frecency_settings" + }, + partial: false, // Unsure how this should behave + } + }); + // This should also send a USER_SETTINGS_UPDATE event, but that isn't sent + // when using the USER_SETTINGS_PROTOS capability, so we ignore it for now. + return { settings: settings, out_of_date: false, diff --git a/src/util/interfaces/Event.ts b/src/util/interfaces/Event.ts index 141b7438..7ddb1fbe 100644 --- a/src/util/interfaces/Event.ts +++ b/src/util/interfaces/Event.ts @@ -732,6 +732,7 @@ export type EVENT = | "RELATIONSHIP_ADD" | "RELATIONSHIP_REMOVE" | "SESSIONS_REPLACE" + | "USER_SETTINGS_PROTO_UPDATE" | CUSTOMEVENTS; export type CUSTOMEVENTS = "INVALIDATED" | "RATELIMIT";