From 2d09b5b3562894555652d8d513fa01b8d54eba19 Mon Sep 17 00:00:00 2001 From: Dwindi Ramadhana Date: Wed, 18 Mar 2026 00:07:10 +0700 Subject: [PATCH] Polish navigation, Quran flows, and sharing UX --- android/app/build.gradle.kts | 33 +- android/app/src/main/AndroidManifest.xml | 20 + .../plugins/GeneratedPluginRegistrant.java | 5 + .../com/jamshalat/diary/MainActivity.kt | 42 +- assets/fonts/KFGQPC-Uthmanic-HAFS-Regular.otf | Bin 0 -> 246428 bytes assets/fonts/ScheherazadeNew-Bold.ttf | Bin 0 -> 593272 bytes assets/fonts/ScheherazadeNew-Regular.ttf | Bin 0 -> 331304 bytes assets/fonts/UthmanTN1-Ver10.otf | Bin 0 -> 172980 bytes assets/images/blob.png | Bin 0 -> 6811 bytes docs/notification-plan.md | 248 +++ hugeicons-migration-spec.md | 173 +++ ios/Runner/GeneratedPluginRegistrant.m | 7 + ios/Runner/Info.plist | 4 + lib/app/app.dart | 68 +- lib/app/icons/app_icons.dart | 119 ++ lib/app/router.dart | 201 ++- lib/app/theme/app_colors.dart | 76 +- lib/app/theme/app_text_styles.dart | 25 +- lib/app/theme/app_theme.dart | 14 +- lib/core/services/app_audio_player.dart | 11 + lib/core/widgets/arabic_text.dart | 94 ++ lib/core/widgets/ayat_share_sheet.dart | 686 ++++++++ lib/core/widgets/ayat_today_card.dart | 214 +++ lib/core/widgets/bottom_nav_bar.dart | 752 ++++++++- .../widgets/notification_bell_button.dart | 166 ++ lib/core/widgets/tool_card.dart | 16 +- lib/data/local/hive_boxes.dart | 57 +- lib/data/local/models/app_settings.dart | 36 + lib/data/local/models/app_settings.g.dart | 75 +- lib/data/services/muslim_api_service.dart | 160 +- .../notification_analytics_service.dart | 39 + .../notification_event_producer_service.dart | 299 ++++ .../services/notification_inbox_service.dart | 299 ++++ .../notification_orchestrator_service.dart | 24 + .../notification_runtime_service.dart | 86 + lib/data/services/notification_service.dart | 660 +++++++- .../remote_notification_content_service.dart | 104 ++ lib/data/services/remote_push_service.dart | 47 + .../presentation/checklist_screen.dart | 104 +- .../dashboard/data/prayer_times_provider.dart | 136 +- .../presentation/dashboard_screen.dart | 846 ++++++---- lib/features/doa/presentation/doa_screen.dart | 281 ++-- .../dzikir/presentation/dzikir_screen.dart | 1266 +++++++++++++-- .../hadits/presentation/hadits_screen.dart | 306 ++-- .../presentation/imsakiyah_screen.dart | 120 +- .../laporan/presentation/laporan_screen.dart | 199 ++- .../notification_center_screen.dart | 879 +++++++++++ .../qibla/presentation/qibla_screen.dart | 1034 ++++++++++--- .../presentation/quran_bookmarks_screen.dart | 384 +++-- .../presentation/quran_enrichment_screen.dart | 264 ++-- .../presentation/quran_murattal_screen.dart | 1102 ++++++++----- .../presentation/quran_reading_screen.dart | 1190 +++++++++----- .../quran/presentation/quran_screen.dart | 252 +-- .../presentation/settings_screen.dart | 1377 ++++++++++------- .../tools/presentation/tools_screen.dart | 282 ++-- lib/main.dart | 35 + macos/Flutter/GeneratedPluginRegistrant.swift | 2 + pubspec.lock | 80 + pubspec.yaml | 20 +- 59 files changed, 11835 insertions(+), 3184 deletions(-) create mode 100644 assets/fonts/KFGQPC-Uthmanic-HAFS-Regular.otf create mode 100644 assets/fonts/ScheherazadeNew-Bold.ttf create mode 100644 assets/fonts/ScheherazadeNew-Regular.ttf create mode 100644 assets/fonts/UthmanTN1-Ver10.otf create mode 100644 assets/images/blob.png create mode 100644 docs/notification-plan.md create mode 100644 hugeicons-migration-spec.md create mode 100644 lib/app/icons/app_icons.dart create mode 100644 lib/core/services/app_audio_player.dart create mode 100644 lib/core/widgets/arabic_text.dart create mode 100644 lib/core/widgets/ayat_share_sheet.dart create mode 100644 lib/core/widgets/ayat_today_card.dart create mode 100644 lib/core/widgets/notification_bell_button.dart create mode 100644 lib/data/services/notification_analytics_service.dart create mode 100644 lib/data/services/notification_event_producer_service.dart create mode 100644 lib/data/services/notification_inbox_service.dart create mode 100644 lib/data/services/notification_orchestrator_service.dart create mode 100644 lib/data/services/notification_runtime_service.dart create mode 100644 lib/data/services/remote_notification_content_service.dart create mode 100644 lib/data/services/remote_push_service.dart create mode 100644 lib/features/notifications/presentation/notification_center_screen.dart diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index b2b158d..ba53981 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -13,6 +13,15 @@ val keystoreProperties = Properties() if (keystorePropertiesFile.exists()) { keystoreProperties.load(FileInputStream(keystorePropertiesFile)) } +val hasReleaseKeystore = listOf( + "keyAlias", + "keyPassword", + "storeFile", + "storePassword", +).all { key -> + val value = keystoreProperties[key] as String? + !value.isNullOrBlank() +} android { namespace = "com.jamshalat.diary" @@ -30,12 +39,14 @@ android { } signingConfigs { - create("release") { - keyAlias = keystoreProperties["keyAlias"] as String? - keyPassword = keystoreProperties["keyPassword"] as String? - storeFile = keystoreProperties["storeFile"]?.let { file(it) } - storePassword = keystoreProperties["storePassword"] as String? - storeType = "PKCS12" + if (hasReleaseKeystore) { + create("release") { + keyAlias = keystoreProperties["keyAlias"] as String? + keyPassword = keystoreProperties["keyPassword"] as String? + storeFile = keystoreProperties["storeFile"]?.let { file(it) } + storePassword = keystoreProperties["storePassword"] as String? + storeType = "PKCS12" + } } } @@ -52,9 +63,13 @@ android { buildTypes { release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig = signingConfigs.getByName("release") + // Use release keystore if configured, otherwise fallback to debug + // signing so local release APK builds remain possible. + signingConfig = if (hasReleaseKeystore) { + signingConfigs.getByName("release") + } else { + signingConfigs.getByName("debug") + } } } } diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 9e92e50..9430424 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -2,6 +2,11 @@ + + + + + + + + + + + + + + +