All files / packages/app/hooks use-get-memoized-value.ts

100% Statements 8/8
100% Branches 4/4
100% Functions 2/2
100% Lines 8/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19        30x 1728x 1728x 977x 977x       764x   213x 977x      
import React from "react";
 
import { isDeepEqual } from "remeda";
 
export const useGetMemoizedValue = <T>(getValue: () => T) => {
	const snapshotRef = React.useRef<T | null>(null);
	return React.useCallback(() => {
		const nextSnapshot = getValue();
		if (
			snapshotRef.current !== null &&
			isDeepEqual<T>(snapshotRef.current, nextSnapshot)
		) {
			return snapshotRef.current;
		}
		snapshotRef.current = nextSnapshot;
		return nextSnapshot;
	}, [getValue]);
};