Skip to content

Commit 9aae2c1

Browse files
committed
wip
1 parent bd66a13 commit 9aae2c1

File tree

4 files changed

+22
-29
lines changed

4 files changed

+22
-29
lines changed

driver-app/app/src/main/java/de/motis/prima/Tours.kt

+2-8
Original file line numberDiff line numberDiff line change
@@ -165,10 +165,7 @@ fun DateSelect(
165165

166166
) {
167167
IconButton(
168-
onClick = {
169-
viewModel.decrementDate()
170-
viewModel.fetchTours()
171-
},
168+
onClick = { viewModel.decrementDate() },
172169
Modifier
173170
.size(width = 48.dp, height = 24.dp)
174171
) {
@@ -203,10 +200,7 @@ fun DateSelect(
203200

204201
) {
205202
IconButton(
206-
onClick = {
207-
viewModel.incrementDate()
208-
viewModel.fetchTours()
209-
},
203+
onClick = { viewModel.incrementDate() },
210204
Modifier
211205
.size(width = 48.dp, height = 24.dp)
212206
) {

driver-app/app/src/main/java/de/motis/prima/data/DataRepository.kt

+4-9
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,12 @@ class DataRepository @Inject constructor(
2929
return _scannedTickets.value[md5(ticketCode)]?.validationStatus
3030
}
3131

32-
fun updateScannedTickets(
33-
requestId: Int,
34-
ticketCode: String,
35-
validationStatus: ValidationStatus
36-
) {
37-
val entry = _scannedTickets.value[md5(ticketCode)]
32+
fun updateScannedTickets(ticket: Ticket) {
33+
val entry = _scannedTickets.value[md5(ticket.ticketCode)]
3834
if (entry != null) {
39-
entry.validationStatus = validationStatus
35+
entry.validationStatus = ticket.validationStatus
4036
} else {
41-
_scannedTickets.value[md5(ticketCode)] =
42-
Ticket(requestId, ticketCode, validationStatus)
37+
_scannedTickets.value[md5(ticket.ticketCode)] = ticket
4338
}
4439
}
4540

driver-app/app/src/main/java/de/motis/prima/viewmodel/ScanViewModel.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModel
55
import androidx.lifecycle.viewModelScope
66
import dagger.hilt.android.lifecycle.HiltViewModel
77
import de.motis.prima.data.DataRepository
8+
import de.motis.prima.data.Ticket
89
import de.motis.prima.data.ValidationStatus
910
import de.motis.prima.services.ApiService
1011
import kotlinx.coroutines.launch
@@ -33,7 +34,7 @@ class ScanViewModel @Inject constructor(
3334
validationStatus = ValidationStatus.FAILED
3435
Log.d("error", "Network Error: ${e.message!!}")
3536
} finally {
36-
repository.updateScannedTickets(requestId, ticketCode, validationStatus)
37+
repository.updateScannedTickets(Ticket(requestId, ticketCode, validationStatus))
3738
}
3839
}
3940
}

driver-app/app/src/main/java/de/motis/prima/viewmodel/ToursViewModel.kt

+14-11
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModel
66
import androidx.lifecycle.viewModelScope
77
import dagger.hilt.android.lifecycle.HiltViewModel
88
import de.motis.prima.data.DataRepository
9+
import de.motis.prima.data.Ticket
910
import de.motis.prima.data.ValidationStatus
1011
import de.motis.prima.formatTo
1112
import de.motis.prima.services.ApiService
@@ -48,21 +49,21 @@ class ToursViewModel @Inject constructor(
4849
val selectedVehicle = repository.selectedVehicle
4950
.stateIn(viewModelScope, SharingStarted.Eagerly, null)
5051

51-
val scannedTickets = repository.scannedTickets
52+
private val scannedTickets = repository.scannedTickets
5253

53-
fun reportTicketScan(requestId: Int, ticketCode: String) {
54+
private fun retryFailedReport(ticket: Ticket) {
5455
viewModelScope.launch {
55-
var validationStatus = ValidationStatus.OK
5656
try {
57-
val response = apiService.validateTicket(requestId, ticketCode)
58-
if (!response.isSuccessful) {
59-
validationStatus = ValidationStatus.REJECTED
57+
val response = apiService.validateTicket(ticket.requestId, ticket.ticketCode)
58+
if (response.isSuccessful) {
59+
ticket.validationStatus = ValidationStatus.OK
60+
repository.updateScannedTickets(ticket)
61+
} else {
62+
ticket.validationStatus = ValidationStatus.REJECTED
63+
repository.updateScannedTickets(ticket)
6064
}
6165
} catch (e: Exception) {
62-
validationStatus = ValidationStatus.FAILED
6366
Log.d("error", "Network Error: ${e.message!!}")
64-
} finally {
65-
repository.updateScannedTickets(requestId, ticketCode, validationStatus)
6667
}
6768
}
6869
}
@@ -96,10 +97,12 @@ class ToursViewModel @Inject constructor(
9697
val pickupDate = Date(pickup.scheduledTimeStart)
9798

9899
if (pickupDate.formatTo("yyyy-MM-dd") == currentDday) {
99-
Log.d("test", "new tour") // TODO: notification
100+
// TODO: notifications
100101
}
101102
}
102103
_tours.value = newTours
104+
} else {
105+
Log.d("debug", "fetchTours: $response")
103106
}
104107
}
105108

@@ -124,7 +127,7 @@ class ToursViewModel @Inject constructor(
124127
val failedReports = scannedTickets.value.entries
125128
.filter { e -> e.value.validationStatus == ValidationStatus.FAILED }
126129
for (report in failedReports) {
127-
reportTicketScan(report.value.requestId, report.value.ticketCode)
130+
retryFailedReport(report.value)
128131
}
129132

130133
delay(5000) // Fetch every 5 seconds

0 commit comments

Comments
 (0)