From 472c49a94e79f3cccc526e2cab33ee846b40f922 Mon Sep 17 00:00:00 2001 From: Doug Date: Tue, 2 Sep 2025 16:56:25 +0100 Subject: [PATCH] Fix a retain cycle on RoomDetailsScreenViewModel. This was causing the UserSession/Client to stay alive after clearing the cache. --- .../RoomDetailsScreen/RoomDetailsScreenViewModel.swift | 4 ++-- .../RoomMemberDetailsScreenViewModel.swift | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ElementX/Sources/Screens/RoomDetailsScreen/RoomDetailsScreenViewModel.swift b/ElementX/Sources/Screens/RoomDetailsScreen/RoomDetailsScreenViewModel.swift index f38b3c5ba..36d2d0c87 100644 --- a/ElementX/Sources/Screens/RoomDetailsScreen/RoomDetailsScreenViewModel.swift +++ b/ElementX/Sources/Screens/RoomDetailsScreen/RoomDetailsScreenViewModel.swift @@ -223,8 +223,8 @@ class RoomDetailsScreenViewModel: RoomDetailsScreenViewModelType, RoomDetailsScr .store(in: &cancellables) roomProxy.membersPublisher.combineLatest(roomProxy.identityStatusChangesPublisher) - .sink { _ in - Task { await self.updateMemberIdentityVerificationStates() } + .sink { [weak self] _ in + Task { await self?.updateMemberIdentityVerificationStates() } } .store(in: &cancellables) } diff --git a/ElementX/Sources/Screens/RoomMemberDetailsScreen/RoomMemberDetailsScreenViewModel.swift b/ElementX/Sources/Screens/RoomMemberDetailsScreen/RoomMemberDetailsScreenViewModel.swift index 0784d4d59..3855d85ba 100644 --- a/ElementX/Sources/Screens/RoomMemberDetailsScreen/RoomMemberDetailsScreenViewModel.swift +++ b/ElementX/Sources/Screens/RoomMemberDetailsScreen/RoomMemberDetailsScreenViewModel.swift @@ -47,9 +47,9 @@ class RoomMemberDetailsScreenViewModel: RoomMemberDetailsScreenViewModelType, Ro roomProxy.identityStatusChangesPublisher .receive(on: DispatchQueue.main) - .sink { changes in + .sink { [weak self] changes in if changes.map(\.userId).contains(userID) { - Task { await self.loadMember() } + Task { await self?.loadMember() } } } .store(in: &cancellables)