Skip to content

Commit

Permalink
Merge pull request #50 from Oni-zerone/release/0.5.1
Browse files Browse the repository at this point in the history
Release/0.5.1
  • Loading branch information
Oni-zerone committed Apr 3, 2020
2 parents a91f994 + f6e7847 commit 34965c8
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 15 deletions.
10 changes: 5 additions & 5 deletions Example/Podfile.lock
@@ -1,9 +1,9 @@
PODS:
- PowerTools (0.5.0):
- PowerTools/Core (= 0.5.0)
- PowerTools/CollectionVM (0.5.0):
- PowerTools (0.5.1):
- PowerTools/Core (= 0.5.1)
- PowerTools/CollectionVM (0.5.1):
- PowerTools/Core
- PowerTools/Core (0.5.0)
- PowerTools/Core (0.5.1)
- PowerToolsTester (0.4.0):
- PowerToolsTester/CoreTester (= 0.4.0)
- PowerToolsTester/CoreTester (0.4.0):
Expand All @@ -22,7 +22,7 @@ EXTERNAL SOURCES:
:path: "../Tester/"

SPEC CHECKSUMS:
PowerTools: 0d036e95e3bc1c3867be324e5023b107239df112
PowerTools: af8488b1f6dba2da567ab19bc37ad6f97bf83410
PowerToolsTester: cce5270b189036bc1b7dda0b30773374be745165

PODFILE CHECKSUM: e0af4d9ba0fe81ef397e2dd16c5f12eb9e08c1c6
Expand Down
4 changes: 2 additions & 2 deletions Example/Pods/Local Podspecs/PowerTools.podspec.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions Example/Pods/Manifest.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion PowerTools.podspec
Expand Up @@ -8,7 +8,7 @@

Pod::Spec.new do |s|
s.name = 'PowerTools'
s.version = '0.5.0'
s.version = '0.5.1'
s.summary = 'Tools for fast and modular app development.'
s.swift_version = '5.1'

Expand Down
20 changes: 18 additions & 2 deletions PowerTools/CollectionVM/Classes/DataStructure/ModelUpdate.swift
Expand Up @@ -21,10 +21,9 @@ internal struct ModelUpdate {

init(from oldModel: [SectionViewModel], to newModel: [SectionViewModel], forceReload: Bool = false) {

self.model = newModel

if forceReload || newModel.shouldReload(from: oldModel) {
self.change = nil
self.model = newModel
return
}

Expand All @@ -43,6 +42,7 @@ internal struct ModelUpdate {
let deletions = oldLookupTable.calculateDeletions(countTable: countTable)
changes.append(contentsOf: deletions)
self.change = changes
self.model = newModel.merge(oldModel)
}
}

Expand Down Expand Up @@ -75,6 +75,22 @@ internal extension Array where Element == SectionViewModel {
}
return firstChange != nil
}

func merge(_ oldModel: [SectionViewModel]) -> [SectionViewModel] {

let lookupTable = oldModel.lookupTable

return map { section in
var section = section
section.items = section.items.map { item in
guard let oldIndexPath = lookupTable[item.hashValue]?.first else {
return item
}
return oldModel[oldIndexPath.section].items[oldIndexPath.item]
}
return section
}
}
}

fileprivate extension Dictionary where Key == Int, Value == [IndexPath] {
Expand Down

0 comments on commit 34965c8

Please sign in to comment.