@equinor/mad-core
Version:
Core library for the Mobile App Delivery team
59 lines (56 loc) • 1.76 kB
JavaScript
import {
getMadCommonBaseUrl
} from "./chunk-LNJQIWAH.js";
import {
getConfig
} from "./chunk-WWNTKXBS.js";
// src/components/service-message/hooks/useFetchServiceMessage.ts
import { useEffect, useRef, useState } from "react";
var useFetchServiceMessage = () => {
const [serviceMessage, setServiceMessage] = useState();
const [isDismissed, setIsDismissed] = useState(false);
const [expansionEnabled, setExpansionEnabled] = useState(false);
const [isExpanded, setIsExpanded] = useState(false);
const [isError, setIsError] = useState(false);
const lastInterval = useRef(void 0);
useEffect(() => {
function fetchServiceMessage() {
const { currentEnvironment, servicePortalName } = getConfig();
fetch(`${getMadCommonBaseUrl(currentEnvironment)}/ServiceMessage/${servicePortalName}`).then(
(res) => res.json().then((data) => {
if (!data.message) return;
if (!serviceMessage || data.alertName !== serviceMessage.alertName) {
setServiceMessage(data);
setIsDismissed(false);
setExpansionEnabled(false);
setIsExpanded(false);
setIsError(false);
}
})
).catch(() => {
setIsError(true);
});
}
if (!lastInterval.current) fetchServiceMessage();
if (lastInterval.current) clearInterval(lastInterval.current);
lastInterval.current = setInterval(() => {
fetchServiceMessage();
}, 6e4);
return () => {
clearInterval(lastInterval.current);
};
}, [serviceMessage]);
return {
serviceMessage,
isDismissed,
setIsDismissed,
expansionEnabled,
setExpansionEnabled,
isExpanded,
setIsExpanded,
isError
};
};
export {
useFetchServiceMessage
};