Skip to content
This repository was archived by the owner on Jun 7, 2020. It is now read-only.

Commit 058aa24

Browse files
authored
Merge pull request #2592 from RocketChat/improvement/better_tasks_management_on_directory
[IMPROVEMENT] Better task management on Directory
2 parents fc73fbe + 1048c98 commit 058aa24

3 files changed

Lines changed: 19 additions & 23 deletions

File tree

Rocket.Chat/Controllers/Directory/DirectoryViewController.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,9 +247,8 @@ extension DirectoryViewController: UISearchBarDelegate {
247247

248248
extension DirectoryViewController: DirectoryFiltersViewDelegate {
249249

250-
func userDidChangeFilterOption(selected: DirectoryRequestType, workspace: DirectoryWorkspaceType) {
250+
func userDidChangeFilterOption(selected: DirectoryRequestType) {
251251
viewModel.type = selected
252-
viewModel.workspace = workspace
253252

254253
tableView.reloadData()
255254

Rocket.Chat/Controllers/Directory/DirectoryViewModel.swift

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@ import Foundation
1010

1111
final class DirectoryViewModel {
1212

13-
var workspace: DirectoryWorkspaceType = .all {
14-
didSet {
15-
clear()
13+
var workspace: DirectoryWorkspaceType {
14+
if UserDefaults.standard.bool(forKey: kDirectoryFilterViewWorkspaceLocalKey) {
15+
return .local
1616
}
17+
18+
return .all
1719
}
1820

1921
var type: DirectoryRequestType = .users {
@@ -52,6 +54,7 @@ final class DirectoryViewModel {
5254
var showing = 0
5355
var total = 0
5456

57+
var task: URLSessionTask?
5558
var isLoadingMore = false
5659
var isShowingAllData: Bool {
5760
return showing >= total
@@ -78,6 +81,9 @@ final class DirectoryViewModel {
7881
currentPage = 0
7982
showing = 0
8083
total = 0
84+
85+
isLoadingMore = false
86+
task?.cancel()
8187
}
8288

8389
func user(at index: Int) -> UnmanagedUser {
@@ -93,18 +99,20 @@ final class DirectoryViewModel {
9399
return
94100
}
95101

102+
self.task?.cancel()
103+
96104
isLoadingMore = true
97105

98106
let requestType = self.type
99107
let request = DirectoryRequest(query: query, type: requestType, workspace: workspace)
100108
let options: APIRequestOptionSet = [.paginated(count: pageSize, offset: currentPage * pageSize)]
101109

102-
API.current()?.fetch(request, options: options) { [weak self] response in
110+
self.task = API.current()?.fetch(request, options: options) { [weak self] response in
103111
guard
104112
let self = self,
105113
case let .resource(resource) = response
106114
else {
107-
return Alert.defaultError.present()
115+
return
108116
}
109117

110118
if requestType == .users {

Rocket.Chat/Views/Directory/DirectoryFiltersView.swift

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import UIKit
1111
let kDirectoryFilterViewWorkspaceLocalKey = "kDirectoryFilterViewWorkspaceLocalKey"
1212

1313
protocol DirectoryFiltersViewDelegate: class {
14-
func userDidChangeFilterOption(selected: DirectoryRequestType, workspace: DirectoryWorkspaceType)
14+
func userDidChangeFilterOption(selected: DirectoryRequestType)
1515
}
1616

1717
final class DirectoryFiltersView: UIView {
@@ -137,32 +137,21 @@ final class DirectoryFiltersView: UIView {
137137
}
138138

139139
@IBAction func switchWorkspaceDidChange(_ sender: Any) {
140-
delegate?.userDidChangeFilterOption(
141-
selected: .users,
142-
workspace: switchWorkspace.isOn ? .all : .local
143-
)
144-
145140
UserDefaults.standard.set(
146141
!switchWorkspace.isOn,
147142
forKey: kDirectoryFilterViewWorkspaceLocalKey
148143
)
144+
145+
delegate?.userDidChangeFilterOption(selected: .users)
149146
}
150147

151148
@IBAction func buttonFilterChannelDidPressed(_ sender: Any) {
152-
delegate?.userDidChangeFilterOption(
153-
selected: .channels,
154-
workspace: switchWorkspace.isOn ? .all : .local
155-
)
156-
149+
delegate?.userDidChangeFilterOption(selected: .channels)
157150
close()
158151
}
159152

160153
@IBAction func buttonFilterUserDidPressed(_ sender: Any) {
161-
delegate?.userDidChangeFilterOption(
162-
selected: .users,
163-
workspace: switchWorkspace.isOn ? .all : .local
164-
)
165-
154+
delegate?.userDidChangeFilterOption(selected: .users)
166155
close()
167156
}
168157

0 commit comments

Comments
 (0)