-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathuseMaintenanceStatus.js
38 lines (31 loc) · 1.04 KB
/
useMaintenanceStatus.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import { useState, useEffect } from 'react';
import { getMaintenanceStatus } from '../apis/Account';
const POLLING_INTERVAL = 5 * 60 * 1000; // 5 minutes
const useMaintenanceStatus = () => {
const [maintenance, setMaintenance] = useState(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
const fetchMaintenanceStatus = async () => {
try {
const response = await getMaintenanceStatus();
if (response.success && response.maintenance?.length > 0) {
setMaintenance(response.maintenance[0]);
} else {
setMaintenance(null);
}
setError(null);
} catch (err) {
setError(err);
console.error('Error fetching maintenance status:', err);
} finally {
setLoading(false);
}
};
useEffect(() => {
fetchMaintenanceStatus();
const interval = setInterval(fetchMaintenanceStatus, POLLING_INTERVAL);
return () => clearInterval(interval);
}, []);
return { maintenance, loading, error };
};
export default useMaintenanceStatus;