29 lines
745 B
TypeScript
29 lines
745 B
TypeScript
"use client";
|
|
|
|
import { useEffect, useRef } from "react";
|
|
import type { IntegrationChangeRequestStatusItem } from "./integration-change-request-status-types";
|
|
import { useHoverPopover } from "./use-hover-popover";
|
|
|
|
const HOVER_DELAY_MS = 150;
|
|
|
|
export function useIntegrationStatusHover(disabled: boolean) {
|
|
return useHoverPopover({
|
|
openDelayMs: HOVER_DELAY_MS,
|
|
closeDelayMs: HOVER_DELAY_MS,
|
|
disabled,
|
|
});
|
|
}
|
|
|
|
export function useRefreshItemsWhenOpen(
|
|
open: boolean,
|
|
items: readonly IntegrationChangeRequestStatusItem[],
|
|
) {
|
|
const wasOpen = useRef(false);
|
|
useEffect(() => {
|
|
if (open && !wasOpen.current) {
|
|
for (const item of items) void item.onRefresh?.();
|
|
}
|
|
wasOpen.current = open;
|
|
}, [items, open]);
|
|
}
|