fix: edit map marker only when connected

pull/610/head
andrekir 2023-03-27 14:44:50 -03:00
rodzic 189159c293
commit 84c85a8c3e
1 zmienionych plików z 8 dodań i 9 usunięć

Wyświetl plik

@ -273,8 +273,7 @@ class MapFragment : ScreenFragment("Map Fragment"), Logging {
return DialogBuilder(builder, nameInput, descInput, lockedSwitch) return DialogBuilder(builder, nameInput, descInput, lockedSwitch)
} }
private fun showDeleteMarkerDialog(id: Int) { private fun showDeleteMarkerDialog(waypoint: Waypoint) {
val waypoint = waypoints[id]
val builder = MaterialAlertDialogBuilder(requireContext()) val builder = MaterialAlertDialogBuilder(requireContext())
builder.setTitle(R.string.waypoint_delete) builder.setTitle(R.string.waypoint_delete)
builder.setNeutralButton(R.string.cancel) { _, _ -> builder.setNeutralButton(R.string.cancel) { _, _ ->
@ -282,13 +281,13 @@ class MapFragment : ScreenFragment("Map Fragment"), Logging {
} }
builder.setNegativeButton(R.string.delete_for_me) { _, _ -> builder.setNegativeButton(R.string.delete_for_me) { _, _ ->
debug("User deleted waypoint $id for me") debug("User deleted waypoint $id for me")
model.deleteWaypoint(id) model.deleteWaypoint(waypoint.id)
} }
if (waypoint != null && waypoint.lockedTo in setOf(0, model.myNodeNum ?: 0)) if (waypoint.lockedTo in setOf(0, model.myNodeNum ?: 0) && model.isConnected())
builder.setPositiveButton(R.string.delete_for_everyone) { _, _ -> builder.setPositiveButton(R.string.delete_for_everyone) { _, _ ->
debug("User deleted waypoint $id for everyone") debug("User deleted waypoint $id for everyone")
model.sendWaypoint(waypoint.copy { expire = 1 }) model.sendWaypoint(waypoint.copy { expire = 1 })
model.deleteWaypoint(id) model.deleteWaypoint(waypoint.id)
} }
val dialog = builder.show() val dialog = builder.show()
for (button in setOf( for (button in setOf(
@ -309,7 +308,7 @@ class MapFragment : ScreenFragment("Map Fragment"), Logging {
} }
dialog.builder.setNegativeButton(R.string.delete) { _, _ -> dialog.builder.setNegativeButton(R.string.delete) { _, _ ->
debug("User clicked delete waypoint ${waypoint.id}") debug("User clicked delete waypoint ${waypoint.id}")
showDeleteMarkerDialog(waypoint.id) showDeleteMarkerDialog(waypoint)
} }
dialog.builder.setPositiveButton(getString(R.string.send)) { _, _ -> dialog.builder.setPositiveButton(getString(R.string.send)) { _, _ ->
debug("User edited waypoint ${waypoint.id}") debug("User edited waypoint ${waypoint.id}")
@ -325,12 +324,12 @@ class MapFragment : ScreenFragment("Map Fragment"), Logging {
fun showMarkerLongPressDialog(id: Int) { fun showMarkerLongPressDialog(id: Int) {
debug("marker long pressed id=${id}") debug("marker long pressed id=${id}")
val waypoint = waypoints[id] val waypoint = waypoints[id] ?: return
// edit only when unlocked or lockedTo myNodeNum // edit only when unlocked or lockedTo myNodeNum
if (waypoint != null && waypoint.lockedTo in setOf(0, model.myNodeNum ?: 0)) if (waypoint.lockedTo in setOf(0, model.myNodeNum ?: 0) && model.isConnected())
showEditMarkerDialog(waypoint) showEditMarkerDialog(waypoint)
else else
showDeleteMarkerDialog(id) showDeleteMarkerDialog(waypoint)
} }
private fun downloadJobAlert() { private fun downloadJobAlert() {