Skip to content

Commit 222c2eb

Browse files
committed
WR-404: Refresh local printers
1 parent 2220f6f commit 222c2eb

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

src/main/kotlin/org/datepollsystems/waiterrobot/mediator/ui/configurePrinters/ConfigurePrintersScreen.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import androidx.compose.material.icons.Icons
77
import androidx.compose.material.icons.filled.ArrowForward
88
import androidx.compose.material.icons.filled.Delete
99
import androidx.compose.material.icons.filled.Logout
10+
import androidx.compose.material.icons.filled.Refresh
1011
import androidx.compose.material3.*
1112
import androidx.compose.runtime.*
1213
import androidx.compose.ui.Alignment
@@ -60,11 +61,15 @@ fun ConfigurePrintersScreen(vm: ConfigurePrintersViewModel) {
6061
Spacer(modifier = Modifier.weight(1f))
6162
}
6263

64+
IconButton(onClick = { vm.refreshLocalPrinters() }) {
65+
Icon(Icons.Filled.Refresh, contentDescription = null)
66+
}
67+
6368
IconButton(onClick = { App.logout() }) {
6469
Icon(Icons.Filled.Logout, contentDescription = null)
6570
}
6671
}
67-
Divider(modifier = Modifier.fillMaxWidth())
72+
HorizontalDivider(modifier = Modifier.fillMaxWidth())
6873

6974
if (state.unPairedBackendPrinters != null) {
7075
// TODO small infotext for user
@@ -85,7 +90,7 @@ fun ConfigurePrintersScreen(vm: ConfigurePrintersViewModel) {
8590
}
8691
}
8792

88-
Divider(modifier = Modifier.fillMaxWidth())
93+
HorizontalDivider(modifier = Modifier.fillMaxWidth())
8994

9095
Column(
9196
modifier = Modifier.fillMaxHeight(),

src/main/kotlin/org/datepollsystems/waiterrobot/mediator/ui/configurePrinters/ConfigurePrintersViewModel.kt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,28 @@ class ConfigurePrintersViewModel(
183183
}
184184
}
185185

186+
fun refreshLocalPrinters() = inVmScope {
187+
PrinterDiscoverService.refreshPrinters()
188+
reduce {
189+
val localPrinters = PrinterDiscoverService.localPrinterMap.toList().dropLast(1).toMap()
190+
val unpairedBackendPrinters = unPairedBackendPrinters?.toMutableList() ?: mutableListOf()
191+
val newPairings = pairings.mapNotNull { pairing ->
192+
val loPrinter = localPrinters[pairing.loPrinter.localId]
193+
if (loPrinter != null) {
194+
ConfigurePrintersState.PrinterPairing(pairing.bePrinter, loPrinter)
195+
} else {
196+
unpairedBackendPrinters.add(pairing.bePrinter)
197+
null // Remove pairing if local printer is not present anymore
198+
}
199+
}
200+
copy(
201+
localPrinters = localPrinters.values.toList(),
202+
pairings = newPairings,
203+
unPairedBackendPrinters = unpairedBackendPrinters
204+
)
205+
}
206+
}
207+
186208
override fun onKeyEvent(event: KeyEvent): Boolean {
187209
return when {
188210
(event.isCtrlPressed || event.isMetaPressed) && event.key == Key.D -> {

0 commit comments

Comments
 (0)