Files
HokmPlay/src/components/CapacitorBack.tsx
T

30 lines
799 B
TypeScript
Raw Normal View History

"use client";
import { useEffect } from "react";
import { Capacitor } from "@capacitor/core";
import { App } from "@capacitor/app";
import { useUIStore } from "@/lib/ui-store";
/**
* Maps the Android hardware back button to in-app navigation:
* go back a screen, or exit the app when already at home.
* No-op on web (Capacitor.isNativePlatform() is false).
*/
export function CapacitorBack() {
useEffect(() => {
if (!Capacitor.isNativePlatform()) return;
let remove: (() => void) | undefined;
App.addListener("backButton", () => {
if (useUIStore.getState().screen === "home") {
App.exitApp();
} else {
window.history.back();
}
}).then((h) => {
remove = () => h.remove();
});
return () => remove?.();
}, []);
return null;
}