Initial commit - PromptTech
This commit is contained in:
44
frontend/src/utils/apiCache.js
Normal file
44
frontend/src/utils/apiCache.js
Normal file
@@ -0,0 +1,44 @@
|
||||
// Simple in-memory cache for API responses
|
||||
const cache = new Map();
|
||||
const CACHE_DURATION = 60000; // 60 seconds
|
||||
|
||||
export const getCached = (key) => {
|
||||
const cached = cache.get(key);
|
||||
if (!cached) return null;
|
||||
|
||||
const isExpired = Date.now() - cached.timestamp > CACHE_DURATION;
|
||||
if (isExpired) {
|
||||
cache.delete(key);
|
||||
return null;
|
||||
}
|
||||
|
||||
return cached.data;
|
||||
};
|
||||
|
||||
export const setCache = (key, data) => {
|
||||
cache.set(key, {
|
||||
data,
|
||||
timestamp: Date.now(),
|
||||
});
|
||||
};
|
||||
|
||||
export const clearCache = (key) => {
|
||||
if (key) {
|
||||
cache.delete(key);
|
||||
} else {
|
||||
cache.clear();
|
||||
}
|
||||
};
|
||||
|
||||
// Debounce function for API calls
|
||||
export const debounce = (func, wait) => {
|
||||
let timeout;
|
||||
return function executedFunction(...args) {
|
||||
const later = () => {
|
||||
clearTimeout(timeout);
|
||||
func(...args);
|
||||
};
|
||||
clearTimeout(timeout);
|
||||
timeout = setTimeout(later, wait);
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user