fix(app): latch startup store readiness

This commit is contained in:
Mohamed Boudra
2026-05-03 20:15:19 +07:00
parent 6d13796b2d
commit ade05607d2
3 changed files with 38 additions and 1 deletions
@@ -0,0 +1,22 @@
/**
* @vitest-environment jsdom
*/
import { renderHook } from "@testing-library/react";
import { describe, expect, it } from "vitest";
import { useLatchedBoolean } from "./use-latched-boolean";
describe("useLatchedBoolean", () => {
it("stays true after the input first becomes true", () => {
const { result, rerender } = renderHook(({ value }) => useLatchedBoolean(value), {
initialProps: { value: false },
});
expect(result.current).toBe(false);
rerender({ value: true });
expect(result.current).toBe(true);
rerender({ value: false });
expect(result.current).toBe(true);
});
});
@@ -0,0 +1,13 @@
import { useEffect, useState } from "react";
export function useLatchedBoolean(value: boolean): boolean {
const [hasLatched, setHasLatched] = useState(value);
useEffect(() => {
if (value) {
setHasLatched(true);
}
}, [value]);
return hasLatched || value;
}