You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
875 B
25 lines
875 B
"use client";
|
|
|
|
import { useEffect } from "react";
|
|
|
|
/**
|
|
* Shared destination readiness hook.
|
|
*
|
|
* Call this from final destination client components to signal that the page UI
|
|
* is ready and Flutter can remove its native loading cover.
|
|
*
|
|
* This hook only **requests** readiness — it does not directly interact with
|
|
* the Flutter bridge. The root bootstrap script in layout.tsx owns actual
|
|
* delivery and handles the case where HabibApp is injected late.
|
|
*
|
|
* @param ready - Whether the page considers itself visually ready.
|
|
* Pass `true` once critical data is available or the fallback
|
|
* UI is showing. The signal fires at most once per mount.
|
|
*/
|
|
export function useHabibWebReady(ready: boolean) {
|
|
useEffect(() => {
|
|
if (ready && typeof window !== "undefined") {
|
|
window.__announceHabibWebReady?.();
|
|
}
|
|
}, [ready]);
|
|
}
|