Skip to content

release-18-06-2026-hubs-and-bulk-media-upload - #1628

Merged
sinatragianpaolo merged 106 commits into
masterfrom
develop
Jun 18, 2026
Merged

release-18-06-2026-hubs-and-bulk-media-upload#1628
sinatragianpaolo merged 106 commits into
masterfrom
develop

Conversation

@sinatragianpaolo

Copy link
Copy Markdown
Contributor

No description provided.

sinatragianpaolo and others added 30 commits May 20, 2026 17:22
- PageHeader shows hub.title as title and project name in breadcrumbs
  using hub.project from GET /hubs/:hid (regenerated API types)
- Add 'Import new media' button and icon buttons to PageHeader
- Add trash button to pending video items to remove them individually
- Fix UploadModal navigating to same page not appending new uploads
- Add translation keys for hub videos header meta and tooltips
…tyId and isHub

- Updated InsightForm, InsightsDrawer, PageHeader, and Widgets to replace useParams with useOutletContext for accessing campaignId.
- Modified Video components (EditTagModal, Observation, ObservationForm, PageHeader, etc.) to utilize entityId and isHub from Outlet context.
- Adjusted routing and API calls to accommodate the new context structure, ensuring proper handling of campaigns and hubs.
- Enhanced navigation links and breadcrumbs to reflect the new entity structure.
- Updated package.json to use the latest version of @appquality/unguess-design-system.
- Added new translation keys for media import modal in translation.json.
- Refactored ImportMediaModal component to include file upload functionality, language selection, and error handling.
- Created utility function getFileType to determine the type of uploaded files.
- Enhanced user experience with loading indicators and error messages during file upload.
feat: update translations for video optimization status
refactor: enhance video list with editing capabilities and processing status indication
marcbon and others added 18 commits June 15, 2026 11:57
…chers based on hub status in Metas component
feat: integrate analytics tracking for media upload interactions in Empty and ImportMediaModal components
Frontend Upload Video - Enhance hub management with new modals, video handling, and routing
@sinatragianpaolo
sinatragianpaolo marked this pull request as ready for review June 18, 2026 07:46
@marcbon
marcbon requested a review from Copilot June 18, 2026 08:16

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces Hub support alongside existing Campaign flows, enabling bulk audio/video uploads, new media list behaviors for processing/error states, and new Dashboard entry points for creating and discovering hubs. It also extends the API layer and routing so Videos/Video/Insights pages can operate against either entity type via a shared middleware + outlet context.

Changes:

  • Added hub-aware routing + middleware (CampaignsHubsMiddleware) and refactored Videos/Video/Insights pages to use entityId + isHub.
  • Implemented hub media management: bulk upload modal, processing/error UI states, edit-details modal, and delete confirmation flow.
  • Added hub discovery/creation UX on Dashboard (Suggested Hubs + “New activity” modal), plus shared date-format utilities.

Reviewed changes

Copilot reviewed 63 out of 70 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
src/pages/Videos/utils/getFileType.ts Adds file-type helper for upload UI file list.
src/pages/Videos/useVideos.ts Refactors device grouping to new API shape + adds polling/totalVideos.
src/pages/Videos/parts/VideoItem.tsx Hub-aware item rendering + processing/error/disabled navigation UI.
src/pages/Videos/parts/VideoContainer.tsx Replaces list with table + actions (edit/delete) + modals.
src/pages/Videos/parts/DeleteVideoConfirmModal.tsx New confirm modal for deleting hub media.
src/pages/Videos/PageHeader.tsx Uses outlet context + hub/campaign-aware campaign header hook.
src/pages/Videos/Metas.tsx Hub-aware metas + upload CTA + device counters + menu changes.
src/pages/Videos/index.tsx Hub/campaign-aware data fetching + navigation slice updates.
src/pages/Videos/ImportMediaModal.tsx New bulk media upload flow for hubs (language + uploads + cleanup).
src/pages/Videos/Empty.tsx Hub-specific empty state + upload CTA.
src/pages/Videos/Content.tsx Hub-aware grouping/expansion + import modal wiring.
src/pages/Video/index.tsx Hub/campaign-aware workspace/entity loading + navigation slice updates.
src/pages/Video/components/TitleDropdownNew.tsx Uses outlet context entity id for tagging calls.
src/pages/Video/components/PageHeader/VideoPagination.tsx Hub/campaign-aware navigation paths + entity context.
src/pages/Video/components/PageHeader/useUsecaseWithVideos.tsx Adapts to new video API shape for device ordering.
src/pages/Video/components/PageHeader/UsecaseSelect.tsx Uses outlet context entity id and hub-aware navigation.
src/pages/Video/components/PageHeader/index.tsx Hub-aware breadcrumbs + entity fetching for header.
src/pages/Video/components/ObservationForm.tsx Uses entityId from outlet context for tag APIs.
src/pages/Video/components/Observation.tsx Hub/campaign-aware deep link URL building.
src/pages/Video/components/EditTagModal.tsx Uses entityId from outlet context for tag patching.
src/pages/Video/Actions.tsx Adds edit-details button + hub-aware metadata rendering.
src/pages/Insights/Widgets.tsx Uses entityId from outlet context.
src/pages/Insights/PageHeader.tsx Hub-aware routes + export button + toasts.
src/pages/Insights/InsightsDrawer/InsightForm.tsx Uses entityId from outlet context for tags query.
src/pages/Insights/InsightsDrawer/index.tsx Uses entityId from outlet context for insights query.
src/pages/Insights/index.tsx Hub/campaign-aware workspace/entity loading + navigation slice updates.
src/pages/Insights/FormProvider.tsx Uses entityId from outlet context for insight create calls.
src/pages/Insights/Collection/Lightbox.tsx Hub-aware observation link routing + device label updates.
src/pages/Insights/Collection/index.tsx Uses entityId from outlet context for observations query.
src/pages/Dashboard/SuggestedHubs.tsx New dashboard section listing hubs across workspace/projects.
src/pages/Dashboard/projectPageHeader.tsx “New activity” now opens modal instead of navigating to templates.
src/pages/Dashboard/Project.tsx Adds SuggestedHubs section and accounts for hubs_count in empty logic.
src/pages/Dashboard/Modals/steps/FormStep.tsx New activity creation form step (project + hub name).
src/pages/Dashboard/Modals/steps/ChooseStep.tsx New activity choose step (launch test vs create hub).
src/pages/Dashboard/Modals/NewActivityModal.tsx New modal to create hub or navigate to templates.
src/pages/Dashboard/index.tsx Adds SuggestedHubs to dashboard.
src/pages/Dashboard/HubItem.tsx Hub card component for SuggestedHubs.
src/pages/Dashboard/headerContent.tsx Header CTA now opens NewActivityModal.
src/pages/Dashboard/CampaignItem.tsx Switches to shared API date formatting helper.
src/pages/Campaign/pageHeader/useCampaign.tsx Adds useCampaignOrHub hook to support both entities.
src/pages/Campaign/pageHeader/Meta/WatcherList/hooks/useAvailableUsers.tsx Attempts hub support in watcher availability lookup.
src/pages/Bugs/Content/BugsTable/components/CompletionTooltip.tsx Moves styled component out of render.
src/locales/it/translation.json Adds hub/media/new-activity keys (mostly empty IT strings).
src/locales/en/translation.json Adds hub/media/new-activity strings and copy updates.
src/features/templates/CampaignsHubsMiddleware.tsx New middleware validating entity + injecting outlet context.
src/features/navigation/types.d.ts Adds hubId and isHub to navigation state type.
src/features/navigation/navigationSlice.ts Adds hubId and isHub actions/state.
src/features/api/index.ts Adds hub endpoints, hub assets endpoints, oauth endpoints, and video schema changes.
src/features/api/customEndpoints/getWorkspaceHubs.ts New endpoint to list hubs across workspace/projects.
src/features/api/customEndpoints/getHubWithWorkspace.ts New endpoint to fetch hub + workspace in one query.
src/features/api/customEndpoints/getCampaignWithWorkspace.ts Minor type cleanup.
src/features/api/apiTags.ts Adds “Videos” tags + invalidation for hub asset mutations.
src/features/api/api.ts Adds “Videos” tag type.
src/common/video/getVideoDeviceLabel.ts Adds shared device label helpers and ordering.
src/common/schema.ts Updates OpenAPI schema for hubs + oauth + video model changes.
src/common/Pages.tsx Adds hub routes and wraps videos/insights/video with middleware.
src/common/date/apiDate.ts Adds shared API date parsing/formatting utilities.
src/common/components/videos/EditVideoModal.tsx New modal to edit hub media details via PATCH hub assets API.
src/common/components/Pipe.tsx Adjusts responsive display styling.
src/common/components/navigation/sidebar/index.tsx Sidebar project count includes hubs_count.
src/common/components/inviteUsers/campaignSettings.tsx Adds hub-aware entity loading for permissions modal.
src/common/components/BugDetail/Meta/index.tsx Adds “unknown” device icon support.
src/common/components/BugDetail/Description.tsx Simplifies Editor usage props.
src/assets/icons/pill-icon-unknown.svg New unknown device icon asset.
src/assets/icons/orange-cloud-btn.svg New activity modal illustration asset.
src/assets/icons/hubs-bg-icon.svg Hub card icon asset.
src/assets/icons/blue-rocket-btn.svg New activity modal illustration asset.
src/assets/hub-empty-state.svg Hub empty state illustration asset.
package.json Updates design-system dependency version range.
package-lock.json Locks updated design-system and cosmiconfig patch update.
Comments suppressed due to low confidence (1)

src/pages/Video/components/PageHeader/UsecaseSelect.tsx:51

  • handleNavigate uses navigate, prefix, and entityId but the useCallback dependency array only includes useUsecasesWithVideos. This can cause stale navigation targets when switching between hubs/campaigns or entities.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/pages/Videos/index.tsx
Comment thread src/pages/Videos/ImportMediaModal.tsx
Comment thread src/pages/Videos/ImportMediaModal.tsx
Comment thread src/pages/Videos/Content.tsx
Comment thread src/pages/Videos/Metas.tsx
Comment thread src/pages/Videos/parts/VideoContainer.tsx
Comment thread src/pages/Videos/parts/VideoContainer.tsx
Comment thread src/pages/Video/Actions.tsx Outdated
Comment thread src/pages/Videos/parts/VideoContainer.tsx
Comment thread src/pages/Campaign/pageHeader/Meta/WatcherList/hooks/useAvailableUsers.tsx Outdated
@sinatragianpaolo
sinatragianpaolo merged commit 4b4246f into master Jun 18, 2026
7 of 23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants