Merge pull request #674 from vector-im/SimonBrandner/fix/i-am-stupid-sometimes

Avoid Olm loading loop
This commit is contained in:
David Baker
2022-10-27 16:11:51 +01:00
committed by GitHub

View File

@@ -16,7 +16,7 @@ limitations under the License.
import Olm from "@matrix-org/olm"; import Olm from "@matrix-org/olm";
import olmWasmPath from "@matrix-org/olm/olm.wasm?url"; import olmWasmPath from "@matrix-org/olm/olm.wasm?url";
import React, { Suspense, useState } from "react"; import React, { Suspense, useEffect, useState } from "react";
import { BrowserRouter as Router, Switch, Route } from "react-router-dom"; import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
import * as Sentry from "@sentry/react"; import * as Sentry from "@sentry/react";
import { OverlayProvider } from "@react-aria/overlays"; import { OverlayProvider } from "@react-aria/overlays";
@@ -39,22 +39,25 @@ interface AppProps {
} }
export default function App({ history }: AppProps) { export default function App({ history }: AppProps) {
const [loadingOlm, setLoadingOlm] = useState(false); const [olmLoaded, setOlmLoaded] = useState(false);
usePageFocusStyle(); usePageFocusStyle();
useEffect(() => {
if (!olmLoaded) {
// TODO: https://gitlab.matrix.org/matrix-org/olm/-/issues/10 // TODO: https://gitlab.matrix.org/matrix-org/olm/-/issues/10
window.OLM_OPTIONS = {}; window.OLM_OPTIONS = {};
Olm.init({ locateFile: () => olmWasmPath }).then(() => setLoadingOlm(false)); Olm.init({ locateFile: () => olmWasmPath }).then(() =>
setOlmLoaded(true)
);
}
}, [olmLoaded, setOlmLoaded]);
const errorPage = <CrashView />; const errorPage = <CrashView />;
if (loadingOlm) {
return <LoadingView />;
}
return ( return (
<Router history={history}> <Router history={history}>
{olmLoaded ? (
<Suspense fallback={null}> <Suspense fallback={null}>
<ClientProvider> <ClientProvider>
<InspectorContextProvider> <InspectorContextProvider>
@@ -85,6 +88,9 @@ export default function App({ history }: AppProps) {
</InspectorContextProvider> </InspectorContextProvider>
</ClientProvider> </ClientProvider>
</Suspense> </Suspense>
) : (
<LoadingView />
)}
</Router> </Router>
); );
} }