{
if (loc.pathname === location.pathname) return false;
return t("general.messages.unsavedchangespopup");
diff --git a/client/src/index.js b/client/src/index.js
index 823660345..003d14589 100644
--- a/client/src/index.js
+++ b/client/src/index.js
@@ -5,7 +5,7 @@ import Dinero from "dinero.js";
import React from "react";
import ReactDOM from "react-dom/client";
import { Provider } from "react-redux";
-import { BrowserRouter as Router } from "react-router-dom";
+import {createBrowserRouter, createRoutesFromElements, Route, RouterProvider} from "react-router-dom";
import { PersistGate } from "redux-persist/integration/react";
import AppContainer from "./App/App.container";
import LoadingSpinner from "./components/loading-spinner/loading-spinner.component";
@@ -47,22 +47,42 @@ if (process.env.NODE_ENV !== "development") {
});
}
-const root = ReactDOM.createRoot(document.getElementById("root"));
-root.render(
-
-
-
- }
- persistor={persistor}
- >
-
-
-
-
-
+// const root = ReactDOM.createRoot(document.getElementById("root"));
+
+const router = createBrowserRouter(
+ createRoutesFromElements(
+ }>
+
+ )
);
+export default function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('root')).render(
+ } persistor={persistor}>
+
+ );
+
+// root.render(
+//
+//
+//
+// }
+// persistor={persistor}
+// >
+//
+//
+//
+//
+//
+// );
+
// const onServiceWorkerUpdate = (registration) => {
// console.log("onServiceWorkerUpdate", registration);
diff --git a/client/src/utils/prompt.js b/client/src/utils/prompt.js
index 0ed5fc761..7a060b279 100644
--- a/client/src/utils/prompt.js
+++ b/client/src/utils/prompt.js
@@ -1,36 +1,40 @@
-import { unstable_usePrompt as useBlocker } from 'react-router-dom'
+import * as React from "react";
+import { useBeforeUnload, useBlocker } from "react-router-dom";
-function Prompt(props) {
- const block = props.when
+function usePrompt(message, { beforeUnload } = {}) {
- useBlocker(() => {
- if (block) {
- return ! window.confirm(props.message)
- }
- return false
- })
-
- return (
-
+let blocker = useBlocker(
+ React.useCallback(
+ () => (typeof message === "string" ? !window.confirm(message) : false),
+ [message]
)
+);
+let prevState = React.useRef(blocker.state);
+
+React.useEffect(() => {
+ if (blocker.state === "blocked") {
+ blocker.reset();
+ }
+ prevState.current = blocker.state;
+}, [blocker]);
+
+useBeforeUnload(
+ React.useCallback(
+ (event) => {
+ if (beforeUnload && typeof message === "string") {
+ event.preventDefault();
+ event.returnValue = message;
+ }
+ },
+ [message, beforeUnload]
+ ),
+ { capture: true }
+);
}
-export default Prompt;
+function Prompt({ when, message, ...props }) {
+ usePrompt(when ? message : false, props);
+ return null;
+}
-
-// Potential new solution:
-// import { useBlocker } from 'react-router-dom';
-//
-// function Prompt({ when, message }) {
-// useBlocker((transition) => {
-// if (when) {
-// transition.retry();
-// return !window.confirm(message);
-// }
-// return false;
-// }, when);
-//
-// return null;
-// }
-//
-// export default Prompt;
\ No newline at end of file
+export default Prompt;
\ No newline at end of file