diff --git a/src/lib/components/admin/Settings/Models.svelte b/src/lib/components/admin/Settings/Models.svelte index 7c480028ac..56ef8ce4f7 100644 --- a/src/lib/components/admin/Settings/Models.svelte +++ b/src/lib/components/admin/Settings/Models.svelte @@ -69,6 +69,15 @@ const perPage = 30; let currentPage = 1; + const isPublicModel = (model) => { + return (model?.access_grants ?? []).some( + (g) => + g.principal_type === 'user' && + g.principal_id === '*' && + g.permission === 'read' + ); + }; + $: if (models) { filteredModels = models .filter((m) => searchValue === '' || m.name.toLowerCase().includes(searchValue.toLowerCase())) @@ -77,6 +86,8 @@ if (viewOption === 'disabled') return !(m?.is_active ?? true); if (viewOption === 'visible') return !(m?.meta?.hidden ?? false); if (viewOption === 'hidden') return m?.meta?.hidden === true; + if (viewOption === 'public') return isPublicModel(m); + if (viewOption === 'private') return !isPublicModel(m); return true; // All }) .sort((a, b) => { diff --git a/src/lib/components/admin/Settings/Models/AdminViewSelector.svelte b/src/lib/components/admin/Settings/Models/AdminViewSelector.svelte index 5778ba21ab..b3c8006745 100644 --- a/src/lib/components/admin/Settings/Models/AdminViewSelector.svelte +++ b/src/lib/components/admin/Settings/Models/AdminViewSelector.svelte @@ -16,7 +16,9 @@ { value: 'enabled', label: $i18n.t('Enabled') }, { value: 'disabled', label: $i18n.t('Disabled') }, { value: 'visible', label: $i18n.t('Visible') }, - { value: 'hidden', label: $i18n.t('Hidden') } + { value: 'hidden', label: $i18n.t('Hidden') }, + { value: 'public', label: $i18n.t('Public') }, + { value: 'private', label: $i18n.t('Private') } ];