Fixes vector-im/element-ios/issues/5063 - Fixed retain cycles between the user suggestion coordinator and the suggestion service, and in the suggestion service currentTextTrigger subject sink.

This commit is contained in:
Stefan Ceriu
2021-10-29 16:34:51 +03:00
committed by Stefan Ceriu
parent ab5d572407
commit 43f1ea73c5
4 changed files with 27 additions and 17 deletions
@@ -45,7 +45,7 @@ class UserSuggestionService: UserSuggestionServiceProtocol {
// MARK: Private
private let roomMembersProvider: RoomMembersProviderProtocol
private let roomMemberProvider: RoomMembersProviderProtocol
private var suggestionItems: [UserSuggestionItemProtocol] = []
private let currentTextTriggerSubject = CurrentValueSubject<String?, Never>(nil)
@@ -61,13 +61,13 @@ class UserSuggestionService: UserSuggestionServiceProtocol {
// MARK: - Setup
init(roomMembersProvider: RoomMembersProviderProtocol) {
self.roomMembersProvider = roomMembersProvider
init(roomMemberProvider: RoomMembersProviderProtocol) {
self.roomMemberProvider = roomMemberProvider
currentTextTriggerSubject
.debounce(for: 0.5, scheduler: RunLoop.main)
.removeDuplicates()
.sink { self.fetchAndFilterMembersForTextTrigger($0) }
.sink { [weak self] in self?.fetchAndFilterMembersForTextTrigger($0) }
.store(in: &cancellables)
}
@@ -96,7 +96,7 @@ class UserSuggestionService: UserSuggestionServiceProtocol {
partialName.removeFirst() // remove the '@' prefix
roomMembersProvider.fetchMembers { [weak self] members in
roomMemberProvider.fetchMembers { [weak self] members in
guard let self = self else {
return
}