Files
WooNooW/admin-spa/src/lib/useDummyData.ts
dwindown 232059e928 feat: Complete Dashboard API Integration with Analytics Controller
 Features:
- Implemented API integration for all 7 dashboard pages
- Added Analytics REST API controller with 7 endpoints
- Full loading and error states with retry functionality
- Seamless dummy data toggle for development

📊 Dashboard Pages:
- Customers Analytics (complete)
- Revenue Analytics (complete)
- Orders Analytics (complete)
- Products Analytics (complete)
- Coupons Analytics (complete)
- Taxes Analytics (complete)
- Dashboard Overview (complete)

🔌 Backend:
- Created AnalyticsController.php with REST endpoints
- All endpoints return 501 (Not Implemented) for now
- Ready for HPOS-based implementation
- Proper permission checks

🎨 Frontend:
- useAnalytics hook for data fetching
- React Query caching
- ErrorCard with retry functionality
- TypeScript type safety
- Zero build errors

📝 Documentation:
- DASHBOARD_API_IMPLEMENTATION.md guide
- Backend implementation roadmap
- Testing strategy

🔧 Build:
- All pages compile successfully
- Production-ready with dummy data fallback
- Zero TypeScript errors
2025-11-04 11:19:00 +07:00

45 lines
1.1 KiB
TypeScript

/**
* Dummy Data Toggle Hook
*
* Provides a global toggle for using dummy data vs real API data
* Useful for development and showcasing charts when store has no data
*/
import { create } from 'zustand';
import { persist } from 'zustand/middleware';
interface DummyDataStore {
useDummyData: boolean;
toggleDummyData: () => void;
setDummyData: (value: boolean) => void;
}
export const useDummyDataStore = create<DummyDataStore>()(
persist(
(set) => ({
useDummyData: false,
toggleDummyData: () => set((state) => ({ useDummyData: !state.useDummyData })),
setDummyData: (value: boolean) => set({ useDummyData: value }),
}),
{
name: 'woonoow-dummy-data',
}
)
);
/**
* Hook to check if dummy data should be used
*/
export function useDummyData() {
const { useDummyData } = useDummyDataStore();
return useDummyData;
}
/**
* Hook to toggle dummy data
*/
export function useDummyDataToggle() {
const { useDummyData, toggleDummyData, setDummyData } = useDummyDataStore();
return { useDummyData, toggleDummyData, setDummyData };
}