From 9d63ddd19399747e024467319a032c0657c99650 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Fri, 9 Oct 2026 18:29:26 +0000 Subject: [PATCH] fix(ui): actually update play with api endpoint --- src/backend/common/AbstractComponent.ts | 7 ++++++- src/backend/server/api.ts | 9 ++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/backend/common/AbstractComponent.ts b/src/backend/common/AbstractComponent.ts index 786b64b1..c3ea03a4 100644 --- a/src/backend/common/AbstractComponent.ts +++ b/src/backend/common/AbstractComponent.ts @@ -35,7 +35,7 @@ import { getRetentionCompactAfterFromEnv, getRetentionDeleteAfterFromEnv, isComp import type {DbConcrete} from "./database/drizzle/drizzleUtils.ts"; import type {ComponentSelect, PlayEventNew, PlayEventSelect, PlaySelect, PlaySelectWithQueueStates, PlayWith, QueueStateSelect} from "./database/drizzle/drizzleTypes.ts"; import { DrizzlePlayRepository, playToRepositoryCreatePlayOpts, type WithPlayRelation } from "./database/drizzle/repositories/PlayRepository.ts"; -import type {ClientType, MonitoringStatus, OptionalCacheUsage, PlayMatchResult, QueueContext, TrackData} from "../../core/Atomic.ts"; +import type {ClientType, JsonPlayObject, MonitoringStatus, OptionalCacheUsage, PlayMatchResult, QueueContext, TrackData} from "../../core/Atomic.ts"; import type {SourceType} from "../../core/Atomic.ts"; import { DrizzleComponentRepository } from "./database/drizzle/repositories/ComponentRepository.ts"; import dayjs, { type Dayjs } from "dayjs"; @@ -1132,6 +1132,11 @@ export default abstract class AbstractComponent extends AbstractInitializable { const createdEvent = await this.playEventsRepo.create({...event, playId: playRow.id}); // @ts-expect-error this should be fine playRow.events.push(createdEvent); + this.emitPlayUpdate({ + uid, + events: playRow.events as unknown as PlayEvent[], + play: playRow.play as unknown as JsonPlayObject + }) return playRow as unknown as PlayApiCommonDetailed; } } diff --git a/src/backend/server/api.ts b/src/backend/server/api.ts index 9eb45358..0e350f60 100644 --- a/src/backend/server/api.ts +++ b/src/backend/server/api.ts @@ -12,6 +12,7 @@ import { trackSearchToMusicService, albumSearchToMusicService, artistSearchToMusicService, + playEditStrictCreateSchema, } from "../../core/Atomic.ts"; import type {LeveledLogData} from "../common/infrastructure/Atomic.ts"; import { getRoot } from "../ioc.ts"; @@ -485,16 +486,18 @@ Note: this is only supported by some components.` router.put('/api/components/:id/plays/:uid/play', { middleware: [componentAwareMiddle,jsonParser], tags: ['Plays'], - summary: 'Update Play' + summary: 'Update Play', + bodySchema: playEditStrictCreateSchema }, async (req, res, next) => { const { component, params: { uid: playUid - } + }, + body } = req; - const playRes = await component.getPlayApiResponse(playUid as string); + const playRes = await component.updatePlay(playUid as string, body.data); //PlayApiCommonDetailed // plus paginatioon return res.json(asSerializablePlaySelect(playRes)); -- 2.54.0