feat: Add isPrivate field to AdminProduct and update filtering logic in admin panels
Test Suite / test (24.15.0) (push) Has been cancelled

This commit is contained in:
Nils-Johan Gynther
2026-05-11 19:30:42 +02:00
parent a4f65c6065
commit d05b7da8bc
5 changed files with 17 additions and 7 deletions
@@ -38,13 +38,17 @@ List<AdminProduct> filterSelectableAdminProducts({
required AdminProduct? selectedProduct,
}) {
final ownerFiltered = ownerUserId == null
? products.where((p) => p.ownerId == null).toList()
: products.where((p) => p.ownerId == null || p.ownerId == ownerUserId).toList();
? products.where((p) => p.isPrivate != true).toList()
: products
.where(
(p) => p.isPrivate != true || p.ownerId == ownerUserId,
)
.toList();
final scopeFiltered = switch (scopeFilter) {
ProductScopeFilter.all => ownerFiltered,
ProductScopeFilter.globalOnly => ownerFiltered.where((p) => p.ownerId == null).toList(),
ProductScopeFilter.privateOnly => ownerFiltered.where((p) => p.ownerId != null).toList(),
ProductScopeFilter.globalOnly => ownerFiltered.where((p) => p.isPrivate != true).toList(),
ProductScopeFilter.privateOnly => ownerFiltered.where((p) => p.isPrivate == true).toList(),
};
final source = categoryId == null
@@ -64,7 +68,7 @@ List<ProductOption> toProductOptions(List<AdminProduct> products) {
.map(
(p) => (
id: p.id,
name: p.ownerId == null ? p.displayName : '${p.displayName} (privat)',
name: p.isPrivate == true ? '${p.displayName} (privat)' : p.displayName,
categoryId: p.categoryId,
),
)
@@ -854,6 +854,7 @@ class _InventoryFormDialogState extends State<_InventoryFormDialog> {
name: initial.productName,
canonicalName: initial.productCanonicalName,
ownerId: initial.userId,
isPrivate: null,
categoryId: initial.categoryId,
categoryPath: initial.categoryPath,
status: 'private',
@@ -943,7 +944,7 @@ class _InventoryFormDialogState extends State<_InventoryFormDialog> {
if (value == null) {
_productScopeFilter = ProductScopeFilter.globalOnly;
final selected = _productById(_productId);
if (selected?.ownerId != null) {
if (selected?.isPrivate == true) {
_productId = null;
}
}
@@ -565,6 +565,7 @@ class _PantryFormDialogState extends State<_PantryFormDialog> {
name: initial.productName,
canonicalName: initial.productCanonicalName,
ownerId: initial.userId,
isPrivate: null,
categoryId: initial.categoryId,
categoryPath: initial.categoryPath,
status: 'private',
@@ -645,7 +646,7 @@ class _PantryFormDialogState extends State<_PantryFormDialog> {
if (value == null) {
_productScopeFilter = ProductScopeFilter.globalOnly;
final selected = _productById(_productId);
if (selected?.ownerId != null) {
if (selected?.isPrivate == true) {
_productId = null;
}
}