@@ -2,7 +2,7 @@ import UIKit
22import MixinServices
33
44class SharedMediaLinkTableViewController : SharedMediaTableViewController {
5-
5+
66 private var dates = [ String] ( )
77 private var items = [ String: [ HyperlinkItem] ] ( )
88
@@ -19,7 +19,7 @@ class SharedMediaLinkTableViewController: SharedMediaTableViewController {
1919extension SharedMediaLinkTableViewController : UITableViewDataSource {
2020
2121 func numberOfSections( in tableView: UITableView ) -> Int {
22- items . count
22+ dates . count
2323 }
2424
2525 func tableView( _ tableView: UITableView , numberOfRowsInSection section: Int ) -> Int {
@@ -28,27 +28,23 @@ extension SharedMediaLinkTableViewController: UITableViewDataSource {
2828
2929 func tableView( _ tableView: UITableView , cellForRowAt indexPath: IndexPath ) -> UITableViewCell {
3030 let cell = tableView. dequeueReusableCell ( withIdentifier: R . reuseIdentifier. shared_media_link, for: indexPath) !
31- if let item = item ( at: indexPath) {
32- cell. linkLabel. text = item. link
33- }
31+ cell. linkLabel. text = items [ dates [ indexPath. section] ] ? [ indexPath. row] . link
3432 return cell
3533 }
3634
3735}
3836
3937extension SharedMediaLinkTableViewController : UITableViewDelegate {
40-
38+
4139 func tableView( _ tableView: UITableView , viewForHeaderInSection section: Int ) -> UIView ? {
4240 let view = tableView. dequeueReusableHeaderFooterView ( withIdentifier: headerReuseId) as! SharedMediaTableHeaderView
43- if section < dates. count {
44- view. label. text = dates [ section]
45- }
41+ view. label. text = dates [ section]
4642 return view
4743 }
4844
4945 func tableView( _ tableView: UITableView , didSelectRowAt indexPath: IndexPath ) {
5046 tableView. deselectRow ( at: indexPath, animated: true )
51- if let item = item ( at : indexPath) , let url = URL ( string: item. link) , let container = parent? . parent {
47+ if let item = items [ dates [ indexPath. section ] ] ? [ indexPath . row ] , let url = URL ( string: item. link) , let container = parent? . parent {
5248 let context = MixinWebViewController . Context ( conversationId: conversationId, initialUrl: url)
5349 MixinWebViewController . presentInstance ( with: context, asChildOf: container)
5450 }
@@ -58,36 +54,32 @@ extension SharedMediaLinkTableViewController: UITableViewDelegate {
5854
5955extension SharedMediaLinkTableViewController {
6056
61- private func item( at indexPath: IndexPath ) -> HyperlinkItem ? {
62- guard indexPath. section < dates. count else {
63- return nil
64- }
65- let date = dates [ indexPath. section]
66- guard let items = self . items [ date] , indexPath. row >= 0 , indexPath. row < items. count else {
67- return nil
68- }
69- return items [ indexPath. row]
70- }
71-
7257 private func reloadData( ) {
58+ guard let conversationId = self . conversationId else {
59+ return
60+ }
7361 DispatchQueue . global ( ) . async { [ weak self] in
74- guard let self = self else {
75- return
62+ var dates = [ String] ( )
63+ var items = [ String: [ HyperlinkItem] ] ( )
64+ let linkItems = HyperlinkDAO . shared. hyperlinks ( conversationId: conversationId)
65+ for item in linkItems {
66+ let date = item. createdAt. toUTCDate ( )
67+ let title = DateFormatter . dateSimple. string ( from: date)
68+ if items [ title] != nil {
69+ items [ title] !. append ( item)
70+ } else {
71+ dates. append ( title)
72+ items [ title] = [ item]
73+ }
7674 }
77- let linkItems = HyperlinkDAO . shared. hyperlinks ( conversationId: self . conversationId)
7875 DispatchQueue . main. async {
79- for item in linkItems {
80- let date = item. createdAt. toUTCDate ( )
81- let title = DateFormatter . dateSimple. string ( from: date)
82- if self . items [ title] != nil {
83- self . items [ title] !. append ( item)
84- } else {
85- self . dates. append ( title)
86- self . items [ title] = [ item]
87- }
76+ guard let self = self else {
77+ return
8878 }
79+ self . dates = dates
80+ self . items = items
8981 self . tableView. reloadData ( )
90- self . tableView. checkEmpty ( dataCount: self . items. count,
82+ self . tableView. checkEmpty ( dataCount: items. count,
9183 text: R . string. localizable. no_links ( ) ,
9284 photo: R . image. emptyIndicator. ic_shared_link ( ) !)
9385 }
0 commit comments