feat: add notes input, add notes display in video section#8810
feat: add notes input, add notes display in video section#8810jaco-brink wants to merge 7 commits intomainfrom
Conversation
- Add nullable notes String to Prisma Block model and migration - Add notes to VideoBlock in api-journeys federation schema - Add notes to VideoBlockUpdateInput and VideoBlock type in api-journeys-modern - Add unit tests for notes read, update, and clear - Regenerate GraphQL schemas and api-journeys client Made-with: Cursor
|
Warning Rate limit exceeded
⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (49)
📒 Files selected for processing (18)
WalkthroughThe changes introduce a new Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~20 minutes 🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
| Command | Status | Duration | Result |
|---|---|---|---|
nx run journeys-e2e:e2e |
❌ Failed | 1m 38s | View ↗ |
nx run resources-e2e:e2e |
✅ Succeeded | 35s | View ↗ |
nx run journeys-admin-e2e:e2e |
✅ Succeeded | 33s | View ↗ |
nx run watch-e2e:e2e |
✅ Succeeded | 27s | View ↗ |
nx run videos-admin-e2e:e2e |
✅ Succeeded | 7s | View ↗ |
nx run short-links-e2e:e2e |
✅ Succeeded | 6s | View ↗ |
nx run player-e2e:e2e |
✅ Succeeded | 3s | View ↗ |
nx run-many --target=vercel-alias --projects=jo... |
✅ Succeeded | 2s | View ↗ |
Additional runs (20) |
✅ Succeeded | ... | View ↗ |
☁️ Nx Cloud last updated this comment at 2026-03-05 21:13:54 UTC
Made-with: Cursor
…low (NES-1317) - Add notes field to VIDEO_FIELDS fragment - Add collapsible Template Adapter Notes input below Needs Customization toggle in VideoBlockEditor - Support notes in VideoOptions undo/redo - Replace video title with adapter note in VideosSection customization flow - Rename VideoTitle to VideoAdapterNote - Remove getVideoBlockDisplayTitle utility Made-with: Cursor
d460ae2 to
746bce6
Compare
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In
`@apps/journeys-admin/src/components/Editor/Slider/Settings/Drawer/VideoBlockEditor/VideoBlockEditor.spec.tsx`:
- Around line 570-641: Add a persistence-path test that verifies adapter notes
are trimmed and committed via the VideoBlockEditor on blur: render
VideoBlockEditor (from VideoBlockEditor.spec.tsx) with a jest.fn() onChange,
customizable true and template=true, get the input via
screen.getByLabelText('Template Adapter Notes'), use fireEvent.change to set a
value with leading/trailing spaces and fireEvent.blur to trigger the commit,
then assert onChange was called with the updated block containing adapterNotes
trimmed (verify via toHaveBeenCalledWith or inspect the first call arg to match
the Block/VideoBlock shape and the trimmed adapterNotes). Ensure you reference
VideoBlockEditor and the onChange handler in the test.
In
`@apps/journeys-admin/src/components/Editor/Slider/Settings/Drawer/VideoBlockEditor/VideoBlockEditor.tsx`:
- Around line 82-93: The collapsed TextField remains mounted when hidden causing
an invisible interactive control; update the VideoBlockEditor to unmount the
notes input when customization is off by either enabling unmounting on the
Collapse wrapper (e.g., add unmountOnExit to the Collapse around the TextField)
or conditionally render the TextField only when videoBlock?.customizable is
true; ensure you keep the same props and handlers (notesInputValue,
setNotesInputValue, handleNotesBlur, inputProps) on the TextField so behavior is
unchanged when mounted.
In
`@apps/journeys-admin/src/components/TemplateCustomization/MultiStepForm/Screens/MediaScreen/Sections/VideosSection/VideosSection.spec.tsx`:
- Around line 218-224: The test title claims to cover "empty or null" but the
current spec only asserts the null case; either update the test title to reflect
it only checks null (change the it(...) description to "does not show adapter
note when notes is null") or add an additional test case that calls
renderVideosSection with journey data whose video block notes are an empty
string and/or whitespace (use the existing helpers journeyWithMatchingVideoBlock
and cardBlockId to mount the component) and assert screen.queryByText('trailer')
is not in the document; update or add the test(s) accordingly so title and
coverage match.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 16913143-dcd3-4684-86c4-569a81db7548
⛔ Files ignored due to path filters (48)
apis/api-journeys/src/__generated__/graphql.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/BlockDuplicate.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/BlockFields.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/BlockRestore.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/CardCtaRestore.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/CardFormRestore.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/CardIntroCreate.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/CardIntroRestore.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/CardPollRestore.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/CardQuoteRestore.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/CardVideoCreate.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/CardVideoDelete.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/CardVideoRestore.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/CoverBlockRestore.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/CoverVideoBlockCreate.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/CoverVideoBlockUpdate.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/GetAdminJourney.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/GetAdminJourneyWithPlausibleToken.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/GetJourney.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/GetPublisherTemplate.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/JourneyFields.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/MenuBlockRestore.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/StepBlockRestoreFromAction.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/StepBlockRestoreFromSocialPreview.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/StepBlockRestoreFromStep.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/StepDuplicate.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/TextResponseWithButtonRestore.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/VideoBlockCreate.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/VideoBlockUpdate.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/VideoFields.tsis excluded by!**/__generated__/**apps/journeys-admin/__generated__/globalTypes.tsis excluded by!**/__generated__/**apps/journeys/__generated__/BlockFields.tsis excluded by!**/__generated__/**apps/journeys/__generated__/GetJourney.tsis excluded by!**/__generated__/**apps/journeys/__generated__/JourneyFields.tsis excluded by!**/__generated__/**apps/journeys/__generated__/VideoFields.tsis excluded by!**/__generated__/**apps/resources/__generated__/BlockFields.tsis excluded by!**/__generated__/**apps/resources/__generated__/GetJourney.tsis excluded by!**/__generated__/**apps/resources/__generated__/JourneyFields.tsis excluded by!**/__generated__/**apps/resources/__generated__/VideoFields.tsis excluded by!**/__generated__/**apps/watch/__generated__/BlockFields.tsis excluded by!**/__generated__/**apps/watch/__generated__/GetJourney.tsis excluded by!**/__generated__/**apps/watch/__generated__/JourneyFields.tsis excluded by!**/__generated__/**apps/watch/__generated__/VideoFields.tsis excluded by!**/__generated__/**libs/journeys/ui/src/components/Video/__generated__/VideoFields.tsis excluded by!**/__generated__/**libs/journeys/ui/src/libs/JourneyProvider/__generated__/JourneyFields.tsis excluded by!**/__generated__/**libs/journeys/ui/src/libs/block/__generated__/BlockFields.tsis excluded by!**/__generated__/**libs/journeys/ui/src/libs/useJourneyQuery/__generated__/GetJourney.tsis excluded by!**/__generated__/**libs/shared/gql/src/__generated__/graphql-env.d.tsis excluded by!**/__generated__/**
📒 Files selected for processing (10)
apps/journeys-admin/src/components/Editor/Slider/Settings/CanvasDetails/Properties/blocks/Video/Options/VideoOptions.tsxapps/journeys-admin/src/components/Editor/Slider/Settings/Drawer/VideoBlockEditor/VideoBlockEditor.spec.tsxapps/journeys-admin/src/components/Editor/Slider/Settings/Drawer/VideoBlockEditor/VideoBlockEditor.tsxapps/journeys-admin/src/components/TemplateCustomization/MultiStepForm/Screens/MediaScreen/Sections/VideosSection/VideosSection.spec.tsxapps/journeys-admin/src/components/TemplateCustomization/MultiStepForm/Screens/MediaScreen/Sections/VideosSection/VideosSection.tsxapps/journeys-admin/src/components/TemplateCustomization/MultiStepForm/Screens/MediaScreen/utils/index.tsapps/journeys-admin/src/components/TemplateCustomization/MultiStepForm/Screens/MediaScreen/utils/videoSectionUtils/index.tsapps/journeys-admin/src/components/TemplateCustomization/MultiStepForm/Screens/MediaScreen/utils/videoSectionUtils/videoSectionUtils.spec.tsapps/journeys-admin/src/components/TemplateCustomization/MultiStepForm/Screens/MediaScreen/utils/videoSectionUtils/videoSectionUtils.tslibs/journeys/ui/src/components/Video/videoFields.ts
💤 Files with no reviewable changes (3)
- apps/journeys-admin/src/components/TemplateCustomization/MultiStepForm/Screens/MediaScreen/utils/videoSectionUtils/index.ts
- apps/journeys-admin/src/components/TemplateCustomization/MultiStepForm/Screens/MediaScreen/utils/index.ts
- apps/journeys-admin/src/components/TemplateCustomization/MultiStepForm/Screens/MediaScreen/utils/videoSectionUtils/videoSectionUtils.ts
...dmin/src/components/Editor/Slider/Settings/Drawer/VideoBlockEditor/VideoBlockEditor.spec.tsx
Show resolved
Hide resolved
...eys-admin/src/components/Editor/Slider/Settings/Drawer/VideoBlockEditor/VideoBlockEditor.tsx
Outdated
Show resolved
Hide resolved
...ustomization/MultiStepForm/Screens/MediaScreen/Sections/VideosSection/VideosSection.spec.tsx
Outdated
Show resolved
Hide resolved
|
The latest updates on your projects.
|
|
The latest updates on your projects.
|
|
The latest updates on your projects.
|
|
The latest updates on your projects.
|
|
The latest updates on your projects.
|
|
The latest updates on your projects.
|
- Add unmountOnExit to Collapse for accessibility (unmount hidden notes input) - Add persistence test for trimmed adapter notes on blur - Split VideosSection test: null vs empty/whitespace notes coverage Made-with: Cursor
|
The latest updates on your projects.
|

Summary
Implements NES-1317: UI - Add input capture notes for template video blocks.
Base: This PR is based on NES-1316 (backend PR). Merge NES-1316 first; once merged, this PR diff will show only the UI changes.
Changes
Depends on
QA