Skip to content

Commit 54a0de8

Browse files
committed
Use State in AtomRoot
1 parent 1918011 commit 54a0de8

File tree

1 file changed

+25
-33
lines changed

1 file changed

+25
-33
lines changed

Sources/Atoms/AtomRoot.swift

Lines changed: 25 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ import SwiftUI
6161
/// ```
6262
///
6363
public struct AtomRoot<Content: View>: View {
64-
private var storeHost: StoreHost
64+
private var storage: Storage
6565
private var overrides = [OverrideKey: any OverrideProtocol]()
6666
private var observers = [Observer]()
6767
private let content: Content
@@ -70,7 +70,7 @@ public struct AtomRoot<Content: View>: View {
7070
///
7171
/// - Parameter content: The descendant view content that provides context for atoms.
7272
public init(@ViewBuilder content: () -> Content) {
73-
self.storeHost = .tree
73+
self.storage = .managed
7474
self.content = content()
7575
}
7676

@@ -84,26 +84,26 @@ public struct AtomRoot<Content: View>: View {
8484
storesIn store: AtomStore,
8585
@ViewBuilder content: () -> Content
8686
) {
87-
self.storeHost = .unmanaged(store: store)
87+
self.storage = .unmanaged(store: store)
8888
self.content = content()
8989
}
9090

9191
/// The content and behavior of the view.
9292
public var body: some View {
93-
switch storeHost {
94-
case .tree:
95-
TreeManaged(
96-
content: content,
93+
switch storage {
94+
case .managed:
95+
Managed(
9796
overrides: overrides,
98-
observers: observers
97+
observers: observers,
98+
content: content
9999
)
100100

101101
case .unmanaged(let store):
102102
Unmanaged(
103-
content: content,
104103
store: store,
105104
overrides: overrides,
106-
observers: observers
105+
observers: observers,
106+
content: content
107107
)
108108
}
109109
}
@@ -150,31 +150,28 @@ public struct AtomRoot<Content: View>: View {
150150
}
151151

152152
private extension AtomRoot {
153-
enum StoreHost {
154-
case tree
153+
enum Storage {
154+
case managed
155155
case unmanaged(store: AtomStore)
156156
}
157157

158-
struct TreeManaged: View {
159-
@MainActor
160-
final class State: ObservableObject {
161-
let store = AtomStore()
162-
let token = ScopeKey.Token()
163-
}
164-
165-
let content: Content
158+
struct Managed: View {
166159
let overrides: [OverrideKey: any OverrideProtocol]
167160
let observers: [Observer]
161+
let content: Content
162+
163+
@State
164+
private var store = AtomStore()
168165

169-
@StateObject
170-
private var state = State()
166+
@State
167+
private var token = ScopeKey.Token()
171168

172169
var body: some View {
173170
content.environment(
174171
\.store,
175172
StoreContext(
176-
store: state.store,
177-
scopeKey: ScopeKey(token: state.token),
173+
store: store,
174+
scopeKey: ScopeKey(token: token),
178175
inheritedScopeKeys: [:],
179176
observers: observers,
180177
scopedObservers: [],
@@ -186,25 +183,20 @@ private extension AtomRoot {
186183
}
187184

188185
struct Unmanaged: View {
189-
@MainActor
190-
final class State: ObservableObject {
191-
let token = ScopeKey.Token()
192-
}
193-
194-
let content: Content
195186
let store: AtomStore
196187
let overrides: [OverrideKey: any OverrideProtocol]
197188
let observers: [Observer]
189+
let content: Content
198190

199-
@StateObject
200-
private var state = State()
191+
@State
192+
private var token = ScopeKey.Token()
201193

202194
var body: some View {
203195
content.environment(
204196
\.store,
205197
StoreContext(
206198
store: store,
207-
scopeKey: ScopeKey(token: state.token),
199+
scopeKey: ScopeKey(token: token),
208200
inheritedScopeKeys: [:],
209201
observers: observers,
210202
scopedObservers: [],

0 commit comments

Comments
 (0)