Add front-end - #4654
Conversation
📝 WalkthroughWalkthroughThe PR adds a flag-gated v3 album-list flow for v8 consumers. It introduces shared album state, nested-tree operations, cached thumbnails, picker integration, cache invalidation, Fix Tree and Bulk Album Edit rewiring, reusable admin tile components, and root markup cleanup. ChangesAlbum Listing v3
Admin dashboard components
Markup cleanup
Estimated code review effort: 4 (Complex) | ~60 minutes Merge Risk: 🟡 Moderate · up to The PR changes album-tree requests and related editing UI, but Fix Tree still uses the v3 request when the feature flag is off, so the default behavior may be broken; merge should wait for that path to be corrected or explicitly accepted. The type-contract and stale-breadcrumb issues are bounded follow-ups. Poem
🚥 Pre-merge checks | ✅ 1✅ Passed checks (1 passed)
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 |
Codecov Report❌ Patch coverage is 🚀 New features to boost your workflow:
|
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
fa47a95 to
6ff0ee3
Compare
There was a problem hiding this comment.
Actionable comments posted: 10
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
resources/js/v8/views/BulkAlbumEdit.vue (1)
573-578: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick winInvalidate the shared album list after a successful rename.
saveTitle()updatesalbumsandfullAlbums, but it does not invalidateAlbumListState.SearchTargetAlbum.vuebuilds breadcrumbs from that store, so it can display the old title after this rename succeeds.Call
useAlbumListStore().invalidate()in the rename success path.
🧹 Nitpick comments (1)
resources/js/v8/components/admin/AdminTileLink.vue (1)
11-14: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winUse a PrimeVue component for the badge.
This new component introduces Nuxt UI
UChip. Replace it with the project-approved PrimeVue component.As per coding guidelines: “Use TypeScript in composition API for Vue3 and use PrimeVue for UI components.”
Source: Coding guidelines
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 1d29eb21-930f-4156-a77b-21d0b7af5203
⛔ Files ignored due to path filters (1)
package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (35)
docs/specs/4-architecture/features/058-album-listing-v3-adoption/plan.mddocs/specs/4-architecture/features/058-album-listing-v3-adoption/spec.mddocs/specs/4-architecture/features/058-album-listing-v3-adoption/tasks.mddocs/specs/4-architecture/open-questions.mdpackage.jsonresources/js/lychee.d.tsresources/js/services/album-list-v3-service.tsresources/js/services/constants.tsresources/js/services/thumb-asset-service.tsresources/js/stores/AlbumListState.tsresources/js/stores/LycheeState.tsresources/js/v8/components/admin/AdminStatTile.vueresources/js/v8/components/admin/AdminTileLink.vueresources/js/v8/components/forms/album/AlbumDelete.vueresources/js/v8/components/forms/album/AlbumMove.vueresources/js/v8/components/forms/album/AlbumVisibility.vueresources/js/v8/components/forms/album/SearchTargetAlbum.vueresources/js/v8/components/forms/album/Unlock.vueresources/js/v8/components/forms/auth/LoginForm.vueresources/js/v8/components/forms/gallery-dialogs/AlbumMergeDialog.vueresources/js/v8/components/forms/gallery-dialogs/DeleteDialog.vueresources/js/v8/components/forms/gallery-dialogs/MoveDialog.vueresources/js/v8/components/icons/PiMiniIcon.vueresources/js/v8/components/maintenance/FixTreeLine.vueresources/js/v8/components/modals/ImportFromServer.vueresources/js/v8/components/modals/WebauthnModal.vueresources/js/v8/components/thumbs/Thumb.vueresources/js/v8/composables/album/treeOperations.tsresources/js/v8/composables/useAdminTiles.tsresources/js/v8/menus/LeftMenu.vueresources/js/v8/views/BulkAlbumEdit.vueresources/js/v8/views/FixTree.vueresources/js/v8/views/RegisterPage.vueresources/js/v8/views/admin/AdminDashboard.vueresources/views/vueapp.blade.php
💤 Files with no reviewable changes (1)
- resources/js/v8/components/maintenance/FixTreeLine.vue
Included review availability: Your plan provides up to 8 included reviews per hour; 7 remain after this review.
There was a problem hiding this comment.
🧹 Nitpick comments (1)
resources/js/services/thumb-asset-service.ts (1)
88-93: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAlign the API base URL rule.
Line 89 uses
Constants.getApiUrlV3()instead of the requiredConstants.getApiUrl(). Since this request targets a v3 endpoint, update the coding guideline to allowgetApiUrlV3()for v3 services, or change the implementation if the endpoint is available through the required base URL.As per coding guidelines, “Axios requests should be in the services/ directory and use
${Constants.getApiUrl()}to specify the base URL”.Source: Coding guidelines
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: a6059748-c869-4682-a355-cc9c12fa21a7
📒 Files selected for processing (3)
resources/js/services/thumb-asset-service.tsresources/js/stores/AlbumListState.tsresources/js/v8/components/admin/AdminTileLink.vue
Included review availability: Your plan provides up to 8 included reviews per hour; 7 remain after this review.
Summary by CodeRabbit
New Features
Bug Fixes
Style