From b93098cbcecdd9cd2e9b8f32fbf914854bc969f3 Mon Sep 17 00:00:00 2001 From: andrekir Date: Mon, 11 Sep 2023 21:26:42 -0300 Subject: [PATCH] fix: remove constructor from `DeviceSettingsFragment` --- .../main/java/com/geeksville/mesh/MainActivity.kt | 5 +++-- .../main/java/com/geeksville/mesh/model/UIState.kt | 11 +++++++++++ .../geeksville/mesh/ui/DeviceSettingsFragment.kt | 14 +++++++++++--- .../java/com/geeksville/mesh/ui/UsersFragment.kt | 3 ++- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/MainActivity.kt b/app/src/main/java/com/geeksville/mesh/MainActivity.kt index 2eb496187..6b8fe04ae 100644 --- a/app/src/main/java/com/geeksville/mesh/MainActivity.kt +++ b/app/src/main/java/com/geeksville/mesh/MainActivity.kt @@ -751,9 +751,10 @@ class MainActivity : AppCompatActivity(), Logging { return true } R.id.radio_config -> { - val node = model.ourNodeInfo.value ?: return true + if (model.ourNodeInfo.value == null) return true + model.setDestNode(null) supportFragmentManager.beginTransaction() - .add(R.id.mainActivityLayout, DeviceSettingsFragment(node)) + .add(R.id.mainActivityLayout, DeviceSettingsFragment()) .addToBackStack(null) .commit() return true diff --git a/app/src/main/java/com/geeksville/mesh/model/UIState.kt b/app/src/main/java/com/geeksville/mesh/model/UIState.kt index 5674aa8fc..15c444d4d 100644 --- a/app/src/main/java/com/geeksville/mesh/model/UIState.kt +++ b/app/src/main/java/com/geeksville/mesh/model/UIState.kt @@ -183,6 +183,17 @@ class UIViewModel @Inject constructor( .filterValues { it.data.waypoint!!.expire > System.currentTimeMillis() / 1000 } }.asLiveData() + private val _destNode = MutableStateFlow(null) + val destNode: StateFlow get() = if (_destNode.value != null) _destNode else _ourNodeInfo + + /** + * Sets the destination [NodeInfo] used in Radio Configuration. + * @param node Destination [NodeInfo] (or null for our local NodeInfo). + */ + fun setDestNode(node: NodeInfo?) { + _destNode.value = node + } + /** * Called immediately after activity observes packetResponse */ diff --git a/app/src/main/java/com/geeksville/mesh/ui/DeviceSettingsFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/DeviceSettingsFragment.kt index a016d8d4f..43c98b192 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/DeviceSettingsFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/DeviceSettingsFragment.kt @@ -102,7 +102,7 @@ import com.google.accompanist.themeadapter.appcompat.AppCompatTheme import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class DeviceSettingsFragment(val node: NodeInfo) : ScreenFragment("Radio Configuration"), Logging { +class DeviceSettingsFragment : ScreenFragment("Radio Configuration"), Logging { private val model: UIViewModel by activityViewModels() @@ -115,8 +115,13 @@ class DeviceSettingsFragment(val node: NodeInfo) : ScreenFragment("Radio Configu setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) setBackgroundColor(ContextCompat.getColor(context, R.color.colorAdvancedBackground)) setContent { + val node by model.destNode.collectAsStateWithLifecycle() + AppCompatTheme { - RadioConfigNavHost(node, model) + RadioConfigNavHost( + node!!, + model, + ) } } } @@ -163,7 +168,10 @@ sealed class PacketResponseState { } @Composable -fun RadioConfigNavHost(node: NodeInfo, viewModel: UIViewModel = viewModel()) { +fun RadioConfigNavHost( + node: NodeInfo, + viewModel: UIViewModel = viewModel(), +) { val navController = rememberNavController() val connectionState by viewModel.connectionState.observeAsState() diff --git a/app/src/main/java/com/geeksville/mesh/ui/UsersFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/UsersFragment.kt index c2aa1066b..614b12192 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/UsersFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/UsersFragment.kt @@ -129,8 +129,9 @@ class UsersFragment : ScreenFragment("Users"), Logging { } R.id.remote_admin -> { debug("calling remote admin --> destNum: ${node.num.toUInt()}") + model.setDestNode(node) parentFragmentManager.beginTransaction() - .replace(R.id.mainActivityLayout, DeviceSettingsFragment(node)) + .replace(R.id.mainActivityLayout, DeviceSettingsFragment()) .addToBackStack(null) .commit() }