loan order working

This commit is contained in:
2025-07-04 22:59:42 +05:00
parent 11d50c51ef
commit 6d79420f68
10 changed files with 583 additions and 5 deletions

View File

@@ -0,0 +1,52 @@
import React, { createContext, useContext, useState, useEffect } from 'react';
import { API_CONFIG } from '../constants/api';
const BaseEnumsContext = createContext({ enums: null, refresh: () => {}, getEnums: async () => null });
export const BaseEnumsProvider = ({ children }) => {
const [enums, setEnums] = useState(null);
const [lastFetched, setLastFetched] = useState(0);
const fetchEnums = async () => {
try {
const res = await fetch(`${API_CONFIG.BASE_URL}${API_CONFIG.ENDPOINTS.ENUMS}`);
const json = await res.json();
setEnums(json);
setLastFetched(Date.now());
} catch (e) {
console.warn('Failed to fetch base-app-enums', e.message);
}
};
// initial fetch and 60s refresh
useEffect(() => {
fetchEnums();
const id = setInterval(fetchEnums, 60000);
return () => clearInterval(id);
}, []);
const getEnums = async () => {
if (!enums || Date.now() - lastFetched > 60000) {
await fetchEnums();
}
return enums;
};
const getLabel = (category, key) => {
if (!enums || !enums[category]) return key;
return enums[category][key] ?? key;
};
const getOptions = (category) => {
if (!enums || !enums[category]) return [];
return Object.entries(enums[category]).map(([value, label]) => ({ value, label }));
};
return (
<BaseEnumsContext.Provider value={{ enums, refresh: fetchEnums, getEnums, getLabel, getOptions }}>
{children}
</BaseEnumsContext.Provider>
);
};
export const useBaseEnums = () => useContext(BaseEnumsContext);