diff --git a/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ComposeUtils.kt b/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ComposeUtils.kt index 351a0674182c80da061ce8ec285b21aa243265bb..86043d455e8d98a33d08ddcbd201e769b2fd0ad8 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ComposeUtils.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ComposeUtils.kt @@ -52,11 +52,7 @@ fun <VM : ViewModel> viewModel( "No ViewModelProvider was provided via LocalViewModelProvider" } ): VM { - val viewModel = if (key == null) { - viewModelProvider.get(modelClass) - } else { - viewModelProvider.get(key, modelClass) - } + val viewModel = viewModelProvider.get(modelClass, key) DisposableEffect(key) { viewModel.onInit() diff --git a/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelProvider.kt b/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelProvider.kt index dd352bfb2ce758ee1f4fde63a3efc01b4ee98e52..f232f4600fddd8679566cc2bf5c96c766a5210d3 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelProvider.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelProvider.kt @@ -16,11 +16,9 @@ constructor( private val viewModels = HashMap<String, ViewModel>() - fun <VM : ViewModel> get(modelClass: KClass<VM>): VM = - get(modelClass.qualifiedName!!, modelClass) - - fun <VM : ViewModel> get(key: String, modelClass: KClass<VM>): VM { - val viewModel = viewModels[key] + fun <VM : ViewModel> get(modelClass: KClass<VM>, key: String? = null): VM { + val viewModelKey = "${modelClass.qualifiedName}:$key" + val viewModel = viewModels[viewModelKey] if (modelClass.isInstance(viewModel)) { return viewModel as VM @@ -28,7 +26,7 @@ constructor( try { val viewModel = viewModelFactory.create(modelClass) - viewModels[key] = viewModel + viewModels[viewModelKey] = viewModel return viewModel } catch (e: InstantiationException) { throw RuntimeException("Cannot create an instance of $modelClass", e)