From c4480e4524044e7a0f38c835a532dbd6dd3ab60e Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Wed, 25 May 2022 13:44:24 +0300 Subject: [PATCH] Fix various code smells as reported by Sonarcloud, fixed tests --- .../Services/Authentication/UserSession.swift | 6 ++-- .../Services/Media/MediaProvider.swift | 6 ++-- .../Sources/Services/Room/RoomProxy.swift | 2 +- .../Room/RoomSummary/RoomSummary.swift | 2 +- .../Timeline/RoomTimelineController.swift | 28 +++++++++---------- .../TemplateSimpleScreenViewModelTests.swift | 3 +- 6 files changed, 23 insertions(+), 24 deletions(-) diff --git a/ElementX/Sources/Services/Authentication/UserSession.swift b/ElementX/Sources/Services/Authentication/UserSession.swift index 526af3906..ff606f206 100644 --- a/ElementX/Sources/Services/Authentication/UserSession.swift +++ b/ElementX/Sources/Services/Authentication/UserSession.swift @@ -28,7 +28,7 @@ private class WeakUserSessionWrapper: ClientDelegate { } @MainActor func didReceiveSyncUpdate() { - self.userSession?.didReceiveSyncUpdate() + userSession?.didReceiveSyncUpdate() } } @@ -112,7 +112,7 @@ class UserSession { private func updateRooms() async { var currentRooms = self.rooms Benchmark.startTrackingForIdentifier("ClientRooms", message: "Fetching available rooms") - let sdkRooms = self.client.rooms() + let sdkRooms = client.rooms() Benchmark.endTrackingForIdentifier("ClientRooms", message: "Retrieved \(sdkRooms.count) rooms") Benchmark.startTrackingForIdentifier("ProcessingRooms", message: "Started processing \(sdkRooms.count) rooms") @@ -133,6 +133,6 @@ class UserSession { Benchmark.endTrackingForIdentifier("ProcessingRooms", message: "Finished processing \(sdkRooms.count) rooms") - self.rooms = currentRooms + rooms = currentRooms } } diff --git a/ElementX/Sources/Services/Media/MediaProvider.swift b/ElementX/Sources/Services/Media/MediaProvider.swift index c2d30889d..747fa9154 100644 --- a/ElementX/Sources/Services/Media/MediaProvider.swift +++ b/ElementX/Sources/Services/Media/MediaProvider.swift @@ -46,12 +46,12 @@ struct MediaProvider: MediaProviderProtocol { return .success(image) } - let cachedImageLoadResult = await withCheckedContinuation({ continuation in + let cachedImageLoadResult = await withCheckedContinuation { continuation in imageCache.retrieveImage(forKey: source.underlyingSource.url()) { result in continuation.resume(returning: result) } - }) - + } + if case let .success(cacheResult) = cachedImageLoadResult, let image = cacheResult.image { return .success(image) diff --git a/ElementX/Sources/Services/Room/RoomProxy.swift b/ElementX/Sources/Services/Room/RoomProxy.swift index 45d197bff..61ca7878b 100644 --- a/ElementX/Sources/Services/Room/RoomProxy.swift +++ b/ElementX/Sources/Services/Room/RoomProxy.swift @@ -21,7 +21,7 @@ private class WeakRoomProxyWrapper: RoomDelegate { // MARK: - RoomDelegate func didReceiveMessage(message: AnyMessage) { - self.roomProxy?.appendMessage(message) + roomProxy?.appendMessage(message) } } diff --git a/ElementX/Sources/Services/Room/RoomSummary/RoomSummary.swift b/ElementX/Sources/Services/Room/RoomSummary/RoomSummary.swift index 2aeb8b2e2..df5f15e06 100644 --- a/ElementX/Sources/Services/Room/RoomSummary/RoomSummary.swift +++ b/ElementX/Sources/Services/Room/RoomSummary/RoomSummary.swift @@ -143,7 +143,7 @@ class RoomSummary: RoomSummaryProtocol { switch await roomProxy.paginateBackwards(count: 1) { case .success: - self.lastMessage = await self.eventBriefFactory.eventBriefForMessage(self.roomProxy.messages.last) + lastMessage = await eventBriefFactory.eventBriefForMessage(roomProxy.messages.last) case .failure(let error): MXLog.error("Failed back paginating with error: \(error)") } diff --git a/ElementX/Sources/Services/Timeline/RoomTimelineController.swift b/ElementX/Sources/Services/Timeline/RoomTimelineController.swift index 1b705f324..82a3ecc70 100644 --- a/ElementX/Sources/Services/Timeline/RoomTimelineController.swift +++ b/ElementX/Sources/Services/Timeline/RoomTimelineController.swift @@ -82,9 +82,7 @@ class RoomTimelineController: RoomTimelineControllerProtocol { func sendMessage(_ message: String) async { switch await timelineProvider.sendMessage(message) { - case .success: - break - case .failure: + default: break } } @@ -141,14 +139,14 @@ class RoomTimelineController: RoomTimelineControllerProtocol { switch await mediaProvider.loadImageFromSource(source) { case .success(let image): - guard let index = self.timelineItems.firstIndex(where: { $0.id == timelineItem.id }), - var item = self.timelineItems[index] as? ImageRoomTimelineItem else { + guard let index = timelineItems.firstIndex(where: { $0.id == timelineItem.id }), + var item = timelineItems[index] as? ImageRoomTimelineItem else { return } item.image = image - self.timelineItems[index] = item - self.callbacks.send(.updatedTimelineItem(timelineItem.id)) + timelineItems[index] = item + callbacks.send(.updatedTimelineItem(timelineItem.id)) case .failure: break } @@ -167,14 +165,14 @@ class RoomTimelineController: RoomTimelineControllerProtocol { switch await mediaProvider.loadImageFromURL(avatarURL) { case .success(let avatar): - guard let index = self.timelineItems.firstIndex(where: { $0.id == timelineItem.id }), - var item = self.timelineItems[index] as? EventBasedTimelineItemProtocol else { + guard let index = timelineItems.firstIndex(where: { $0.id == timelineItem.id }), + var item = timelineItems[index] as? EventBasedTimelineItemProtocol else { return } item.senderAvatar = avatar - self.timelineItems[index] = item - self.callbacks.send(.updatedTimelineItem(timelineItem.id)) + timelineItems[index] = item + callbacks.send(.updatedTimelineItem(timelineItem.id)) case .failure: break } @@ -192,14 +190,14 @@ class RoomTimelineController: RoomTimelineControllerProtocol { switch await memberDetailProvider.loadDisplayNameForUserId(timelineItem.senderId) { case .success(let displayName): guard let displayName = displayName, - let index = self.timelineItems.firstIndex(where: { $0.id == timelineItem.id }), - var item = self.timelineItems[index] as? EventBasedTimelineItemProtocol else { + let index = timelineItems.firstIndex(where: { $0.id == timelineItem.id }), + var item = timelineItems[index] as? EventBasedTimelineItemProtocol else { return } item.senderDisplayName = displayName - self.timelineItems[index] = item - self.callbacks.send(.updatedTimelineItem(timelineItem.id)) + timelineItems[index] = item + callbacks.send(.updatedTimelineItem(timelineItem.id)) case .failure: break } diff --git a/Tools/Scripts/Templates/SimpleScreenExample/Tests/Unit/TemplateSimpleScreenViewModelTests.swift b/Tools/Scripts/Templates/SimpleScreenExample/Tests/Unit/TemplateSimpleScreenViewModelTests.swift index 322a1a590..a71372279 100644 --- a/Tools/Scripts/Templates/SimpleScreenExample/Tests/Unit/TemplateSimpleScreenViewModelTests.swift +++ b/Tools/Scripts/Templates/SimpleScreenExample/Tests/Unit/TemplateSimpleScreenViewModelTests.swift @@ -18,6 +18,7 @@ import XCTest @testable import ElementX +@MainActor class TemplateSimpleScreenViewModelTests: XCTestCase { private enum Constants { static let counterInitialValue = 0 @@ -26,7 +27,7 @@ class TemplateSimpleScreenViewModelTests: XCTestCase { var viewModel: TemplateSimpleScreenViewModelProtocol! var context: TemplateSimpleScreenViewModelType.Context! - override func setUpWithError() throws { + @MainActor override func setUpWithError() throws { viewModel = TemplateSimpleScreenViewModel(promptType: .regular, initialCount: Constants.counterInitialValue) context = viewModel.context }