From 4c53858dc30107a5ceea6d2d26295ada7ff20c14 Mon Sep 17 00:00:00 2001 From: Dylan Audius Date: Sun, 19 Jul 2026 23:05:39 -0700 Subject: [PATCH] fix(contest): preserve untouched event_data fields when editing a contest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The host-remix-contest edit forms (web modal and mobile drawer) rebuilt event_data from only the fields they edit (description, prizeInfo, winners, and videoUrl on mobile). The indexer replaces event_data wholesale on update, so saving an edit — e.g. extending the contest end date — silently wiped title, coverPhotoUrl, sourceTrackIds, and any other field the form doesn't own. Spread the existing eventData first so untouched fields survive the round-trip. PickWinnersPage already does this correctly. Co-Authored-By: Claude Fable 5 --- .../host-remix-contest-drawer/HostRemixContestDrawer.tsx | 4 ++++ .../host-remix-contest-modal/HostRemixContestModal.tsx | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/packages/mobile/src/components/host-remix-contest-drawer/HostRemixContestDrawer.tsx b/packages/mobile/src/components/host-remix-contest-drawer/HostRemixContestDrawer.tsx index f5384c9f250..6d8da27c33f 100644 --- a/packages/mobile/src/components/host-remix-contest-drawer/HostRemixContestDrawer.tsx +++ b/packages/mobile/src/components/host-remix-contest-drawer/HostRemixContestDrawer.tsx @@ -147,7 +147,11 @@ export const HostRemixContestDrawer = () => { updateEvent({ eventId: remixContest.eventId, endDate: endDate.toISOString(), + // event_data is replaced wholesale by the indexer on update, so + // carry over the fields this form doesn't edit (title, + // coverPhotoUrl, sourceTrackIds, etc.) instead of dropping them. eventData: { + ...remixContest.eventData, description, prizeInfo, videoUrl: videoUrl.trim() || undefined, diff --git a/packages/web/src/components/host-remix-contest-modal/HostRemixContestModal.tsx b/packages/web/src/components/host-remix-contest-modal/HostRemixContestModal.tsx index f55a90f050c..47af02c9e1a 100644 --- a/packages/web/src/components/host-remix-contest-modal/HostRemixContestModal.tsx +++ b/packages/web/src/components/host-remix-contest-modal/HostRemixContestModal.tsx @@ -138,7 +138,11 @@ export const HostRemixContestModal = NiceModal.create(() => { if (hasError || !trackId || !userId) return const endDate = parsedDate.toISOString() + // event_data is replaced wholesale by the indexer on update, so carry + // over the fields this form doesn't edit (title, coverPhotoUrl, + // sourceTrackIds, etc.) instead of dropping them. const eventData = { + ...remixContest?.eventData, description: contestDescription, prizeInfo: contestPrizeInfo, winners: remixContest?.eventData.winners ?? []