import { useQuery } from '@tanstack/react-query'; import { __ } from '@wordpress/i18n'; import React, { useEffect, useState } from 'react'; import { useLocation, useSearchParams } from 'react-router-dom'; import FilterTabs from '../../../../../assets/js/back-end/components/common/FilterTabs'; import { HeaderLeftSection, HeaderLogo, } from '../../../../../assets/js/back-end/components/common/Header'; import { navLinkStyles } from '../../../../../assets/js/back-end/config/styles'; import { Gear } from '../../../../../assets/js/back-end/constants/images'; import API from '../../../../../assets/js/back-end/utils/api'; import { deepMerge } from '../../../../../assets/js/back-end/utils/utils'; import { urls } from '../constants/urls'; import { multipleCurrencyBackendRoutes } from '../routes/routes'; interface FilterParams { search?: string; status?: string; per_page?: number; page?: number; orderby: string; order: 'asc' | 'desc'; } const tabButtons: FilterTabs = [ { status: 'any', name: __('All Pricing Zones', 'learning-management-system'), link: `${multipleCurrencyBackendRoutes.list}?status=any`, }, { status: 'active', name: __('Active', 'learning-management-system'), link: `${multipleCurrencyBackendRoutes.list}?status=active`, }, { status: 'inactive', name: __('Inactive', 'learning-management-system'), link: `${multipleCurrencyBackendRoutes.list}?status=inactive`, }, { status: 'trash', name: __('Trash', 'learning-management-system'), link: `${multipleCurrencyBackendRoutes.list}?status=trash`, }, { status: 'settings', name: __('Settings', 'learning-management-system'), link: multipleCurrencyBackendRoutes.settings, icon: , }, ]; interface Props { pricing_zones_count?: object; } const LeftHeader: React.FC = ({ pricing_zones_count }) => { const [active, setActive] = useState('any'); const [filterParams, setFilterParams] = useState({ order: 'desc', orderby: 'date', }); const [searchParams] = useSearchParams(); const { pathname } = useLocation(); const currentTab = '/multiple-currency/settings' === pathname ? 'settings' : (searchParams.get('status') ?? 'any'); const pricingZoneAPI = new API(urls.pricingZones); useEffect(() => { if (currentTab) { setFilterParams((prevState) => ({ ...prevState, status: currentTab, })); } }, [currentTab]); const pricingZoneQuery = useQuery({ queryKey: ['pricingZonesList', filterParams], queryFn: () => pricingZoneAPI.list({ ...filterParams, status: currentTab === 'settings' ? 'any' : filterParams?.status, }), ...{ keepPreviousData: true, }, }); const counts = pricingZoneQuery.data?.meta.pricing_zones_count ?? pricing_zones_count; const pricingZoneNavStyles = { ...navLinkStyles, mr: '0px', borderBottom: '2px solid white', }; const onChangeCourseStatus = (status: string) => { setActive(status); setFilterParams( deepMerge(filterParams, { status: status, }), ); }; return ( <> ); }; export default LeftHeader;