git.iko.soy/dashared/GDproject
on master help sign in
Bags and a lot of UI staff that was needed to be done :)
commit9e2f6dc18ee7d37d8bc19a792f39a4d2758c826d authorDarya Rednikina <rednikina.com@yandex.ru> dateThu 16 May 2019, 19:04 (7 years ago) parent9a307ab
6 files changed+113−9
GDproject/Controller/ News and channels/NewPostViewController.swift+3−1 GDproject/Controller/Log In/RegisterTableViewController.swift+1 GDproject/Controller/Messages/Dialog/DialogViewController.swift+5−2 GDproject/Controller/Messages/MessagesViewController.swift+102−4 GDproject/Controller/Profile/ProfileViewController.swift+1−1 GDproject/Simple model/Model.swift+1−1
GDproject/Controller/ News and channels/NewPostViewController.swift+3−1
@@ -232,6 +232,7 @@ class NewPostViewController: UIViewController, UITextViewDelegate, TagsReceiver
232232 var indexOfPost = 0
233233 // MARK:- new post
234234 @objc func newPost(){
235+ self.navigationItem.title = "Sending..."
235236 Model.createAndPublish(body: [Model.Attachments(markdown: textView!.text)], tags: currentTags) {
236237 [weak self] in
237238
@@ -241,9 +242,10 @@ class NewPostViewController: UIViewController, UITextViewDelegate, TagsReceiver
241242 NewPostViewController.hashTagsDraft = []
242243 self?.moveBackToParentVC?()
243244 default:
244− // self?.actionSaveDraft()
245245 self?.showAlertOn(result: $0)
246+ self?.navigationItem.title = "New post"
246247 }
248+
247249 }
248250
249251 // NewPostViewController.draft = ""
GDproject/Controller/Log In/RegisterTableViewController.swift+1
@@ -50,6 +50,7 @@ class RegisterTableViewController: UITableViewController, ChosenFactulty
5050 {
5151 super.viewDidLoad()
5252
53+ navigationItem.largeTitleDisplayMode = .never
5354 tableView.keyboardDismissMode = .interactive
5455 navigationItem.title = user.email
5556 navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(endRegistration))
GDproject/Controller/Messages/Dialog/DialogViewController.swift+5−2
@@ -61,7 +61,9 @@ class DialogViewController: UIViewController, UpdatableGroup, UITableViewDelegat
6161
6262 self.tableView.delegate = self
6363 self.tableView.dataSource = self
64−
64+
65+ tableView.setContentOffset(CGPoint(x: 0, y: 50), animated: false)
66+
6567 navigationItem.largeTitleDisplayMode = .never
6668
6769 tableView.keyboardDismissMode = .onDrag
@@ -114,6 +116,7 @@ class DialogViewController: UIViewController, UpdatableGroup, UITableViewDelegat
114116 let button = UIButton()
115117 button.setTitle("Send", for: .normal)
116118 button.setTitleColor(.blue, for: .normal)
119+ button.titleLabel?.font = UIFont.systemFont(ofSize: 17, weight: .semibold)
117120 button.addTarget(self, action: #selector(sendMessage), for: .touchUpInside)
118121 return button
119122 }()
@@ -320,7 +323,7 @@ class DialogViewController: UIViewController, UpdatableGroup, UITableViewDelegat
320323 var canBePaginated = false
321324 func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)
322325 {
323− if indexPath.row == cellData.count - 1 && prevLast != indexPath.row && canBePaginated && cellData.count >= 9
326+ if indexPath.row == cellData.count - 1 && prevLast != indexPath.row && canBePaginated && cellData.count >= 24
324327 {
325328 print("exclusiveFrom \(currentMessagesInChat.last?.id ?? 0)")
326329 if let dialog = dialog
GDproject/Controller/Messages/MessagesViewController.swift+102−4
@@ -8,8 +8,44 @@
88
99import UIKit
1010
11−class MessagesViewController: UITableViewController {
11+protocol SelectableDialog: class {
12+ func openDialog(with dialog: Model.Dialog)
13+}
1214
15+class MessagesViewController: UITableViewController, UISearchControllerDelegate, UISearchResultsUpdating, SelectableDialog {
16+
17+ func openDialog(with dialog: Model.Dialog) {
18+ onDialogDisplay?((dialog, users))
19+ }
20+
21+ func updateSearchResults(for searchController: UISearchController) {
22+
23+ let filteredData = currentActiveDialogs
24+ let inputText = searchController.searchBar.text ?? ""
25+
26+ let filteredResults = filteredData.filter {
27+
28+ switch $0 {
29+ case .groupChat(let gropuChat):
30+ return gropuChat.group.name.contains(inputText)
31+
32+ case .userChat(let userChat):
33+ let user = users[userChat.user]
34+ guard let u = user else { return false }
35+ return u.fullName().contains(inputText)
36+
37+ }
38+
39+ }
40+
41+ // Apply the filtered results to the search results table.
42+ if let resultsController = searchController.searchResultsController as? SuggestedDialogsTableViewController {
43+ resultsController.users = users
44+ resultsController.currentDialogs = filteredResults
45+ resultsController.tableView.reloadData()
46+ }
47+ }
48+
1349 // curreent Active which can be displayed
1450 var currentActiveDialogs: [Model.Dialog] = [] {
1551 didSet {
@@ -17,6 +53,17 @@ class MessagesViewController: UITableViewController {
1753 }
1854 }
1955
56+ func setUpSearchContr(){
57+
58+ searchController?.delegate = self
59+ searchController?.obscuresBackgroundDuringPresentation = true
60+ navigationItem.searchController = searchController
61+ definesPresentationContext = true
62+ searchController?.searchResultsUpdater = self
63+ searchController?.searchBar.placeholder = "Search dialogs"
64+
65+ }
66+
2067 // curreent users
2168 var users: [Int: Model.Users] = [:]
2269
@@ -24,17 +71,22 @@ class MessagesViewController: UITableViewController {
2471
2572 var onDialogDisplay: (((dialog: Model.Dialog, users: [Int:Model.Users]))->())?
2673
27− let searchC = UISearchController(searchResultsController: nil)
74+ var searchController: UISearchController?
2875
2976 override func viewDidLoad() {
3077 super.viewDidLoad()
31−
78+
79+ let updater = SuggestedDialogsTableViewController()
80+
81+ updater.delegate = self
82+ searchController = UISearchController(searchResultsController: updater)
83+
3284 // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
3385 self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Write", style: .plain, target: self, action: #selector(choosePerson))
3486
3587 self.navigationItem.title = "Messages"
3688 // self.navigationItem.largeTitleDisplayMode = .always
37− self.navigationItem.searchController = searchC
89+ setUpSearchContr()
3890 navigationController?.navigationBar.prefersLargeTitles = true
3991 self.navigationItem.hidesSearchBarWhenScrolling = false
4092 }
@@ -81,3 +133,49 @@ class MessagesViewController: UITableViewController {
81133 onDialogDisplay?(tuple)
82134 }
83135}
136+
137+
138+class SuggestedDialogsTableViewController: UITableViewController {
139+
140+ var idCell = "cell"
141+
142+ var users: [Int: Model.Users] = [:]
143+
144+ weak var delegate: SelectableDialog?
145+
146+ var currentDialogs: [Model.Dialog] = []
147+
148+ override func viewDidLoad() {
149+ super.viewDidLoad()
150+ tableView.register(UITableViewCell.self, forCellReuseIdentifier: idCell)
151+ tableView.reloadData()
152+ }
153+
154+ override func numberOfSections(in tableView: UITableView) -> Int {
155+ return 1
156+ }
157+
158+ override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
159+ return currentDialogs.count
160+ }
161+
162+ override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
163+ {
164+ let cell = tableView.dequeueReusableCell(withIdentifier: idCell, for: indexPath)
165+
166+ switch currentDialogs[indexPath.row] {
167+ case .groupChat(let groupChat):
168+ cell.textLabel?.text = groupChat.group.name
169+ case .userChat(let userChat):
170+ cell.textLabel?.text = users[userChat.user]?.fullName()
171+ }
172+
173+ cell.accessoryType = .disclosureIndicator
174+ return cell
175+ }
176+
177+ override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
178+ delegate?.openDialog(with: currentDialogs[indexPath.row])
179+ // self.dismiss(animated: true)
180+ }
181+}
GDproject/Controller/Profile/ProfileViewController.swift+1−1
@@ -159,7 +159,7 @@ class ProfileViewController: UIViewController, UpdateUser
159159 }
160160
161161 func setUpNavigarionBar(){
162− navigationController?.navigationBar.prefersLargeTitles = true
162+ // navigationController?.navigationBar.prefersLargeTitles = true
163163 let uibarbutton = UIBarButtonItem(title: "More", style: .plain, target: self, action: #selector(showInformation))
164164 navigationItem.rightBarButtonItems = [uibarbutton]
165165 navigationItem.largeTitleDisplayMode = .always
GDproject/Simple model/Model.swift+1−1
@@ -953,7 +953,7 @@ class Model{
953953 }
954954 }
955955
956− static func getMessagesFor(typeOfChat: Model.Dialog, chat id: Int, exclusiveFrom: Int? = nil, limit l: Int = 10, direction: String = "backward", completion: @escaping (([LastMessage])->()))
956+ static func getMessagesFor(typeOfChat: Model.Dialog, chat id: Int, exclusiveFrom: Int? = nil, limit l: Int = 25, direction: String = "backward", completion: @escaping (([LastMessage])->()))
957957 {
958958 let req = GeneralRequest<Int>(direction: direction, limit: l, exclusiveFrom: exclusiveFrom, request: id)
959959 var request: URLRequest?