mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-03-27 10:11:48 -04:00
Refactor command handling, enhance tests, and improve discovery logic (#4878)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
This commit is contained in:
3
app/proguard-rules.pro
vendored
3
app/proguard-rules.pro
vendored
@@ -20,6 +20,9 @@
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
||||
|
||||
# Room KMP: preserve generated database constructor (required for R8/ProGuard)
|
||||
-keep class * extends androidx.room.RoomDatabase { <init>(); }
|
||||
|
||||
# Needed for protobufs
|
||||
-keep class com.google.protobuf.** { *; }
|
||||
-keep class org.meshtastic.proto.** { *; }
|
||||
|
||||
@@ -90,11 +90,10 @@ import org.meshtastic.core.resources.should_update_firmware
|
||||
import org.meshtastic.core.resources.traceroute
|
||||
import org.meshtastic.core.resources.view_on_map
|
||||
import org.meshtastic.core.service.MeshService
|
||||
import org.meshtastic.core.ui.component.MeshtasticDialog
|
||||
import org.meshtastic.core.ui.component.AlertHost
|
||||
import org.meshtastic.core.ui.component.ScrollToTopEvent
|
||||
import org.meshtastic.core.ui.component.SharedDialogs
|
||||
import org.meshtastic.core.ui.navigation.icon
|
||||
import org.meshtastic.core.ui.qr.ScannedQrCodeDialog
|
||||
import org.meshtastic.core.ui.share.SharedContactDialog
|
||||
import org.meshtastic.core.ui.theme.StatusColors.StatusGreen
|
||||
import org.meshtastic.core.ui.theme.StatusColors.StatusOrange
|
||||
import org.meshtastic.core.ui.theme.StatusColors.StatusYellow
|
||||
@@ -122,39 +121,17 @@ fun MainScreen(uIViewModel: UIViewModel = koinViewModel(), scanModel: ScannerVie
|
||||
val sharedContactRequested by uIViewModel.sharedContactRequested.collectAsStateWithLifecycle()
|
||||
val unreadMessageCount by uIViewModel.unreadMessageCount.collectAsStateWithLifecycle()
|
||||
|
||||
if (connectionState == ConnectionState.Connected) {
|
||||
sharedContactRequested?.let {
|
||||
SharedContactDialog(sharedContact = it, onDismiss = { uIViewModel.clearSharedContactRequested() })
|
||||
}
|
||||
|
||||
requestChannelSet?.let { newChannelSet ->
|
||||
ScannedQrCodeDialog(newChannelSet, onDismiss = { uIViewModel.clearRequestChannelUrl() })
|
||||
}
|
||||
}
|
||||
SharedDialogs(
|
||||
connectionState = connectionState,
|
||||
sharedContactRequested = sharedContactRequested,
|
||||
requestChannelSet = requestChannelSet,
|
||||
onDismissSharedContact = { uIViewModel.clearSharedContactRequested() },
|
||||
onDismissChannelSet = { uIViewModel.clearRequestChannelUrl() },
|
||||
)
|
||||
|
||||
VersionChecks(uIViewModel)
|
||||
|
||||
val alertDialogState by uIViewModel.currentAlert.collectAsStateWithLifecycle()
|
||||
alertDialogState?.let { state ->
|
||||
val title = state.title ?: state.titleRes?.let { stringResource(it) } ?: ""
|
||||
val message = state.message ?: state.messageRes?.let { stringResource(it) }
|
||||
val confirmText = state.confirmText ?: state.confirmTextRes?.let { stringResource(it) }
|
||||
val dismissText = state.dismissText ?: state.dismissTextRes?.let { stringResource(it) }
|
||||
|
||||
MeshtasticDialog(
|
||||
title = title,
|
||||
message = message,
|
||||
html = state.html,
|
||||
icon = state.icon,
|
||||
text = state.composableMessage?.let { msg -> { msg.Content() } },
|
||||
confirmText = confirmText,
|
||||
onConfirm = state.onConfirm,
|
||||
dismissText = dismissText,
|
||||
onDismiss = state.onDismiss,
|
||||
choices = state.choices,
|
||||
dismissable = state.dismissable,
|
||||
)
|
||||
}
|
||||
AlertHost(uIViewModel.alertManager)
|
||||
|
||||
val traceRouteResponse by uIViewModel.tracerouteResponse.collectAsStateWithLifecycle(null)
|
||||
var dismissedTracerouteRequestId by remember { mutableStateOf<Int?>(null) }
|
||||
|
||||
Reference in New Issue
Block a user