refactor: replace unsafe withUnretained with weak self

This commit is contained in:
Vlad Suhomlinov 2021-05-01 09:27:04 +03:00 committed by Alexander Rutsman
parent 3c9c7aa707
commit cfe8190cec
2 changed files with 10 additions and 15 deletions

View File

@ -58,16 +58,14 @@ where ViewModel: BaseSearchViewModel<Item, ItemViewModel> {
open override func bindViews() {
super.bindViews()
viewModel.itemsViewModelsDriver
.withUnretained(self)
.drive(onNext: { owner, viewModels in
owner.handle(itemViewModels: viewModels)
.drive(onNext: { [weak self] viewModels in
self?.handle(itemViewModels: viewModels)
})
.disposed(by: disposeBag)
Observable.merge(searchResults, resetResults)
.withUnretained(self)
.subscribe(onNext: { owner, state in
owner.handle(searchResultsState: state)
.subscribe(onNext: { [weak self] state in
self?.handle(searchResultsState: state)
})
.disposed(by: disposeBag)
@ -153,9 +151,8 @@ where ViewModel: BaseSearchViewModel<Item, ItemViewModel> {
open var searchResults: Observable<SearchResultsViewControllerState> {
viewModel.searchResultsDriver
.asObservable()
.withUnretained(self)
.map { owner, viewModels -> SearchResultsViewControllerState in
owner.stateForUpdate(with: viewModels)
.compactMap { [weak self] viewModels in
self?.stateForUpdate(with: viewModels)
}
}

View File

@ -36,9 +36,8 @@ open class BaseSearchViewModel<Item, ItemViewModel>: GeneralDataLoadingViewModel
open var itemsViewModelsDriver: Driver<[ItemViewModel]> {
loadingResultObservable
.withUnretained(self)
.map { owner, items in
owner.viewModels(from: items)
.map { [weak self] items in
self?.viewModels(from: items)
}
.flatMap { Observable.from(optional: $0) }
.share(replay: 1, scope: .forever)
@ -55,9 +54,8 @@ open class BaseSearchViewModel<Item, ItemViewModel>: GeneralDataLoadingViewModel
.flatMapLatest { [weak self] searchText, items -> Observable<ItemsList> in
self?.search(by: searchText, from: items).asObservable() ?? .empty()
}
.withUnretained(self)
.map { owner, items in
owner.viewModels(from: items)
.map { [weak self] items in
self?.viewModels(from: items)
}
.flatMap { Observable.from(optional: $0) }
.share(replay: 1, scope: .forever)