diff options
author | Iván Ávalos <avalos@disroot.org> | 2023-09-16 01:53:18 -0600 |
---|---|---|
committer | Iván Ávalos <avalos@disroot.org> | 2023-09-16 01:53:18 -0600 |
commit | 97fee2befcfcbcaa4263e4795680f46bf18d988d (patch) | |
tree | ce6257c7e57deab1ef03d73cecb5da8a1a987d68 /androidApp/src | |
parent | 073e78859724a122233f6349592a3e6c10f05ed1 (diff) | |
parent | 6c69520fc2a968cb27d1f751f34a123205936567 (diff) | |
download | etbsa-trackermap-mobile-97fee2befcfcbcaa4263e4795680f46bf18d988d.tar.gz etbsa-trackermap-mobile-97fee2befcfcbcaa4263e4795680f46bf18d988d.tar.bz2 etbsa-trackermap-mobile-97fee2befcfcbcaa4263e4795680f46bf18d988d.zip |
Merged upstream
Diffstat (limited to 'androidApp/src')
7 files changed, 33 insertions, 26 deletions
diff --git a/androidApp/src/google/AndroidManifest.xml b/androidApp/src/google/AndroidManifest.xml index 5207ee9..c666fc8 100644 --- a/androidApp/src/google/AndroidManifest.xml +++ b/androidApp/src/google/AndroidManifest.xml @@ -1,8 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - package="mx.trackermap.TrackerMap.android"> + xmlns:tools="http://schemas.android.com/tools"> <application android:name=".GoogleMainApplication" diff --git a/androidApp/src/main/AndroidManifest.xml b/androidApp/src/main/AndroidManifest.xml index 313a4df..0a3a539 100644 --- a/androidApp/src/main/AndroidManifest.xml +++ b/androidApp/src/main/AndroidManifest.xml @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<manifest - xmlns:android="http://schemas.android.com/apk/res/android" - package="mx.trackermap.TrackerMap.android"> +<manifest xmlns:tools="http://schemas.android.com/tools" + xmlns:android="http://schemas.android.com/apk/res/android"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> @@ -12,7 +11,9 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" - android:theme="@style/AppTheme"> + android:theme="@style/AppTheme" + android:enableOnBackInvokedCallback="true" + tools:targetApi="tiramisu"> <activity android:name=".session.LoginActivity" android:exported="true"> diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt index aab3cfa..65071da 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt @@ -36,7 +36,6 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.commit import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.card.MaterialCardView -import io.ktor.utils.io.* import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.datetime.* import kotlinx.datetime.TimeZone @@ -223,6 +222,7 @@ class UnitReportsFragment : Fragment() { } } is ReportController.Report.LoadingReport -> loading() + else -> loading() } } @@ -260,13 +260,13 @@ class UnitReportsFragment : Fragment() { val (from, to) = period.getObjectDates() - fromDatePicker = DatePickerDialog(requireContext(), { p0, p1, p2, p3 -> + fromDatePicker = DatePickerDialog(requireContext(), { _, p1, p2, p3 -> fromPickedDatetime = LocalDateTime(p1, p2 + 1, p3, from.hour, from.minute) fromTimePicker.show() }, from.year, from.monthNumber, from.dayOfMonth) fromDatePicker.datePicker.maxDate = Calendar.getInstance().timeInMillis - fromTimePicker = TimePickerDialog(requireContext(), { p0, p1, p2 -> + fromTimePicker = TimePickerDialog(requireContext(), { _, p1, p2 -> fromPickedDatetime = LocalDateTime( fromPickedDatetime.year, fromPickedDatetime.monthNumber, @@ -275,7 +275,7 @@ class UnitReportsFragment : Fragment() { ) (period as? ReportDates.ReportPeriod.Custom)?.let { val fromInstant = fromPickedDatetime.toInstant(TimeZone.currentSystemDefault()) - val toInstant = Calendar.getInstance().toInstant().toKotlinInstant() + val toInstant = Clock.System.now() val plusMonth = fromInstant.plus(31.toDuration(DurationUnit.DAYS)) /* Make ultra sure that user can't select a period longer than a month */ @@ -293,13 +293,13 @@ class UnitReportsFragment : Fragment() { } }, from.hour, from.minute, false) - toDatePicker = DatePickerDialog(requireContext(), { p0, p1, p2, p3 -> + toDatePicker = DatePickerDialog(requireContext(), { _, p1, p2, p3 -> toPickedDatetime = LocalDateTime(p1, p2 + 1, p3, from.hour, from.minute) toTimePicker.show() }, to.year, to.monthNumber, to.dayOfMonth) toDatePicker.datePicker.maxDate = Calendar.getInstance().timeInMillis - toTimePicker = TimePickerDialog(requireContext(), { p0, p1, p2 -> + toTimePicker = TimePickerDialog(requireContext(), { _, p1, p2 -> toPickedDatetime = LocalDateTime( toPickedDatetime.year, toPickedDatetime.monthNumber, diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsViewModel.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsViewModel.kt index 41a6b6d..628ce2f 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsViewModel.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsViewModel.kt @@ -19,7 +19,7 @@ package mx.trackermap.TrackerMap.android.details.reports import androidx.lifecycle.* import kotlinx.coroutines.DelicateCoroutinesApi -import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.launch import mx.trackermap.TrackerMap.client.models.EventInformation import mx.trackermap.TrackerMap.client.models.Geofence @@ -42,16 +42,17 @@ class UnitReportsViewModel( private val reportController: ReportController by inject() private var _deviceId = savedStateHandle.getLiveData("deviceId", 0) - private val _reportType: MutableLiveData<ReportController.ReportType> = savedStateHandle.getLiveData("reportType", null) + private val _reportType: MutableLiveData<ReportController.ReportType> = + savedStateHandle.getLiveData("reportType", ReportController.ReportType.POSITIONS) private val _reportPeriod: MutableLiveData<ReportDates.ReportPeriod> = - savedStateHandle.getLiveData("reportPeriod", null) - private val _report: MutableLiveData<ReportController.Report> = MutableLiveData() + savedStateHandle.getLiveData("reportPeriod", ReportDates.ReportPeriod.Today()) + private val _report: MutableLiveData<ReportController.Report?> = MutableLiveData() private val _geofences: MutableLiveData<Array<Geofence>> = MutableLiveData(emptyArray()) val deviceId: LiveData<Int> get() = _deviceId val reportType: LiveData<ReportController.ReportType> get() = _reportType val reportPeriod: LiveData<ReportDates.ReportPeriod> get() = _reportPeriod - val report: LiveData<ReportController.Report> get() = _report + val report: LiveData<ReportController.Report?> get() = _report val geofences: LiveData<Array<Geofence>> get() = _geofences init { @@ -82,13 +83,13 @@ class UnitReportsViewModel( } private suspend fun setupReportObserver() { - reportController.reportFlow.collect { + (reportController.reportFlow as StateFlow<ReportController.Report>).collect { _report.value = it } } private suspend fun setupGeofenceObserver() { - geofencesController.geofencesFlow.collect { + (geofencesController.geofencesFlow as StateFlow<Map<Int, Geofence>>).collect { _geofences.value = it.values.toTypedArray() } } diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt index b04bfbc..4915c49 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt @@ -114,6 +114,12 @@ open class MapFragment : GlobeMapFragment() { hasStarted = false } + override fun onDestroyView() { + super.onDestroyView() + loader?.shutdown() + loader = null + } + override fun mapDidStopMoving( mapControl: MapController?, corners: Array<out Point3d>?, diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/UserInformationViewModel.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/UserInformationViewModel.kt index 0d3784c..7a57755 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/UserInformationViewModel.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/UserInformationViewModel.kt @@ -25,7 +25,7 @@ import androidx.lifecycle.viewModelScope import com.zhuinden.eventemitter.EventEmitter import com.zhuinden.eventemitter.EventSource import kotlinx.coroutines.DelicateCoroutinesApi -import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.launch import mx.trackermap.TrackerMap.client.models.User import mx.trackermap.TrackerMap.controllers.SessionController @@ -57,7 +57,7 @@ class UserInformationViewModel : ViewModel(), KoinComponent { } private suspend fun setupLoginStateObserver() { - sessionController.loginStateFlow.collect { + (sessionController.loginStateFlow as StateFlow<SessionController.LoginState?>).collect { it?.let { loginStateEmitter.emit(it) } @@ -65,7 +65,7 @@ class UserInformationViewModel : ViewModel(), KoinComponent { } private suspend fun setupUserObserver() { - sessionController.userFlow.collect { + (sessionController.userFlow as StateFlow<User?>).collect { it?.let { _user.postValue(it) } diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt index b537c0b..b5ed78d 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt @@ -21,7 +21,7 @@ import android.util.Log import androidx.lifecycle.* import com.mousebird.maply.Point2d import kotlinx.coroutines.DelicateCoroutinesApi -import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.launch import mx.trackermap.TrackerMap.client.models.Geofence import mx.trackermap.TrackerMap.client.models.MapLayer @@ -87,14 +87,14 @@ class UnitsViewModel( } private suspend fun setupUnitsObserver() { - unitsController.displayedUnitsFlow.collect { units -> + (unitsController.displayedUnitsFlow as StateFlow<List<UnitInformation>>).collect { units -> Log.d("UnitsViewModel", "Collecting units") this._displayedUnits.value = units } } private suspend fun setupDisplayedUnitsObserver() { - unitsController.unitsFlow.collect { units -> + (unitsController.unitsFlow as StateFlow<List<UnitInformation>>).collect { units -> Log.d("UnitsViewModel", "Collecting displayed units") this._units.value = units updateSelectedUnit() @@ -102,7 +102,7 @@ class UnitsViewModel( } private suspend fun setupGeofenceObserver() { - geofenceController.geofencesFlow.collect { + (geofenceController.geofencesFlow as StateFlow<Map<Int, Geofence>>).collect { Log.d("UnitsViewModel", "Collecting geofences") this._geofences.postValue(it) } |