filter fixes

This commit is contained in:
IGNY8 VPS (Salman)
2026-01-19 10:49:01 +00:00
parent 8c8f2df5dd
commit cbb32b1c9d
14 changed files with 287 additions and 239 deletions

View File

@@ -99,6 +99,7 @@ export default function Approved() {
// Load dynamic filter options based on current site's data and applied filters
// This implements cascading filters - each filter's options reflect what's available
// given the other currently applied filters
// APPROVED PAGE: Always constrain to approved+published statuses
const loadFilterOptions = useCallback(async (currentFilters?: {
status?: string;
site_status?: string;
@@ -109,7 +110,11 @@ export default function Approved() {
if (!activeSite) return;
try {
const options = await fetchWriterContentFilterOptions(activeSite.id, currentFilters);
// Always pass status__in to constrain filter options to approved/published content only
const options = await fetchWriterContentFilterOptions(activeSite.id, {
...currentFilters,
status__in: 'approved,published', // Base constraint for this page
});
setStatusOptions(options.statuses || []);
setSiteStatusOptions(options.site_statuses || []);
setContentTypeOptions(options.content_types || []);
@@ -119,7 +124,7 @@ export default function Approved() {
}
}, [activeSite]);
// Load filter options when site changes (initial load with no filters)
// Load filter options when site changes (initial load with approved/published constraint)
useEffect(() => {
loadFilterOptions();
}, [activeSite]);
@@ -175,6 +180,7 @@ export default function Approved() {
...(searchTerm && { search: searchTerm }),
// Default to approved+published if no status filter selected
...(statusFilter ? { status: statusFilter } : { status__in: 'approved,published' }),
...(siteStatusFilter && { site_status: siteStatusFilter }),
...(contentTypeFilter && { content_type: contentTypeFilter }),
...(contentStructureFilter && { content_structure: contentStructureFilter }),
page: currentPage,
@@ -184,13 +190,7 @@ export default function Approved() {
const data: ContentListResponse = await fetchContent(filters);
// Client-side filter for site_status if needed (backend may not support this filter yet)
let filteredResults = data.results || [];
if (siteStatusFilter) {
filteredResults = filteredResults.filter(c => c.site_status === siteStatusFilter);
}
setContent(filteredResults);
setContent(data.results || []);
setTotalCount(data.count || 0);
setTotalPages(Math.ceil((data.count || 0) / pageSize));
@@ -771,6 +771,14 @@ export default function Approved() {
setCurrentPage(1);
}
}}
onFilterReset={() => {
setSearchTerm('');
setStatusFilter('');
setSiteStatusFilter('');
setContentTypeFilter('');
setContentStructureFilter('');
setCurrentPage(1);
}}
pagination={{
currentPage,
totalPages,