import { AlertOutlined } from "@ant-design/icons";
import { Alert, Button, Col, Row, Space } from "antd";
import i18n from "i18next";
import React, { useEffect } from "react";
import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { selectUpdateAvailable } from "../../redux/application/application.selectors";
import { useRegisterSW } from "virtual:pwa-register/react";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
const mapStateToProps = createStructuredSelector({
updateAvailable: selectUpdateAvailable
});
const mapDispatchToProps = (dispatch) => ({
// setUserLanguage: language => dispatch(setUserLanguage(language))
});
export function UpdateAlert({ updateAvailable }) {
const { t } = useTranslation();
const {
offlineReady: [offlineReady],
needRefresh: [needRefresh],
updateServiceWorker
} = useRegisterSW({
onRegistered(r) {
console.log("SW Registered:", r);
if (r) {
setInterval(
() => {
r.update();
},
10 * 60 * 1000
);
}
},
onRegisterError(error) {
console.error("SW registration error", error);
}
});
useEffect(() => {
if (import.meta.env.DEV) {
console.log(`SW Status => Refresh? ${needRefresh} - offlineReady? ${offlineReady}`);
}
}, [needRefresh, offlineReady]);
if (!needRefresh) return null;
return (
}
description={
{t("general.messages.newversionmessage", {
app: InstanceRenderManager({
imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)",
promanager: "$t(titles.promanager)"
})
})}
}
closable={false}
type="warning"
/>
);
}
export default connect(mapStateToProps, mapDispatchToProps)(UpdateAlert);