Skip to content

Commit b67992e

Browse files
committed
Add observer owner
1 parent 76f88ba commit b67992e

File tree

4 files changed

+14
-10
lines changed

4 files changed

+14
-10
lines changed

Sources/Micro/DataSource.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import UIKit
99

1010
open class DataSource: NSObject {
1111
private var cellRegister: Set<String> = Set()
12-
public var finalState: State = .init()
12+
private var finalState: State = .init()
1313
public weak var collectionView: UICollectionView?
1414

1515
public init(collectionView: UICollectionView) {

Sources/Micro/ForEach.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@
88
import UIKit
99
import DeepDiff
1010

11-
public func forEach<Model: DiffAware, Cell: UICollectionViewCell>(
11+
public func forEach<Model: DiffAware>(
1212
models: [Model],
13-
transform: (Model) -> Item<Cell>
13+
transform: (Model) -> ObserverOwner
1414
) -> State {
1515
let onReload: Reloader.Reload = { request in
1616
let reload: () -> Void = {
1717
let oldModels: [Model] = request.oldState.models.compactMap({ $0 as? Model })
1818

1919
if oldModels.isEmpty {
20-
request.dataSource.state = request.newState
20+
request.dataSource.finalState = request.newState
2121
request.collectionView.reloadData()
2222
request.completion(true)
2323
return
@@ -43,12 +43,12 @@ public func forEach<Model: DiffAware, Cell: UICollectionViewCell>(
4343
}
4444
}
4545

46-
let items: [Item<Cell>] = models.map(transform)
47-
let observers: [Observer] = items.map({ $0.observer })
46+
let owners: [ObserverOwner] = models.map(transform)
47+
let observers: [Observer] = owners.map({ $0.observer })
4848

4949
return State(
5050
models: models,
51-
items: items,
51+
owners: owners,
5252
observers: observers,
5353
reloader: Reloader(onReload: onReload)
5454
)

Sources/Micro/Item.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@
77

88
import UIKit
99

10-
public struct Item<Cell: UICollectionViewCell> {
10+
public protocol ObserverOwner {
11+
var observer: Observer { get }
12+
}
13+
14+
public struct Item<Cell: UICollectionViewCell>: ObserverOwner {
1115
public let observer = Observer()
1216

1317
public init(_ closure: @escaping (Cell) -> Void) {

Sources/Micro/State.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ import DeepDiff
1010

1111
public struct State {
1212
let models: [Any]
13-
let items: [Any]
13+
let owners: [ObserverOwner]
1414
let observers: [Observer]
1515
let reloader: Reloader
1616
}
1717

1818
extension State {
1919
public init() {
2020
self.models = []
21-
self.items = []
21+
self.owners = []
2222
self.observers = []
2323
self.reloader = Reloader(onReload: { _ in })
2424
}

0 commit comments

Comments
 (0)