Skip to content

Commit 991b7e5

Browse files
committed
Fixes bug with preview image arriving after full image.
Fixes bug when receiving changes from iCloud where there are deletions and changes for the same IndexPath Use UIScheduler() instead of QueueScheduler.main. Upgrade to ReactiveCocoa 6.0
1 parent 6a5ebf4 commit 991b7e5

File tree

14 files changed

+42
-37
lines changed

14 files changed

+42
-37
lines changed

Cartfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
github "bizz84/SwiftyStoreKit"
22
github "mluisbrown/DACircularProgress" "master"
33
github "robb/Cartography"
4-
github "ReactiveCocoa/ReactiveCocoa" ~> 5.0
4+
github "ReactiveCocoa/ReactiveCocoa"

Cartfile.resolved

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
github "ReactiveCocoa/ReactiveCocoa" "5.0.4"
2-
github "ReactiveCocoa/ReactiveSwift" "1.1.5"
1+
github "ReactiveCocoa/ReactiveCocoa" "6.0.0"
2+
github "ReactiveCocoa/ReactiveSwift" "2.0.0"
33
github "antitypical/Result" "3.2.3"
4-
github "bizz84/SwiftyStoreKit" "0.10.4"
4+
github "bizz84/SwiftyStoreKit" "0.10.5"
55
github "mluisbrown/DACircularProgress" "b00da38778a4e0f7962df88e1c5ad7dd41eef862"
66
github "robb/Cartography" "1.1.0"

Memories/Date Picker/DatePickerViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ class DatePickerViewController: UIViewController, UIPickerViewDataSource, UIPick
7171
}
7272
}
7373

74-
datesWithCount <~ buildDatesWithCount().observe(on: QueueScheduler.main)
74+
datesWithCount <~ buildDatesWithCount().observe(on: UIScheduler())
7575
}
7676

7777
// MARK: - UIPickerViewDataSource

Memories/Grid View/GridViewController.swift

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,31 +69,31 @@ class GridViewController: UICollectionViewController
6969
let RELEASE_THRESHOLD : CGFloat = 100.0
7070

7171
private func bindToModel() {
72-
model.resultsDate.signal.observe(on: QueueScheduler.main)
72+
model.resultsDate.signal.observe(on: UIScheduler())
7373
.skipRepeats(==)
7474
.observeValues { [weak self] date in
7575
self?.refreshData(for: date)
7676
}
7777

78-
model.title.producer.observe(on: QueueScheduler.main)
78+
model.title.producer.observe(on: UIScheduler())
7979
.startWithValues { [weak self] title in
8080
self?.titleView.text = title
8181
self?.titleView.sizeToFit()
8282
}
8383

84-
model.sectionChanged.observe(on: QueueScheduler.main)
84+
model.sectionChanged.observe(on: UIScheduler())
8585
.observeValues { [weak self] changes in
8686
self?.updateSection(with: changes)
8787
}
8888

89-
model.statusText.producer.observe(on: QueueScheduler.main)
89+
model.statusText.producer.observe(on: UIScheduler())
9090
.startWithValues { [weak self] status in
9191
self?.showHideStatusLabel(status)
9292
}
9393
}
9494

9595
private func loadPhotos() {
96-
PhotoLibraryAuthorization.checkPhotosPermission().observe(on: QueueScheduler.main)
96+
PhotoLibraryAuthorization.checkPhotosPermission().observe(on: UIScheduler())
9797
.startWithValues { [weak self] status in
9898
switch status {
9999
case .authorized:
@@ -181,7 +181,9 @@ class GridViewController: UICollectionViewController
181181

182182
// MARK: - Observer handlers
183183
private func updateSection(with changes: SectionChanges) {
184-
if changes.nonIncremental {
184+
let changeRemoveConflicts = changes.changed.filter() { changes.removed.contains($0) }.count != 0
185+
186+
if changes.nonIncremental || changeRemoveConflicts {
185187
collectionView?.reloadSections(IndexSet(integer: changes.section))
186188
}
187189
else {

Memories/Grid View/GridViewModel.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ struct GridViewModel {
5151
}
5252

5353
fileprivate let assetFetchResults = MutableProperty([PHFetchResult<PHAsset>]())
54-
fileprivate let sectionChangesObserver: Observer<SectionChanges, NoError>
54+
fileprivate let sectionChangesObserver: Signal<SectionChanges, NoError>.Observer
5555
let sectionChanged: Signal<SectionChanges, NoError>
5656

5757
let libraryObserver: PhotoLibraryObserver?

Memories/Photos View/PhotoViewModel.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ enum AssetResource {
1919

2020
final class PhotoViewModel {
2121
let asset: MutableProperty<PHAsset>
22-
let assetResource = MutableProperty<AssetResource?>(nil)
2322
let previewImage = MutableProperty<UIImage?>(nil)
23+
let assetResource = MutableProperty<AssetResource?>(nil)
2424
let assetRequestId = MutableProperty<PHImageRequestID?>(nil)
2525

2626
let fullImageUnavailable = MutableProperty(false)

Memories/Photos View/PhotosViewController.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class PhotosViewController: UIViewController,
6868
.filter { [weak self] in
6969
self?.pageViews[$0] != nil
7070
}
71-
.observe(on: QueueScheduler.main)
71+
.observe(on: UIScheduler())
7272
.observeValues {
7373
let pageView = self.pageViews[$0]!
7474
let photoViewModel = self.model.photoViewModel(at: $0)
@@ -77,7 +77,7 @@ class PhotosViewController: UIViewController,
7777
}
7878

7979
model.photoViewModels.signal
80-
.observe(on: QueueScheduler.main)
80+
.observe(on: UIScheduler())
8181
.observeValues { [weak self] in
8282
if $0.count == 0 {
8383
self?.presentingViewController?.dismiss(animated: true, completion: nil)
@@ -90,7 +90,7 @@ class PhotosViewController: UIViewController,
9090
}
9191

9292
model.currentAssetChanged.signal
93-
.observe(on: QueueScheduler.main)
93+
.observe(on: UIScheduler())
9494
.observeValues { [weak self] in
9595
self?.heartButton.setImage(self?.buttonImage(forFavorite: $0.isFavorite), for: .normal)
9696
}

Memories/Photos View/PhotosViewModel.swift

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ struct PhotosViewModel {
2121
fileprivate let _photoViewModels = MutableProperty([PhotoViewModel]())
2222
let photoViewModels: Property<[PhotoViewModel]>
2323

24-
fileprivate let indexLoadedAndVisibleObserver: Observer<Int, NoError>
24+
fileprivate let indexLoadedAndVisibleObserver: Signal<Int, NoError>.Observer
2525
let indexLoadedAndVisible: Signal<Int, NoError>
2626

27-
fileprivate let currentAssetChangedObserver: Observer<PHAsset, NoError>
27+
fileprivate let currentAssetChangedObserver: Signal<PHAsset, NoError>.Observer
2828
let currentAssetChanged: Signal<PHAsset, NoError>
2929

3030
private let libraryObserver: PhotoLibraryObserver
@@ -76,8 +76,11 @@ extension PhotosViewModel {
7676
func loadPreviewImageFor(index: Int) {
7777
let photoViewModel = photoViewModels.value[index]
7878

79-
self.imageManager.requestImage(for: photoViewModel.asset.value, targetSize: self.cacheSize,
80-
contentMode: .aspectFill, options: nil, resultHandler: { result, userInfo in
79+
self.imageManager.requestImage(for: photoViewModel.asset.value,
80+
targetSize: self.cacheSize,
81+
contentMode: .aspectFill,
82+
options: nil,
83+
resultHandler: { result, userInfo in
8184
if let image = result {
8285
photoViewModel.previewImage.value = image
8386

Memories/Photos View/ZoomingPhotoView.swift

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -151,10 +151,10 @@ class ZoomingPhotoView: UIView, UIScrollViewDelegate {
151151
model.assetResource.signal
152152
.take(during: self.reactive.lifetime)
153153
.skipNil()
154-
.on(value: { [weak self] _ in
154+
.on() { [weak self] _ in
155155
self?.model.imageIsPreview.value = false
156-
})
157-
.observe(on: QueueScheduler.main)
156+
}
157+
.observe(on: UIScheduler())
158158
.observeValues { [weak self] in
159159
self?.progressView.isHidden = true
160160

@@ -173,32 +173,32 @@ class ZoomingPhotoView: UIView, UIScrollViewDelegate {
173173
model.previewImage.signal
174174
.take(during: self.reactive.lifetime)
175175
.skipNil()
176-
.on(value: { [weak self] _ in
177-
self?.model.imageIsPreview.value = true
178-
})
179-
.observe(on: QueueScheduler.main)
176+
.filter() { [weak self] _ in
177+
self?.model.imageIsPreview.value == true
178+
}
179+
.observe(on: UIScheduler())
180180
.observeValues { [weak self] in
181181
self?.mediaView.photo = $0
182182
self?.adjustZoomScale()
183183
}
184184

185185
model.progress.signal
186186
.take(during: self.reactive.lifetime)
187-
.observe(on: QueueScheduler.main)
187+
.observe(on: UIScheduler())
188188
.observeValues { [weak self] in
189189
self?.updateProgress($0)
190190
}
191191

192192
model.indeterminateProgress.signal
193193
.take(during: self.reactive.lifetime)
194-
.observe(on: QueueScheduler.main)
194+
.observe(on: UIScheduler())
195195
.observeValues { [weak self] in
196196
self?.updateProgress(indeterminate: $0)
197197
}
198198

199199
model.fullImageUnavailable.signal
200200
.take(during: self.reactive.lifetime)
201-
.observe(on: QueueScheduler.main)
201+
.observe(on: UIScheduler())
202202
.filter { $0 }
203203
.observeValues { [weak self] _ in
204204
self?.errorIndicator.isHidden = false

Memories/Supporting Files/Info.plist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<key>CFBundlePackageType</key>
1616
<string>APPL</string>
1717
<key>CFBundleShortVersionString</key>
18-
<string>1.2.2</string>
18+
<string>1.2.3</string>
1919
<key>CFBundleSignature</key>
2020
<string>????</string>
2121
<key>CFBundleURLTypes</key>
@@ -32,7 +32,7 @@
3232
</dict>
3333
</array>
3434
<key>CFBundleVersion</key>
35-
<string>27</string>
35+
<string>28</string>
3636
<key>Fabric</key>
3737
<dict>
3838
<key>APIKey</key>

0 commit comments

Comments
 (0)