add full-screen gift effects

This commit is contained in:
2026-07-19 00:39:56 -07:00
parent f79852d8e6
commit c4eca7b8bf
23 changed files with 1666 additions and 33 deletions
+23 -1
View File
@@ -11,6 +11,7 @@ import type {
AuthUser,
ComponentSummary,
CookieCloudSource,
GiftEffectSettings,
Invitation,
OverlaySettings,
Session,
@@ -20,7 +21,12 @@ import type {
TotpEnrollment,
} from './types'
import { normalizeThemeId } from './themes'
import { defaultOverlaySettings, defaultSongRequestSettings } from './types'
import { normalizeGiftEffectThemeId } from './giftThemes'
import {
defaultGiftEffectSettings,
defaultOverlaySettings,
defaultSongRequestSettings,
} from './types'
import { currentLanguage, hasTranslation, translate } from './i18n'
export class ApiError extends Error {
@@ -214,6 +220,22 @@ export function normalizeSongRequestSettings(value: unknown): SongRequestSetting
}
}
export function normalizeGiftEffectSettings(value: unknown): GiftEffectSettings {
const root = object(value)
const settings = object(root.settings ?? value)
const normal = object(settings.normal)
const high = object(settings.high)
const featured = object(settings.featured)
return {
...defaultGiftEffectSettings,
...(settings as Partial<GiftEffectSettings>),
themeId: normalizeGiftEffectThemeId(settings.themeId),
normal: { ...defaultGiftEffectSettings.normal, ...normal },
high: { ...defaultGiftEffectSettings.high, ...high },
featured: { ...defaultGiftEffectSettings.featured, ...featured },
}
}
export function normalizeSongRequestItem(value: unknown): SongRequestItem | undefined {
const item = object(value)
const requester = object(item.requester)