From 16dbc15c3c07c7fb0a043cb6823bcfa95ef4e5ae Mon Sep 17 00:00:00 2001 From: taoerman Date: Sun, 4 Jan 2026 19:34:20 -0800 Subject: [PATCH 1/3] Use channelVersion objects instead of special permission ids --- .../composables/useSpecialPermissions.js | 36 ++++++++----------- .../index.vue | 13 +++++-- .../licenseCheck/SpecialPermissionsList.vue | 7 +--- .../frontend/shared/styles/main.scss | 2 +- 4 files changed, 27 insertions(+), 31 deletions(-) diff --git a/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/composables/useSpecialPermissions.js b/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/composables/useSpecialPermissions.js index 977d26f10e..3eeb898e7f 100644 --- a/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/composables/useSpecialPermissions.js +++ b/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/composables/useSpecialPermissions.js @@ -5,10 +5,10 @@ const ITEMS_PER_PAGE = 3; /** * Composable that fetches and paginates audited special-permissions licenses - * for a given set of permission IDs. + * for a given channel version ID. * - * @param {Array|import('vue').Ref>} permissionIds - * A list (or ref to a list) of special-permissions license IDs to fetch. + * @param {string|number|import('vue').Ref|null} channelVersionId + * The ChannelVersion ID to fetch special permissions for via ManyToMany relationship. * * @returns {{ * permissions: import('vue').Ref>, @@ -23,7 +23,7 @@ const ITEMS_PER_PAGE = 3; * Reactive state for the fetched, flattened permissions and pagination * helpers used by `SpecialPermissionsList.vue`. */ -export function useSpecialPermissions(channelVersionId, permissionIds) { +export function useSpecialPermissions(channelVersionId) { const permissions = ref([]); const isLoading = ref(false); const error = ref(null); @@ -39,30 +39,24 @@ export function useSpecialPermissions(channelVersionId, permissionIds) { return permissions.value.slice(start, end); }); - async function fetchPermissions(versionId, ids) { + async function fetchPermissions(versionId) { isLoading.value = true; error.value = null; permissions.value = []; try { - let response = []; if (versionId) { - response = await AuditedSpecialPermissionsLicense.fetchCollection({ + const response = await AuditedSpecialPermissionsLicense.fetchCollection({ channel_version: versionId, distributable: false, }); - } else if (ids && ids.length > 0) { - response = await AuditedSpecialPermissionsLicense.fetchCollection({ - by_ids: ids.join(','), - distributable: false, - }); - } - permissions.value = response.map(permission => ({ - id: permission.id, - description: permission.description, - distributable: permission.distributable, - })); + permissions.value = response.map(permission => ({ + id: permission.id, + description: permission.description, + distributable: permission.distributable, + })); + } } catch (err) { error.value = err; permissions.value = []; @@ -84,9 +78,9 @@ export function useSpecialPermissions(channelVersionId, permissionIds) { } watch( - [() => unref(channelVersionId), () => unref(permissionIds)], - ([versionId, ids]) => { - fetchPermissions(versionId, ids); + () => unref(channelVersionId), + (versionId) => { + fetchPermissions(versionId); }, { immediate: true }, ); diff --git a/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/index.vue b/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/index.vue index 6f21f15bcb..a6e6b11f37 100644 --- a/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/index.vue +++ b/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/index.vue @@ -161,10 +161,9 @@ :licenses="includedLicenses" />
@@ -431,6 +430,13 @@ return channelVersion; }); + const channelVersionId = computed(() => { + if (versionDetail.value?.id) { + return versionDetail.value.id; + } + return null; + }); + const { isLoading: licenseAuditIsLoading, isFinished: licenseAuditIsFinished, @@ -574,6 +580,7 @@ isCurrentVersionAlreadySubmitted, canBeEdited, displayedVersion, + channelVersionId, canBeSubmitted, publishedDataIsLoading, publishedDataIsFinished, diff --git a/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/licenseCheck/SpecialPermissionsList.vue b/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/licenseCheck/SpecialPermissionsList.vue index 5bea675d1f..a66f9ea0b8 100644 --- a/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/licenseCheck/SpecialPermissionsList.vue +++ b/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/licenseCheck/SpecialPermissionsList.vue @@ -87,7 +87,7 @@ totalPages, nextPage, previousPage, - } = useSpecialPermissions(props.channelVersionId, props.permissionIds); + } = useSpecialPermissions(props.channelVersionId); function togglePermission(permissionId) { const currentChecked = [...props.value]; @@ -133,11 +133,6 @@ required: false, default: null, }, - permissionIds: { - type: Array, - required: false, - default: () => [], - }, value: { type: Array, required: false, diff --git a/contentcuration/contentcuration/frontend/shared/styles/main.scss b/contentcuration/contentcuration/frontend/shared/styles/main.scss index 763eaf873a..401fc5d0c5 100644 --- a/contentcuration/contentcuration/frontend/shared/styles/main.scss +++ b/contentcuration/contentcuration/frontend/shared/styles/main.scss @@ -1,5 +1,5 @@ @import '~material-icons/iconfont/material-icons.css'; -@import '~kolibri-design-system/lib/styles/common'; +@import '~kolibri-design-system/lib/styles/definitions'; @font-face { font-family: 'Noto Sans'; From ef6bbf321dee99eeeb5e1702962cef8255cb637f Mon Sep 17 00:00:00 2001 From: "pre-commit-ci-lite[bot]" <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Date: Mon, 5 Jan 2026 03:39:20 +0000 Subject: [PATCH 2/3] [pre-commit.ci lite] apply automatic fixes --- .../composables/useSpecialPermissions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/composables/useSpecialPermissions.js b/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/composables/useSpecialPermissions.js index 3eeb898e7f..6e27eedcbe 100644 --- a/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/composables/useSpecialPermissions.js +++ b/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/composables/useSpecialPermissions.js @@ -79,7 +79,7 @@ export function useSpecialPermissions(channelVersionId) { watch( () => unref(channelVersionId), - (versionId) => { + versionId => { fetchPermissions(versionId); }, { immediate: true }, From 154ccb86d050304af1245752908005eeeaeda891 Mon Sep 17 00:00:00 2001 From: taoerman Date: Sun, 4 Jan 2026 19:50:28 -0800 Subject: [PATCH 3/3] fix linting --- .../sidePanels/SubmitToCommunityLibrarySidePanel/index.vue | 2 -- 1 file changed, 2 deletions(-) diff --git a/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/index.vue b/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/index.vue index a6e6b11f37..557e1455db 100644 --- a/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/index.vue +++ b/contentcuration/contentcuration/frontend/channelEdit/components/sidePanels/SubmitToCommunityLibrarySidePanel/index.vue @@ -441,7 +441,6 @@ isLoading: licenseAuditIsLoading, isFinished: licenseAuditIsFinished, invalidLicenses, - specialPermissions, includedLicenses, checkAndTriggerAudit: checkAndTriggerLicenseAudit, } = useLicenseAudit(props.channel, currentChannelVersion); @@ -589,7 +588,6 @@ licenseAuditIsLoading, licenseAuditIsFinished, invalidLicenses, - specialPermissions, includedLicenses, onSubmit, // Translation functions