Skip to content

Commit 2b8944b

Browse files
committed
Use StateObject for IOSViewModelSToreOwner directly
1 parent aa47c95 commit 2b8944b

File tree

4 files changed

+11
-10
lines changed

4 files changed

+11
-10
lines changed

Fruitties/iosApp/iosApp/IOSViewModelStoreOwner.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import SwiftUI
22
import shared
33

4-
/// A ViewModelStoreOwner specifically for iOS.
5-
/// This is used with from iOS with Kotlin Multiplatform (KMP).
4+
/// A ViewModelStoreOwner specifically for iOS to be an ObservableObject.
65
class IOSViewModelStoreOwner: ObservableObject, ViewModelStoreOwner {
76

87
var viewModelStore = ViewModelStore()
@@ -25,7 +24,13 @@ class IOSViewModelStoreOwner: ObservableObject, ViewModelStoreOwner {
2524
}
2625
}
2726

27+
/// This can be called from outside when using the `ViewModelStoreOwnerProvider`
2828
func clear() {
2929
viewModelStore.clear()
3030
}
31+
32+
/// This is called when this class is used as a `@StateObject`
33+
deinit {
34+
viewModelStore.clear()
35+
}
3136
}

Fruitties/iosApp/iosApp/ui/CartView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import shared
2020

2121
struct CartView: View {
2222
/// Injects the `IOSViewModelStoreOwner` from the environment, which manages the lifecycle of `ViewModel` instances.
23-
@EnvironmentObject var viewModelStoreOwner: IOSViewModelStoreOwner
23+
@StateObject var viewModelStoreOwner = IOSViewModelStoreOwner()
2424

2525
/// Injects the `AppContainer` from the environment, providing access to application-wide dependencies.
2626
@EnvironmentObject var appContainer: ObservableValueWrapper<AppContainer>

Fruitties/iosApp/iosApp/ui/ContentView.swift

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,7 @@ struct ContentView: View {
3939
value in
4040
HStack {
4141
NavigationLink {
42-
ViewModelStoreOwnerProvider {
43-
FruittieScreen(fruittie: value)
44-
}
42+
FruittieScreen(fruittie: value)
4543
} label: {
4644
FruittieView(fruittie: value)
4745
}
@@ -62,9 +60,7 @@ struct ContentView: View {
6260
.toolbar {
6361
ToolbarItem(placement: .navigationBarTrailing) {
6462
NavigationLink {
65-
ViewModelStoreOwnerProvider {
66-
CartView()
67-
}
63+
CartView()
6864
} label: {
6965
Observing(mainViewModel.homeUiState) { homeUIState in
7066
let total = homeUIState.cartItemCount

Fruitties/iosApp/iosApp/ui/FruittieScreen.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import SwiftUI
1919
import shared
2020

2121
struct FruittieScreen: View {
22-
@EnvironmentObject var viewModelStoreOwner: IOSViewModelStoreOwner
22+
@StateObject var viewModelStoreOwner = IOSViewModelStoreOwner()
2323
@EnvironmentObject var appContainer: ObservableValueWrapper<AppContainer>
2424
let fruittie: Fruittie
2525

0 commit comments

Comments
 (0)