File tree 3 files changed +21
-8
lines changed
ios/MullvadVPN/View controllers/VPNSettings
3 files changed +21
-8
lines changed Original file line number Diff line number Diff line change @@ -264,14 +264,16 @@ final class VPNSettingsDataSource: UITableViewDiffableDataSource<
264
264
}
265
265
266
266
func update( from tunnelSettings: LatestTunnelSettings ) {
267
- let newViewModel = VPNSettingsViewModel ( from: tunnelSettings)
268
- let mergedViewModel = viewModel. merged ( newViewModel)
267
+ updateViewModel ( from: tunnelSettings)
268
+ updateSnapshot ( )
269
+ }
269
270
270
- if viewModel != mergedViewModel {
271
- viewModel = mergedViewModel
272
- }
271
+ func reload( from tunnelSettings: LatestTunnelSettings ) {
272
+ updateViewModel ( from: tunnelSettings)
273
273
274
- updateSnapshot ( )
274
+ var snapshot = snapshot ( )
275
+ snapshot. reconfigureItems ( snapshot. itemIdentifiers)
276
+ applySnapshot ( snapshot, animated: false )
275
277
}
276
278
277
279
// MARK: - UITableViewDelegate
@@ -416,6 +418,15 @@ final class VPNSettingsDataSource: UITableViewDiffableDataSource<
416
418
417
419
// MARK: - Private
418
420
421
+ func updateViewModel( from tunnelSettings: LatestTunnelSettings ) {
422
+ let newViewModel = VPNSettingsViewModel ( from: tunnelSettings)
423
+ let mergedViewModel = viewModel. merged ( newViewModel)
424
+
425
+ if viewModel != mergedViewModel {
426
+ viewModel = mergedViewModel
427
+ }
428
+ }
429
+
419
430
private func registerClasses( ) {
420
431
CellReuseIdentifiers . allCases. forEach { enumCase in
421
432
tableView? . register (
Original file line number Diff line number Diff line change @@ -30,10 +30,12 @@ final class VPNSettingsInteractor {
30
30
self . tunnelManager = tunnelManager
31
31
self . relayCacheTracker = relayCacheTracker
32
32
33
- tunnelObserver =
33
+ let tunnelObserver =
34
34
TunnelBlockObserver ( didUpdateTunnelSettings: { [ weak self] _, newSettings in
35
35
self ? . tunnelSettingsDidChange ? ( newSettings)
36
36
} )
37
+ self . tunnelObserver = tunnelObserver
38
+ tunnelManager. addObserver ( tunnelObserver)
37
39
}
38
40
39
41
func updateSettings( _ changes: [ TunnelSettingsUpdate ] , completion: ( ( ) -> Void ) ? = nil ) {
Original file line number Diff line number Diff line change @@ -57,7 +57,7 @@ class VPNSettingsViewController: UITableViewController {
57
57
)
58
58
59
59
interactor. tunnelSettingsDidChange = { [ weak self] newSettings in
60
- self ? . dataSource? . update ( from: newSettings)
60
+ self ? . dataSource? . reload ( from: newSettings)
61
61
}
62
62
dataSource? . update ( from: interactor. tunnelSettings)
63
63
You can’t perform that action at this time.
0 commit comments