mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-29 07:42:40 +00:00
Create suggested rooms fetcher
This commit is contained in:
parent
f9bd1a7542
commit
5cc9633564
2 changed files with 22 additions and 12 deletions
|
@ -43,7 +43,6 @@ NSString *const kRecentsDataSourceTapOnDirectoryServerChange = @"kRecentsDataSou
|
||||||
|
|
||||||
@interface RecentsDataSource() <SecureBackupBannerCellDelegate, CrossSigningSetupBannerCellDelegate, MXRoomListDataFetcherDelegate>
|
@interface RecentsDataSource() <SecureBackupBannerCellDelegate, CrossSigningSetupBannerCellDelegate, MXRoomListDataFetcherDelegate>
|
||||||
{
|
{
|
||||||
RecentsDataSourceState *state;
|
|
||||||
dispatch_queue_t processingQueue;
|
dispatch_queue_t processingQueue;
|
||||||
|
|
||||||
NSInteger shrinkedSectionsBitMask;
|
NSInteger shrinkedSectionsBitMask;
|
||||||
|
@ -174,9 +173,13 @@ NSString *const kRecentsDataSourceTapOnDirectoryServerChange = @"kRecentsDataSou
|
||||||
}
|
}
|
||||||
return [self mapRoomSummaries:fetchersContainer.serverNoticeRoomListDataFetcher.data.rooms];
|
return [self mapRoomSummaries:fetchersContainer.serverNoticeRoomListDataFetcher.data.rooms];
|
||||||
}
|
}
|
||||||
- (NSArray *)suggestedRoomCellDataArray
|
- (NSArray<id<MXKRecentCellDataStoring>> *)suggestedRoomCellDataArray
|
||||||
{
|
{
|
||||||
return state.suggestedRoomCellDataArray;
|
if (!fetchersContainer.shouldShowSuggested)
|
||||||
|
{
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
return [self mapRoomSummaries:fetchersContainer.suggestedRoomListDataFetcher.data.rooms];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (DiscussionsCount *)favoriteMissedDiscussionsCount
|
- (DiscussionsCount *)favoriteMissedDiscussionsCount
|
||||||
|
|
|
@ -60,10 +60,10 @@ public class RecentsRoomListFetchersContainer: NSObject {
|
||||||
// MARK: - Private
|
// MARK: - Private
|
||||||
|
|
||||||
private var fetcherTypesForMode: [RecentsDataSourceMode: FetcherTypes] = [
|
private var fetcherTypesForMode: [RecentsDataSourceMode: FetcherTypes] = [
|
||||||
.home: [.invited, .favorited, .directHome, .conversationHome, .lowPriority, .serverNotice],
|
.home: [.invited, .favorited, .directHome, .conversationHome, .lowPriority, .serverNotice, .suggested],
|
||||||
.favourites: [.favorited],
|
.favourites: [.favorited],
|
||||||
.people: [.directPeople],
|
.people: [.directPeople],
|
||||||
.rooms: [.conversationRooms]
|
.rooms: [.conversationRooms, .suggested]
|
||||||
]
|
]
|
||||||
|
|
||||||
private var allFetchers: [MXRoomListDataFetcher] {
|
private var allFetchers: [MXRoomListDataFetcher] {
|
||||||
|
@ -229,6 +229,10 @@ public class RecentsRoomListFetchersContainer: NSObject {
|
||||||
return fetcherTypesForMode[mode]?.contains(.serverNotice) ?? false
|
return fetcherTypesForMode[mode]?.contains(.serverNotice) ?? false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public var shouldShowSuggested: Bool {
|
||||||
|
return fetcherTypesForMode[mode]?.contains(.suggested) ?? false
|
||||||
|
}
|
||||||
|
|
||||||
public func updateMode(_ mode: RecentsDataSourceMode) {
|
public func updateMode(_ mode: RecentsDataSourceMode) {
|
||||||
self.mode = mode
|
self.mode = mode
|
||||||
if let fetcher = favoritedRoomListDataFetcher {
|
if let fetcher = favoritedRoomListDataFetcher {
|
||||||
|
@ -300,10 +304,13 @@ public class RecentsRoomListFetchersContainer: NSObject {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func createCommonRoomListDataFetcher(withDataTypes dataTypes: MXRoomSummaryDataTypes,
|
private func createCommonRoomListDataFetcher(withDataTypes dataTypes: MXRoomSummaryDataTypes = [],
|
||||||
|
onlySuggested: Bool = false,
|
||||||
paginate: Bool = true) -> MXRoomListDataFetcher {
|
paginate: Bool = true) -> MXRoomListDataFetcher {
|
||||||
let filterOptions = MXRoomListDataFilterOptions(dataTypes: dataTypes,
|
let filterOptions = MXRoomListDataFilterOptions(dataTypes: dataTypes,
|
||||||
query: query)
|
onlySuggested: onlySuggested,
|
||||||
|
query: query,
|
||||||
|
space: space)
|
||||||
|
|
||||||
let fetchOptions = MXRoomListDataFetchOptions(filterOptions: filterOptions,
|
let fetchOptions = MXRoomListDataFetchOptions(filterOptions: filterOptions,
|
||||||
sortOptions: sortOptions,
|
sortOptions: sortOptions,
|
||||||
|
@ -316,7 +323,7 @@ public class RecentsRoomListFetchersContainer: NSObject {
|
||||||
return fetcher
|
return fetcher
|
||||||
}
|
}
|
||||||
|
|
||||||
private func createDirectRoomListDataFetcherForHome() -> MXRoomListDataFetcher? {
|
private func createDirectRoomListDataFetcherForHome() -> MXRoomListDataFetcher {
|
||||||
let fetcher = createCommonRoomListDataFetcher(withDataTypes: [.direct], paginate: false)
|
let fetcher = createCommonRoomListDataFetcher(withDataTypes: [.direct], paginate: false)
|
||||||
updateDirectFetcher(fetcher, for: .home)
|
updateDirectFetcher(fetcher, for: .home)
|
||||||
fetcher.addDelegate(self)
|
fetcher.addDelegate(self)
|
||||||
|
@ -324,7 +331,7 @@ public class RecentsRoomListFetchersContainer: NSObject {
|
||||||
return fetcher
|
return fetcher
|
||||||
}
|
}
|
||||||
|
|
||||||
private func createDirectRoomListDataFetcherForPeople() -> MXRoomListDataFetcher? {
|
private func createDirectRoomListDataFetcherForPeople() -> MXRoomListDataFetcher {
|
||||||
let fetcher = createCommonRoomListDataFetcher(withDataTypes: [.direct], paginate: false)
|
let fetcher = createCommonRoomListDataFetcher(withDataTypes: [.direct], paginate: false)
|
||||||
updateDirectFetcher(fetcher, for: .people)
|
updateDirectFetcher(fetcher, for: .people)
|
||||||
fetcher.addDelegate(self)
|
fetcher.addDelegate(self)
|
||||||
|
@ -332,7 +339,7 @@ public class RecentsRoomListFetchersContainer: NSObject {
|
||||||
return fetcher
|
return fetcher
|
||||||
}
|
}
|
||||||
|
|
||||||
private func createConversationRoomListDataFetcherForHome() -> MXRoomListDataFetcher? {
|
private func createConversationRoomListDataFetcherForHome() -> MXRoomListDataFetcher {
|
||||||
let fetcher = createCommonRoomListDataFetcher(withDataTypes: [], paginate: false)
|
let fetcher = createCommonRoomListDataFetcher(withDataTypes: [], paginate: false)
|
||||||
updateConversationFetcher(fetcher, for: .home)
|
updateConversationFetcher(fetcher, for: .home)
|
||||||
fetcher.addDelegate(self)
|
fetcher.addDelegate(self)
|
||||||
|
@ -340,7 +347,7 @@ public class RecentsRoomListFetchersContainer: NSObject {
|
||||||
return fetcher
|
return fetcher
|
||||||
}
|
}
|
||||||
|
|
||||||
private func createConversationRoomListDataFetcherForRooms() -> MXRoomListDataFetcher? {
|
private func createConversationRoomListDataFetcherForRooms() -> MXRoomListDataFetcher {
|
||||||
let fetcher = createCommonRoomListDataFetcher(withDataTypes: [], paginate: false)
|
let fetcher = createCommonRoomListDataFetcher(withDataTypes: [], paginate: false)
|
||||||
updateConversationFetcher(fetcher, for: .rooms)
|
updateConversationFetcher(fetcher, for: .rooms)
|
||||||
fetcher.addDelegate(self)
|
fetcher.addDelegate(self)
|
||||||
|
@ -359,7 +366,7 @@ public class RecentsRoomListFetchersContainer: NSObject {
|
||||||
conversationRoomListDataFetcherForRooms = createConversationRoomListDataFetcherForRooms()
|
conversationRoomListDataFetcherForRooms = createConversationRoomListDataFetcherForRooms()
|
||||||
lowPriorityRoomListDataFetcher = createCommonRoomListDataFetcher(withDataTypes: [.lowPriority])
|
lowPriorityRoomListDataFetcher = createCommonRoomListDataFetcher(withDataTypes: [.lowPriority])
|
||||||
serverNoticeRoomListDataFetcher = createCommonRoomListDataFetcher(withDataTypes: [.serverNotice])
|
serverNoticeRoomListDataFetcher = createCommonRoomListDataFetcher(withDataTypes: [.serverNotice])
|
||||||
suggestedRoomListDataFetcher = createCommonRoomListDataFetcher(withDataTypes: [.suggested])
|
suggestedRoomListDataFetcher = createCommonRoomListDataFetcher(onlySuggested: true)
|
||||||
}
|
}
|
||||||
|
|
||||||
private func updateDirectFetcher(_ fetcher: MXRoomListDataFetcher, for mode: RecentsDataSourceMode) {
|
private func updateDirectFetcher(_ fetcher: MXRoomListDataFetcher, for mode: RecentsDataSourceMode) {
|
||||||
|
|
Loading…
Reference in a new issue