diff --git a/Session/Home/GlobalSearch/GlobalSearchViewController.swift b/Session/Home/GlobalSearch/GlobalSearchViewController.swift index 0843d7152..ae6dc757e 100644 --- a/Session/Home/GlobalSearch/GlobalSearchViewController.swift +++ b/Session/Home/GlobalSearch/GlobalSearchViewController.swift @@ -12,7 +12,7 @@ class GlobalSearchViewController: BaseVC, UITableViewDelegate, UITableViewDataSo refreshSearchResults() } } - var recentSearchResults: [String] = [] + var recentSearchResults: [String] = Array(Storage.shared.getRecentSearchResults().reversed()) var searchResultSet: HomeScreenSearchResultSet = HomeScreenSearchResultSet.empty private var lastSearchText: String? var searcher: FullTextSearcher { @@ -98,7 +98,6 @@ class GlobalSearchViewController: BaseVC, UITableViewDelegate, UITableViewDataSo } private func reloadTableData() { - recentSearchResults = Array(Storage.shared.getRecentSearchResults().reversed()) tableView.reloadData() } @@ -138,7 +137,7 @@ class GlobalSearchViewController: BaseVC, UITableViewDelegate, UITableViewDataSo let searchText = rawSearchText.stripped guard searchText.count > 0 else { - searchResultSet = HomeScreenSearchResultSet.empty + searchResultSet = HomeScreenSearchResultSet.noteToSelfOnly lastSearchText = nil reloadTableData() return @@ -225,7 +224,7 @@ extension GlobalSearchViewController { private func show(_ thread: TSThread, highlightedMessageID: String?, animated: Bool, isFromRecent: Bool = false) { if let threadId = thread.uniqueId { - Storage.shared.addSearchResults(threadID: threadId) + recentSearchResults = Array(Storage.shared.addSearchResults(threadID: threadId).reversed()) } DispatchMainThreadSafe { diff --git a/Session/Home/GlobalSearch/Storage+RecentSearchResults.swift b/Session/Home/GlobalSearch/Storage+RecentSearchResults.swift index 8fdf903ed..9327b7abf 100644 --- a/Session/Home/GlobalSearch/Storage+RecentSearchResults.swift +++ b/Session/Home/GlobalSearch/Storage+RecentSearchResults.swift @@ -19,7 +19,7 @@ extension Storage{ } } - public func addSearchResults(threadID: String) { + public func addSearchResults(threadID: String) -> [String] { var recentSearchResults = getRecentSearchResults() if recentSearchResults.count > 20 { recentSearchResults.remove(at: 0) } // Limit the size of the collection to 20 if let index = recentSearchResults.firstIndex(of: threadID) { recentSearchResults.remove(at: index) } @@ -27,5 +27,6 @@ extension Storage{ Storage.write { transaction in transaction.setObject(recentSearchResults, forKey: Storage.recentSearchResultKey, inCollection: Storage.recentSearchResultDatabaseCollection) } + return recentSearchResults } } diff --git a/SignalUtilitiesKit/Messaging/FullTextSearcher.swift b/SignalUtilitiesKit/Messaging/FullTextSearcher.swift index 4b1548eef..236ad7e44 100644 --- a/SignalUtilitiesKit/Messaging/FullTextSearcher.swift +++ b/SignalUtilitiesKit/Messaging/FullTextSearcher.swift @@ -65,6 +65,20 @@ public class HomeScreenSearchResultSet: NSObject { public class var empty: HomeScreenSearchResultSet { return HomeScreenSearchResultSet(searchText: "", conversations: [], messages: []) } + + public class var noteToSelfOnly: HomeScreenSearchResultSet { + var conversations: [ConversationSearchResult] = [] + Storage.read { transaction in + if let thread = TSContactThread.getWithContactSessionID(getUserHexEncodedPublicKey(), transaction: transaction) { + let threadViewModel = ThreadViewModel(thread: thread, transaction: transaction) + let sortKey = ConversationSortKey(creationDate: thread.creationDate, + lastMessageReceivedAtDate: thread.lastInteractionForInbox(transaction: transaction)?.receivedAtDate()) + let searchResult = ConversationSearchResult(thread: threadViewModel, sortKey: sortKey) + conversations.append(searchResult) + } + } + return HomeScreenSearchResultSet(searchText: "", conversations: conversations, messages: []) + } public var isEmpty: Bool { return conversations.isEmpty && messages.isEmpty