Files
NetMesh/application/state/sftp/useSftpBrowseConnectionLifecycle.ts

27 lines
677 B
TypeScript
Raw Normal View History

import { useLayoutEffect, useRef } from "react";
import type { MutableRefObject } from "react";
export interface SftpBrowseConnectionLifecycle {
generation: number;
interactive: boolean;
}
export function useSftpBrowseConnectionLifecycle(
interactive: boolean,
): MutableRefObject<SftpBrowseConnectionLifecycle> {
const lifecycleRef = useRef<SftpBrowseConnectionLifecycle>({
generation: 0,
interactive,
});
useLayoutEffect(() => {
if (lifecycleRef.current.interactive === interactive) return;
lifecycleRef.current = {
generation: lifecycleRef.current.generation + 1,
interactive,
};
}, [interactive]);
return lifecycleRef;
}