Channel cards to unstable#5696
Conversation
Unstable to channel cards branch
KDS has recently started providing visuallyhidden so is not needed.
and related re-organization of files and tests. Also adds more tests to some components.
fb06598 to
bec64b0
Compare
e5ef964 to
6588fd0
Compare
shape of loaded cards.
f4dae95 to
18f4f26
Compare
16ab7ae to
82f701b
Compare
| loading.value = true; | ||
| store.dispatch('channel/loadChannelList', { listType }).then(() => { | ||
| loading.value = false; | ||
| }); |
There was a problem hiding this comment.
If this fails to load (like it times out), what happens from the user perspective?
There was a problem hiding this comment.
This is based on the previous implementation:
but I haven't previewed error states ~ will be good to consider.
I looked into it more now and I feel unclear what is expected behavior and how it should be treated technically. From the code, unless I am missing something, either we didn't have error handling or perhaps there was an intention for the full page error logic to get triggered in case of problems:
even though I think for that to work we should call handleAxiosError via catch.
In any case, this is just guessing. Do you have any recommendations on how to simulate timeouts or generally backend errors in a straightforward way so I could preview how it behaved before?
I think that snackbar would probably be better than a full page error anyway though. I will discuss with designers. If it'd be fine I would address this as a follow-up.
There was a problem hiding this comment.
Actually sorry, I realized we avoid snackbars for errors. So I think as the most immediate step would be to confirm it works / fix the full page error. Still will appreciate any tips on how to simulate errors.
contentcuration/contentcuration/frontend/channelList/views/Channel/StudioChannelCard/index.vue
Outdated
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels/index.vue
Outdated
Show resolved
Hide resolved
|
Resolved. |
contentcuration/contentcuration/frontend/channelList/views/Channel/StudioChannelsPage/index.vue
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/channelList/views/Channel/CatalogList.vue
Outdated
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/channelList/views/Channel/CatalogList.vue
Outdated
Show resolved
Hide resolved
akolson
left a comment
There was a problem hiding this comment.
I think code is clear and understandable. Thanks Misha for this refactor!
to prevent unnecessary memory usage and to improve architecture. Relatedly remove props for configuring footer in favor of the footer slot to make communication between the modals and footer buttons straightforward.
in channel token modal and remove unnecessary token tracking handlers from components (StudioCopyToken handles tracking)
contentcuration/contentcuration/frontend/channelList/views/Channel/StudioMyChannels/index.vue
Outdated
Show resolved
Hide resolved
rtibblesbot
left a comment
There was a problem hiding this comment.
Well-structured PR that replaces Vuetify-based channel cards with KDS KCard across four pages, with a clean architectural decomposition from monolithic ChannelList+ChannelItem into focused per-page components.
CI passing. Screenshots verified for My Channels, Starred, View-only, and Content Library — all look visually consistent and complete.
Suggestions:
- Missing
notranslateclass anddir="auto"on channel description inStudioChannelCard(see inline comment) - Missing error handling in
useChannelListcomposable — rejected dispatch leaves loading state stuck (see inline comment)
Praise:
- Excellent decomposition into
StudioMyChannels,StudioStarredChannels,StudioViewOnlyChannelswith sharedStudioChannelCardandStudioChannelsPagelayout - Thorough test suites using
@testing-library/vuecovering dropdown menus, modal flows, navigation, and conditional rendering - Good extraction of
useChannelListcomposable for shared channel-loading logic
Note: As mentioned in the PR description, the temporary KDS fork in package.json needs to be reverted before merge.
@rtibblesbot's comments are generated by an LLM, and should be evaluated accordingly
How was this generated?
Reviewed the pull request diff checking for:
- Correctness: bugs, edge cases, undocumented behavior, resource leaks, hardcoded values
- Design: unnecessary complexity, naming, readability, comment accuracy, redundant state
- Architecture: duplicated concerns, minimal interfaces, composition over inheritance
- Testing: behavior-based assertions, mocks only at hard boundaries, accurate coverage
- Completeness: missing dependencies, unupdated usages, i18n, accessibility, security
- Principles: DRY (same reason to change), SRP, Rule of Three (no premature abstraction)
- Checked CI status and linked issue acceptance criteria
- For UI changes: inspected screenshots for layout, visual completeness, and consistency
contentcuration/contentcuration/frontend/channelList/views/Channel/StudioChannelCard/index.vue
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/channelList/composables/useChannelList.js
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/channelList/views/Channel/StudioChannelsPage/index.vue
Show resolved
Hide resolved
...ation/frontend/channelList/views/Channel/StudioMyChannels/__tests__/StudioMyChannels.spec.js
Show resolved
Hide resolved
rtibblesbot
left a comment
There was a problem hiding this comment.
Clean follow-up addressing prior feedback. CI pending (linting, frontend build, frontend tests). Screenshots verified — all four pages look visually complete and consistent.
1 prior finding(s) resolved.
Suggestions:
- Empty-state "No channels found" may not display when a user has zero channels (see inline comment on StudioChannelsPage)
Praise:
- StudioStarredChannels tests nicely cover both editable and view-only channel behaviors within the same page, testing the conditional dropdown logic thoroughly
@rtibblesbot's comments are generated by an LLM, and should be evaluated accordingly
How was this generated?
Compared the current PR state against findings from a prior review:
- Retrieved prior bot reviews deterministically via the GitHub API
- Classified each prior finding as RESOLVED, UNADDRESSED, ACKNOWLEDGED, or CONTESTED
- Only raised NEW findings for newly introduced code
- Reviewed the pull request diff checking for correctness, design, architecture, testing, completeness, and adherence to DRY/SRP principles
- Checked CI status and linked issue acceptance criteria
contentcuration/contentcuration/frontend/channelList/views/Channel/StudioChannelsPage/index.vue
Show resolved
Hide resolved
...tend/channelList/views/Channel/StudioStarredChannels/__tests__/StudioStarredChannels.spec.js
Show resolved
Hide resolved
rtibblesbot
left a comment
There was a problem hiding this comment.
Clean delta — prior feedback addressed.
CI: linting and frontend tests passing; build frontend assets still pending. Screenshots previously verified.
2 prior finding(s) resolved.
Suggestions:
- None
Reminders:
- KDS fork in
package.jsonstill needs reverting before merge (as noted in PR description)
@rtibblesbot's comments are generated by an LLM, and should be evaluated accordingly
How was this generated?
Compared the current PR state against findings from a prior review:
- Retrieved prior bot reviews deterministically via the GitHub API
- Classified each prior finding as RESOLVED, UNADDRESSED, ACKNOWLEDGED, or CONTESTED
- Only raised NEW findings for newly introduced code
- Reviewed the pull request diff checking for correctness, design, architecture, testing, completeness, and adherence to DRY/SRP principles
- Checked CI status and linked issue acceptance criteria
Summary
Replaces Vuetify-based implementation by
KCardon My Channels, Starred Channels, View-only Channels, and Content Library pages. On this opportunity introduces a new architecture of the related pages and resolves problems with understanding & maintaining monolithic and condition-heavyChannelList+ChannelItem.References
Closes #5227
Closes #5524
Closes #5525
Closes #5526
Reviewer guidance
Code review:
Local preview:
pnpm installfirstNotes
Before merging, [TODO REVERT] Temporarily install KDS fork commit needs to be reverted and a newly released KDS version with learningequality/kolibri-design-system#1203 installed.