diff --git a/app-common/src/main/java/eu/darken/capod/common/flow/FlowExtensions.kt b/app-common/src/main/java/eu/darken/capod/common/flow/FlowExtensions.kt index d3e13ead..cc372160 100644 --- a/app-common/src/main/java/eu/darken/capod/common/flow/FlowExtensions.kt +++ b/app-common/src/main/java/eu/darken/capod/common/flow/FlowExtensions.kt @@ -7,6 +7,7 @@ import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.error.hasCause import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.delay import kotlinx.coroutines.flow.* import kotlin.time.Duration @@ -71,4 +72,11 @@ fun Flow.setupCommonEventHandlers(tag: String, identifier: () -> String) log(tag, ERROR) { "${identifier()} failed: ${it.asLog()}" } throw it } + } + +fun Flow.throttleLatest(delayMillis: Long): Flow = this + .conflate() + .transform { + emit(it) + delay(delayMillis) } \ No newline at end of file diff --git a/app-common/src/main/res/values-in/strings.xml b/app-common/src/main/res/values-in/strings.xml index 222876ef..7f0ba242 100644 --- a/app-common/src/main/res/values-in/strings.xml +++ b/app-common/src/main/res/values-in/strings.xml @@ -1,6 +1,10 @@ + CAPod + CAPod Pro + CAPod FOSS T/A + Error Berikan izin Tidak ada perangkat utama Semua perangkat yang terdeteksi tidak mungkin menjadi milik anda. Nyalakan & sambungkan perangkat anda atau sesuaikan pengaturan. @@ -10,6 +14,7 @@ Aplikasi ini memerlukan izin \"Koneksi Bluetooth\" untuk berinteraksi dengan perangkat yang akan dipasangkan & memulai koneksi. Pemindaian Bluetooth Izin \"Pemindaian Bluetooth\" memungkinkan aplikasi ini menemukan & menerima data Bluetooth dari perangkat terdekat seperti AirPods anda. + Bluetooth Aplikasi ini memerlukan izin \"Bluetooth\" untuk terhubung ke perangkat bluetooth yang ingin dipasangkan. Akses lokasi halus CAPod menggunakan izin \"lokasi halus\" untuk menerima data Bluetooth Hemat Energi. Headphone anda menggunakan teknologi Bluetooth Hemat Energi untuk menyiarkan statusnya. Aplikasi ini TIDAK akan menggunakan data Bluetooth untuk menentukan lokasi anda. diff --git a/app-common/src/main/res/values-ms/strings.xml b/app-common/src/main/res/values-ms/strings.xml index 4b3b8806..3b4dd742 100644 --- a/app-common/src/main/res/values-ms/strings.xml +++ b/app-common/src/main/res/values-ms/strings.xml @@ -1,5 +1,6 @@ + T/A Ralat Berikan kebenaran Tiada peranti utama @@ -10,6 +11,7 @@ Apl ini memerlukan kebenaran \"Bluetooth connect\" untuk berinteraksi dengan pasangan peranti dan memulakan sambungan. Pengimbasan bluetooth Kebenaran \"Pengimbasan Bluetooth\" membolehkan apl ini menemui dan menerima data Bluetooth daripada peranti berdekatan seperti AirPods anda. + Bluetooth Apl ini memerlukan kebenaran \"Bluetooth\" untuk menyambung ke peranti bluetooth yang dipasangkan. Akses lokasi yang baik CAPod menggunakan kebenaran \"lokasi baik\" untuk menerima data Bluetooth Tenaga Rendah. Fon kepala anda menggunakan teknologi Bluetooth Tenaga Rendah untuk menyiarkan statusnya. Apl ini TIDAK akan menggunakan data Bluetooth untuk menentukan lokasi anda. diff --git a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/OverviewFragmentVM.kt b/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/OverviewFragmentVM.kt index b13589ee..9b9c8ac3 100644 --- a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/OverviewFragmentVM.kt +++ b/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/OverviewFragmentVM.kt @@ -9,6 +9,7 @@ import eu.darken.capod.common.debug.autoreport.DebugSettings import eu.darken.capod.common.debug.logging.Logging.Priority.VERBOSE import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.flow.combine +import eu.darken.capod.common.flow.throttleLatest import eu.darken.capod.common.livedata.SingleLiveEvent import eu.darken.capod.common.permissions.Permission import eu.darken.capod.common.uix.ViewModel3 @@ -76,7 +77,7 @@ class OverviewFragmentVM @Inject constructor( permissionTool.missingPermissions, debugSettings.isDebugModeEnabled.flow, bluetoothManager.isBluetoothEnabled, - podMonitor.mainDevice, + podMonitor.mainDevice.throttleLatest(1000), ) { _, permissions, isDebugMode, isBluetoothEnabled, _ -> val items = mutableListOf() diff --git a/app/src/main/java/eu/darken/capod/App.kt b/app/src/main/java/eu/darken/capod/App.kt index ded7aab7..2217d66a 100644 --- a/app/src/main/java/eu/darken/capod/App.kt +++ b/app/src/main/java/eu/darken/capod/App.kt @@ -8,6 +8,7 @@ import dagger.hilt.android.HiltAndroidApp import eu.darken.capod.common.coroutine.AppScope import eu.darken.capod.common.debug.autoreport.AutoReporting import eu.darken.capod.common.debug.logging.* +import eu.darken.capod.common.flow.throttleLatest import eu.darken.capod.common.upgrade.UpgradeRepo import eu.darken.capod.main.ui.widget.WidgetManager import eu.darken.capod.monitor.core.PodMonitor @@ -49,6 +50,7 @@ open class App : Application(), Configuration.Provider { podMonitor.mainDevice .distinctUntilChanged() + .throttleLatest(1000) .onEach { log(TAG) { "Main device changed, refreshing widgets." } widgetManager.refreshWidgets() diff --git a/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewFragmentVM.kt b/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewFragmentVM.kt index 73f4b03c..87b5ac29 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewFragmentVM.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewFragmentVM.kt @@ -9,6 +9,7 @@ import eu.darken.capod.common.coroutine.DispatcherProvider import eu.darken.capod.common.debug.autoreport.DebugSettings import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.flow.combine +import eu.darken.capod.common.flow.throttleLatest import eu.darken.capod.common.livedata.SingleLiveEvent import eu.darken.capod.common.navigation.navVia import eu.darken.capod.common.permissions.Permission @@ -96,6 +97,7 @@ class OverviewFragmentVM @Inject constructor( } } .catch { errorEvents.postValue(it) } + .throttleLatest(1000) val listItems: LiveData> = combine( updateTicker, diff --git a/app/src/main/java/eu/darken/capod/monitor/core/worker/MonitorWorker.kt b/app/src/main/java/eu/darken/capod/monitor/core/worker/MonitorWorker.kt index 4f22cec9..12fc8e32 100644 --- a/app/src/main/java/eu/darken/capod/monitor/core/worker/MonitorWorker.kt +++ b/app/src/main/java/eu/darken/capod/monitor/core/worker/MonitorWorker.kt @@ -17,6 +17,7 @@ import eu.darken.capod.common.debug.logging.asLog import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.logTag import eu.darken.capod.common.flow.setupCommonEventHandlers +import eu.darken.capod.common.flow.throttleLatest import eu.darken.capod.main.core.GeneralSettings import eu.darken.capod.main.core.MonitorMode import eu.darken.capod.main.core.PermissionTool @@ -101,6 +102,7 @@ class MonitorWorker @AssistedInject constructor( .setupCommonEventHandlers(TAG) { "PodMonitor" } .onStart { setForeground(monitorNotifications.getForegroundInfo(null)) } .distinctUntilChanged() + .throttleLatest(1000) .onEach { currentDevice -> notificationManager.notify( MonitorNotifications.NOTIFICATION_ID, diff --git a/app/src/main/res/layout/monitor_notification_dual_pods_small.xml b/app/src/main/res/layout/monitor_notification_dual_pods_small.xml index a886634d..3424f53e 100644 --- a/app/src/main/res/layout/monitor_notification_dual_pods_small.xml +++ b/app/src/main/res/layout/monitor_notification_dual_pods_small.xml @@ -3,6 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" + style="@style/Notification.Container" android:layout_marginHorizontal="8dp" android:orientation="horizontal"> diff --git a/app/src/main/res/layout/monitor_notification_single_pods_small.xml b/app/src/main/res/layout/monitor_notification_single_pods_small.xml index ef802ffa..8d9d7520 100644 --- a/app/src/main/res/layout/monitor_notification_single_pods_small.xml +++ b/app/src/main/res/layout/monitor_notification_single_pods_small.xml @@ -2,6 +2,7 @@ diff --git a/app/src/main/res/layout/monitor_notification_unknown_device_small.xml b/app/src/main/res/layout/monitor_notification_unknown_device_small.xml index b79e8b64..8ac90963 100644 --- a/app/src/main/res/layout/monitor_notification_unknown_device_small.xml +++ b/app/src/main/res/layout/monitor_notification_unknown_device_small.xml @@ -1,6 +1,7 @@ diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 6f0148d0..19df7118 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -7,6 +7,7 @@ Tingkatkan Memeriksa Tutup + Perbaharui CAPod Dapatkan fitur tambahan & bantu dukung pengembang. Mode monitor Dalam keadaan apa aplikasi ini memonitor data Bluetooth. @@ -52,6 +53,7 @@ Jika anda membutuhkan bantuan. Pelacak masalah Pelacak masalah publik untuk laporan bug & permintaan fitur (hanya dalam bahasa Inggris). + Discord Tempat nongkrong & bertanya-tanya. Catatan perubahan Pengaturan @@ -73,4 +75,5 @@ Terjemahan Bantu terjemahkan applikasi ini ke bahasa favorit anda. Penerjemah + gelapkan diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index ebd3559f..5d863d15 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -7,14 +7,26 @@ 8dp + + + +