Build analyzer don't scroll to top on build change

Closes #952
This commit is contained in:
Kalle
2022-09-25 14:24:18 +03:00
parent f9b1d6b9e8
commit cb369985c8
3 changed files with 27 additions and 8 deletions

View File

@@ -0,0 +1,16 @@
// temporary workaround before Remix has React Router 6.4
// https://github.com/remix-run/remix/issues/186#issuecomment-1178395835
import { ScrollRestoration, useLocation } from "@remix-run/react";
export function ConditionalScrollRestoration() {
const location = useLocation();
if (
location.state != null &&
typeof location.state === "object" &&
(location.state as { scroll: boolean }).scroll === false
) {
return null;
}
return <ScrollRestoration />;
}

View File

@@ -40,12 +40,15 @@ export function useAnalyzeBuild() {
newLdeIntensity?: number;
newEffects?: Array<SpecialEffectType>;
}) => {
setSearchParams({
weapon: String(newMainWeaponId),
build: serializeBuild(newBuild),
lde: String(newLdeIntensity),
effect: newEffects,
});
setSearchParams(
{
weapon: String(newMainWeaponId),
build: serializeBuild(newBuild),
lde: String(newLdeIntensity),
effect: newEffects,
},
{ replace: true, state: { scroll: false } }
);
};
const buildsAbilityPoints = buildToAbilityPoints(build);

View File

@@ -10,7 +10,6 @@ import {
Meta,
Outlet,
Scripts,
ScrollRestoration,
useLoaderData,
type ShouldReloadFunction,
} from "@remix-run/react";
@@ -32,6 +31,7 @@ import { useTranslation } from "react-i18next";
import { Theme, ThemeHead, useTheme, ThemeProvider } from "./modules/theme";
import { getThemeSession } from "./modules/theme/session.server";
import { COMMON_PREVIEW_IMAGE } from "./utils/urls";
import { ConditionalScrollRestoration } from "./components/ConditionalScrollRestoration";
export const unstable_shouldReload: ShouldReloadFunction = () => false;
@@ -112,7 +112,7 @@ function Document({
{children}
</Layout>
</React.StrictMode>
<ScrollRestoration />
<ConditionalScrollRestoration />
<Scripts />
<LiveReload />
</body>