Files
Toju/toju-app/src/app/infrastructure/mobile
Myx 6b9a39fe4a fix: Bug - Android app view is below titlebar and action bar on android
Respect Android system bar insets with safe-area shell padding, inset-aware modal and bottom-sheet layouts, transparent edge-to-edge themes, and a Capacitor SystemBars refresh on mobile startup.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-11 21:24:48 +02:00
..
2026-06-05 17:12:26 +02:00
2026-06-11 03:03:10 +02:00

Mobile infrastructure

Loosely coupled Capacitor/native bridge for the Angular product client. Domains depend on facades in this folder — never on @capacitor/* imports directly.

Facades

Service Responsibility
MobilePlatformService Runtime detection (browser / capacitor / electron) and mobile UX flags
MobileNotificationsService Local/push notifications for calls
MobileCallSessionService In-call notification actions, background audio session, stream video hand-off
MobileMediaService Attachment picker, speakerphone route, Android/iOS capture permission preflight, screen-share/PiP capability probes
MobilePictureInPictureService Stream pop-out while backgrounded
MobilePersistenceService Native SQLite schema init (@capacitor-community/sqlite)
MobileSqliteConnectionService Shared SQLite connection for persistence + DatabaseService
MobileCallKitService iOS CallKit active-call reporting for background voice
MobilePushRegistrationService FCM/APNs token registration with signaling server; skips PushNotifications.register() when Firebase/APNs is not configured
MobileAppLifecycleService Foreground/background lifecycle
MobileAppUpdateService Play Store / App Store update checks via @capawesome/capacitor-app-update

Adapters

  • adapters/web/* — browser fallbacks (Notification API, hidden file input, Document PiP).
  • adapters/capacitor/* — lazy-loaded Capacitor plugins via capacitor-plugin-loader.ts (including AppUpdate for store update checks).

Rules

Pure platform/call-notification rules live in logic/*.rules.ts and are Vitest-tested without Angular.

logic/mobile-android-launcher-icon.rules.ts encodes the Android brand launcher/splash contract (required densities, brand background colour #4A217A, and stock-Capacitor placeholder hashes to reject). Regenerate the resources from images/icon-new-rounded.png with npm run cap:assets:android (tools/generate-android-app-icons.mjs). See agents-docs/features/mobile-capacitor.md § "App icon & splash".