Files
fotospiel-app/resources/js/admin/mobile/lib/installPrompt.ts
Codex Agent d5f038d098 Added onboarding + a lightweight install banner to both the mobile login screen and the settings screen, with Android/Chromium
install prompt support and iOS “Share → Add to Home Screen” guidance. Also added a small helper + tests to decide
  when/which banner variant should show, and shared copy in common.json.
2025-12-28 18:26:17 +01:00

26 lines
950 B
TypeScript

export type InstallOutcome = 'accepted' | 'dismissed' | 'unknown';
export type BeforeInstallPromptEvent = Event & {
prompt: () => Promise<void>;
userChoice: Promise<{ outcome: InstallOutcome; platform: string }>;
};
export function isIosDevice(userAgent: string): boolean {
return /iphone|ipad|ipod/i.test(userAgent);
}
export function resolveStandaloneDisplayMode(matchMediaStandalone: boolean, navigatorStandalone?: boolean): boolean {
return matchMediaStandalone || navigatorStandalone === true;
}
export function getStandaloneStatus(): boolean {
if (typeof window === 'undefined') {
return false;
}
const matchMediaStandalone = window.matchMedia?.('(display-mode: standalone)')?.matches ?? false;
const navigatorStandalone = typeof navigator !== 'undefined' ? (navigator as Navigator & { standalone?: boolean }).standalone : undefined;
return resolveStandaloneDisplayMode(matchMediaStandalone, navigatorStandalone);
}