Skip to content

Commit 590a240

Browse files
rabladoracb-mv
authored andcommitted
Fix reloading of data in settings cells
1 parent ef07276 commit 590a240

File tree

3 files changed

+21
-8
lines changed

3 files changed

+21
-8
lines changed

ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsDataSource.swift

+17-6
Original file line numberDiff line numberDiff line change
@@ -264,14 +264,16 @@ final class VPNSettingsDataSource: UITableViewDiffableDataSource<
264264
}
265265

266266
func update(from tunnelSettings: LatestTunnelSettings) {
267-
let newViewModel = VPNSettingsViewModel(from: tunnelSettings)
268-
let mergedViewModel = viewModel.merged(newViewModel)
267+
updateViewModel(from: tunnelSettings)
268+
updateSnapshot()
269+
}
269270

270-
if viewModel != mergedViewModel {
271-
viewModel = mergedViewModel
272-
}
271+
func reload(from tunnelSettings: LatestTunnelSettings) {
272+
updateViewModel(from: tunnelSettings)
273273

274-
updateSnapshot()
274+
var snapshot = snapshot()
275+
snapshot.reconfigureItems(snapshot.itemIdentifiers)
276+
applySnapshot(snapshot, animated: false)
275277
}
276278

277279
// MARK: - UITableViewDelegate
@@ -416,6 +418,15 @@ final class VPNSettingsDataSource: UITableViewDiffableDataSource<
416418

417419
// MARK: - Private
418420

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+
419430
private func registerClasses() {
420431
CellReuseIdentifiers.allCases.forEach { enumCase in
421432
tableView?.register(

ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsInteractor.swift

+3-1
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,12 @@ final class VPNSettingsInteractor {
3030
self.tunnelManager = tunnelManager
3131
self.relayCacheTracker = relayCacheTracker
3232

33-
tunnelObserver =
33+
let tunnelObserver =
3434
TunnelBlockObserver(didUpdateTunnelSettings: { [weak self] _, newSettings in
3535
self?.tunnelSettingsDidChange?(newSettings)
3636
})
37+
self.tunnelObserver = tunnelObserver
38+
tunnelManager.addObserver(tunnelObserver)
3739
}
3840

3941
func updateSettings(_ changes: [TunnelSettingsUpdate], completion: (() -> Void)? = nil) {

ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsViewController.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class VPNSettingsViewController: UITableViewController {
5757
)
5858

5959
interactor.tunnelSettingsDidChange = { [weak self] newSettings in
60-
self?.dataSource?.update(from: newSettings)
60+
self?.dataSource?.reload(from: newSettings)
6161
}
6262
dataSource?.update(from: interactor.tunnelSettings)
6363

0 commit comments

Comments
 (0)