66 lines
2.2 KiB
TypeScript
66 lines
2.2 KiB
TypeScript
/**
|
|
* Standard Refresh Intervals
|
|
* All intervals in milliseconds
|
|
*
|
|
* These intervals are harmonized across all widgets and notifications
|
|
* to prevent redundant API calls and ensure consistent user experience.
|
|
*/
|
|
|
|
export const REFRESH_INTERVALS = {
|
|
// High priority - real-time updates
|
|
NOTIFICATIONS: 30000, // 30 seconds (reduced from 60s for better UX)
|
|
NOTIFICATIONS_COUNT: 30000, // 30 seconds (synchronized with notifications)
|
|
PAROLE: 30000, // 30 seconds (chat messages - unchanged)
|
|
NAVBAR_TIME: 1000, // 1 second (navigation bar time display - real-time)
|
|
|
|
// Medium priority - frequent but not real-time
|
|
EMAIL: 60000, // 1 minute (was manual only - now auto-refresh)
|
|
DUTIES: 120000, // 2 minutes (was manual only - now auto-refresh)
|
|
|
|
// Low priority - less frequent updates
|
|
CALENDAR: 300000, // 5 minutes (unchanged - calendar events don't change often)
|
|
NEWS: 600000, // 10 minutes (was manual only - now auto-refresh)
|
|
|
|
// Minimum interval between refreshes (prevents spam)
|
|
MIN_INTERVAL: 1000, // 1 second - minimum time between same resource refreshes
|
|
} as const;
|
|
|
|
/**
|
|
* Get refresh interval for a resource
|
|
*
|
|
* @param resource - The resource identifier
|
|
* @returns The refresh interval in milliseconds
|
|
*/
|
|
export function getRefreshInterval(resource: string): number {
|
|
switch (resource) {
|
|
case 'notifications':
|
|
return REFRESH_INTERVALS.NOTIFICATIONS;
|
|
case 'notifications-count':
|
|
return REFRESH_INTERVALS.NOTIFICATIONS_COUNT;
|
|
case 'parole':
|
|
return REFRESH_INTERVALS.PAROLE;
|
|
case 'navbar-time':
|
|
return REFRESH_INTERVALS.NAVBAR_TIME;
|
|
case 'email':
|
|
return REFRESH_INTERVALS.EMAIL;
|
|
case 'duties':
|
|
return REFRESH_INTERVALS.DUTIES;
|
|
case 'calendar':
|
|
return REFRESH_INTERVALS.CALENDAR;
|
|
case 'news':
|
|
return REFRESH_INTERVALS.NEWS;
|
|
default:
|
|
return 60000; // Default: 1 minute
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Convert interval to human-readable format
|
|
*/
|
|
export function formatInterval(ms: number): string {
|
|
if (ms < 1000) return `${ms}ms`;
|
|
if (ms < 60000) return `${Math.floor(ms / 1000)}s`;
|
|
if (ms < 3600000) return `${Math.floor(ms / 60000)}m`;
|
|
return `${Math.floor(ms / 3600000)}h`;
|
|
}
|