aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--iosApp/iosApp/Devices/DeviceRow.swift16
-rw-r--r--iosApp/iosApp/Units/UnitsViewModel.swift8
-rw-r--r--shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/Injectable.kt17
-rw-r--r--shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/client/models/UnitInformation.kt4
-rw-r--r--shared/src/iosMain/kotlin/mx/trackermap/TrackerMap/client/infrastructure/HttpClientProvider.kt17
-rw-r--r--shared/src/iosMain/kotlin/mx/trackermap/TrackerMap/utils/MainScope.kt34
-rw-r--r--shared/src/iosMain/kotlin/mx/trackermap/TrackerMap/utils/Serialization.kt12
7 files changed, 87 insertions, 21 deletions
diff --git a/iosApp/iosApp/Devices/DeviceRow.swift b/iosApp/iosApp/Devices/DeviceRow.swift
index 9873c8e..e7966d2 100644
--- a/iosApp/iosApp/Devices/DeviceRow.swift
+++ b/iosApp/iosApp/Devices/DeviceRow.swift
@@ -104,15 +104,13 @@ struct DeviceRow: View {
}
/* Hourmeter */
- if let hourmeter = unit.position?.attributes["hours"] {
- if let hourmeter = Serialization.companion.longOrNull(json: hourmeter) {
- HStack {
- Label(Formatter.companion.formatHours(
- millis: Int64(truncating: hourmeter)),
- systemImage: "timer")
- .labelStyle(SmallLabelStyle())
- Spacer()
- }
+ if let hourmeter = unit.getHourmeter() {
+ HStack {
+ Label(Formatter.companion.formatHours(
+ millis: Int64(truncating: hourmeter)),
+ systemImage: "timer")
+ .labelStyle(SmallLabelStyle())
+ Spacer()
}
}
diff --git a/iosApp/iosApp/Units/UnitsViewModel.swift b/iosApp/iosApp/Units/UnitsViewModel.swift
index 33f9729..04c0436 100644
--- a/iosApp/iosApp/Units/UnitsViewModel.swift
+++ b/iosApp/iosApp/Units/UnitsViewModel.swift
@@ -23,6 +23,8 @@ class UnitsViewModel: ObservableObject {
@Inject var unitsController: UnitsController
@Inject var geofenceController: GeofencesController
+ let mainScope = MainScope.companion.createMainScope()
+
enum UnitsDisplayMode {
case map
case list
@@ -54,9 +56,14 @@ class UnitsViewModel: ObservableObject {
@Published var camera: Camera = Camera()
init() {
+ unitsController.fetchUnits(scope: mainScope)
setupObservers()
}
+ deinit {
+ MainScope.companion.cancelScope(scope: mainScope)
+ }
+
private func setupObservers() {
let unitsCollector = Collector<[UnitInformation]>(callback: setUnits)
unitsController.displayedUnitsFlow.collect(collector: unitsCollector) { unit, error in }
@@ -66,6 +73,7 @@ class UnitsViewModel: ObservableObject {
}
private func setUnits(units: [UnitInformation]) {
+ print("Positions")
self.units = units
}
diff --git a/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/Injectable.kt b/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/Injectable.kt
index a7467d6..6dda226 100644
--- a/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/Injectable.kt
+++ b/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/Injectable.kt
@@ -1,3 +1,20 @@
+/**
+ * TrackerMap
+ * Copyright (C) 2021-2022 Iván Ávalos <avalos@disroot.org>, Henoch Ojeda <imhenoch@protonmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
package mx.trackermap.TrackerMap
interface Injectable \ No newline at end of file
diff --git a/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/client/models/UnitInformation.kt b/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/client/models/UnitInformation.kt
index a276fda..1e23396 100644
--- a/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/client/models/UnitInformation.kt
+++ b/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/client/models/UnitInformation.kt
@@ -17,6 +17,8 @@
*/
package mx.trackermap.TrackerMap.client.models
+import kotlinx.serialization.json.longOrNull
+
data class UnitInformation(
val device: Device,
val position: Position?
@@ -51,4 +53,6 @@ data class UnitInformation(
}
} ?: EngineStop.UNKNOWN
} else EngineStop.UNKNOWN
+
+ fun getHourmeter() = position?.attributes?.get("hours")?.longOrNull
} \ No newline at end of file
diff --git a/shared/src/iosMain/kotlin/mx/trackermap/TrackerMap/client/infrastructure/HttpClientProvider.kt b/shared/src/iosMain/kotlin/mx/trackermap/TrackerMap/client/infrastructure/HttpClientProvider.kt
index 1ccb2e6..e95e964 100644
--- a/shared/src/iosMain/kotlin/mx/trackermap/TrackerMap/client/infrastructure/HttpClientProvider.kt
+++ b/shared/src/iosMain/kotlin/mx/trackermap/TrackerMap/client/infrastructure/HttpClientProvider.kt
@@ -1,3 +1,20 @@
+/**
+ * TrackerMap
+ * Copyright (C) 2021-2022 Iván Ávalos <avalos@disroot.org>, Henoch Ojeda <imhenoch@protonmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
package mx.trackermap.TrackerMap.client.infrastructure
import io.ktor.client.*
diff --git a/shared/src/iosMain/kotlin/mx/trackermap/TrackerMap/utils/MainScope.kt b/shared/src/iosMain/kotlin/mx/trackermap/TrackerMap/utils/MainScope.kt
new file mode 100644
index 0000000..b992524
--- /dev/null
+++ b/shared/src/iosMain/kotlin/mx/trackermap/TrackerMap/utils/MainScope.kt
@@ -0,0 +1,34 @@
+/**
+ * TrackerMap
+ * Copyright (C) 2021-2022 Iván Ávalos <avalos@disroot.org>, Henoch Ojeda <imhenoch@protonmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package mx.trackermap.TrackerMap.utils
+
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+
+class MainScope {
+ companion object {
+ fun createMainScope(): CoroutineScope {
+ return MainScope()
+ }
+
+ fun cancelScope(scope: CoroutineScope) {
+ scope.cancel()
+ }
+ }
+} \ No newline at end of file
diff --git a/shared/src/iosMain/kotlin/mx/trackermap/TrackerMap/utils/Serialization.kt b/shared/src/iosMain/kotlin/mx/trackermap/TrackerMap/utils/Serialization.kt
deleted file mode 100644
index be26416..0000000
--- a/shared/src/iosMain/kotlin/mx/trackermap/TrackerMap/utils/Serialization.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package mx.trackermap.TrackerMap.utils
-
-import kotlinx.serialization.json.JsonPrimitive
-import kotlinx.serialization.json.longOrNull
-
-class Serialization {
- companion object {
- fun longOrNull(json: JsonPrimitive) = json.longOrNull
-
- fun toString(json: JsonPrimitive) = json.toString()
- }
-} \ No newline at end of file