diff --git a/.swiftlint.yml b/.swiftlint.yml index 25a9c4c5ce20..f088ce7a109e 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -98,6 +98,9 @@ only_rules: # Lines should not have trailing whitespace. - trailing_whitespace + # Closure arguments don't need to be wrapped in parentheses. + - unneeded_parentheses_in_closure_argument + # Unused parameter in a closure should be replaced with _. - unused_closure_parameter diff --git a/Modules/Sources/AztecExtensions/ImgUploadProcessor.swift b/Modules/Sources/AztecExtensions/ImgUploadProcessor.swift index 421ff7c3de0b..aabfb8fc62d9 100644 --- a/Modules/Sources/AztecExtensions/ImgUploadProcessor.swift +++ b/Modules/Sources/AztecExtensions/ImgUploadProcessor.swift @@ -15,7 +15,7 @@ public class ImgUploadProcessor: Processor { self.height = height } - lazy var imgPostMediaUploadProcessor = HTMLProcessor(for: "img", replacer: { (img) in + lazy var imgPostMediaUploadProcessor = HTMLProcessor(for: "img", replacer: { img in guard let imgUploadValue = img.attributes[MediaAttachment.uploadKey]?.value, case let .string(imgUploadID) = imgUploadValue, self.mediaUploadID == imgUploadID else { diff --git a/Modules/Sources/DesignSystem/Gallery/FontGallery.swift b/Modules/Sources/DesignSystem/Gallery/FontGallery.swift index 92ba31fa460e..ac03be9d83af 100644 --- a/Modules/Sources/DesignSystem/Gallery/FontGallery.swift +++ b/Modules/Sources/DesignSystem/Gallery/FontGallery.swift @@ -8,7 +8,7 @@ struct FontGallery: View { var body: some View { List { Section("Recoleta") { - ForEach(textStyles, id: \.self.1) { (name, textStyle) in + ForEach(textStyles, id: \.self.1) { name, textStyle in Text(name) .font(Font.make(.recoleta, textStyle: textStyle)) } diff --git a/Modules/Sources/JetpackStats/Services/Extensions/WordPressKit+Extensions.swift b/Modules/Sources/JetpackStats/Services/Extensions/WordPressKit+Extensions.swift index c89841e6e660..aee80d3725ca 100644 --- a/Modules/Sources/JetpackStats/Services/Extensions/WordPressKit+Extensions.swift +++ b/Modules/Sources/JetpackStats/Services/Extensions/WordPressKit+Extensions.swift @@ -106,7 +106,7 @@ extension WordPressKit.StatsServiceRemoteV2 { func getEmailOpens(for postID: Int) async throws -> StatsEmailOpensData { try await withCheckedThrowingContinuation { continuation in - getEmailOpens(for: postID) { (data, error) in + getEmailOpens(for: postID) { data, error in if let data { continuation.resume(returning: data) } else { diff --git a/Modules/Sources/JetpackStats/Services/Mocks/MockStatsService.swift b/Modules/Sources/JetpackStats/Services/Mocks/MockStatsService.swift index b32e781d8191..8ba8cff52f8c 100644 --- a/Modules/Sources/JetpackStats/Services/Mocks/MockStatsService.swift +++ b/Modules/Sources/JetpackStats/Services/Mocks/MockStatsService.swift @@ -179,7 +179,7 @@ actor MockStatsService: ObservableObject, StatsServiceProtocol { // Convert to array with updated metric value and sort let sortedItems = aggregatedItems.values - .map { (item, totalValue) -> any TopListItemProtocol in + .map { item, totalValue -> any TopListItemProtocol in // Create a mutable copy and update the aggregated metric value var mutableItem = item mutableItem.metrics[metric] = totalValue diff --git a/Modules/Sources/JetpackStats/Services/StatsService.swift b/Modules/Sources/JetpackStats/Services/StatsService.swift index ca0919450cd8..8817b602dd82 100644 --- a/Modules/Sources/JetpackStats/Services/StatsService.swift +++ b/Modules/Sources/JetpackStats/Services/StatsService.swift @@ -350,7 +350,7 @@ actor StatsService: StatsServiceProtocol { switch metric { case .views: let data = try await getData(StatsArchiveTimeIntervalData.self) - let sections = data.summary.compactMap { (sectionName, items) -> TopListItem.ArchiveSection? in + let sections = data.summary.compactMap { sectionName, items -> TopListItem.ArchiveSection? in guard !items.isEmpty else { return nil } return TopListItem.ArchiveSection(sectionName: sectionName, items: items) } diff --git a/Modules/Sources/ShareExtensionCore/Data/SharedCoreDataStack.swift b/Modules/Sources/ShareExtensionCore/Data/SharedCoreDataStack.swift index db2fe616880f..2729b45af916 100644 --- a/Modules/Sources/ShareExtensionCore/Data/SharedCoreDataStack.swift +++ b/Modules/Sources/ShareExtensionCore/Data/SharedCoreDataStack.swift @@ -35,7 +35,7 @@ public final class SharedCoreDataStack { fileprivate lazy var storeContainer: SharedPersistentContainer = { let container = SharedPersistentContainer(name: "SharedCoreDataStack", managedObjectModel: SharedCoreDataStack.model) - container.loadPersistentStores { (_, error) in + container.loadPersistentStores { _, error in if let error = error as NSError? { DDLogError("Error loading persistent stores: \(error), \(error.userInfo)") } diff --git a/Modules/Sources/UITestsFoundation/Screens/Editor/AztecEditorScreen.swift b/Modules/Sources/UITestsFoundation/Screens/Editor/AztecEditorScreen.swift index 3769c288fd5c..566b06bc4e7b 100644 --- a/Modules/Sources/UITestsFoundation/Screens/Editor/AztecEditorScreen.swift +++ b/Modules/Sources/UITestsFoundation/Screens/Editor/AztecEditorScreen.swift @@ -212,8 +212,8 @@ public class AztecEditorScreen: ScreenObject { // returns void since return screen depends on from which screen it loaded public func closeEditor() { - XCTContext.runActivity(named: "Close the Aztec editor") { (_) in - XCTContext.runActivity(named: "Close the More menu if needed") { (_) in + XCTContext.runActivity(named: "Close the Aztec editor") { _ in + XCTContext.runActivity(named: "Close the More menu if needed") { _ in let actionSheet = app.sheets.element(boundBy: 0) if actionSheet.exists { if XCTestCase.isPad { @@ -228,7 +228,7 @@ public class AztecEditorScreen: ScreenObject { editorCloseButton.tap() - XCTContext.runActivity(named: "Discard any local changes") { (_) in + XCTContext.runActivity(named: "Discard any local changes") { _ in let postHasChangesSheet = app.sheets["post-has-changes-alert"] let discardButton = XCTestCase.isPad ? postHasChangesSheet.buttons.lastMatch : postHasChangesSheet.buttons.element(boundBy: 1) diff --git a/Modules/Sources/UITestsFoundation/Screens/Editor/BlockEditorScreen.swift b/Modules/Sources/UITestsFoundation/Screens/Editor/BlockEditorScreen.swift index 2f7cf724e9db..deca7e35d884 100644 --- a/Modules/Sources/UITestsFoundation/Screens/Editor/BlockEditorScreen.swift +++ b/Modules/Sources/UITestsFoundation/Screens/Editor/BlockEditorScreen.swift @@ -248,8 +248,8 @@ public class BlockEditorScreen: ScreenObject { // returns void since return screen depends on from which screen it loaded public func closeEditor() { - XCTContext.runActivity(named: "Close the block editor") { (_) in - XCTContext.runActivity(named: "Close the More menu if needed") { (_) in + XCTContext.runActivity(named: "Close the block editor") { _ in + XCTContext.runActivity(named: "Close the More menu if needed") { _ in let actionSheet = app.sheets.element(boundBy: 0) if actionSheet.exists { dismissBlockEditorPopovers() @@ -260,7 +260,7 @@ public class BlockEditorScreen: ScreenObject { editorCloseButton.waitForIsHittable(timeout: 3) editorCloseButton.tap() - XCTContext.runActivity(named: "Discard any local changes") { (_) in + XCTContext.runActivity(named: "Discard any local changes") { _ in guard unsavedChangesLabel.waitForIsHittable(timeout: 3) else { return } Logger.log(message: "Discarding unsaved changes", event: .v) diff --git a/Modules/Sources/WordPressFlux/Dispatcher.swift b/Modules/Sources/WordPressFlux/Dispatcher.swift index d65c4daaf03d..13be16089e00 100644 --- a/Modules/Sources/WordPressFlux/Dispatcher.swift +++ b/Modules/Sources/WordPressFlux/Dispatcher.swift @@ -61,7 +61,7 @@ public class Dispatcher { /// public func dispatch(_ payload: Payload) { assertMainThread() - self.observers.forEach { (_, callback) in + self.observers.forEach { _, callback in callback(payload) } } diff --git a/Modules/Sources/WordPressFlux/Store.swift b/Modules/Sources/WordPressFlux/Store.swift index a5f35b39683f..996a164e82e5 100644 --- a/Modules/Sources/WordPressFlux/Store.swift +++ b/Modules/Sources/WordPressFlux/Store.swift @@ -29,7 +29,7 @@ open class Store: Observable { /// public init(dispatcher: ActionDispatcher = .global) { actionDispatcher = dispatcher - dispatchReceipt = dispatcher.subscribe { [weak self] (action) in + dispatchReceipt = dispatcher.subscribe { [weak self] action in self?.onDispatch(action) } } diff --git a/Modules/Sources/WordPressKit/AccountServiceRemoteREST+SocialService.swift b/Modules/Sources/WordPressKit/AccountServiceRemoteREST+SocialService.swift index 7500b2882d5e..4d189bb9af74 100644 --- a/Modules/Sources/WordPressKit/AccountServiceRemoteREST+SocialService.swift +++ b/Modules/Sources/WordPressKit/AccountServiceRemoteREST+SocialService.swift @@ -34,12 +34,12 @@ extension AccountServiceRemoteREST { ] as [String: AnyObject] if let connectParameters { - params.merge(connectParameters, uniquingKeysWith: { (current, _) in current }) + params.merge(connectParameters, uniquingKeysWith: { current, _ in current }) } - wordPressComRESTAPI.post(path, parameters: params, success: { (_, _) in + wordPressComRESTAPI.post(path, parameters: params, success: { _, _ in success() - }, failure: { (error, _) in + }, failure: { error, _ in failure(error) }) } @@ -73,9 +73,9 @@ extension AccountServiceRemoteREST { "service": service.rawValue ] as [String: AnyObject] - wordPressComRESTAPI.post(path, parameters: params, success: { (_, _) in + wordPressComRESTAPI.post(path, parameters: params, success: { _, _ in success() - }, failure: { (error, _) in + }, failure: { error, _ in failure(error) }) } diff --git a/Modules/Sources/WordPressKit/AccountSettingsRemote.swift b/Modules/Sources/WordPressKit/AccountSettingsRemote.swift index 475254d9360d..ac52cd9cf7b8 100644 --- a/Modules/Sources/WordPressKit/AccountSettingsRemote.swift +++ b/Modules/Sources/WordPressKit/AccountSettingsRemote.swift @@ -117,7 +117,7 @@ public class AccountSettingsRemote: ServiceRemoteWordPressComREST { let endpoint = "wpcom/v2/users/username/suggestions" let parameters = ["name": base] - wordPressComRESTAPI.get(endpoint, parameters: parameters as [String: AnyObject]?, success: { (responseObject, _) in + wordPressComRESTAPI.get(endpoint, parameters: parameters as [String: AnyObject]?, success: { responseObject, _ in guard let response = responseObject as? [String: AnyObject], let suggestions = response["suggestions"] as? [String] else { finished([]) @@ -125,7 +125,7 @@ public class AccountSettingsRemote: ServiceRemoteWordPressComREST { } finished(suggestions) - }) { (_, _) in + }) { _, _ in finished([]) } } diff --git a/Modules/Sources/WordPressKit/ActivityServiceRemote.swift b/Modules/Sources/WordPressKit/ActivityServiceRemote.swift index 5f4d170c25de..317a6897a1cf 100644 --- a/Modules/Sources/WordPressKit/ActivityServiceRemote.swift +++ b/Modules/Sources/WordPressKit/ActivityServiceRemote.swift @@ -220,7 +220,7 @@ private extension ActivityServiceRemote { throw ActivityServiceRemote.ResponseError.decodingFailure } - let groups: [ActivityGroup] = try rawGroups.map { (key, value) -> ActivityGroup in + let groups: [ActivityGroup] = try rawGroups.map { key, value -> ActivityGroup in guard let group = value as? [String: AnyObject] else { throw ActivityServiceRemote.ResponseError.decodingFailure } diff --git a/Modules/Sources/WordPressKit/AutomatedTransferService.swift b/Modules/Sources/WordPressKit/AutomatedTransferService.swift index 362648b712d2..705736ffa773 100644 --- a/Modules/Sources/WordPressKit/AutomatedTransferService.swift +++ b/Modules/Sources/WordPressKit/AutomatedTransferService.swift @@ -27,7 +27,7 @@ public class AutomatedTransferService: ServiceRemoteWordPressComREST { let endpoint = "sites/\(siteID)/automated-transfers/eligibility" let path = self.path(forEndpoint: endpoint, withVersion: ._1_1) - wordPressComRESTAPI.get(path, parameters: nil, success: { (responseObject, _) in + wordPressComRESTAPI.get(path, parameters: nil, success: { responseObject, _ in guard let response = responseObject as? [String: AnyObject] else { failure(.unknown) return @@ -54,7 +54,7 @@ public class AutomatedTransferService: ServiceRemoteWordPressComREST { let path = self.path(forEndpoint: endpoint, withVersion: ._1_1) let payload = ["plugin": pluginSlug] as [String: AnyObject] - wordPressComRESTAPI.post(path, parameters: payload, success: { (responseObject, _) in + wordPressComRESTAPI.post(path, parameters: payload, success: { responseObject, _ in guard let response = responseObject as? [String: AnyObject] else { failure(ResponseError.decodingFailure) return @@ -68,7 +68,7 @@ public class AutomatedTransferService: ServiceRemoteWordPressComREST { } success((transferID: transferID, status: statusObject)) - }) { (error, _) in + }) { error, _ in failure(error) } @@ -81,7 +81,7 @@ public class AutomatedTransferService: ServiceRemoteWordPressComREST { let endpoint = "sites/\(siteID)/automated-transfers/status" let path = self.path(forEndpoint: endpoint, withVersion: ._1_1) - wordPressComRESTAPI.get(path, parameters: nil, success: { (responseObject, _) in + wordPressComRESTAPI.get(path, parameters: nil, success: { responseObject, _ in guard let response = responseObject as? [String: AnyObject] else { failure(ResponseError.decodingFailure) return @@ -96,7 +96,7 @@ public class AutomatedTransferService: ServiceRemoteWordPressComREST { } success(statusObject) - }) { (error, _) in + }) { error, _ in failure(error) } diff --git a/Modules/Sources/WordPressKit/DomainsServiceRemote.swift b/Modules/Sources/WordPressKit/DomainsServiceRemote.swift index 154b6f692256..0284f22e4171 100644 --- a/Modules/Sources/WordPressKit/DomainsServiceRemote.swift +++ b/Modules/Sources/WordPressKit/DomainsServiceRemote.swift @@ -179,7 +179,7 @@ public class DomainsServiceRemote: ServiceRemoteWordPressComREST { wordPressComRESTAPI.get( servicePath, parameters: nil, - success: { (response, _) in + success: { response, _ in do { let data = try JSONSerialization.data(withJSONObject: response, options: .prettyPrinted) let decodedResult = try JSONDecoder.apiDecoder.decode(DomainContactInformation.self, from: data) @@ -188,7 +188,7 @@ public class DomainsServiceRemote: ServiceRemoteWordPressComREST { WPKitLogError("Error parsing DomainContactInformation (\(error)): \(response)") failure(error) } - }) { (error, _) in + }) { error, _ in failure(error) } } @@ -214,7 +214,7 @@ public class DomainsServiceRemote: ServiceRemoteWordPressComREST { WPKitLogError("Error parsing ValidateDomainContactInformationResponse (\(error)): \(response)") failure(error) } - }) { (error, _) in + }) { error, _ in failure(error) } } diff --git a/Modules/Sources/WordPressKit/EditorServiceRemote.swift b/Modules/Sources/WordPressKit/EditorServiceRemote.swift index 029679575255..52e81e1f6356 100644 --- a/Modules/Sources/WordPressKit/EditorServiceRemote.swift +++ b/Modules/Sources/WordPressKit/EditorServiceRemote.swift @@ -6,14 +6,14 @@ public class EditorServiceRemote: ServiceRemoteWordPressComREST { let endpoint = "sites/\(siteID)/gutenberg?platform=mobile&editor=\(editor.rawValue)" let path = self.path(forEndpoint: endpoint, withVersion: ._2_0) - wordPressComRESTAPI.post(path, parameters: nil, success: { (responseObject, _) in + wordPressComRESTAPI.post(path, parameters: nil, success: { responseObject, _ in do { let settings = try EditorSettings(with: responseObject) success(settings) } catch { failure(error) } - }) { (error, _) in + }) { error, _ in failure(error) } } @@ -28,7 +28,7 @@ public class EditorServiceRemote: ServiceRemoteWordPressComREST { "set_only_if_empty": setOnlyIfEmpty ] as [String: AnyObject] - wordPressComRESTAPI.post(path, parameters: parameters, success: { (responseObject, _) in + wordPressComRESTAPI.post(path, parameters: parameters, success: { responseObject, _ in guard let response = responseObject as? [String: String] else { if let boolResponse = responseObject as? Bool, boolResponse == false { return failure(EditorSettings.Error.badRequest) @@ -36,13 +36,13 @@ public class EditorServiceRemote: ServiceRemoteWordPressComREST { return failure(EditorSettings.Error.badResponse) } - let mappedResponse = response.reduce(into: [Int: EditorSettings.Mobile](), { (result, response) in + let mappedResponse = response.reduce(into: [Int: EditorSettings.Mobile](), { result, response in if let id = Int(response.key), let editor = EditorSettings.Mobile(rawValue: response.value) { result[id] = editor } }) success(mappedResponse) - }) { (error, _) in + }) { error, _ in failure(error) } } @@ -51,14 +51,14 @@ public class EditorServiceRemote: ServiceRemoteWordPressComREST { let endpoint = "sites/\(siteID)/gutenberg" let path = self.path(forEndpoint: endpoint, withVersion: ._2_0) - wordPressComRESTAPI.get(path, parameters: nil, success: { (responseObject, _) in + wordPressComRESTAPI.get(path, parameters: nil, success: { responseObject, _ in do { let settings = try EditorSettings(with: responseObject) success(settings) } catch { failure(error) } - }) { (error, _) in + }) { error, _ in failure(error) } } diff --git a/Modules/Sources/WordPressKit/GravatarServiceRemote.swift b/Modules/Sources/WordPressKit/GravatarServiceRemote.swift index 59e7e7f36b65..4f81876faa2b 100644 --- a/Modules/Sources/WordPressKit/GravatarServiceRemote.swift +++ b/Modules/Sources/WordPressKit/GravatarServiceRemote.swift @@ -99,7 +99,7 @@ open class GravatarServiceRemote { // Task let session = URLSession.shared - let task = session.uploadTask(with: request as URLRequest, from: requestBody, completionHandler: { (_, _, error) in + let task = session.uploadTask(with: request as URLRequest, from: requestBody, completionHandler: { _, _, error in completion?(error as NSError?) }) diff --git a/Modules/Sources/WordPressKit/HTTPAuthenticationAlertController.swift b/Modules/Sources/WordPressKit/HTTPAuthenticationAlertController.swift index aa110146a4e7..6893fb90ac80 100644 --- a/Modules/Sources/WordPressKit/HTTPAuthenticationAlertController.swift +++ b/Modules/Sources/WordPressKit/HTTPAuthenticationAlertController.swift @@ -46,14 +46,14 @@ open class HTTPAuthenticationAlertController { let cancelAction = UIAlertAction(title: NSLocalizedString("Cancel", comment: "Cancel button label"), style: .default, - handler: { (_) in + handler: { _ in executeHandlerForChallenge(challenge, disposition: .cancelAuthenticationChallenge, credential: nil) }) controller.addAction(cancelAction) let trustAction = UIAlertAction(title: NSLocalizedString("Trust", comment: "Connect when the SSL certificate is invalid"), style: .default, - handler: { (_) in + handler: { _ in let credential = URLCredential(trust: challenge.protectionSpace.serverTrust!) URLCredentialStorage.shared.setDefaultCredential(credential, for: challenge.protectionSpace) executeHandlerForChallenge(challenge, disposition: .useCredential, credential: credential) @@ -69,25 +69,25 @@ open class HTTPAuthenticationAlertController { message: message, preferredStyle: .alert) - controller.addTextField( configurationHandler: { (textField) in + controller.addTextField( configurationHandler: { textField in textField.placeholder = NSLocalizedString("Username", comment: "Login dialog username placeholder") }) - controller.addTextField(configurationHandler: { (textField) in + controller.addTextField(configurationHandler: { textField in textField.placeholder = NSLocalizedString("Password", comment: "Login dialog password placeholder") textField.isSecureTextEntry = true }) let cancelAction = UIAlertAction(title: NSLocalizedString("Cancel", comment: "Cancel button label"), style: .default, - handler: { (_) in + handler: { _ in executeHandlerForChallenge(challenge, disposition: .cancelAuthenticationChallenge, credential: nil) }) controller.addAction(cancelAction) let loginAction = UIAlertAction(title: NSLocalizedString("Log In", comment: "Log In button label."), style: .default, - handler: { (_) in + handler: { _ in guard let username = controller.textFields?.first?.text, let password = controller.textFields?.last?.text else { executeHandlerForChallenge(challenge, disposition: .cancelAuthenticationChallenge, credential: nil) diff --git a/Modules/Sources/WordPressKit/JSONDecoderExtension.swift b/Modules/Sources/WordPressKit/JSONDecoderExtension.swift index 050dcbce7522..5e3583c197b8 100644 --- a/Modules/Sources/WordPressKit/JSONDecoderExtension.swift +++ b/Modules/Sources/WordPressKit/JSONDecoderExtension.swift @@ -26,7 +26,7 @@ extension JSONDecoder.DateDecodingStrategy { } static var supportMultipleDateFormats: JSONDecoder.DateDecodingStrategy { - return JSONDecoder.DateDecodingStrategy.custom({ (decoder) -> Date in + return JSONDecoder.DateDecodingStrategy.custom({ decoder -> Date in let container = try decoder.singleValueContainer() let dateStr = try container.decode(String.self) diff --git a/Modules/Sources/WordPressKit/JetpackScanServiceRemote.swift b/Modules/Sources/WordPressKit/JetpackScanServiceRemote.swift index 928e02bc68a1..2a3a6cc0509f 100644 --- a/Modules/Sources/WordPressKit/JetpackScanServiceRemote.swift +++ b/Modules/Sources/WordPressKit/JetpackScanServiceRemote.swift @@ -4,7 +4,7 @@ import WordPressKitObjC public class JetpackScanServiceRemote: ServiceRemoteWordPressComREST { // MARK: - Scanning public func getScanAvailableForSite(_ siteID: Int, success: @escaping(Bool) -> Void, failure: @escaping(Error) -> Void) { - getScanForSite(siteID, success: { (scan) in + getScanForSite(siteID, success: { scan in success(scan.isEnabled) }, failure: failure) } @@ -19,7 +19,7 @@ public class JetpackScanServiceRemote: ServiceRemoteWordPressComREST { public func startScanForSite(_ siteID: Int, success: @escaping(Bool) -> Void, failure: @escaping(Error) -> Void) { let path = self.scanPath(for: siteID, with: "enqueue") - wordPressComRESTAPI.post(path, parameters: nil, success: { (response, _) in + wordPressComRESTAPI.post(path, parameters: nil, success: { response, _ in guard let responseDict = response as? [String: Any], let responseValue = responseDict["success"] as? Bool else { success(false) @@ -27,7 +27,7 @@ public class JetpackScanServiceRemote: ServiceRemoteWordPressComREST { } success(responseValue) - }, failure: { (error, _) in + }, failure: { error, _ in failure(error) }) } @@ -36,7 +36,7 @@ public class JetpackScanServiceRemote: ServiceRemoteWordPressComREST { public func getScanForSite(_ siteID: Int, success: @escaping(JetpackScan) -> Void, failure: @escaping(Error) -> Void) { let path = self.scanPath(for: siteID) - wordPressComRESTAPI.get(path, parameters: nil, success: { (response, _) in + wordPressComRESTAPI.get(path, parameters: nil, success: { response, _ in do { let decoder = JSONDecoder.apiDecoder let data = try JSONSerialization.data(withJSONObject: response, options: []) @@ -47,7 +47,7 @@ public class JetpackScanServiceRemote: ServiceRemoteWordPressComREST { failure(error) } - }, failure: { (error, _) in + }, failure: { error, _ in failure(error) }) } @@ -68,7 +68,7 @@ public class JetpackScanServiceRemote: ServiceRemoteWordPressComREST { let path = self.path(forEndpoint: "sites/\(siteID)/alerts/fix", withVersion: ._2_0) let parameters = ["threat_ids": threats.map { $0.id as AnyObject }] as [String: AnyObject] - wordPressComRESTAPI.post(path, parameters: parameters, success: { (response, _) in + wordPressComRESTAPI.post(path, parameters: parameters, success: { response, _ in do { let decoder = JSONDecoder.apiDecoder let data = try JSONSerialization.data(withJSONObject: response, options: []) @@ -78,7 +78,7 @@ public class JetpackScanServiceRemote: ServiceRemoteWordPressComREST { } catch { failure(error) } - }, failure: { (error, _) in + }, failure: { error, _ in failure(error) }) } @@ -102,9 +102,9 @@ public class JetpackScanServiceRemote: ServiceRemoteWordPressComREST { let path = self.path(forEndpoint: "sites/\(siteID)/alerts/\(threat.id)", withVersion: ._2_0) let parameters = ["ignore": true] as [String: AnyObject] - wordPressComRESTAPI.post(path, parameters: parameters, success: { (_, _) in + wordPressComRESTAPI.post(path, parameters: parameters, success: { _, _ in success() - }, failure: { (error, _) in + }, failure: { error, _ in failure(error) }) } @@ -114,7 +114,7 @@ public class JetpackScanServiceRemote: ServiceRemoteWordPressComREST { let path = self.path(forEndpoint: "sites/\(siteID)/alerts/fix", withVersion: ._2_0) let parameters = ["threat_ids": threats.map { $0.id as AnyObject }] as [String: AnyObject] - wordPressComRESTAPI.get(path, parameters: parameters, success: { (response, _) in + wordPressComRESTAPI.get(path, parameters: parameters, success: { response, _ in do { let decoder = JSONDecoder.apiDecoder let data = try JSONSerialization.data(withJSONObject: response, options: []) @@ -124,7 +124,7 @@ public class JetpackScanServiceRemote: ServiceRemoteWordPressComREST { } catch { failure(error) } - }, failure: { (error, _) in + }, failure: { error, _ in failure(error) }) } @@ -133,7 +133,7 @@ public class JetpackScanServiceRemote: ServiceRemoteWordPressComREST { public func getHistoryForSite(_ siteID: Int, success: @escaping(JetpackScanHistory) -> Void, failure: @escaping(Error) -> Void) { let path = scanPath(for: siteID, with: "history") - wordPressComRESTAPI.get(path, parameters: nil, success: { (response, _) in + wordPressComRESTAPI.get(path, parameters: nil, success: { response, _ in do { let decoder = JSONDecoder.apiDecoder let data = try JSONSerialization.data(withJSONObject: response, options: []) @@ -143,7 +143,7 @@ public class JetpackScanServiceRemote: ServiceRemoteWordPressComREST { } catch { failure(error) } - }, failure: { (error, _) in + }, failure: { error, _ in failure(error) }) } diff --git a/Modules/Sources/WordPressKit/NotificationSyncServiceRemote.swift b/Modules/Sources/WordPressKit/NotificationSyncServiceRemote.swift index 1789ed47a767..32272aa6b688 100644 --- a/Modules/Sources/WordPressKit/NotificationSyncServiceRemote.swift +++ b/Modules/Sources/WordPressKit/NotificationSyncServiceRemote.swift @@ -89,11 +89,11 @@ public class NotificationSyncServiceRemote: ServiceRemoteWordPressComREST { let parameters = ["counts": notifications] - wordPressComRESTAPI.post(requestUrl, parameters: parameters as [String: AnyObject]?, success: { (response, _) in + wordPressComRESTAPI.post(requestUrl, parameters: parameters as [String: AnyObject]?, success: { response, _ in let error = self.errorFromResponse(response) completion(error) - }, failure: { (error, _) in + }, failure: { error, _ in completion(error) }) } @@ -112,11 +112,11 @@ public class NotificationSyncServiceRemote: ServiceRemoteWordPressComREST { "time": timestamp ] - wordPressComRESTAPI.post(requestUrl, parameters: parameters as [String: AnyObject]?, success: { (response, _) in + wordPressComRESTAPI.post(requestUrl, parameters: parameters as [String: AnyObject]?, success: { response, _ in let error = self.errorFromResponse(response) completion(error) - }, failure: { (error, _) in + }, failure: { error, _ in completion(error) }) } diff --git a/Modules/Sources/WordPressKit/PageLayoutServiceRemote.swift b/Modules/Sources/WordPressKit/PageLayoutServiceRemote.swift index 10636fbc6756..d73e487dda33 100644 --- a/Modules/Sources/WordPressKit/PageLayoutServiceRemote.swift +++ b/Modules/Sources/WordPressKit/PageLayoutServiceRemote.swift @@ -11,14 +11,14 @@ public class PageLayoutServiceRemote { urlPath = "/wpcom/v2/common-block-layouts" } - api.GET(urlPath, parameters: parameters, success: { (responseObject, _) in + api.GET(urlPath, parameters: parameters, success: { responseObject, _ in guard let result = parseLayouts(fromResponse: responseObject) else { let error = NSError(domain: "PageLayoutService", code: 0, userInfo: [NSDebugDescriptionErrorKey: "Unable to parse response"]) completion(.failure(error)) return } completion(.success(result)) - }, failure: { (error, _) in + }, failure: { error, _ in completion(.failure(error)) }) } diff --git a/Modules/Sources/WordPressKit/PeopleServiceRemote.swift b/Modules/Sources/WordPressKit/PeopleServiceRemote.swift index 132e863ae6b0..730aea91e612 100644 --- a/Modules/Sources/WordPressKit/PeopleServiceRemote.swift +++ b/Modules/Sources/WordPressKit/PeopleServiceRemote.swift @@ -41,7 +41,7 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { "fields": "ID, nice_name, first_name, last_name, name, avatar_URL, roles, is_super_admin, linked_user_ID" as AnyObject ] - wordPressComRESTAPI.get(path, parameters: parameters, success: { (responseObject, _) in + wordPressComRESTAPI.get(path, parameters: parameters, success: { responseObject, _ in guard let response = responseObject as? [String: AnyObject], let users = response["users"] as? [[String: AnyObject]], let people = try? self.peopleFromResponse(users, siteID: siteID, type: User.self) else { @@ -52,7 +52,7 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { let hasMore = self.peopleFoundFromResponse(response) > (offset + people.count) success(people, hasMore) - }, failure: { (error, _) in + }, failure: { error, _ in failure(error) }) } @@ -82,7 +82,7 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { "fields": "ID, nice_name, first_name, last_name, name, avatar_URL" as AnyObject ] - wordPressComRESTAPI.get(path, parameters: parameters, success: { (responseObject, _) in + wordPressComRESTAPI.get(path, parameters: parameters, success: { responseObject, _ in guard let response = responseObject as? [String: AnyObject], let followers = response["users"] as? [[String: AnyObject]], let people = try? self.peopleFromResponse(followers, siteID: siteID, type: Follower.self) else { @@ -93,7 +93,7 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { let hasMore = self.peopleFoundFromResponse(response) > (offset + people.count) success(people, hasMore) - }, failure: { (error, _) in + }, failure: { error, _ in failure(error) }) } @@ -170,7 +170,7 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { let hasMore = self.peopleFoundFromResponse(response) > (offset + people.count) success(people, hasMore) - }, failure: { (error, _) in + }, failure: { error, _ in failure(error) }) } @@ -197,7 +197,7 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { wordPressComRESTAPI.post(path, parameters: parameters as [String: AnyObject]?, - success: { (responseObject, _) in + success: { responseObject, _ in guard let response = responseObject as? [String: AnyObject], let person = try? self.personFromResponse(response, siteID: siteID, type: User.self) else { failure?(ResponseError.decodingFailure) @@ -206,7 +206,7 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { success?(person) }, - failure: { (error, _) in + failure: { error, _ in failure?(error) }) } @@ -234,9 +234,9 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { parameters["reassign"] = reassignID as AnyObject? } - wordPressComRESTAPI.post(path, parameters: nil, success: { (_, _) in + wordPressComRESTAPI.post(path, parameters: nil, success: { _, _ in success?() - }, failure: { (error, _) in + }, failure: { error, _ in failure?(error) }) } @@ -256,9 +256,9 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { let endpoint = "sites/\(siteID)/followers/\(userID)/delete" let path = self.path(forEndpoint: endpoint, withVersion: ._1_1) - wordPressComRESTAPI.post(path, parameters: nil, success: { (_, _) in + wordPressComRESTAPI.post(path, parameters: nil, success: { _, _ in success?() - }, failure: { (error, _) in + }, failure: { error, _ in failure?(error) }) } @@ -300,9 +300,9 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { let endpoint = "sites/\(siteID)/viewers/\(userID)/delete" let path = self.path(forEndpoint: endpoint, withVersion: ._1_1) - wordPressComRESTAPI.post(path, parameters: nil, success: { (_, _) in + wordPressComRESTAPI.post(path, parameters: nil, success: { _, _ in success?() - }, failure: { (error, _) in + }, failure: { error, _ in failure?(error) }) } @@ -322,7 +322,7 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { let endpoint = "sites/\(siteID)/roles" let path = self.path(forEndpoint: endpoint, withVersion: ._1_1) - wordPressComRESTAPI.get(path, parameters: nil, success: { (responseObject, _) in + wordPressComRESTAPI.get(path, parameters: nil, success: { responseObject, _ in guard let response = responseObject as? [String: AnyObject], let roles = try? self.rolesFromResponse(response) else { failure?(ResponseError.decodingFailure) @@ -330,7 +330,7 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { } success(roles) - }, failure: { (error, _) in + }, failure: { error, _ in failure?(error) }) } @@ -357,7 +357,7 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { "role": role ] - wordPressComRESTAPI.post(path, parameters: parameters as [String: AnyObject]?, success: { (responseObject, _) in + wordPressComRESTAPI.post(path, parameters: parameters as [String: AnyObject]?, success: { responseObject, _ in guard let responseDict = responseObject as? [String: AnyObject] else { failure(ResponseError.decodingFailure) return @@ -370,7 +370,7 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { success() - }, failure: { (error, _) in + }, failure: { error, _ in failure(error) }) } @@ -400,7 +400,7 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { "message": message ] - wordPressComRESTAPI.post(path, parameters: parameters as [String: AnyObject]?, success: { (responseObject, _) in + wordPressComRESTAPI.post(path, parameters: parameters as [String: AnyObject]?, success: { responseObject, _ in guard let responseDict = responseObject as? [String: AnyObject] else { failure(ResponseError.decodingFailure) return @@ -413,7 +413,7 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { success() - }, failure: { (error, _) in + }, failure: { error, _ in failure(error) }) } @@ -436,7 +436,7 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { "number": 100 ] as [String: AnyObject] - wordPressComRESTAPI.get(path, parameters: params, success: { (responseObject, _) in + wordPressComRESTAPI.get(path, parameters: params, success: { responseObject, _ in guard let responseDict = responseObject as? [String: AnyObject] else { failure(ResponseError.decodingFailure) return @@ -450,7 +450,7 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { } success(results) - }, failure: { (error, _) in + }, failure: { error, _ in failure(error) }) } @@ -468,7 +468,7 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { let endpoint = "sites/\(siteID)/invites/links/generate" let path = self.path(forEndpoint: endpoint, withVersion: ._2_0) - wordPressComRESTAPI.post(path, parameters: nil, success: { (responseObject, _) in + wordPressComRESTAPI.post(path, parameters: nil, success: { responseObject, _ in guard let responseArray = responseObject as? [[String: AnyObject]] else { failure(ResponseError.decodingFailure) return @@ -480,7 +480,7 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { } success(results) - }, failure: { (error, _) in + }, failure: { error, _ in failure(error) }) @@ -499,11 +499,11 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST { let endpoint = "sites/\(siteID)/invites/links/disable" let path = self.path(forEndpoint: endpoint, withVersion: ._2_0) - wordPressComRESTAPI.post(path, parameters: nil, success: { (responseObject, _) in + wordPressComRESTAPI.post(path, parameters: nil, success: { responseObject, _ in let deletedKeys = responseObject as? [String] ?? [String]() success(deletedKeys) - }, failure: { (error, _) in + }, failure: { error, _ in failure(error) }) } @@ -525,7 +525,7 @@ private extension PeopleServiceRemote { func peopleFromResponse(_ rawPeople: [[String: AnyObject]], siteID: Int, type: T.Type) throws -> [T] { - let people = try rawPeople.compactMap { (user) -> T? in + let people = try rawPeople.compactMap { user -> T? in return try personFromResponse(user, siteID: siteID, type: type) } @@ -598,7 +598,7 @@ private extension PeopleServiceRemote { throw ResponseError.decodingFailure } - let parsed = try rawRoles.map { (rawRole) -> RemoteRole in + let parsed = try rawRoles.map { rawRole -> RemoteRole in guard let name = rawRole["name"] as? String, let displayName = rawRole["display_name"] as? String else { throw ResponseError.decodingFailure diff --git a/Modules/Sources/WordPressKit/PlanServiceRemote_ApiVersion1_3.swift b/Modules/Sources/WordPressKit/PlanServiceRemote_ApiVersion1_3.swift index ccbb97edb871..97e5e7b1e53f 100644 --- a/Modules/Sources/WordPressKit/PlanServiceRemote_ApiVersion1_3.swift +++ b/Modules/Sources/WordPressKit/PlanServiceRemote_ApiVersion1_3.swift @@ -40,7 +40,7 @@ import WordPressKitObjC var activePlans: [RemotePlan_ApiVersion1_3] = [] var currentlyActivePlan: RemotePlan_ApiVersion1_3? - try json.forEach { (key, value) in + try json.forEach { key, value in let data = try JSONSerialization.data(withJSONObject: value, options: .prettyPrinted) do { let decodedResult = try JSONDecoder.apiDecoder.decode(RemotePlan_ApiVersion1_3.self, from: data) diff --git a/Modules/Sources/WordPressKit/PluginDirectoryEntry.swift b/Modules/Sources/WordPressKit/PluginDirectoryEntry.swift index 4f41dd6eef2d..c5c51a07f17e 100644 --- a/Modules/Sources/WordPressKit/PluginDirectoryEntry.swift +++ b/Modules/Sources/WordPressKit/PluginDirectoryEntry.swift @@ -85,7 +85,7 @@ extension PluginDirectoryEntry: Codable { rating = try container.decode(Double.self, forKey: .rating) let icons = try? container.decodeIfPresent([String: String].self, forKey: .icons) - icon = icons?["2x"].flatMap({ (s) -> URL? in + icon = icons?["2x"].flatMap({ s -> URL? in URL(string: s) }) diff --git a/Modules/Sources/WordPressKit/PluginServiceRemote.swift b/Modules/Sources/WordPressKit/PluginServiceRemote.swift index a244e1c3ba02..2e7106620aac 100644 --- a/Modules/Sources/WordPressKit/PluginServiceRemote.swift +++ b/Modules/Sources/WordPressKit/PluginServiceRemote.swift @@ -12,7 +12,7 @@ public class PluginServiceRemote: ServiceRemoteWordPressComREST { public func getFeaturedPlugins(success: @escaping ([PluginDirectoryEntry]) -> Void, failure: @escaping (Error) -> Void) { let endpoint = "wpcom/v2/plugins/featured" - wordPressComRESTAPI.get(endpoint, parameters: nil, success: { (responseObject, _) in + wordPressComRESTAPI.get(endpoint, parameters: nil, success: { responseObject, _ in guard let response = responseObject as? [[String: AnyObject]] else { failure(ResponseError.decodingFailure) return @@ -23,7 +23,7 @@ public class PluginServiceRemote: ServiceRemoteWordPressComREST { } catch { failure(ResponseError.decodingFailure) } - }, failure: { (error, _) in + }, failure: { error, _ in WPKitLogError("[PluginServiceRemoteError] Error fetching featured plugins: \(error)") failure(error) }) @@ -34,7 +34,7 @@ public class PluginServiceRemote: ServiceRemoteWordPressComREST { let path = self.path(forEndpoint: endpoint, withVersion: ._1_2) let parameters = [String: AnyObject]() - wordPressComRESTAPI.get(path, parameters: parameters, success: { (responseObject, _) in + wordPressComRESTAPI.get(path, parameters: parameters, success: { responseObject, _ in guard let response = responseObject as? [String: AnyObject] else { failure(ResponseError.decodingFailure) return @@ -46,7 +46,7 @@ public class PluginServiceRemote: ServiceRemoteWordPressComREST { } catch { failure(self.errorFromResponse(response)) } - }, failure: { (error, _) in + }, failure: { error, _ in WPKitLogError("[PluginServiceRemoteError] Error fetching site plugins: \(error)") failure(error) }) @@ -63,7 +63,7 @@ public class PluginServiceRemote: ServiceRemoteWordPressComREST { wordPressComRESTAPI.post( path, parameters: parameters, - success: { (responseObject, _) in + success: { responseObject, _ in guard let response = responseObject as? [String: AnyObject] else { failure(ResponseError.decodingFailure) return @@ -75,7 +75,7 @@ public class PluginServiceRemote: ServiceRemoteWordPressComREST { failure(self.errorFromResponse(response)) } }, - failure: { (error, _) in + failure: { error, _ in WPKitLogError("[PluginServiceRemoteError] Error updating plugin: \(error)") failure(error) }) @@ -135,7 +135,7 @@ public class PluginServiceRemote: ServiceRemoteWordPressComREST { } catch { failure(self.errorFromResponse(response)) } - }, failure: { (error, _) in + }, failure: { error, _ in WPKitLogError("[PluginServiceRemoteError] Error installing plugin: \(error)") failure(error) } @@ -154,7 +154,7 @@ public class PluginServiceRemote: ServiceRemoteWordPressComREST { parameters: nil, success: { _, _ in success() - }, failure: { (error, _) in + }, failure: { error, _ in WPKitLogError("[PluginServiceRemoteError] Error removing plugin: \(error)") failure(error) } @@ -174,7 +174,7 @@ public class PluginServiceRemote: ServiceRemoteWordPressComREST { success: { _, _ in success() }, - failure: { (error, _) in + failure: { error, _ in WPKitLogError("[PluginServiceRemoteError] Error modifying plugin: \(error)") failure(error) }) @@ -196,7 +196,7 @@ internal extension PluginServiceRemote { throw ResponseError.decodingFailure } - return try plugins.map { (plugin) -> PluginState in + return try plugins.map { plugin -> PluginState in return try pluginState(response: plugin) } } diff --git a/Modules/Sources/WordPressKit/PostServiceRemoteREST+Revisions.swift b/Modules/Sources/WordPressKit/PostServiceRemoteREST+Revisions.swift index ae08da963b3a..5f044eb10fdc 100644 --- a/Modules/Sources/WordPressKit/PostServiceRemoteREST+Revisions.swift +++ b/Modules/Sources/WordPressKit/PostServiceRemoteREST+Revisions.swift @@ -9,10 +9,10 @@ public extension PostServiceRemoteREST { let path = self.path(forEndpoint: endpoint, withVersion: ._1_1) wordPressComRESTAPI.get(path, parameters: nil, - success: { (response, _) in + success: { response, _ in do { let data = try JSONSerialization.data(withJSONObject: response, options: []) - self.map(from: data) { (revisions, error) in + self.map(from: data) { revisions, error in if let error { failure(error) } else { @@ -37,7 +37,7 @@ public extension PostServiceRemoteREST { "context": "edit", "fields": "revisions" ] as [String: AnyObject], - success: { (response, _) in + success: { response, _ in let latestRevision: NSNumber? if let json = response as? [String: Any], let revisions = json["revisions"] as? NSArray, diff --git a/Modules/Sources/WordPressKit/PostServiceRemoteREST.swift b/Modules/Sources/WordPressKit/PostServiceRemoteREST.swift index 03f544cb82ce..9f266f453cf4 100644 --- a/Modules/Sources/WordPressKit/PostServiceRemoteREST.swift +++ b/Modules/Sources/WordPressKit/PostServiceRemoteREST.swift @@ -40,7 +40,7 @@ extension PostServiceRemoteREST { wordPressComRESTAPI.get(requestUrl, parameters: parameters, - success: { (responseObject, _) in + success: { responseObject, _ in if let success { let responseDict = responseObject as? [String: Any] ?? [:] let jsonUsers = responseDict["likes"] as? [[String: Any]] ?? [] @@ -48,7 +48,7 @@ extension PostServiceRemoteREST { let found = responseDict["found"] as? NSNumber ?? 0 success(users, found) } - }, failure: { (error, _) in + }, failure: { error, _ in failure?(error) }) } diff --git a/Modules/Sources/WordPressKit/QRLoginServiceRemote.swift b/Modules/Sources/WordPressKit/QRLoginServiceRemote.swift index 772dd6c6d7d7..c43698392c99 100644 --- a/Modules/Sources/WordPressKit/QRLoginServiceRemote.swift +++ b/Modules/Sources/WordPressKit/QRLoginServiceRemote.swift @@ -7,7 +7,7 @@ open class QRLoginServiceRemote: ServiceRemoteWordPressComREST { let path = self.path(forEndpoint: "auth/qr-code/validate", withVersion: ._2_0) let parameters = [ "token": token, "data": data ] as [String: AnyObject] - wordPressComRESTAPI.post(path, parameters: parameters as [String: AnyObject], success: { (response, _) in + wordPressComRESTAPI.post(path, parameters: parameters as [String: AnyObject], success: { response, _ in do { let decoder = JSONDecoder.apiDecoder let data = try JSONSerialization.data(withJSONObject: response, options: []) @@ -17,7 +17,7 @@ open class QRLoginServiceRemote: ServiceRemoteWordPressComREST { } catch { failure(nil, .invalidData) } - }, failure: { (error, response) in + }, failure: { error, response in guard let response else { failure(error, .invalidData) return @@ -33,7 +33,7 @@ open class QRLoginServiceRemote: ServiceRemoteWordPressComREST { let path = self.path(forEndpoint: "auth/qr-code/authenticate", withVersion: ._2_0) let parameters = [ "token": token, "data": data ] as [String: AnyObject] - wordPressComRESTAPI.post(path, parameters: parameters, success: { (response, _) in + wordPressComRESTAPI.post(path, parameters: parameters, success: { response, _ in guard let responseDict = response as? [String: Any], let authenticated = responseDict["authenticated"] as? Bool else { success(false) @@ -41,7 +41,7 @@ open class QRLoginServiceRemote: ServiceRemoteWordPressComREST { } success(authenticated) - }, failure: { (error, _) in + }, failure: { error, _ in failure(error) }) } diff --git a/Modules/Sources/WordPressKit/ReaderPostServiceRemote+RelatedPosts.swift b/Modules/Sources/WordPressKit/ReaderPostServiceRemote+RelatedPosts.swift index b65851fd9a9b..05d6a09675ce 100644 --- a/Modules/Sources/WordPressKit/ReaderPostServiceRemote+RelatedPosts.swift +++ b/Modules/Sources/WordPressKit/ReaderPostServiceRemote+RelatedPosts.swift @@ -27,7 +27,7 @@ extension ReaderPostServiceRemote { wordPressComRESTAPI.get( path, parameters: parameters, - success: { (response, _) in + success: { response, _ in do { let decoder = JSONDecoder() let data = try JSONSerialization.data(withJSONObject: response, options: []) @@ -39,7 +39,7 @@ extension ReaderPostServiceRemote { failure(error) } }, - failure: { (error, _) in + failure: { error, _ in WPKitLogError("Error fetching reader related posts: \(error)") failure(error) } diff --git a/Modules/Sources/WordPressKit/ReaderPostServiceRemote+V2.swift b/Modules/Sources/WordPressKit/ReaderPostServiceRemote+V2.swift index d171f0f2db4c..1a5f695578ae 100644 --- a/Modules/Sources/WordPressKit/ReaderPostServiceRemote+V2.swift +++ b/Modules/Sources/WordPressKit/ReaderPostServiceRemote+V2.swift @@ -129,7 +129,7 @@ extension ReaderPostServiceRemote { let path = self.path(forEndpoint: endpoint, withVersion: ._2_0) - wordPressComRESTAPI.post(path, parameters: params, success: { (responseObject, _) in + wordPressComRESTAPI.post(path, parameters: params, success: { responseObject, _ in guard let response = responseObject as? [String: AnyObject], let status = response["status"] as? Bool, status == true else { @@ -137,7 +137,7 @@ extension ReaderPostServiceRemote { return } success() - }, failure: { (error, _) in + }, failure: { error, _ in failure(error) }) } diff --git a/Modules/Sources/WordPressKit/ReaderTopicServiceRemote+Subscription.swift b/Modules/Sources/WordPressKit/ReaderTopicServiceRemote+Subscription.swift index 4e597b0dcf21..6d8c2b646647 100644 --- a/Modules/Sources/WordPressKit/ReaderTopicServiceRemote+Subscription.swift +++ b/Modules/Sources/WordPressKit/ReaderTopicServiceRemote+Subscription.swift @@ -84,10 +84,10 @@ extension ReaderTopicServiceRemote { WPKitLogInfo("URL: \(urlRequest)") - wordPressComRESTAPI.post(urlRequest, parameters: parameters, success: { (_, response) in + wordPressComRESTAPI.post(urlRequest, parameters: parameters, success: { _, response in WPKitLogInfo("Success \(response?.url?.absoluteString ?? "unknown url")") success() - }) { (error, response) in + }) { error, response in WPKitLogError("Error: \(error.localizedDescription)") let urlAbsoluteString = response?.url?.absoluteString ?? NSLocalizedString("unknown url", comment: "Used when the response doesn't have a valid url to display") failure(ReaderTopicServiceError.remoteResponse(message: error.localizedDescription, url: urlAbsoluteString)) diff --git a/Modules/Sources/WordPressKit/SharingServiceRemote.swift b/Modules/Sources/WordPressKit/SharingServiceRemote.swift index ad444ad3a1cc..bd153f4df131 100644 --- a/Modules/Sources/WordPressKit/SharingServiceRemote.swift +++ b/Modules/Sources/WordPressKit/SharingServiceRemote.swift @@ -108,7 +108,7 @@ open class SharingServiceRemote: ServiceRemoteWordPressComREST { } let connections = responseDict.array(forKey: ConnectionDictionaryKeys.connections) ?? [] - let keyringConnections: [KeyringConnection] = connections.map { (dict) -> KeyringConnection in + let keyringConnections: [KeyringConnection] = connections.map { dict -> KeyringConnection in let conn = KeyringConnection() let dict = dict as AnyObject let externalUsers = dict.array(forKey: ConnectionDictionaryKeys.additionalExternalUsers) ?? [] @@ -149,7 +149,7 @@ open class SharingServiceRemote: ServiceRemoteWordPressComREST { /// - Returns: An array of KeyringConnectionExternalUser instances. /// private func externalUsersForKeyringConnection(_ externalUsers: NSArray) -> [KeyringConnectionExternalUser] { - let arr: [KeyringConnectionExternalUser] = externalUsers.map { (dict) -> KeyringConnectionExternalUser in + let arr: [KeyringConnectionExternalUser] = externalUsers.map { dict -> KeyringConnectionExternalUser in let externalUser = KeyringConnectionExternalUser() externalUser.externalID = (dict as AnyObject).string(forKey: ConnectionDictionaryKeys.externalID) ?? externalUser.externalID externalUser.externalName = (dict as AnyObject).string(forKey: ConnectionDictionaryKeys.externalName) ?? externalUser.externalName @@ -185,7 +185,7 @@ open class SharingServiceRemote: ServiceRemoteWordPressComREST { } let connections = responseDict.array(forKey: ConnectionDictionaryKeys.connections) ?? [] - let publicizeConnections: [RemotePublicizeConnection] = connections.compactMap { (dict) -> RemotePublicizeConnection? in + let publicizeConnections: [RemotePublicizeConnection] = connections.compactMap { dict -> RemotePublicizeConnection? in let conn = self.remotePublicizeConnectionFromDictionary(dict as! NSDictionary) return conn } @@ -476,7 +476,7 @@ open class SharingServiceRemote: ServiceRemoteWordPressComREST { /// private func remoteSharingButtonsFromDictionary(_ buttons: NSArray) -> [RemoteSharingButton] { var order = 0 - let sharingButtons: [RemoteSharingButton] = buttons.map { (dict) -> RemoteSharingButton in + let sharingButtons: [RemoteSharingButton] = buttons.map { dict -> RemoteSharingButton in let btn = RemoteSharingButton() btn.buttonID = (dict as AnyObject).string(forKey: SharingButtonsKeys.buttonID) ?? btn.buttonID btn.name = (dict as AnyObject).string(forKey: SharingButtonsKeys.name) ?? btn.name @@ -498,7 +498,7 @@ open class SharingServiceRemote: ServiceRemoteWordPressComREST { } private func dictionariesFromRemoteSharingButtons(_ buttons: [RemoteSharingButton]) -> [NSDictionary] { - return buttons.map({ (btn) -> NSDictionary in + return buttons.map({ btn -> NSDictionary in let dict = NSMutableDictionary() dict[SharingButtonsKeys.buttonID] = btn.buttonID diff --git a/Modules/Sources/WordPressKit/SiteDesignServiceRemote.swift b/Modules/Sources/WordPressKit/SiteDesignServiceRemote.swift index 74ed24b76e06..94245d8f38f8 100644 --- a/Modules/Sources/WordPressKit/SiteDesignServiceRemote.swift +++ b/Modules/Sources/WordPressKit/SiteDesignServiceRemote.swift @@ -35,14 +35,14 @@ public class SiteDesignServiceRemote { private static func joinParameters(_ parameters: [String: AnyObject], additionalParameters: [String: AnyObject]?) -> [String: AnyObject] { guard let additionalParameters else { return parameters } - return parameters.reduce(into: additionalParameters, { (result, element) in + return parameters.reduce(into: additionalParameters, { result, element in result[element.key] = element.value }) } public static func fetchSiteDesigns(_ api: WordPressComRestApi, request: SiteDesignRequest? = nil, completion: @escaping CompletionHandler) { let combinedParameters: [String: AnyObject] = joinParameters(parameters, additionalParameters: request?.parameters) - api.GET(endpoint, parameters: combinedParameters, success: { (responseObject, _) in + api.GET(endpoint, parameters: combinedParameters, success: { responseObject, _ in do { let result = try parseLayouts(fromResponse: responseObject) completion(.success(result)) @@ -50,7 +50,7 @@ public class SiteDesignServiceRemote { NSLog("error response object: %@", String(describing: responseObject)) completion(.failure(error)) } - }, failure: { (error, _) in + }, failure: { error, _ in completion(.failure(error)) }) } diff --git a/Modules/Sources/WordPressKit/StatsServiceRemoteV2.swift b/Modules/Sources/WordPressKit/StatsServiceRemoteV2.swift index f25b4e4bb97b..7b97c613d2d0 100644 --- a/Modules/Sources/WordPressKit/StatsServiceRemoteV2.swift +++ b/Modules/Sources/WordPressKit/StatsServiceRemoteV2.swift @@ -57,7 +57,7 @@ open class StatsServiceRemoteV2: ServiceRemoteWordPressComREST { let path = self.path(forEndpoint: "sites/\(siteID)/\(pathComponent)/", withVersion: ._1_1) - wordPressComRESTAPI.get(path, parameters: properties, success: { (response, _) in + wordPressComRESTAPI.get(path, parameters: properties, success: { response, _ in guard let jsonResponse = response as? [String: AnyObject], let insight = InsightType(jsonDictionary: jsonResponse) @@ -67,7 +67,7 @@ open class StatsServiceRemoteV2: ServiceRemoteWordPressComREST { } completion(insight, nil) - }, failure: { (error, _) in + }, failure: { error, _ in completion(nil, error) }) } @@ -145,7 +145,7 @@ open class StatsServiceRemoteV2: ServiceRemoteWordPressComREST { return val1 } - wordPressComRESTAPI.get(path, parameters: properties, success: { (response, _) in + wordPressComRESTAPI.get(path, parameters: properties, success: { response, _ in guard let jsonResponse = response as? [String: AnyObject], let dateString = jsonResponse["date"] as? String, @@ -173,7 +173,7 @@ open class StatsServiceRemoteV2: ServiceRemoteWordPressComREST { } completion(timestats, nil) - }, failure: { (error, _) in + }, failure: { error, _ in completion(nil, error) }) } @@ -181,7 +181,7 @@ open class StatsServiceRemoteV2: ServiceRemoteWordPressComREST { public func getDetails(forPostID postID: Int, completion: @escaping ((StatsPostDetails?, Error?) -> Void)) { let path = self.path(forEndpoint: "sites/\(siteID)/stats/post/\(postID)/", withVersion: ._1_1) - wordPressComRESTAPI.get(path, parameters: [:], success: { (response, _) in + wordPressComRESTAPI.get(path, parameters: [:], success: { response, _ in guard let jsonResponse = response as? [String: AnyObject], let postDetails = StatsPostDetails(jsonDictionary: jsonResponse) @@ -191,7 +191,7 @@ open class StatsServiceRemoteV2: ServiceRemoteWordPressComREST { } completion(postDetails, nil) - }, failure: { (error, _) in + }, failure: { error, _ in completion(nil, error) }) } @@ -211,7 +211,7 @@ extension StatsServiceRemoteV2 { let pathComponent = StatsLastPostInsight.pathComponent let path = self.path(forEndpoint: "sites/\(siteID)/\(pathComponent)", withVersion: ._1_1) - wordPressComRESTAPI.get(path, parameters: properties, success: { (response, _) in + wordPressComRESTAPI.get(path, parameters: properties, success: { response, _ in guard let jsonResponse = response as? [String: AnyObject], let postCount = jsonResponse["found"] as? Int else { completion(nil, ResponseError.decodingFailure) @@ -231,7 +231,7 @@ extension StatsServiceRemoteV2 { return } - self.getPostViews(for: postID) { (views, _) in + self.getPostViews(for: postID) { views, _ in guard let views, let insight = StatsLastPostInsight(jsonDictionary: post, views: views) else { @@ -242,7 +242,7 @@ extension StatsServiceRemoteV2 { completion(insight, nil) } - }, failure: {(error, _) in + }, failure: {error, _ in completion(nil, error) }) } @@ -254,7 +254,7 @@ extension StatsServiceRemoteV2 { wordPressComRESTAPI.get(path, parameters: parameters, - success: { (response, _) in + success: { response, _ in guard let jsonResponse = response as? [String: AnyObject], let views = jsonResponse["views"] as? Int else { @@ -262,7 +262,7 @@ extension StatsServiceRemoteV2 { return } completion(views, nil) - }, failure: { (error, _) in + }, failure: { error, _ in completion(nil, error) } ) @@ -289,7 +289,7 @@ extension StatsServiceRemoteV2 { wordPressComRESTAPI.get(path, parameters: properties, - success: { (response, _) in + success: { response, _ in guard let jsonResponse = response as? [String: AnyObject], let response = StatsPublishedPostsTimeIntervalData(date: endingOn, period: period, unit: nil, jsonDictionary: jsonResponse) else { @@ -297,7 +297,7 @@ extension StatsServiceRemoteV2 { return } completion(response, nil) - }, failure: { (error, _) in + }, failure: { error, _ in completion(nil, error) } ) @@ -358,7 +358,7 @@ public extension StatsServiceRemoteV2 { let path = self.path(forEndpoint: "sites/\(siteID)/\(pathComponent)/", withVersion: ._1_1) let properties = StatsEmailsSummaryData.queryProperties(quantity: quantity, sortField: sortField, sortOrder: sortOrder) as [String: AnyObject] - wordPressComRESTAPI.get(path, parameters: properties, success: { (response, _) in + wordPressComRESTAPI.get(path, parameters: properties, success: { response, _ in guard let jsonResponse = response as? [String: AnyObject], let emailsSummaryData = StatsEmailsSummaryData(jsonDictionary: jsonResponse) else { @@ -367,7 +367,7 @@ public extension StatsServiceRemoteV2 { } completion(.success(emailsSummaryData)) - }, failure: { (error, _) in + }, failure: { error, _ in completion(.failure(error)) }) } @@ -379,7 +379,7 @@ public extension StatsServiceRemoteV2 { func getEmailOpens(for postID: Int, completion: @escaping ((StatsEmailOpensData?, Error?) -> Void)) { let path = self.path(forEndpoint: "sites/\(siteID)/stats/opens/emails/\(postID)/rate", withVersion: ._1_1) - wordPressComRESTAPI.get(path, parameters: [:], success: { (response, _) in + wordPressComRESTAPI.get(path, parameters: [:], success: { response, _ in guard let jsonResponse = response as? [String: AnyObject], let emailOpensData = StatsEmailOpensData(jsonDictionary: jsonResponse) @@ -389,7 +389,7 @@ public extension StatsServiceRemoteV2 { } completion(emailOpensData, nil) - }, failure: { (error, _) in + }, failure: { error, _ in completion(nil, error) }) } diff --git a/Modules/Sources/WordPressKit/StatsWordAdsEarningsResponse.swift b/Modules/Sources/WordPressKit/StatsWordAdsEarningsResponse.swift index 89575f8e615f..7eee4bac52e4 100644 --- a/Modules/Sources/WordPressKit/StatsWordAdsEarningsResponse.swift +++ b/Modules/Sources/WordPressKit/StatsWordAdsEarningsResponse.swift @@ -29,7 +29,7 @@ public struct StatsWordAdsEarningsResponse: Decodable { totalAmountOwed = earningsContainer.totalAmountOwed.value // Convert dictionary to sorted array - var earnings = earningsContainer.wordads.compactMap { (period, data) -> MonthlyEarning? in + var earnings = earningsContainer.wordads.compactMap { period, data -> MonthlyEarning? in guard let parsedPeriod = Period(string: period) else { return nil } return MonthlyEarning(period: parsedPeriod, data: data) } diff --git a/Modules/Sources/WordPressKit/TimeZoneServiceRemote.swift b/Modules/Sources/WordPressKit/TimeZoneServiceRemote.swift index 726851949153..1bede6170c55 100644 --- a/Modules/Sources/WordPressKit/TimeZoneServiceRemote.swift +++ b/Modules/Sources/WordPressKit/TimeZoneServiceRemote.swift @@ -9,14 +9,14 @@ public class TimeZoneServiceRemote: ServiceRemoteWordPressComREST { public func getTimezones(success: @escaping (([TimeZoneGroup]) -> Void), failure: @escaping ((Error) -> Void)) { let endpoint = "timezones" let path = self.path(forEndpoint: endpoint, withVersion: ._2_0) - wordPressComRESTAPI.get(path, parameters: nil, success: { (response, _) in + wordPressComRESTAPI.get(path, parameters: nil, success: { response, _ in do { let groups = try self.timezoneGroupsFromResponse(response) success(groups) } catch { failure(error) } - }) { (error, _) in + }) { error, _ in failure(error) } } diff --git a/Modules/Sources/WordPressKit/TransactionsServiceRemote.swift b/Modules/Sources/WordPressKit/TransactionsServiceRemote.swift index d471c5354170..700bd187f409 100644 --- a/Modules/Sources/WordPressKit/TransactionsServiceRemote.swift +++ b/Modules/Sources/WordPressKit/TransactionsServiceRemote.swift @@ -71,7 +71,7 @@ import WordPressKitObjC wordPressComRESTAPI.post(urlPath, parameters: parameters, - success: { (response, _) in + success: { response, _ in guard let jsonResponse = response as? [String: AnyObject], let cart = CartResponse(jsonDictionary: jsonResponse), @@ -82,7 +82,7 @@ import WordPressKitObjC } success(cart) - }) { (error, _) in + }) { error, _ in failure(error) } } @@ -104,9 +104,9 @@ import WordPressKitObjC "cart": cart.jsonRepresentation() as AnyObject, "payment": paymentDict as AnyObject] - wordPressComRESTAPI.post(urlPath, parameters: parameters, success: { (_, _) in + wordPressComRESTAPI.post(urlPath, parameters: parameters, success: { _, _ in success() - }) { (error, _) in + }) { error, _ in failure(error) } } @@ -163,7 +163,7 @@ public struct CartResponse { return nil } - let mappedProducts = products.compactMap { (product) -> Product? in + let mappedProducts = products.compactMap { product -> Product? in guard let productID = product["product_id"] as? Int else { return nil diff --git a/Modules/Sources/WordPressKit/UsersServiceRemoteXMLRPC.swift b/Modules/Sources/WordPressKit/UsersServiceRemoteXMLRPC.swift index 6589b761c76a..bce90ffc9eca 100644 --- a/Modules/Sources/WordPressKit/UsersServiceRemoteXMLRPC.swift +++ b/Modules/Sources/WordPressKit/UsersServiceRemoteXMLRPC.swift @@ -13,7 +13,7 @@ public class UsersServiceRemoteXMLRPC: ServiceRemoteWordPressXMLRPC { /// public func fetchProfile(_ success: @escaping ((RemoteProfile) -> Void), failure: @escaping ((NSError?) -> Void)) { let params = defaultXMLRPCArguments() as [AnyObject] - api.callMethod("wp.getProfile", parameters: params, success: { (responseObj, _) in + api.callMethod("wp.getProfile", parameters: params, success: { responseObj, _ in guard let dict = responseObj as? NSDictionary else { assertionFailure("A dictionary was expected but the API returned something different.") failure(UsersServiceRemoteError.UnexpectedResponseData as NSError) @@ -22,7 +22,7 @@ public class UsersServiceRemoteXMLRPC: ServiceRemoteWordPressXMLRPC { let profile = RemoteProfile(dictionary: dict) success(profile) - }, failure: { (error, _) in + }, failure: { error, _ in failure(error as NSError) }) } diff --git a/Modules/Sources/WordPressKit/WordPressOrgXMLRPCValidator.swift b/Modules/Sources/WordPressKit/WordPressOrgXMLRPCValidator.swift index 51d82b5701aa..60895dc629dc 100644 --- a/Modules/Sources/WordPressKit/WordPressOrgXMLRPCValidator.swift +++ b/Modules/Sources/WordPressKit/WordPressOrgXMLRPCValidator.swift @@ -142,7 +142,7 @@ open class WordPressOrgXMLRPCValidator: NSObject { return } - validateXMLRPCURL(xmlrpcURL, success: success, failure: { (error) in + validateXMLRPCURL(xmlrpcURL, success: success, failure: { error in // WPKitLogError(error.localizedDescription) if (error.domain == NSURLErrorDomain && error.code == NSURLErrorUserCancelledAuthentication) || (error.domain == NSURLErrorDomain && error.code == NSURLErrorCannotFindHost) || @@ -153,10 +153,10 @@ open class WordPressOrgXMLRPCValidator: NSObject { } // Try the original given url as an XML-RPC endpoint // WPKitLogError("Try the original given url as an XML-RPC endpoint: \(originalXMLRPCURL)") - self.validateXMLRPCURL(originalXMLRPCURL, success: success, failure: { (error) in + self.validateXMLRPCURL(originalXMLRPCURL, success: success, failure: { error in // WPKitLogError(error.localizedDescription) // Fetch the original url and look for the RSD link - self.guessXMLRPCURLFromHTMLURL(originalXMLRPCURL, success: success, failure: { (error) in + self.guessXMLRPCURLFromHTMLURL(originalXMLRPCURL, success: success, failure: { error in // WPKitLogError(error.localizedDescription) errorHandler(error) @@ -217,7 +217,7 @@ open class WordPressOrgXMLRPCValidator: NSObject { return } let api = WordPressOrgXMLRPCApi(endpoint: url) - api.callMethod("system.listMethods", parameters: nil, success: { (responseObject, httpResponse) in + api.callMethod("system.listMethods", parameters: nil, success: { responseObject, httpResponse in guard let methods = responseObject as? [String], methods.contains("wp.getUsersBlogs") else { failure(WordPressOrgXMLRPCValidatorError.notWordPressError as NSError) return @@ -227,7 +227,7 @@ open class WordPressOrgXMLRPCValidator: NSObject { } else { failure(WordPressOrgXMLRPCValidatorError.invalid as NSError) } - }, failure: { (error, httpResponse) in + }, failure: { error, httpResponse in if httpResponse?.url != url { // we where redirected, let's check the answer content if let data = (error as NSError).userInfo[WordPressOrgXMLRPCApi.WordPressOrgXMLRPCApiErrorKeyData as String] as? Data, @@ -267,7 +267,7 @@ open class WordPressOrgXMLRPCValidator: NSObject { var isWpSite = false let session = URLSession(configuration: URLSessionConfiguration.ephemeral) - let dataTask = session.dataTask(with: htmlURL, completionHandler: { (data, _, error) in + let dataTask = session.dataTask(with: htmlURL, completionHandler: { data, _, error in if let error { failure(error as NSError) return @@ -290,7 +290,7 @@ open class WordPressOrgXMLRPCValidator: NSObject { failure(WordPressOrgXMLRPCValidatorError.invalid as NSError) return } - self.validateXMLRPCURL(newURL, success: success, failure: { (error) in + self.validateXMLRPCURL(newURL, success: success, failure: { error in // Try to validate by using the RSD file directly if error.code == 403 || error.code == 405, let xmlrpcValidatorError = error as? WordPressOrgXMLRPCValidatorError { failure(xmlrpcValidatorError as NSError) @@ -340,7 +340,7 @@ open class WordPressOrgXMLRPCValidator: NSObject { return } let session = URLSession(configuration: URLSessionConfiguration.ephemeral) - let dataTask = session.dataTask(with: rsdURL, completionHandler: { (data, _, error) in + let dataTask = session.dataTask(with: rsdURL, completionHandler: { data, _, error in if let error { failure(error as NSError) return diff --git a/Modules/Sources/WordPressShared/Utility/JSONDecoderExtension.swift b/Modules/Sources/WordPressShared/Utility/JSONDecoderExtension.swift index 1bb08f2af95f..ad3a13398196 100644 --- a/Modules/Sources/WordPressShared/Utility/JSONDecoderExtension.swift +++ b/Modules/Sources/WordPressShared/Utility/JSONDecoderExtension.swift @@ -2,7 +2,7 @@ import Foundation public extension JSONDecoder.DateDecodingStrategy { static var supportMultipleDateFormats: JSONDecoder.DateDecodingStrategy { - return JSONDecoder.DateDecodingStrategy.custom({ (decoder) -> Date in + return JSONDecoder.DateDecodingStrategy.custom({ decoder -> Date in let container = try decoder.singleValueContainer() let dateStr = try container.decode(String.self) diff --git a/Modules/Sources/WordPressShared/Utility/String+Helpers.swift b/Modules/Sources/WordPressShared/Utility/String+Helpers.swift index b84ab4374483..7b41f647d7a2 100644 --- a/Modules/Sources/WordPressShared/Utility/String+Helpers.swift +++ b/Modules/Sources/WordPressShared/Utility/String+Helpers.swift @@ -254,7 +254,7 @@ extension String { let range = NSMakeRange(0, count) var offset = 0 - detector.enumerateMatches(in: self, options: [], range: range) { (result, _, _) in + detector.enumerateMatches(in: self, options: [], range: range) { result, _, _ in guard let range = result?.range else { return } diff --git a/Modules/Sources/WordPressShared/Utility/StringRankedSearch.swift b/Modules/Sources/WordPressShared/Utility/StringRankedSearch.swift index 3318ef65ae87..91c6245c0e91 100644 --- a/Modules/Sources/WordPressShared/Utility/StringRankedSearch.swift +++ b/Modules/Sources/WordPressShared/Utility/StringRankedSearch.swift @@ -31,7 +31,7 @@ public struct StringRankedSearch { // Get the maximum score for each word. There is no penalty for a // position of the word in the input string. let match = words.enumerated() - .map { (index, word) in (index: index, score: self.score(for: word, term: term)) } + .map { index, word in (index: index, score: self.score(for: word, term: term)) } .max { $0.score < $1.score }! score += match.score matchIndices.insert(match.index) diff --git a/Modules/Sources/WordPressUI/Extensions/UIImageView+Gravatar.swift b/Modules/Sources/WordPressUI/Extensions/UIImageView+Gravatar.swift index 635018ef0bf0..4d0b58ed5395 100644 --- a/Modules/Sources/WordPressUI/Extensions/UIImageView+Gravatar.swift +++ b/Modules/Sources/WordPressUI/Extensions/UIImageView+Gravatar.swift @@ -24,7 +24,7 @@ extension UIImageView { gravatarWrapper = nil } - let observer = NotificationCenter.default.addObserver(forName: .GravatarImageUpdateNotification, object: nil, queue: nil) { [weak self] (notification) in + let observer = NotificationCenter.default.addObserver(forName: .GravatarImageUpdateNotification, object: nil, queue: nil) { [weak self] notification in guard let userInfo = notification.userInfo, let email = userInfo[Defaults.emailKey] as? String, email == trackedEmail, diff --git a/Modules/Sources/WordPressUI/Ghosts/Internal/GhostLayer.swift b/Modules/Sources/WordPressUI/Ghosts/Internal/GhostLayer.swift index 1911fd43fb0c..b763264c5135 100644 --- a/Modules/Sources/WordPressUI/Ghosts/Internal/GhostLayer.swift +++ b/Modules/Sources/WordPressUI/Ghosts/Internal/GhostLayer.swift @@ -51,7 +51,7 @@ private extension GhostLayer { /// Starts listening for Bounds Changes on the specified UIView instance. /// func startObservingBoundEvents(on container: UIView) { - observerToken = container.observe(\.bounds, options: .initial) { [weak self] (view, _) in + observerToken = container.observe(\.bounds, options: .initial) { [weak self] view, _ in self?.bounds = view.bounds } } diff --git a/Modules/Tests/WordPressFluxTests/WordPressFluxTests.swift b/Modules/Tests/WordPressFluxTests/WordPressFluxTests.swift index 99e857203872..987baa891489 100644 --- a/Modules/Tests/WordPressFluxTests/WordPressFluxTests.swift +++ b/Modules/Tests/WordPressFluxTests/WordPressFluxTests.swift @@ -59,7 +59,7 @@ class WordPressFluxTests: XCTestCase { changeCount += 1 })) var stateChangeCount = 0 - receipts.append(store.onStateChange({ (old, new) in + receipts.append(store.onStateChange({ old, new in XCTAssertEqual(new, old * 2, "New state should be double than old") stateChangeCount += 1 })) @@ -90,7 +90,7 @@ class WordPressFluxTests: XCTestCase { changeCount += 1 })) var stateChangeCount = 0 - receipts.append(store.onStateChange({ (old, new) in + receipts.append(store.onStateChange({ old, new in XCTAssertEqual(new, old * 2, "New state should be double than old") stateChangeCount += 1 })) @@ -109,7 +109,7 @@ class WordPressFluxTests: XCTestCase { } func test() { - transaction { (state) in + transaction { state in state += state state += state } @@ -123,7 +123,7 @@ class WordPressFluxTests: XCTestCase { changeCount += 1 })) var stateChangeCount = 0 - receipts.append(store.onStateChange({ (old, new) in + receipts.append(store.onStateChange({ old, new in XCTAssertEqual(new, old * 4, "New state should be 4x the old one") stateChangeCount += 1 })) diff --git a/Sources/WordPressAuthenticator/Features/SignIn/LoginEmailViewController.swift b/Sources/WordPressAuthenticator/Features/SignIn/LoginEmailViewController.swift index 88234d375ef5..f4e996dfb553 100644 --- a/Sources/WordPressAuthenticator/Features/SignIn/LoginEmailViewController.swift +++ b/Sources/WordPressAuthenticator/Features/SignIn/LoginEmailViewController.swift @@ -187,7 +187,7 @@ open class LoginEmailViewController: LoginViewController, NUXKeyboardResponder { // Tapping the Sign up text link in "Don't have an account? _Sign up_" // will present the 3 button view for signing up. - button.on(.touchUpInside) { [weak self] (_) in + button.on(.touchUpInside) { [weak self] _ in guard let vc = LoginPrologueSignupMethodViewController.instantiate(from: .login) else { WPLogError("Failed to navigate to LoginPrologueSignupMethodViewController") return @@ -290,7 +290,7 @@ open class LoginEmailViewController: LoginViewController, NUXKeyboardResponder { /// func fetchSharedWebCredentialsIfAvailable() { didRequestSafariSharedCredentials = true - SafariCredentialsService.requestSharedWebCredentials { [weak self] (found, username, password) in + SafariCredentialsService.requestSharedWebCredentials { [weak self] found, username, password in self?.handleFetchedWebCredentials(found, username: username, password: password) } } diff --git a/Sources/WordPressAuthenticator/Features/SignIn/LoginSiteAddressViewController.swift b/Sources/WordPressAuthenticator/Features/SignIn/LoginSiteAddressViewController.swift index f8435812c443..79045f2fa0d6 100644 --- a/Sources/WordPressAuthenticator/Features/SignIn/LoginSiteAddressViewController.swift +++ b/Sources/WordPressAuthenticator/Features/SignIn/LoginSiteAddressViewController.swift @@ -153,7 +153,7 @@ class LoginSiteAddressViewController: LoginViewController, NUXKeyboardResponder configureViewLoading(true) let facade = WordPressXMLRPCAPIFacade() - facade.guessXMLRPCURL(forSite: loginFields.siteAddress, success: { [weak self] (url) in + facade.guessXMLRPCURL(forSite: loginFields.siteAddress, success: { [weak self] url in // Success! We now know that we have a valid XML-RPC endpoint. // At this point, we do NOT know if this is a WP.com site or a self-hosted site. if let url { @@ -162,7 +162,7 @@ class LoginSiteAddressViewController: LoginViewController, NUXKeyboardResponder // Let's try to grab site info in preparation for the next screen. self?.fetchSiteInfo() - }, failure: { [weak self] (error) in + }, failure: { [weak self] error in guard let error, let self else { return } @@ -215,7 +215,7 @@ class LoginSiteAddressViewController: LoginViewController, NUXKeyboardResponder } func presentNextControllerIfPossible(siteInfo: WordPressComSiteInfo?) { - WordPressAuthenticator.shared.delegate?.shouldPresentUsernamePasswordController(for: siteInfo, onCompletion: { (result) in + WordPressAuthenticator.shared.delegate?.shouldPresentUsernamePasswordController(for: siteInfo, onCompletion: { result in switch result { case let .error(error): self.displayError(message: error.localizedDescription) diff --git a/Sources/WordPressAuthenticator/Helpers/Authenticator/WordPressAuthenticator.swift b/Sources/WordPressAuthenticator/Helpers/Authenticator/WordPressAuthenticator.swift index 66a82c817966..6e52ff15a2e4 100644 --- a/Sources/WordPressAuthenticator/Helpers/Authenticator/WordPressAuthenticator.swift +++ b/Sources/WordPressAuthenticator/Helpers/Authenticator/WordPressAuthenticator.swift @@ -526,14 +526,14 @@ import WordPressKit public extension WordPressAuthenticator { func getAppleIDCredentialState(for userID: String, completion: @escaping (ASAuthorizationAppleIDProvider.CredentialState, Error?) -> Void) { - AppleAuthenticator.sharedInstance.getAppleIDCredentialState(for: userID) { (state, error) in + AppleAuthenticator.sharedInstance.getAppleIDCredentialState(for: userID) { state, error in // If credentialState == .notFound, error will have a value. completion(state, error) } } func startObservingAppleIDCredentialRevoked(completion: @escaping () -> Void) { - appleIDCredentialObserver = NotificationCenter.default.addObserver(forName: AppleAuthenticator.credentialRevokedNotification, object: nil, queue: nil) { (_) in + appleIDCredentialObserver = NotificationCenter.default.addObserver(forName: AppleAuthenticator.credentialRevokedNotification, object: nil, queue: nil) { _ in completion() } } diff --git a/Sources/WordPressAuthenticator/Helpers/LoginFacade.swift b/Sources/WordPressAuthenticator/Helpers/LoginFacade.swift index ca7066c015e5..c2117e235cda 100644 --- a/Sources/WordPressAuthenticator/Helpers/LoginFacade.swift +++ b/Sources/WordPressAuthenticator/Helpers/LoginFacade.swift @@ -44,7 +44,7 @@ public extension LoginFacade { if self.tracker.shouldUseLegacyTracker() { WordPressAuthenticator.track(.twoFactorSentSMS) } - }) { (_, newNonce) in + }) { _, newNonce in if let newNonce { loginFields.nonceInfo?.nonceSMS = newNonce } diff --git a/Sources/WordPressAuthenticator/Helpers/UnifiedAuth/ViewRelated/SiteAddress/SiteAddressViewController.swift b/Sources/WordPressAuthenticator/Helpers/UnifiedAuth/ViewRelated/SiteAddress/SiteAddressViewController.swift index 33ac6331b4e6..3e53f9d3f3f1 100644 --- a/Sources/WordPressAuthenticator/Helpers/UnifiedAuth/ViewRelated/SiteAddress/SiteAddressViewController.swift +++ b/Sources/WordPressAuthenticator/Helpers/UnifiedAuth/ViewRelated/SiteAddress/SiteAddressViewController.swift @@ -577,7 +577,7 @@ private extension SiteAddressViewController { return } - WordPressAuthenticator.shared.delegate?.shouldPresentUsernamePasswordController(for: siteInfo, onCompletion: { (result) in + WordPressAuthenticator.shared.delegate?.shouldPresentUsernamePasswordController(for: siteInfo, onCompletion: { result in switch result { case let .error(error): self.displayError(message: error.localizedDescription) diff --git a/Sources/WordPressData/Swift/ContextManager+ErrorHandling.swift b/Sources/WordPressData/Swift/ContextManager+ErrorHandling.swift index 398f7c4de829..82046a02d95d 100644 --- a/Sources/WordPressData/Swift/ContextManager+ErrorHandling.swift +++ b/Sources/WordPressData/Swift/ContextManager+ErrorHandling.swift @@ -105,7 +105,7 @@ private extension ContextManager { } func reasonForMultipleErrors(_ errors: [NSError]) -> String { - return "Multiple errors:\n" + errors.enumerated().map({ (index, error) in + return "Multiple errors:\n" + errors.enumerated().map({ index, error in return " \(index + 1): " + reasonForIndividualError(error) }).joined(separator: "\n") } diff --git a/Sources/WordPressData/Swift/CoreDataIterativeMigrator.swift b/Sources/WordPressData/Swift/CoreDataIterativeMigrator.swift index 524f16ea5eab..e2df1db2c0eb 100644 --- a/Sources/WordPressData/Swift/CoreDataIterativeMigrator.swift +++ b/Sources/WordPressData/Swift/CoreDataIterativeMigrator.swift @@ -162,7 +162,7 @@ private extension CoreDataIterativeMigrator { try? fileManager.createDirectory(atPath: backupURL.path, withIntermediateDirectories: false, attributes: nil) do { let files = try fileManager.contentsOfDirectory(atPath: storeURL.deletingLastPathComponent().path) - try files.forEach { (file) in + try files.forEach { file in if file.hasPrefix(storeURL.lastPathComponent) { let fullPath = storeURL.deletingLastPathComponent().appendingPathComponent(file).path let toPath = URL(fileURLWithPath: backupURL.path).appendingPathComponent(file).path @@ -183,7 +183,7 @@ private extension CoreDataIterativeMigrator { do { let fileManager = FileManager.default let files = try fileManager.contentsOfDirectory(atPath: tempDestinationURL.deletingLastPathComponent().path) - try files.forEach { (file) in + try files.forEach { file in if file.hasPrefix(tempDestinationURL.lastPathComponent) { let fullPath = tempDestinationURL.deletingLastPathComponent().appendingPathComponent(file).path let toPath = storeURL.deletingLastPathComponent().appendingPathComponent(file).path @@ -203,7 +203,7 @@ private extension CoreDataIterativeMigrator { do { let fileManager = FileManager.default let files = try fileManager.contentsOfDirectory(atPath: backupURL.path) - try files.forEach { (file) in + try files.forEach { file in let fullPath = URL(fileURLWithPath: backupURL.path).appendingPathComponent(file).path try fileManager.removeItem(atPath: fullPath) } @@ -271,7 +271,7 @@ private extension CoreDataIterativeMigrator { } static func models(for names: [String]) throws -> [NSManagedObjectModel] { - let models = try names.map { (name) -> NSManagedObjectModel in + let models = try names.map { name -> NSManagedObjectModel in guard let url = urlForModel(name: name, in: nil), let model = NSManagedObjectModel(contentsOf: url) else { let description = "No model found for \(name)" @@ -293,7 +293,7 @@ private extension CoreDataIterativeMigrator { } let momdPaths = bundle.paths(forResourcesOfType: "momd", inDirectory: directory) - momdPaths.forEach { (path) in + momdPaths.forEach { path in if url != nil { return } diff --git a/Sources/WordPressData/Swift/MediaFileManager.swift b/Sources/WordPressData/Swift/MediaFileManager.swift index d1a0666746e8..9b54e29318cd 100644 --- a/Sources/WordPressData/Swift/MediaFileManager.swift +++ b/Sources/WordPressData/Swift/MediaFileManager.swift @@ -199,9 +199,9 @@ public class MediaFileManager: NSObject { /// public class func calculateSizeOfMediaDirectories(onCompletion: @escaping (Int64?) -> Void) { let cacheManager = MediaFileManager(directory: .cache) - cacheManager.calculateSizeOfDirectory { (cacheSize) in + cacheManager.calculateSizeOfDirectory { cacheSize in let defaultManager = MediaFileManager.default - defaultManager.calculateSizeOfDirectory { (mediaSize) in + defaultManager.calculateSizeOfDirectory { mediaSize in onCompletion( (mediaSize ?? 0) + (cacheSize ?? 0) ) } } diff --git a/Tests/KeystoneTests/Tests/Extensions/NotificationCenterObserveOnceTests.swift b/Tests/KeystoneTests/Tests/Extensions/NotificationCenterObserveOnceTests.swift index 159ebf0d1297..67433dd081af 100644 --- a/Tests/KeystoneTests/Tests/Extensions/NotificationCenterObserveOnceTests.swift +++ b/Tests/KeystoneTests/Tests/Extensions/NotificationCenterObserveOnceTests.swift @@ -15,7 +15,7 @@ class NotificationCenterObserveOnceTests: XCTestCase { func testNotificationIsOnlyReceivedOnce() { var timesReceived = 0 - observer = notificationCenter.observeOnce(forName: testNotification, object: nil, queue: nil, using: { (_) in + observer = notificationCenter.observeOnce(forName: testNotification, object: nil, queue: nil, using: { _ in timesReceived += 1 }) notificationCenter.post(name: testNotification, object: nil) @@ -26,9 +26,9 @@ class NotificationCenterObserveOnceTests: XCTestCase { func testNotificationIsOnlyReceivedWhenMatchesFilter() { var timesReceived = 0 - observer = notificationCenter.observeOnce(forName: testNotification, object: nil, queue: nil, using: { (_) in + observer = notificationCenter.observeOnce(forName: testNotification, object: nil, queue: nil, using: { _ in timesReceived += 1 - }, filter: { (notification) in + }, filter: { notification in guard let counter = notification.userInfo?[counterKey] as? Int else { return false } diff --git a/Tests/KeystoneTests/Tests/Features/Blog/BloggingRemindersSchedulerTests.swift b/Tests/KeystoneTests/Tests/Features/Blog/BloggingRemindersSchedulerTests.swift index 23111f42cb0b..91fcc573c6ca 100644 --- a/Tests/KeystoneTests/Tests/Features/Blog/BloggingRemindersSchedulerTests.swift +++ b/Tests/KeystoneTests/Tests/Features/Blog/BloggingRemindersSchedulerTests.swift @@ -65,7 +65,7 @@ class BloggingRemindersSchedulerTests: XCTestCase { return } - let notificationCenter = NotificationSchedulerMock { (_, completionHandler) in + let notificationCenter = NotificationSchedulerMock { _, completionHandler in completionHandler?(nil) } removeNotificationMock: { _ in } @@ -109,7 +109,7 @@ class BloggingRemindersSchedulerTests: XCTestCase { return } - let notificationCenter = NotificationSchedulerMock { (_, completionHandler) in + let notificationCenter = NotificationSchedulerMock { _, completionHandler in scheduleExpectation.fulfill() completionHandler?(nil) } removeNotificationMock: { _ in diff --git a/Tests/KeystoneTests/Tests/Features/Media/MediaFileManagerTests.swift b/Tests/KeystoneTests/Tests/Features/Media/MediaFileManagerTests.swift index cc62faf5eea5..414d2f69cf2e 100644 --- a/Tests/KeystoneTests/Tests/Features/Media/MediaFileManagerTests.swift +++ b/Tests/KeystoneTests/Tests/Features/Media/MediaFileManagerTests.swift @@ -113,7 +113,7 @@ class MediaFileManagerTests: XCTestCase { // Ideally we would verify that the local media directory was indeed cleaned. // However, for now we're just looking to make sure there aren't any errors being thrown with the implementation. expect.fulfill() - }) { (error) in + }) { error in expect.fulfill() XCTFail("Failed cleaning unused local media directory files with error: \(error.localizedDescription)") } @@ -126,7 +126,7 @@ class MediaFileManagerTests: XCTestCase { // Ideally we would verify that the local media directory was indeed cleaned. // However, for now we're just looking to make sure there aren't any errors being thrown with the implementation. expect.fulfill() - }) { (error) in + }) { error in expect.fulfill() XCTFail("Failed cleaning local media directory with error: \(error.localizedDescription)") } diff --git a/Tests/KeystoneTests/Tests/Features/Media/MediaImageExporterTests.swift b/Tests/KeystoneTests/Tests/Features/Media/MediaImageExporterTests.swift index 77de70c2e0a0..ac8b2caaea3a 100644 --- a/Tests/KeystoneTests/Tests/Features/Media/MediaImageExporterTests.swift +++ b/Tests/KeystoneTests/Tests/Features/Media/MediaImageExporterTests.swift @@ -18,11 +18,11 @@ class MediaImageExporterTests: XCTestCase { let expect = self.expectation(description: "image export by UIImage") let exporter = MediaImageExporter(image: image, filename: nil) exporter.mediaDirectoryType = .temporary - exporter.export(onCompletion: { (imageExport) in + exporter.export(onCompletion: { imageExport in MediaImageExporterTests.validateImageExport(imageExport, withExpectedSize: max(image.size.width, image.size.height)) MediaExporterTests.cleanUpExportedMedia(atURL: imageExport.url) expect.fulfill() - }) { (error) in + }) { error in XCTFail("Error: an error occurred testing an image export: \(error.toNSError())") expect.fulfill() } @@ -36,11 +36,11 @@ class MediaImageExporterTests: XCTestCase { let url = URL(fileURLWithPath: mediaPath) let exporter = MediaImageExporter(url: url) exporter.mediaDirectoryType = .temporary - exporter.export(onCompletion: { (imageExport) in + exporter.export(onCompletion: { imageExport in MediaImageExporterTests.validateImageExport(imageExport, withExpectedSize: max(image.size.width, image.size.height)) MediaExporterTests.cleanUpExportedMedia(atURL: imageExport.url) expect.fulfill() - }) { (error) in + }) { error in XCTFail("Error: an error occurred testing an image export: \(error.toNSError())") expect.fulfill() } @@ -55,11 +55,11 @@ class MediaImageExporterTests: XCTestCase { let maximumImageSize = CGFloat(200) exporter.mediaDirectoryType = .temporary exporter.options.maximumImageSize = maximumImageSize - exporter.export(onCompletion: { (imageExport) in + exporter.export(onCompletion: { imageExport in MediaImageExporterTests.validateImageExport(imageExport, withExpectedSize: maximumImageSize) MediaExporterTests.cleanUpExportedMedia(atURL: imageExport.url) expect.fulfill() - }) { (error) in + }) { error in XCTFail("Error: an error occurred testing an image export by URL with a maximum size: \(error.toNSError())") expect.fulfill() } @@ -74,11 +74,11 @@ class MediaImageExporterTests: XCTestCase { let maximumImageSize = expectedSize + 200 exporter.mediaDirectoryType = .temporary exporter.options.maximumImageSize = maximumImageSize - exporter.export(onCompletion: { (imageExport) in + exporter.export(onCompletion: { imageExport in MediaImageExporterTests.validateImageExport(imageExport, withExpectedSize: expectedSize) MediaExporterTests.cleanUpExportedMedia(atURL: imageExport.url) expect.fulfill() - }) { (error) in + }) { error in XCTFail("Error: an error occurred testing an image export with a maximum size larger than the image's size: \(error.toNSError())") expect.fulfill() } @@ -94,11 +94,11 @@ class MediaImageExporterTests: XCTestCase { let exporter = MediaImageExporter(url: url) exporter.mediaDirectoryType = .temporary exporter.options.stripsGeoLocationIfNeeded = true - exporter.export(onCompletion: { (imageExport) in + exporter.export(onCompletion: { imageExport in MediaImageExporterTests.validateImageExportStrippedGPS(imageExport) MediaExporterTests.cleanUpExportedMedia(atURL: imageExport.url) expect.fulfill() - }) { (error) in + }) { error in XCTFail("Error: an error occurred testing an image export and stripping GPS: \(error.toNSError())") expect.fulfill() } @@ -112,11 +112,11 @@ class MediaImageExporterTests: XCTestCase { let exporter = MediaImageExporter(url: url) exporter.mediaDirectoryType = .temporary exporter.options.stripsGeoLocationIfNeeded = false - exporter.export(onCompletion: { (imageExport) in + exporter.export(onCompletion: { imageExport in MediaImageExporterTests.validateImageExportDidNotStripGPS(imageExport) MediaExporterTests.cleanUpExportedMedia(atURL: imageExport.url) expect.fulfill() - }) { (error) in + }) { error in XCTFail("Error: an error occurred testing an image export and not stripping GPS: \(error.toNSError())") expect.fulfill() } @@ -132,12 +132,12 @@ class MediaImageExporterTests: XCTestCase { exporter.mediaDirectoryType = .temporary exporter.options.stripsGeoLocationIfNeeded = true exporter.options.maximumImageSize = maximumImageSize - exporter.export(onCompletion: { (imageExport) in + exporter.export(onCompletion: { imageExport in MediaImageExporterTests.validateImageExportStrippedGPS(imageExport) MediaImageExporterTests.validateImageExport(imageExport, withExpectedSize: maximumImageSize) MediaExporterTests.cleanUpExportedMedia(atURL: imageExport.url) expect.fulfill() - }) { (error) in + }) { error in XCTFail("Error: an error occurred testing an image export with resizing and stripping GPS: \(error.toNSError())") expect.fulfill() } @@ -153,12 +153,12 @@ class MediaImageExporterTests: XCTestCase { exporter.mediaDirectoryType = .temporary exporter.options.stripsGeoLocationIfNeeded = false exporter.options.maximumImageSize = maximumImageSize - exporter.export(onCompletion: { (imageExport) in + exporter.export(onCompletion: { imageExport in MediaImageExporterTests.validateImageExportDidNotStripGPS(imageExport) MediaImageExporterTests.validateImageExport(imageExport, withExpectedSize: maximumImageSize) MediaExporterTests.cleanUpExportedMedia(atURL: imageExport.url) expect.fulfill() - }) { (error) in + }) { error in XCTFail("Error: an error occurred testing an image export with resizing and not stripping GPS: \(error.toNSError())") expect.fulfill() } @@ -178,12 +178,12 @@ class MediaImageExporterTests: XCTestCase { let expect = self.expectation(description: "image export by UIImage and keeping the orientation") let exporter = MediaImageExporter(image: image, filename: nil) exporter.mediaDirectoryType = .temporary - exporter.export(onCompletion: { (imageExport) in + exporter.export(onCompletion: { imageExport in // If not resising the image the orientation stays the same has the original MediaImageExporterTests.validateImageExportedWithExpectedOrientation(export: imageExport, expected: .up) MediaExporterTests.cleanUpExportedMedia(atURL: imageExport.url) expect.fulfill() - }) { (error) in + }) { error in XCTFail("Error: an error occurred testing an image export: \(error.toNSError())") expect.fulfill() } @@ -203,12 +203,12 @@ class MediaImageExporterTests: XCTestCase { let maximumImageSize = CGFloat(200) exporter.mediaDirectoryType = .temporary exporter.options.maximumImageSize = maximumImageSize - exporter.export(onCompletion: { (imageExport) in + exporter.export(onCompletion: { imageExport in MediaImageExporterTests.validateImageExportedWithExpectedOrientation(export: imageExport, expected: .up) MediaImageExporterTests.validateImageExport(imageExport, withExpectedSize: maximumImageSize) MediaExporterTests.cleanUpExportedMedia(atURL: imageExport.url) expect.fulfill() - }) { (error) in + }) { error in XCTFail("Error: an error occurred testing an image export: \(error.toNSError())") expect.fulfill() } @@ -223,13 +223,13 @@ class MediaImageExporterTests: XCTestCase { exporter.mediaDirectoryType = .temporary exporter.options.stripsGeoLocationIfNeeded = true exporter.options.maximumImageSize = maximumImageSize - exporter.export(onCompletion: { (imageExport) in + exporter.export(onCompletion: { imageExport in MediaImageExporterTests.validateImageExportedWithExpectedOrientation(export: imageExport, expected: .up) MediaImageExporterTests.validateImageExportStrippedGPS(imageExport) MediaImageExporterTests.validateImageExport(imageExport, withExpectedSize: maximumImageSize) MediaExporterTests.cleanUpExportedMedia(atURL: imageExport.url) expect.fulfill() - }) { (error) in + }) { error in XCTFail("Error: an error occurred testing an image export: \(error.toNSError())") expect.fulfill() } @@ -242,12 +242,12 @@ class MediaImageExporterTests: XCTestCase { let exporter = MediaImageExporter(image: image, filename: nil) exporter.mediaDirectoryType = .temporary exporter.options.exportImageType = UTType.png.identifier - exporter.export(onCompletion: { (imageExport) in + exporter.export(onCompletion: { imageExport in XCTAssertEqual(UTType.png.identifier, imageExport.url.typeIdentifier, "Unexpected image format when trying to target a PNG format from a JPEG.") MediaImageExporterTests.validateImageExport(imageExport, withExpectedSize: max(image.size.width, image.size.height)) MediaExporterTests.cleanUpExportedMedia(atURL: imageExport.url) expect.fulfill() - }) { (error) in + }) { error in XCTFail("Error: an error occurred testing an image export: \(error.toNSError())") expect.fulfill() } diff --git a/Tests/KeystoneTests/Tests/Features/Media/MediaThumbnailExporterTests.swift b/Tests/KeystoneTests/Tests/Features/Media/MediaThumbnailExporterTests.swift index fe5d1cdd2189..72b26b688baa 100644 --- a/Tests/KeystoneTests/Tests/Features/Media/MediaThumbnailExporterTests.swift +++ b/Tests/KeystoneTests/Tests/Features/Media/MediaThumbnailExporterTests.swift @@ -17,7 +17,7 @@ class MediaThumbnailExporterTests: XCTestCase { let exporter = MediaThumbnailExporter() exporter.options.preferredSize = CGSize(width: 200, height: 200) exporter.exportThumbnail(forFile: url, - onCompletion: { (identifier, export) in + onCompletion: { identifier, export in self.validateThumbnailExport(withExporter: exporter, identifier: identifier, export: export) @@ -25,7 +25,7 @@ class MediaThumbnailExporterTests: XCTestCase { withExpectedSize: exporter.options.preferredMaximumSizeAtScale!) MediaExporterTests.cleanUpExportedMedia(atURL: export.url) expect.fulfill() - }) { (error) in + }) { error in XCTFail("Error: an error occurred testing a thumbnail export: \(error.toNSError())") expect.fulfill() } @@ -42,7 +42,7 @@ class MediaThumbnailExporterTests: XCTestCase { let exporter = MediaThumbnailExporter() exporter.options.preferredSize = CGSize(width: 200, height: 200) exporter.exportThumbnail(forFile: url, - onCompletion: { (identifier, export) in + onCompletion: { identifier, export in self.validateThumbnailExport(withExporter: exporter, identifier: identifier, export: export) @@ -50,7 +50,7 @@ class MediaThumbnailExporterTests: XCTestCase { withExpectedSize: exporter.options.preferredMaximumSizeAtScale!) MediaExporterTests.cleanUpExportedMedia(atURL: export.url) expect.fulfill() - }) { (error) in + }) { error in XCTFail("Error: an error occurred testing a video thumbnail export: \(error.toNSError())") expect.fulfill() } diff --git a/Tests/KeystoneTests/Tests/Features/Media/MediaURLExporterTests.swift b/Tests/KeystoneTests/Tests/Features/Media/MediaURLExporterTests.swift index 81fb8f3eecb3..1ddde97848e3 100644 --- a/Tests/KeystoneTests/Tests/Features/Media/MediaURLExporterTests.swift +++ b/Tests/KeystoneTests/Tests/Features/Media/MediaURLExporterTests.swift @@ -18,13 +18,13 @@ class MediaURLExporterTests: XCTestCase { let url = URL(fileURLWithPath: mediaPath) let exporter = MediaURLExporter(url: url) exporter.mediaDirectoryType = .temporary - exporter.export(onCompletion: { (urlExport) in + exporter.export(onCompletion: { urlExport in expect.fulfill() let exportFileName = urlExport.url.lastPathComponent.replacingMatches(of: "." + urlExport.url.pathExtension, with: "") let originalFileName = url.lastPathComponent.replacingMatches(of: "." + url.pathExtension, with: "") XCTAssertEqual(exportFileName, originalFileName) MediaExporterTests.cleanUpExportedMedia(atURL: urlExport.url) - }) { (error) in + }) { error in XCTFail("Error: an error occurred testing a URL export: \(error.toNSError())") expect.fulfill() } @@ -54,11 +54,11 @@ class MediaURLExporterTests: XCTestCase { options.stripsGeoLocationIfNeeded = removingGPS exporter.videoOptions = options weak var weakExporter = exporter - exporter.export(onCompletion: { (urlExport) in + exporter.export(onCompletion: { urlExport in MediaURLExporterTests.validateVideoExport(urlExport, exporter: weakExporter!) MediaExporterTests.cleanUpExportedMedia(atURL: urlExport.url) expect.fulfill() - }) { (error) in + }) { error in XCTFail("Error: an error occurred testing a URL export: \(error.toNSError())") expect.fulfill() } @@ -74,10 +74,10 @@ class MediaURLExporterTests: XCTestCase { let url = URL(fileURLWithPath: mediaPath) let exporter = MediaURLExporter(url: url) exporter.mediaDirectoryType = .temporary - exporter.export(onCompletion: { (urlExport) in + exporter.export(onCompletion: { urlExport in MediaExporterTests.cleanUpExportedMedia(atURL: urlExport.url) expect.fulfill() - }) { (error) in + }) { error in XCTFail("Error: an error occurred testing a URL export: \(error.toNSError())") expect.fulfill() } diff --git a/Tests/KeystoneTests/Tests/Features/Notifications/MarkAsSpamActionTests.swift b/Tests/KeystoneTests/Tests/Features/Notifications/MarkAsSpamActionTests.swift index 70e57204c788..4703c324705e 100644 --- a/Tests/KeystoneTests/Tests/Features/Notifications/MarkAsSpamActionTests.swift +++ b/Tests/KeystoneTests/Tests/Features/Notifications/MarkAsSpamActionTests.swift @@ -54,7 +54,7 @@ final class MarkAsSpamActionTests: CoreDataTestCase { var executionCompleted = false - let context = ActionContext(block: try utility.mockCommentContent(), content: "content") { (_, _) in + let context = ActionContext(block: try utility.mockCommentContent(), content: "content") { _, _ in executionCompleted = true } diff --git a/Tests/KeystoneTests/Tests/Features/Notifications/TrashCommentActionTests.swift b/Tests/KeystoneTests/Tests/Features/Notifications/TrashCommentActionTests.swift index 075f936a6ce7..c73c75435499 100644 --- a/Tests/KeystoneTests/Tests/Features/Notifications/TrashCommentActionTests.swift +++ b/Tests/KeystoneTests/Tests/Features/Notifications/TrashCommentActionTests.swift @@ -52,7 +52,7 @@ final class TrashCommentActionTests: CoreDataTestCase { action?.on = false var executionCompleted = false - let context = ActionContext(block: try utils.mockCommentContent(), content: "content") { (_, _) in + let context = ActionContext(block: try utils.mockCommentContent(), content: "content") { _, _ in executionCompleted = true } diff --git a/Tests/KeystoneTests/Tests/Features/Posts/PostAttachmentTests.swift b/Tests/KeystoneTests/Tests/Features/Posts/PostAttachmentTests.swift index e29d5dde6d29..5d279b948c0b 100644 --- a/Tests/KeystoneTests/Tests/Features/Posts/PostAttachmentTests.swift +++ b/Tests/KeystoneTests/Tests/Features/Posts/PostAttachmentTests.swift @@ -47,7 +47,7 @@ class PostAttachmentTests: XCTestCase { let controller = AztecAttachmentViewController() controller.attachment = attachment controller.alt = altValue - controller.onUpdate = { (_, _, _, alt, _) in + controller.onUpdate = { _, _, _, alt, _ in richTextView.edit(attachment) { updated in if let alt { updated.alt = alt @@ -82,7 +82,7 @@ class PostAttachmentTests: XCTestCase { let controller = AztecAttachmentViewController() controller.attachment = attachment controller.alt = altValue - controller.onUpdate = { (_, _, _, alt, _) in + controller.onUpdate = { _, _, _, alt, _ in richTextView.edit(attachment) { updated in if let alt { updated.alt = alt @@ -117,7 +117,7 @@ class PostAttachmentTests: XCTestCase { let controller = AztecAttachmentViewController() controller.attachment = attachment controller.linkURL = linkURLValue - controller.onUpdate = { (_, _, linkURL, _, _) in + controller.onUpdate = { _, _, linkURL, _, _ in if let url = linkURL, let range = richTextView.textStorage.ranges(forAttachment: attachment).first { richTextView.setLink(url, inRange: range) } diff --git a/Tests/KeystoneTests/Tests/Reader/ReaderSelectInterestsCoordinatorTests.swift b/Tests/KeystoneTests/Tests/Reader/ReaderSelectInterestsCoordinatorTests.swift index a9f8a967b039..b9e33831316d 100644 --- a/Tests/KeystoneTests/Tests/Reader/ReaderSelectInterestsCoordinatorTests.swift +++ b/Tests/KeystoneTests/Tests/Reader/ReaderSelectInterestsCoordinatorTests.swift @@ -13,7 +13,7 @@ class ReaderSelectInterestsCoordinatorTests: CoreDataTestCase { service.fetchSuccessExpectation = expectation(description: "Fetching of interests succeeds") let displayExpectation = expectation(description: "Should display returns true") - coordinator.isFollowingInterests { (result) in + coordinator.isFollowingInterests { result in displayExpectation.fulfill() XCTAssertFalse(result) @@ -33,7 +33,7 @@ class ReaderSelectInterestsCoordinatorTests: CoreDataTestCase { service.fetchSuccessExpectation = successExpectation let displayExpectation = expectation(description: "Should display returns true") - coordinator.isFollowingInterests { (result) in + coordinator.isFollowingInterests { result in displayExpectation.fulfill() XCTAssertTrue(result) diff --git a/Tests/KeystoneTests/Tests/Services/BlogServiceDeduplicationTests.swift b/Tests/KeystoneTests/Tests/Services/BlogServiceDeduplicationTests.swift index 8db493599218..81dd7b9ed4cc 100644 --- a/Tests/KeystoneTests/Tests/Services/BlogServiceDeduplicationTests.swift +++ b/Tests/KeystoneTests/Tests/Services/BlogServiceDeduplicationTests.swift @@ -137,7 +137,7 @@ private extension BlogServiceDeduplicationTests { } func findPost(title: String, in blog: Blog) -> Bool { - return blog.posts?.contains(where: { (post) in + return blog.posts?.contains(where: { post in post.postTitle?.contains(title) ?? false }) ?? false } diff --git a/Tests/KeystoneTests/Tests/Services/EditorSettingsServiceTests.swift b/Tests/KeystoneTests/Tests/Services/EditorSettingsServiceTests.swift index 2ea8d5696cad..888105ad040a 100644 --- a/Tests/KeystoneTests/Tests/Services/EditorSettingsServiceTests.swift +++ b/Tests/KeystoneTests/Tests/Services/EditorSettingsServiceTests.swift @@ -67,7 +67,7 @@ class EditorSettingsServiceTest: CoreDataTestCase { let finalResponse = responseWith(mobileEditor: "gutenberg") remoteApi.successBlockPassedIn?(finalResponse, HTTPURLResponse()) - waitForExpectations(timeout: 0.1) { (_) in + waitForExpectations(timeout: 0.1) { _ in // The default value should be now on local and remote XCTAssertEqual(blog.mobileEditor, .gutenberg) } @@ -178,7 +178,7 @@ extension EditorSettingsServiceTest { service.syncEditorSettings(for: blog, success: { expec.fulfill() - }) { (error) in + }) { error in XCTFail("This call should succeed. Error: \(error)") expec.fulfill() } diff --git a/Tests/KeystoneTests/Tests/Services/NotificationSyncMediatorTests.swift b/Tests/KeystoneTests/Tests/Services/NotificationSyncMediatorTests.swift index fcef51be5d64..f77ac89b7176 100644 --- a/Tests/KeystoneTests/Tests/Services/NotificationSyncMediatorTests.swift +++ b/Tests/KeystoneTests/Tests/Services/NotificationSyncMediatorTests.swift @@ -51,7 +51,7 @@ class NotificationSyncMediatorTests: CoreDataTestCase { let expect = expectation(description: "Sync") // Sync! - mediator.sync { (_, _) in + mediator.sync { _, _ in XCTAssert(self.mainContext.countObjects(ofType: Notification.self) == 1) expect.fulfill() } diff --git a/Tests/KeystoneTests/Tests/Services/SharingServiceTests.swift b/Tests/KeystoneTests/Tests/Services/SharingServiceTests.swift index 020ad66fe0c5..83e75b8b7c74 100644 --- a/Tests/KeystoneTests/Tests/Services/SharingServiceTests.swift +++ b/Tests/KeystoneTests/Tests/Services/SharingServiceTests.swift @@ -39,7 +39,7 @@ class SharingServiceTests: CoreDataTestCase { let sharingService = SharingSyncService(coreDataStack: contextManager) sharingService.syncPublicizeConnectionsForBlog(blog) { expect.fulfill() - } failure: { (_) in + } failure: { _ in expect.fulfill() } diff --git a/Tests/KeystoneTests/Tests/Services/SiteAddressServiceTests.swift b/Tests/KeystoneTests/Tests/Services/SiteAddressServiceTests.swift index c90f9c055654..9c220a773b62 100644 --- a/Tests/KeystoneTests/Tests/Services/SiteAddressServiceTests.swift +++ b/Tests/KeystoneTests/Tests/Services/SiteAddressServiceTests.swift @@ -21,7 +21,7 @@ class SiteAddressServiceTests: CoreDataTestCase { let searchTerm = "domaintesting" let waitExpectation = expectation(description: "Domains should be successfully fetched") - service.addresses(for: searchTerm, type: .wordPressDotComAndDotBlogSubdomains) { (results) in + service.addresses(for: searchTerm, type: .wordPressDotComAndDotBlogSubdomains) { results in switch results { case .success(let fetchedResults): self.resultsAreSorted(fetchedResults, forQuery: searchTerm, expectMatch: true) @@ -49,7 +49,7 @@ class SiteAddressServiceTests: CoreDataTestCase { let searchTerm = "notIncludedResult" let waitExpectation = expectation(description: "Domains should be successfully fetched") - service.addresses(for: searchTerm, type: .wordPressDotComAndDotBlogSubdomains) { (results) in + service.addresses(for: searchTerm, type: .wordPressDotComAndDotBlogSubdomains) { results in switch results { case .success(let fetchedResults): self.resultsAreSorted(fetchedResults, forQuery: searchTerm, expectMatch: false) @@ -77,7 +77,7 @@ class SiteAddressServiceTests: CoreDataTestCase { func resultsAreSorted(_ results: SiteAddressServiceResult, forQuery query: String, expectMatch: Bool) { let suggestions = results.domainSuggestions - let domainNames = suggestions.compactMap { (suggestion) -> String? in + let domainNames = suggestions.compactMap { suggestion -> String? in guard !suggestion.domainName.contains(query) else { return nil } //Filter out exact matches return suggestion.domainName } diff --git a/Tests/KeystoneTests/Tests/Utility/CookieJarTests.swift b/Tests/KeystoneTests/Tests/Utility/CookieJarTests.swift index 73fb1989b2db..b51d00a6a3c5 100644 --- a/Tests/KeystoneTests/Tests/Utility/CookieJarTests.swift +++ b/Tests/KeystoneTests/Tests/Utility/CookieJarTests.swift @@ -18,7 +18,7 @@ class CookieJarTests: XCTestCase { addCookies() let expectation = self.expectation(description: "getCookies completion called") - cookieJar.getCookies(url: wordPressComLoginURL) { (cookies) in + cookieJar.getCookies(url: wordPressComLoginURL) { cookies in XCTAssertEqual(cookies.count, 2) expectation.fulfill() } @@ -29,7 +29,7 @@ class CookieJarTests: XCTestCase { addCookies() let expectation = self.expectation(description: "hasCookie completion called") - cookieJar.hasWordPressComAuthCookie(username: "testuser", atomicSite: false) { (matches) in + cookieJar.hasWordPressComAuthCookie(username: "testuser", atomicSite: false) { matches in XCTAssertTrue(matches) expectation.fulfill() } @@ -40,7 +40,7 @@ class CookieJarTests: XCTestCase { addCookies() let expectation = self.expectation(description: "hasCookie completion called") - cookieJar.hasWordPressComAuthCookie(username: "anotheruser", atomicSite: false) { (matches) in + cookieJar.hasWordPressComAuthCookie(username: "anotheruser", atomicSite: false) { matches in XCTAssertFalse(matches) expectation.fulfill() } diff --git a/Tests/KeystoneTests/Tests/Utility/WKCookieJarTests.swift b/Tests/KeystoneTests/Tests/Utility/WKCookieJarTests.swift index 0822af226ecc..93779b21f575 100644 --- a/Tests/KeystoneTests/Tests/Utility/WKCookieJarTests.swift +++ b/Tests/KeystoneTests/Tests/Utility/WKCookieJarTests.swift @@ -26,7 +26,7 @@ class WKCookieJarTests: XCTestCase { ) let expectation = self.expectation(description: "getCookies completion called") - cookieJar.getCookies(url: wordPressComLoginURL) { (cookies) in + cookieJar.getCookies(url: wordPressComLoginURL) { cookies in XCTAssertEqual(cookies.count, 1, "Should be one cookie for wordpress.com") expectation.fulfill() } @@ -40,7 +40,7 @@ class WKCookieJarTests: XCTestCase { ) let expectation = self.expectation(description: "hasCookie completion called") - cookieJar.hasWordPressComAuthCookie(username: "testuser", atomicSite: false) { (matches) in + cookieJar.hasWordPressComAuthCookie(username: "testuser", atomicSite: false) { matches in XCTAssertTrue(matches, "Cookies should exist for wordpress.com + testuser") expectation.fulfill() } @@ -55,7 +55,7 @@ class WKCookieJarTests: XCTestCase { ) let expectation = self.expectation(description: "hasCookie completion called") - cookieJar.hasWordPressComAuthCookie(username: "anotheruser", atomicSite: false) { (matches) in + cookieJar.hasWordPressComAuthCookie(username: "anotheruser", atomicSite: false) { matches in XCTAssertFalse(matches, "Cookies should not exist for wordpress.com + anotheruser") expectation.fulfill() } diff --git a/Tests/WordPressAuthenticatorTests/Authenticator/WordPressAuthenticatorTests.swift b/Tests/WordPressAuthenticatorTests/Authenticator/WordPressAuthenticatorTests.swift index 136e3b55c697..7cd454a619ff 100644 --- a/Tests/WordPressAuthenticatorTests/Authenticator/WordPressAuthenticatorTests.swift +++ b/Tests/WordPressAuthenticatorTests/Authenticator/WordPressAuthenticatorTests.swift @@ -70,7 +70,7 @@ class WordPressAuthenticatorTests: XCTestCase { func testShowLoginFromPresenterReturnsLoginInitialVC() { let presenterSpy = ModalViewControllerPresentingSpy() - let expectation = XCTNSPredicateExpectation(predicate: NSPredicate(block: { (_, _) -> Bool in + let expectation = XCTNSPredicateExpectation(predicate: NSPredicate(block: { _, _ -> Bool in return presenterSpy.presentedVC != nil }), object: .none) @@ -82,7 +82,7 @@ class WordPressAuthenticatorTests: XCTestCase { func testShowLoginForJustWPComPresentsCorrectVC() { let presenterSpy = ModalViewControllerPresentingSpy() - let expectation = XCTNSPredicateExpectation(predicate: NSPredicate(block: { (_, _) -> Bool in + let expectation = XCTNSPredicateExpectation(predicate: NSPredicate(block: { _, _ -> Bool in return presenterSpy.presentedVC != nil }), object: .none) @@ -100,7 +100,7 @@ class WordPressAuthenticatorTests: XCTestCase { func testShowLoginForJustWPComSetsMetaProperties() throws { let presenterSpy = ModalViewControllerPresentingSpy() - let expectation = XCTNSPredicateExpectation(predicate: NSPredicate(block: { (_, _) -> Bool in + let expectation = XCTNSPredicateExpectation(predicate: NSPredicate(block: { _, _ -> Bool in return presenterSpy.presentedVC != nil }), object: .none) @@ -119,7 +119,7 @@ class WordPressAuthenticatorTests: XCTestCase { func testShowLoginForSelfHostedSitePresentsCorrectVC() { let presenterSpy = ModalViewControllerPresentingSpy() - let expectation = XCTNSPredicateExpectation(predicate: NSPredicate(block: { (_, _) -> Bool in + let expectation = XCTNSPredicateExpectation(predicate: NSPredicate(block: { _, _ -> Bool in return presenterSpy.presentedVC != nil }), object: .none) diff --git a/Tests/WordPressKitTests/CoreAPITests/WordPressComOAuthClientTests.swift b/Tests/WordPressKitTests/CoreAPITests/WordPressComOAuthClientTests.swift index d6fbba8a2068..cc704384c93f 100644 --- a/Tests/WordPressKitTests/CoreAPITests/WordPressComOAuthClientTests.swift +++ b/Tests/WordPressKitTests/CoreAPITests/WordPressComOAuthClientTests.swift @@ -40,12 +40,12 @@ class WordPressComOAuthClientTests: XCTestCase { password: "fakePass", multifactorCode: nil, needsMultifactor: { _, _ in XCTFail("This closure should not be called") }, - success: { (token) in + success: { token in expect.fulfill() XCTAssert(!token!.isEmpty, "There should be a token available") XCTAssert(token == "fakeToken", "There should be a token available") }, - failure: { (_) in + failure: { _ in expect.fulfill() XCTFail("This call should be successful") } @@ -69,12 +69,12 @@ class WordPressComOAuthClientTests: XCTestCase { expect.fulfill() XCTFail("This call should be successful") }, - success: { (token) in + success: { token in expect.fulfill() XCTAssert(!token!.isEmpty, "There should be a token available") XCTAssert(token == "fakeToken", "There should be a token available") }, - failure: { (_) in + failure: { _ in expect.fulfill() XCTFail("This call should be successful") } @@ -97,11 +97,11 @@ class WordPressComOAuthClientTests: XCTestCase { password: "wrongPassword", multifactorCode: nil, needsMultifactor: { _, _ in XCTFail("This closure should not be called") }, - success: { (_) in + success: { _ in expect.fulfill() XCTFail("This call should fail") }, - failure: { (error) in + failure: { error in expect.fulfill() XCTAssertEqual(error.authenticationFailureKind, .invalidRequest, "The code should be invalid request") } @@ -127,11 +127,11 @@ class WordPressComOAuthClientTests: XCTestCase { expect.fulfill() XCTFail("This call should fail") }, - success: { (_) in + success: { _ in expect.fulfill() XCTFail("This call should fail") }, - failure: { (error) in + failure: { error in expect.fulfill() XCTAssertEqual(error.authenticationFailureKind, .invalidRequest, "The code should be invalid request") } @@ -158,11 +158,11 @@ class WordPressComOAuthClientTests: XCTestCase { password: "wrongPassword", multifactorCode: nil, needsMultifactor: { _, _ in XCTFail("This closure should not be called") }, - success: { (_) in + success: { _ in expect.fulfill() XCTFail("This call should fail") }, - failure: { (error) in + failure: { error in expect.fulfill() XCTAssertEqual(error.authenticationFailureKind, .needsMultifactorCode, "The code should 'be needs multifactor'") } @@ -178,11 +178,11 @@ class WordPressComOAuthClientTests: XCTestCase { expect.fulfill() XCTFail("This call should fail") }, - success: { (_) in + success: { _ in expectation2.fulfill() XCTFail("This call should fail") }, - failure: { (error) in + failure: { error in expectation2.fulfill() XCTAssertEqual(error.authenticationFailureKind, .needsMultifactorCode, "The code should be needs multifactor") } @@ -212,11 +212,11 @@ class WordPressComOAuthClientTests: XCTestCase { expect.fulfill() XCTFail("This call should fail") }, - success: { (_) in + success: { _ in expect.fulfill() XCTFail("This call should fail") }, - failure: { (error) in + failure: { error in expect.fulfill() XCTAssertEqual(error.authenticationFailureKind, .needsMultifactorCode, "The code should be needs multifactor") } @@ -232,11 +232,11 @@ class WordPressComOAuthClientTests: XCTestCase { expect.fulfill() XCTFail("This call should fail") }, - success: { (_) in + success: { _ in expectation2.fulfill() XCTFail("This call should fail") }, - failure: { (error) in + failure: { error in expectation2.fulfill() XCTAssertEqual(error.authenticationFailureKind, .needsMultifactorCode, "The code should be needs multifactor") } @@ -263,11 +263,11 @@ class WordPressComOAuthClientTests: XCTestCase { XCTAssertEqual(userID, 1234) XCTAssertEqual(nonceInfo.nonceWebauthn, "two_step_nonce_webauthn") }, - success: { (_) in + success: { _ in expect.fulfill() XCTFail("This call should need multifactor") }, - failure: { (_) in + failure: { _ in expect.fulfill() XCTFail("This call should need multifactor") } @@ -288,7 +288,7 @@ class WordPressComOAuthClientTests: XCTestCase { client.requestOneTimeCode(username: "fakeUser", password: "fakePassword", success: { () in expect.fulfill() - }, failure: { (_) in + }, failure: { _ in expect.fulfill() XCTFail("This call should be successful") @@ -307,11 +307,11 @@ class WordPressComOAuthClientTests: XCTestCase { let expect = expectation(description: "One callback should be invoked") let client = WordPressComOAuthClient(clientID: "Fake", secret: "Fake") client.requestSocial2FACode(userID: 0, nonce: "nonce", - success: { (newNonce) in + success: { newNonce in expect.fulfill() XCTAssert(!newNonce.isEmpty, "There should be a newNonce available") XCTAssert(newNonce == "two_step_nonce_sms", "The newNonce should match") - }, failure: { (_, _) in + }, failure: { _, _ in expect.fulfill() XCTFail("This call should be successful") @@ -332,12 +332,12 @@ class WordPressComOAuthClientTests: XCTestCase { client.authenticate( socialIDToken: "token", service: "google", - success: { (token) in + success: { token in expect.fulfill() XCTAssert(!token!.isEmpty, "There should be a token available") XCTAssert(token == "bearer_token", "The newNonce should match") }, - needsMultifactor: { (_, _) in + needsMultifactor: { _, _ in expect.fulfill() XCTFail("This call should be successful") }, @@ -345,7 +345,7 @@ class WordPressComOAuthClientTests: XCTestCase { expect.fulfill() XCTFail("This call should be successful") }, - failure: { (_) in + failure: { _ in expect.fulfill() XCTFail("This call should be successful") @@ -367,11 +367,11 @@ class WordPressComOAuthClientTests: XCTestCase { client.authenticate( socialIDToken: "token", service: "google", - success: { (_) in + success: { _ in expect.fulfill() XCTFail("This call should need multifactor") }, - needsMultifactor: { (userID, nonceInfo) in + needsMultifactor: { userID, nonceInfo in expect.fulfill() XCTAssertEqual(userID, 1) XCTAssertEqual(nonceInfo.nonceBackup, "two_step_nonce_backup") @@ -381,7 +381,7 @@ class WordPressComOAuthClientTests: XCTestCase { expect.fulfill() XCTFail("This call should need multifactor") }, - failure: { (_) in + failure: { _ in expect.fulfill() XCTFail("This call should need multifactor") @@ -403,11 +403,11 @@ class WordPressComOAuthClientTests: XCTestCase { client.authenticate( socialIDToken: "token", service: "google", - success: { (_) in + success: { _ in expect.fulfill() XCTFail("This call should invoke user needs connection") }, - needsMultifactor: { (_, _) in + needsMultifactor: { _, _ in expect.fulfill() XCTFail("This call should invoke user needs connection") }, @@ -415,7 +415,7 @@ class WordPressComOAuthClientTests: XCTestCase { expect.fulfill() XCTAssertEqual(email, "email") }, - failure: { (_) in + failure: { _ in expect.fulfill() XCTFail("This call should invoke user needs connection") @@ -435,11 +435,11 @@ class WordPressComOAuthClientTests: XCTestCase { let expect = expectation(description: "One callback should be invoked") let client = WordPressComOAuthClient(clientID: "Fake", secret: "Fake") client.authenticate(socialLoginUserID: 1, authType: "authenticator", twoStepCode: "two_step_code", twoStepNonce: "two_step_nonce", - success: { (token) in + success: { token in expect.fulfill() XCTAssert(!token!.isEmpty, "There should be a token available") XCTAssert(token == "bearer_token", "The newNonce should match") - }, failure: { (_) in + }, failure: { _ in expect.fulfill() XCTFail("This call should be successful") diff --git a/Tests/WordPressKitTests/CoreAPITests/WordPressComRestApiTests.swift b/Tests/WordPressKitTests/CoreAPITests/WordPressComRestApiTests.swift index dbf43d9b2c6d..c98b1b554117 100644 --- a/Tests/WordPressKitTests/CoreAPITests/WordPressComRestApiTests.swift +++ b/Tests/WordPressKitTests/CoreAPITests/WordPressComRestApiTests.swift @@ -94,7 +94,7 @@ class WordPressComRestApiTests: XCTestCase { wordPressMediaRoutePath, parameters: HTTPRequestBuilderTests.nestedParameters as [String: AnyObject], success: { _, _ in expect.fulfill() }, - failure: { (_, _) in expect.fulfill() } + failure: { _, _ in expect.fulfill() } ) wait(for: [expect], timeout: 0.3) @@ -125,7 +125,7 @@ class WordPressComRestApiTests: XCTestCase { api.GET(wordPressMediaRoutePath, parameters: nil, success: { (responseObject: AnyObject, _: HTTPURLResponse?) in expect.fulfill() XCTAssert(responseObject is [String: AnyObject], "The response should be a dictionary") - }, failure: { (_, _) in + }, failure: { _, _ in expect.fulfill() XCTFail("This call should be successfull") } @@ -182,7 +182,7 @@ class WordPressComRestApiTests: XCTestCase { api.GET(wordPressMediaRoutePath, parameters: nil, success: { (_: AnyObject, _: HTTPURLResponse?) in expect.fulfill() XCTFail("This call should fail") - }, failure: { (error, _) in + }, failure: { error, _ in expect.fulfill() XCTAssert(error.domain == "WordPressKit.WordPressComRestApiError", "The error should a WordPressComRestApiError") XCTAssert(error.code == Int(WordPressComRestApiErrorCode.invalidToken.rawValue), "The error code should be invalid token") @@ -207,7 +207,7 @@ class WordPressComRestApiTests: XCTestCase { api.GET(wordPressMediaRoutePath, parameters: nil, success: { (_: AnyObject, _: HTTPURLResponse?) in expect.fulfill() XCTFail("This call should fail") - }, failure: { (error, _) in + }, failure: { error, _ in expect.fulfill() XCTAssert(error.domain == "WordPressKit.WordPressComRestApiError", "The error should a WordPressComRestApiError") XCTAssert(error.code == Int(WordPressComRestApiErrorCode.reauthorizationRequired.rawValue), "The error code should be invalid token") @@ -227,7 +227,7 @@ class WordPressComRestApiTests: XCTestCase { api.GET(wordPressMediaRoutePath, parameters: nil, success: { (_: AnyObject, _: HTTPURLResponse?) in expect.fulfill() XCTFail("This call should fail") - }, failure: { (error, _) in + }, failure: { error, _ in expect.fulfill() XCTAssert(error.domain == WordPressComRestApiErrorDomain, "The error domain should be WordPressComRestApiErrorDomain") XCTAssert(error.code == Int(WordPressComRestApiErrorCode.responseSerializationFailed.rawValue), "The code should be invalid response serialization") @@ -247,7 +247,7 @@ class WordPressComRestApiTests: XCTestCase { api.POST(wordPressMediaNewEndpointPath, parameters: nil, success: { (_: AnyObject, _: HTTPURLResponse?) in expect.fulfill() XCTFail("This call should fail") - }, failure: { (error, _) in + }, failure: { error, _ in expect.fulfill() XCTAssert(error.domain == "WordPressKit.WordPressComRestApiError", "The error domain should be WordPressComRestApiError") XCTAssert(error.code == Int(WordPressComRestApiErrorCode.invalidInput.rawValue), "The error code should be invalid input") @@ -267,7 +267,7 @@ class WordPressComRestApiTests: XCTestCase { api.POST(wordPressMediaNewEndpointPath, parameters: nil, success: { (_: AnyObject, _: HTTPURLResponse?) in expect.fulfill() XCTFail("This call should fail") - }, failure: { (error, _) in + }, failure: { error, _ in expect.fulfill() XCTAssert(error.domain == "WordPressKit.WordPressComRestApiError", "The error domain should be WordPressComRestApiError") XCTAssert(error.code == Int(WordPressComRestApiErrorCode.authorizationRequired.rawValue), "The error code should be AuthorizationRequired") @@ -285,7 +285,7 @@ class WordPressComRestApiTests: XCTestCase { api.POST(wordPressMediaNewEndpointPath, parameters: nil, success: { (_: AnyObject, _: HTTPURLResponse?) in expect.fulfill() XCTFail("This call should fail") - }, failure: { (error, _) in + }, failure: { error, _ in expect.fulfill() XCTAssert(error.domain == "WordPressKit.WordPressComRestApiError", "The error domain should be WordPressComRestApiError") XCTAssert(error.code == Int(WordPressComRestApiErrorCode.uploadFailed.rawValue), "The error code should be AuthorizationRequired") @@ -305,7 +305,7 @@ class WordPressComRestApiTests: XCTestCase { api.multipartPOST(wordPressMediaNewEndpointPath, parameters: nil, fileParts: [], success: { (_: AnyObject, _: HTTPURLResponse?) in expect.fulfill() XCTFail("This call should fail") - }, failure: { (error, _) in + }, failure: { error, _ in expect.fulfill() XCTAssert(error.domain == "WordPressKit.WordPressComRestApiError", "The error domain should be WordPressComRestApiError") XCTAssert(error.code == Int(WordPressComRestApiErrorCode.uploadFailed.rawValue), "The error code should be AuthorizationRequired") @@ -325,7 +325,7 @@ class WordPressComRestApiTests: XCTestCase { api.multipartPOST(wordPressMediaNewEndpointPath, parameters: nil, fileParts: [filePart], success: { (_: AnyObject, _: HTTPURLResponse?) in expect.fulfill() XCTFail("This call should fail") - }, failure: { (_, _) in + }, failure: { _, _ in expect.fulfill() } ) @@ -348,7 +348,7 @@ class WordPressComRestApiTests: XCTestCase { let filePart = FilePart(parameterName: "media[]", url: mediaURL as URL, fileName: "test-image.jpg", mimeType: "image/jpeg") let progress1 = api.multipartPOST(wordPressMediaNewEndpointPath, parameters: nil, fileParts: [filePart], success: { (_: AnyObject, _: HTTPURLResponse?) in XCTFail("This call should fail") - }, failure: { (error, _) in + }, failure: { error, _ in XCTAssert(error.domain == NSURLErrorDomain, "The error domain should be NSURLErrorDomain") XCTAssert(error.code == NSURLErrorCancelled, "The error code should be NSURLErrorCancelled") } @@ -357,7 +357,7 @@ class WordPressComRestApiTests: XCTestCase { api.multipartPOST(wordPressMediaNewEndpointPath, parameters: nil, fileParts: [filePart], success: { (_: AnyObject, _: HTTPURLResponse?) in expect.fulfill() - }, failure: { (_, _) in + }, failure: { _, _ in expect.fulfill() XCTFail("This call should succesful") } @@ -374,7 +374,7 @@ class WordPressComRestApiTests: XCTestCase { api.POST(wordPressMediaNewEndpointPath, parameters: nil, success: { (_: AnyObject, _: HTTPURLResponse?) in expect.fulfill() XCTFail("This call should fail") - }, failure: { (error, _) in + }, failure: { error, _ in expect.fulfill() XCTAssertEqual(error.domain, NSURLErrorDomain, "The error domain should be NSURLErrorDomain") XCTAssertEqual(error.code, NSURLErrorCancelled, "The error code should be NSURLErrorCancelled") diff --git a/Tests/WordPressKitTests/CoreAPITests/WordPressOrgXMLRPCApiTests.swift b/Tests/WordPressKitTests/CoreAPITests/WordPressOrgXMLRPCApiTests.swift index ac270521e813..7de63bc1a139 100644 --- a/Tests/WordPressKitTests/CoreAPITests/WordPressOrgXMLRPCApiTests.swift +++ b/Tests/WordPressKitTests/CoreAPITests/WordPressOrgXMLRPCApiTests.swift @@ -33,10 +33,10 @@ class WordPressOrgXMLRPCApiTests: XCTestCase { let expect = self.expectation(description: "One callback should be invoked") let api = WordPressOrgXMLRPCApi(endpoint: URL(string: xmlrpcEndpoint)! as URL) - api.callMethod("wp.getPost", parameters: nil, success: { (responseObject, _) in + api.callMethod("wp.getPost", parameters: nil, success: { responseObject, _ in expect.fulfill() XCTAssert(responseObject is [String: AnyObject], "The response should be a dictionary") - }, failure: { (_, _) in + }, failure: { _, _ in expect.fulfill() XCTFail("This call should be successfull") } @@ -54,11 +54,11 @@ class WordPressOrgXMLRPCApiTests: XCTestCase { api.callMethod( "wp.getPost", parameters: nil, - success: { (_, _) in + success: { _, _ in expect.fulfill() XCTFail("This call should fail") }, - failure: { (error, _) in + failure: { error, _ in expect.fulfill() XCTAssertTrue(error is WordPressOrgXMLRPCApiError) @@ -83,11 +83,11 @@ class WordPressOrgXMLRPCApiTests: XCTestCase { api.callMethod( "wp.getPost", parameters: nil, - success: { (_, _) in + success: { _, _ in expect.fulfill() XCTFail("This call should fail") }, - failure: { (error, _) in + failure: { error, _ in expect.fulfill() XCTAssertFalse(error is WordPressOrgXMLRPCApiError) @@ -112,11 +112,11 @@ class WordPressOrgXMLRPCApiTests: XCTestCase { api.callMethod( "wp.getPost", parameters: nil, - success: { (_, _) in + success: { _, _ in expect.fulfill() XCTFail("This call should fail") }, - failure: { (error, _) in + failure: { error, _ in expect.fulfill() XCTAssertTrue(error is WordPressOrgXMLRPCApiError) @@ -141,11 +141,11 @@ class WordPressOrgXMLRPCApiTests: XCTestCase { api.callMethod( "wp.getPost", parameters: nil, - success: { (_, _) in + success: { _, _ in expect.fulfill() XCTFail("This call should fail") }, - failure: { (error, _) in + failure: { error, _ in expect.fulfill() XCTAssertTrue(error is URLError) @@ -169,11 +169,11 @@ class WordPressOrgXMLRPCApiTests: XCTestCase { api.callMethod( "wp.getPost", parameters: nil, - success: { (_, _) in + success: { _, _ in expect.fulfill() XCTFail("This call should fail") }, - failure: { (error, _) in + failure: { error, _ in expect.fulfill() let error = error as NSError @@ -198,11 +198,11 @@ class WordPressOrgXMLRPCApiTests: XCTestCase { api.callMethod( "wp.getPost", parameters: nil, - success: { (_, _) in + success: { _, _ in expect.fulfill() XCTFail("This call should fail") }, - failure: { (error, _) in + failure: { error, _ in expect.fulfill() let error = error as NSError @@ -231,11 +231,11 @@ class WordPressOrgXMLRPCApiTests: XCTestCase { api.callMethod( "wp.getPost", parameters: nil, - success: { (_, _) in + success: { _, _ in expect.fulfill() XCTFail("This call should fail") }, - failure: { (error, _) in + failure: { error, _ in expect.fulfill() let error = error as NSError @@ -259,11 +259,11 @@ class WordPressOrgXMLRPCApiTests: XCTestCase { api.callMethod( "wp.getPost", parameters: nil, - success: { (_, _) in + success: { _, _ in expect.fulfill() XCTFail("This call should fail") }, - failure: { (error, _) in + failure: { error, _ in expect.fulfill() let error = error as NSError @@ -288,8 +288,8 @@ class WordPressOrgXMLRPCApiTests: XCTestCase { let progress = api.callMethod( "wp.getPost", parameters: nil, - success: { (_, _) in success.fulfill() }, - failure: { (_, _) in } + success: { _, _ in success.fulfill() }, + failure: { _, _ in } ) let observerCalled = expectation(description: "Progress observer is called") @@ -316,8 +316,8 @@ class WordPressOrgXMLRPCApiTests: XCTestCase { let progress = api.callMethod( "wp.getPost", parameters: nil, - success: { (_, _) in }, - failure: { (_, _) in failure.fulfill() } + success: { _, _ in }, + failure: { _, _ in failure.fulfill() } ) let observerCalled = expectation(description: "Progress observer is called") @@ -344,8 +344,8 @@ class WordPressOrgXMLRPCApiTests: XCTestCase { let progress = api.streamCallMethod( "wp.getPost", parameters: nil, - success: { (_, _) in success.fulfill() }, - failure: { (_, _) in } + success: { _, _ in success.fulfill() }, + failure: { _, _ in } ) let observerCalled = expectation(description: "Progress observer is called") @@ -372,8 +372,8 @@ class WordPressOrgXMLRPCApiTests: XCTestCase { let progress = api.streamCallMethod( "wp.getPost", parameters: nil, - success: { (_, _) in }, - failure: { (_, _) in failure.fulfill() } + success: { _, _ in }, + failure: { _, _ in failure.fulfill() } ) let observerCalled = expectation(description: "Progress observer is called") diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/ActivityServiceRemoteTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/ActivityServiceRemoteTests.swift index 68f650ac644c..87aa00a97a74 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/ActivityServiceRemoteTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/ActivityServiceRemoteTests.swift @@ -68,7 +68,7 @@ class ActivityServiceRemoteTests: RemoteTestCase, RESTTestable { remote.getActivityForSite(siteID, offset: 0, count: 20, - success: { (activities, hasMore) in + success: { activities, hasMore in XCTAssertEqual(activities.count, 8, "The activity count should be 8") XCTAssertEqual(hasMore, false, "The value of hasMore should be false") expect.fulfill() @@ -86,7 +86,7 @@ class ActivityServiceRemoteTests: RemoteTestCase, RESTTestable { remote.getActivityForSite(siteID, offset: 0, count: 20, - success: { (activities, hasMore) in + success: { activities, hasMore in XCTAssertEqual(activities.count, 20, "The activity count should be 20") XCTAssertEqual(hasMore, true, "The value of hasMore should be true") expect.fulfill() @@ -105,7 +105,7 @@ class ActivityServiceRemoteTests: RemoteTestCase, RESTTestable { remote.getActivityForSite(siteID, offset: 100, count: 20, - success: { (activities, hasMore) in + success: { activities, hasMore in XCTAssertEqual(activities.count, 19, "The activity count should be 19") XCTAssertEqual(hasMore, false, "The value of hasMore should be false") expect.fulfill() @@ -128,7 +128,7 @@ class ActivityServiceRemoteTests: RemoteTestCase, RESTTestable { after: dateFormatter.date(from: "1970-01-01T10:44:00+0000"), before: dateFormatter.date(from: "1970-01-02T10:44:00+0000"), group: ["post", "user"], - success: { (activities, hasMore) in + success: { activities, hasMore in XCTAssertEqual(activities.count, 19, "The activity count should be 19") XCTAssertEqual(hasMore, false, "The value of hasMore should be false") expect.fulfill() @@ -148,7 +148,7 @@ class ActivityServiceRemoteTests: RemoteTestCase, RESTTestable { remote.getActivityForSite(siteID, count: 20, after: dateFormatter.date(from: "1970-01-01T10:44:00+0000"), - success: { (_, _) in + success: { _, _ in expect.fulfill() }, failure: { _ in XCTFail("This callback shouldn't get called") @@ -164,7 +164,7 @@ class ActivityServiceRemoteTests: RemoteTestCase, RESTTestable { stubRemoteResponse(siteActivityEndpoint, filename: getActivityAuthFailureMockFilename, contentType: .ApplicationJSON, status: 403) remote.getActivityForSite(siteID, count: 20, - success: { (_, _) in + success: { _, _ in XCTFail("This callback shouldn't get called") expect.fulfill() }, failure: { error in @@ -183,7 +183,7 @@ class ActivityServiceRemoteTests: RemoteTestCase, RESTTestable { stubRemoteResponse(siteActivityEndpoint, filename: getActivityBadJsonFailureMockFilename, contentType: .ApplicationJSON, status: 200) remote.getActivityForSite(siteID, count: 20, - success: { (_, _) in + success: { _, _ in XCTFail("This callback shouldn't get called") expect.fulfill() }, failure: { _ in @@ -271,7 +271,7 @@ class ActivityServiceRemoteTests: RemoteTestCase, RESTTestable { remoteV1.restoreSite(siteID, rewindID: rewindID, - success: { (restoreID, jobID) in + success: { restoreID, jobID in XCTAssertEqual(restoreID, self.restoreID) XCTAssertEqual(jobID, self.jobID) expect.fulfill() @@ -297,7 +297,7 @@ class ActivityServiceRemoteTests: RemoteTestCase, RESTTestable { remoteV1.restoreSite(siteID, rewindID: rewindID, types: restoreTypes, - success: { (restoreID, jobID) in + success: { restoreID, jobID in XCTAssertEqual(restoreID, self.restoreID) XCTAssertEqual(jobID, self.jobID) expect.fulfill() @@ -332,7 +332,7 @@ class ActivityServiceRemoteTests: RemoteTestCase, RESTTestable { stubRemoteResponse(rewindStatusEndpoint, filename: rewindStatusSuccessMockFilename, contentType: .ApplicationJSON) remote.getRewindStatus(siteID, - success: { (rewindStatus) in + success: { rewindStatus in XCTAssertEqual(rewindStatus.state, .active) XCTAssertNotNil(rewindStatus.lastUpdated) XCTAssertNil(rewindStatus.restore) @@ -350,7 +350,7 @@ class ActivityServiceRemoteTests: RemoteTestCase, RESTTestable { stubRemoteResponse(rewindStatusEndpoint, filename: rewindStatusRestoreFinishedMockFilename, contentType: .ApplicationJSON) remote.getRewindStatus(siteID, - success: { (rewindStatus) in + success: { rewindStatus in XCTAssertNotNil(rewindStatus.restore) XCTAssertNotNil(rewindStatus.restore!.id) XCTAssertEqual(rewindStatus.restore!.status, .finished) @@ -370,7 +370,7 @@ class ActivityServiceRemoteTests: RemoteTestCase, RESTTestable { stubRemoteResponse(rewindStatusEndpoint, filename: rewindStatusRestoreFailureMockFilename, contentType: .ApplicationJSON) remote.getRewindStatus(siteID, - success: { (rewindStatus) in + success: { rewindStatus in XCTAssertNotNil(rewindStatus.restore) XCTAssertNotNil(rewindStatus.restore!.id) XCTAssertEqual(rewindStatus.restore!.status, .fail) @@ -390,7 +390,7 @@ class ActivityServiceRemoteTests: RemoteTestCase, RESTTestable { stubRemoteResponse(rewindStatusEndpoint, filename: rewindStatusRestoreInProgressMockFilename, contentType: .ApplicationJSON) remote.getRewindStatus(siteID, - success: { (rewindStatus) in + success: { rewindStatus in XCTAssertNotNil(rewindStatus.restore) XCTAssertNotNil(rewindStatus.restore!.id) XCTAssertEqual(rewindStatus.restore!.status, .running) @@ -409,7 +409,7 @@ class ActivityServiceRemoteTests: RemoteTestCase, RESTTestable { stubRemoteResponse(rewindStatusEndpoint, filename: rewindStatusRestoreQueuedMockFilename, contentType: .ApplicationJSON) remote.getRewindStatus(siteID, - success: { (rewindStatus) in + success: { rewindStatus in XCTAssertNotNil(rewindStatus.restore) XCTAssertNotNil(rewindStatus.restore!.id) XCTAssertEqual(rewindStatus.restore!.status, .queued) diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/BlockEditorSettingsServiceRemoteTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/BlockEditorSettingsServiceRemoteTests.swift index 39f3770860c1..50a2a11da005 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/BlockEditorSettingsServiceRemoteTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/BlockEditorSettingsServiceRemoteTests.swift @@ -297,7 +297,7 @@ extension BlockEditorSettingsServiceRemoteTests { let waitExpectation = expectation(description: "Block Settings should be successfully fetched") service = BlockEditorSettingsServiceRemote(remoteAPI: WordPressOrgRestApi(apiBase: URL(string: "https://example.com/wp-json/")!)) - service.fetchBlockEditorSettings { (_) in + service.fetchBlockEditorSettings { _ in waitExpectation.fulfill() } @@ -315,7 +315,7 @@ extension BlockEditorSettingsServiceRemoteTests { let waitExpectation = expectation(description: "Block Settings should be successfully fetched") service = BlockEditorSettingsServiceRemote(remoteAPI: WordPressOrgRestApi(apiBase: URL(string: "https://example.com/wp-json")!)) - service.fetchBlockEditorSettings { (_) in + service.fetchBlockEditorSettings { _ in waitExpectation.fulfill() } diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/DomainsServiceRemoteRESTTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/DomainsServiceRemoteRESTTests.swift index bec5a427126e..1a889ac421e4 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/DomainsServiceRemoteRESTTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/DomainsServiceRemoteRESTTests.swift @@ -138,12 +138,12 @@ class DomainsServiceRemoteRESTTests: RemoteTestCase, RESTTestable { status: 200) remote.getStates(for: countryCode, - success: { (stateList) in + success: { stateList in XCTAssert(stateList.count == 61) XCTAssert(stateList[0].code == "AL") XCTAssert(stateList[0].name == "Alabama") expect.fulfill() - }) { (_) in + }) { _ in XCTFail("This callback shouldn't get called") expect.fulfill() } @@ -159,10 +159,10 @@ class DomainsServiceRemoteRESTTests: RemoteTestCase, RESTTestable { status: 200) remote.getStates(for: countryCode, - success: { (stateList) in + success: { stateList in XCTAssert(stateList.isEmpty) expect.fulfill() - }) { (_) in + }) { _ in XCTFail("This callback shouldn't get called") expect.fulfill() } @@ -178,13 +178,13 @@ class DomainsServiceRemoteRESTTests: RemoteTestCase, RESTTestable { remote.validateDomainContactInformation( contactInformation: [:], - domainNames: ["someblog.blog"], success: { (reponse) in + domainNames: ["someblog.blog"], success: { reponse in XCTAssert(!reponse.success) XCTAssert(reponse.messages!.phone![0] == "Enter a valid country code followed by a dot (for example +1.6285550199).") XCTAssert(reponse.messages!.postalCode![0] == "This field is required.") XCTAssert(reponse.messages!.email![0] == "The 'Email' field does not appear to be valid.") expect.fulfill() - }) { (_) in + }) { _ in XCTFail("This callback shouldn't get called") expect.fulfill() } @@ -200,10 +200,10 @@ class DomainsServiceRemoteRESTTests: RemoteTestCase, RESTTestable { remote.validateDomainContactInformation( contactInformation: [:], - domainNames: ["someblog.blog"], success: { (reponse) in + domainNames: ["someblog.blog"], success: { reponse in XCTAssert(reponse.success) expect.fulfill() - }) { (_) in + }) { _ in XCTFail("This callback shouldn't get called") expect.fulfill() } @@ -217,13 +217,13 @@ class DomainsServiceRemoteRESTTests: RemoteTestCase, RESTTestable { contentType: .ApplicationJSON, status: 200) remote.getDomainContactInformation( - success: { (reponse) in + success: { reponse in XCTAssert(reponse.email == "pinar@yahoo.com") XCTAssert(reponse.firstName == "Pinar") XCTAssert(reponse.lastName == nil) XCTAssert(reponse.postalCode == "12345") expect.fulfill() - }) { (_) in + }) { _ in XCTFail("This callback shouldn't get called") expect.fulfill() } diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/EditorServiceRemoteTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/EditorServiceRemoteTests.swift index 14f196d3e8cc..eae5ce1717b9 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/EditorServiceRemoteTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/EditorServiceRemoteTests.swift @@ -27,7 +27,7 @@ class EditorServiceRemoteTests: XCTestCase { XCTAssertEqual(editor.mobile, .gutenberg) XCTAssertEqual(editor.web, .gutenberg) expec.fulfill() - }) { (error) in + }) { error in XCTFail("This call should succeed. Error: \(error)") expec.fulfill() } @@ -44,7 +44,7 @@ class EditorServiceRemoteTests: XCTestCase { XCTAssertEqual(editor.mobile, .aztec) XCTAssertEqual(editor.web, .classic) expec.fulfill() - }) { (error) in + }) { error in XCTFail("This call should succeed. Error: \(error)") expec.fulfill() } @@ -63,7 +63,7 @@ class EditorServiceRemoteTests: XCTestCase { editorServiceRemote.postDesignateMobileEditor(siteID, editor: .gutenberg, success: { _ in XCTFail("This should fail") expec.fulfill() - }) { (error) in + }) { error in let nsError = error as NSError XCTAssertEqual(nsError.code, NSCoderValueNotFoundError) expec.fulfill() @@ -82,7 +82,7 @@ class EditorServiceRemoteTests: XCTestCase { editorServiceRemote.postDesignateMobileEditor(siteID, editor: .gutenberg, success: { _ in XCTFail("This should throw an error") expec.fulfill() - }) { (error) in + }) { error in XCTAssertEqual(error as NSError, EditorSettings.Error.decodingFailed as NSError) expec.fulfill() } @@ -97,7 +97,7 @@ class EditorServiceRemoteTests: XCTestCase { editorServiceRemote.postDesignateMobileEditor(siteID, editor: .gutenberg, success: { _ in XCTFail("This call should error") expec.fulfill() - }) { (error) in + }) { error in XCTAssertEqual(error as NSError, errorExpec) expec.fulfill() } @@ -113,11 +113,11 @@ class EditorServiceRemoteTests: XCTestCase { let expec = expectation(description: "success") let response = mockResponse(forMobile: .gutenberg, andWeb: .gutenberg) - editorServiceRemote.getEditorSettings(siteID, success: { (editor) in + editorServiceRemote.getEditorSettings(siteID, success: { editor in XCTAssertEqual(editor.mobile, .gutenberg) XCTAssertEqual(editor.web, .gutenberg) expec.fulfill() - }) { (error) in + }) { error in XCTFail("This call should succeed. Error: \(error)") expec.fulfill() } @@ -131,11 +131,11 @@ class EditorServiceRemoteTests: XCTestCase { let expec = expectation(description: "success") let response = mockResponse(forMobile: .notSet, andWeb: .gutenberg) - editorServiceRemote.getEditorSettings(siteID, success: { (editor) in + editorServiceRemote.getEditorSettings(siteID, success: { editor in XCTAssertEqual(editor.mobile, .notSet) XCTAssertEqual(editor.web, .gutenberg) expec.fulfill() - }) { (error) in + }) { error in XCTFail("This call should succeed. Error: \(error)") expec.fulfill() } @@ -149,11 +149,11 @@ class EditorServiceRemoteTests: XCTestCase { let expec = expectation(description: "success") let response = mockResponse(forMobile: .aztec, andWeb: .classic) - editorServiceRemote.getEditorSettings(siteID, success: { (editor) in + editorServiceRemote.getEditorSettings(siteID, success: { editor in XCTAssertEqual(editor.mobile, .aztec) XCTAssertEqual(editor.web, .classic) expec.fulfill() - }) { (error) in + }) { error in XCTFail("This call should succeed. Error: \(error)") expec.fulfill() } @@ -167,10 +167,10 @@ class EditorServiceRemoteTests: XCTestCase { let expec = expectation(description: "success") let errorExpec = NSError(domain: NSURLErrorDomain, code: NSURLErrorUnknown, userInfo: nil) - editorServiceRemote.getEditorSettings(siteID, success: { (_) in + editorServiceRemote.getEditorSettings(siteID, success: { _ in XCTFail("This call should error") expec.fulfill() - }) { (error) in + }) { error in XCTAssertEqual(error as NSError, errorExpec) expec.fulfill() } @@ -197,7 +197,7 @@ class EditorServiceRemoteTests: XCTestCase { editorServiceRemote.postDesignateMobileEditorForAllSites(editor, success: { XCTAssertEqual($0, expected) expec.fulfill() - }) { (_) in + }) { _ in XCTFail("This call should NOT error") expec.fulfill() } @@ -225,7 +225,7 @@ class EditorServiceRemoteTests: XCTestCase { editorServiceRemote.postDesignateMobileEditorForAllSites(editor, success: { XCTAssertEqual($0, expected) expec.fulfill() - }) { (_) in + }) { _ in XCTFail("This call should NOT error") expec.fulfill() } diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/JetpackServiceRemoteTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/JetpackServiceRemoteTests.swift index 98c2d1208de5..e72c0b6b3242 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/JetpackServiceRemoteTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/JetpackServiceRemoteTests.swift @@ -49,10 +49,10 @@ class JetpackServiceRemoteTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Check if the site has Jetpack success") stubRemoteResponse(checkSiteEndpoint, filename: jetpackRemoteCheckSiteSuccessMockFilename, contentType: .ApplicationJSON, status: 200) - remote.checkSiteHasJetpack(URL(string: url)!, success: { (success) in + remote.checkSiteHasJetpack(URL(string: url)!, success: { success in XCTAssertTrue(success, "Success should be true") expect.fulfill() - }) { (_) in + }) { _ in XCTFail("This callback shouldn't get called") expect.fulfill() } @@ -64,10 +64,10 @@ class JetpackServiceRemoteTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Check if the site has Jetpack failure") stubRemoteResponse(checkSiteEndpoint, filename: jetpackRemoteCheckSiteFailureMockFilename, contentType: .ApplicationJSON, status: 200) - remote.checkSiteHasJetpack(URL(string: url)!, success: { (success) in + remote.checkSiteHasJetpack(URL(string: url)!, success: { success in XCTAssertFalse(success, "Success should be false") expect.fulfill() - }) { (_) in + }) { _ in XCTFail("This callback shouldn't get called") expect.fulfill() } @@ -78,10 +78,10 @@ class JetpackServiceRemoteTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Check if the site has Jetpack network failure") stubRemoteResponse(checkSiteEndpoint, filename: jetpackRemoteCheckSiteSuccessMockFilename, contentType: .ApplicationJSON, status: 400) - remote.checkSiteHasJetpack(URL(string: url)!, success: { (_) in + remote.checkSiteHasJetpack(URL(string: url)!, success: { _ in XCTFail("This callback shouldn't get called") expect.fulfill() - }) { (error) in + }) { error in XCTAssertNotNil(error, "Error shouldn't be nil") expect.fulfill() } @@ -93,10 +93,10 @@ class JetpackServiceRemoteTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Check if the site has Jetpack data failure") stubRemoteResponse(checkSiteEndpoint, filename: jetpackRemoteCheckSiteDataFailureMockFilename, contentType: .ApplicationJSON, status: 200) - remote.checkSiteHasJetpack(URL(string: url)!, success: { (_) in + remote.checkSiteHasJetpack(URL(string: url)!, success: { _ in XCTFail("This callback shouldn't get called") expect.fulfill() - }) { (error) in + }) { error in XCTAssertNotNil(error, "Error shouldn't be nil") expect.fulfill() } @@ -108,7 +108,7 @@ class JetpackServiceRemoteTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Install Jetpack success") stubRemoteResponse(endpoint, filename: jetpackRemoteSuccessMockFilename, contentType: .ApplicationJSON, status: 200) - remote.installJetpack(url: url, username: username, password: password) { (success, _) in + remote.installJetpack(url: url, username: username, password: password) { success, _ in XCTAssertTrue(success, "Success should be true") expect.fulfill() } @@ -120,7 +120,7 @@ class JetpackServiceRemoteTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Install Jetpack failure") stubRemoteResponse(endpoint, filename: jetpackRemoteFailureMockFilename, contentType: .ApplicationJSON, status: 200) - remote.installJetpack(url: url, username: username, password: password) { (success, _) in + remote.installJetpack(url: url, username: username, password: password) { success, _ in XCTAssertFalse(success, "Success should be false") expect.fulfill() } @@ -132,7 +132,7 @@ class JetpackServiceRemoteTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Install Jetpack failure") stubRemoteResponse(endpoint, filename: jetpackRemoteErrorInvalidCredentialsMockFilename, contentType: .ApplicationJSON, status: 400) - remote.installJetpack(url: url, username: username, password: password) { (success, error) in + remote.installJetpack(url: url, username: username, password: password) { success, error in XCTAssertFalse(success, "Success should be false") XCTAssertEqual(error?.type, .invalidCredentials) expect.fulfill() @@ -145,7 +145,7 @@ class JetpackServiceRemoteTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Install Jetpack failure") stubRemoteResponse(endpoint, filename: jetpackRemoteErrorUnknownMockFilename, contentType: .ApplicationJSON, status: 400) - remote.installJetpack(url: url, username: username, password: password) { (success, error) in + remote.installJetpack(url: url, username: username, password: password) { success, error in XCTAssertFalse(success, "Success should be false") XCTAssertEqual(error?.type, .unknown) expect.fulfill() @@ -158,7 +158,7 @@ class JetpackServiceRemoteTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Install Jetpack failure") stubRemoteResponse(endpoint, filename: jetpackRemoteErrorForbiddenMockFilename, contentType: .ApplicationJSON, status: 400) - remote.installJetpack(url: url, username: username, password: password) { (success, error) in + remote.installJetpack(url: url, username: username, password: password) { success, error in XCTAssertFalse(success, "Success should be false") XCTAssertEqual(error?.type, .forbidden) expect.fulfill() @@ -171,7 +171,7 @@ class JetpackServiceRemoteTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Install Jetpack failure") stubRemoteResponse(endpoint, filename: jetpackRemoteErrorInstallFailureMockFilename, contentType: .ApplicationJSON, status: 400) - remote.installJetpack(url: url, username: username, password: password) { (success, error) in + remote.installJetpack(url: url, username: username, password: password) { success, error in XCTAssertFalse(success, "Success should be false") XCTAssertEqual(error?.type, .installFailure) expect.fulfill() @@ -184,7 +184,7 @@ class JetpackServiceRemoteTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Install Jetpack failure") stubRemoteResponse(endpoint, filename: jetpackRemoteErrorInstallResponseMockFilename, contentType: .ApplicationJSON, status: 400) - remote.installJetpack(url: url, username: username, password: password) { (success, error) in + remote.installJetpack(url: url, username: username, password: password) { success, error in XCTAssertFalse(success, "Success should be false") XCTAssertEqual(error?.type, .installResponseError) expect.fulfill() @@ -197,7 +197,7 @@ class JetpackServiceRemoteTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Install Jetpack failure") stubRemoteResponse(endpoint, filename: jetpackRemoteErrorLoginFailureMockFilename, contentType: .ApplicationJSON, status: 400) - remote.installJetpack(url: url, username: username, password: password) { (success, error) in + remote.installJetpack(url: url, username: username, password: password) { success, error in XCTAssertFalse(success, "Success should be false") XCTAssertEqual(error?.type, .loginFailure) expect.fulfill() @@ -210,7 +210,7 @@ class JetpackServiceRemoteTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Install Jetpack failure") stubRemoteResponse(endpoint, filename: jetpackRemoteErrorSiteIsJetpackMockFilename, contentType: .ApplicationJSON, status: 400) - remote.installJetpack(url: url, username: username, password: password) { (success, error) in + remote.installJetpack(url: url, username: username, password: password) { success, error in XCTAssertFalse(success, "Success should be false") XCTAssertEqual(error?.type, .siteIsJetpack) expect.fulfill() @@ -223,7 +223,7 @@ class JetpackServiceRemoteTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Install Jetpack failure") stubRemoteResponse(endpoint, filename: jetpackRemoteErrorActivationInstallMockFilename, contentType: .ApplicationJSON, status: 400) - remote.installJetpack(url: url, username: username, password: password) { (success, error) in + remote.installJetpack(url: url, username: username, password: password) { success, error in XCTAssertFalse(success, "Success should be false") XCTAssertEqual(error?.type, .activationOnInstallFailure) expect.fulfill() @@ -236,7 +236,7 @@ class JetpackServiceRemoteTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Install Jetpack failure") stubRemoteResponse(endpoint, filename: jetpackRemoteErrorActivationResponseMockFilename, contentType: .ApplicationJSON, status: 400) - remote.installJetpack(url: url, username: username, password: password) { (success, error) in + remote.installJetpack(url: url, username: username, password: password) { success, error in XCTAssertFalse(success, "Success should be false") XCTAssertEqual(error?.type, .activationResponseError) expect.fulfill() @@ -249,7 +249,7 @@ class JetpackServiceRemoteTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Install Jetpack failure") stubRemoteResponse(endpoint, filename: jetpackRemoteErrorActivationFailureMockFilename, contentType: .ApplicationJSON, status: 400) - remote.installJetpack(url: url, username: username, password: password) { (success, error) in + remote.installJetpack(url: url, username: username, password: password) { success, error in XCTAssertFalse(success, "Success should be false") XCTAssertEqual(error?.type, .activationFailure) expect.fulfill() diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/MediaServiceRemoteRESTTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/MediaServiceRemoteRESTTests.swift index 002c382a5c89..75ee26ccbdfd 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/MediaServiceRemoteRESTTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/MediaServiceRemoteRESTTests.swift @@ -172,7 +172,7 @@ class MediaServiceRemoteRESTTests: RemoteTestCase, RESTTestable { let response = ["media": []] var remoteMedias = [RemoteMedia]() - mediaServiceRemote.getMediaLibrary(pageLoad: nil, success: { (medias) in + mediaServiceRemote.getMediaLibrary(pageLoad: nil, success: { medias in if let medias = medias as? [RemoteMedia] { remoteMedias = medias } @@ -185,7 +185,7 @@ class MediaServiceRemoteRESTTests: RemoteTestCase, RESTTestable { let response = ["media": [["ID": 2]]] var remoteMedias = [RemoteMedia]() - mediaServiceRemote.getMediaLibrary(pageLoad: nil, success: { (medias) in + mediaServiceRemote.getMediaLibrary(pageLoad: nil, success: { medias in if let medias = medias as? [RemoteMedia] { remoteMedias = medias } @@ -198,7 +198,7 @@ class MediaServiceRemoteRESTTests: RemoteTestCase, RESTTestable { let response = ["media": [["ID": 2], ["ID": 3], ["ID": 4]]] var remoteMedias = [RemoteMedia]() - mediaServiceRemote.getMediaLibrary(pageLoad: nil, success: { (medias) in + mediaServiceRemote.getMediaLibrary(pageLoad: nil, success: { medias in if let medias = medias as? [RemoteMedia] { remoteMedias = medias } @@ -220,7 +220,7 @@ class MediaServiceRemoteRESTTests: RemoteTestCase, RESTTestable { let response = ["found": expectedCount] var remoteCount = 0 - mediaServiceRemote.getMediaLibraryCount(forType: nil, withSuccess: { (count) in + mediaServiceRemote.getMediaLibraryCount(forType: nil, withSuccess: { count in remoteCount = count }, failure: nil) // Note: This needs to be called here, after triggerting the API request, or it won't take effect @@ -237,7 +237,7 @@ class MediaServiceRemoteRESTTests: RemoteTestCase, RESTTestable { let response = ["found": expectedCount] var remoteCount = 0 - mediaServiceRemote.getMediaLibraryCount(forType: "a_type", withSuccess: { (count) in + mediaServiceRemote.getMediaLibraryCount(forType: "a_type", withSuccess: { count in remoteCount = count }, failure: nil) // Note: This needs to be called here, after triggerting the API request, or it won't take effect. diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/PageLayoutServiceRemoteTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/PageLayoutServiceRemoteTests.swift index 7249457b8c01..1666c68ef789 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/PageLayoutServiceRemoteTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/PageLayoutServiceRemoteTests.swift @@ -25,7 +25,7 @@ class PageLayoutServiceRemoteTests: RemoteTestCase, RESTTestable { func testFetchBlogSpecificLayouts() { let expect = expectation(description: "Fetch blog specific site layouts") stubRemoteResponse(blogSpecificEndPoint, filename: successMockFilename, contentType: .ApplicationJSON) - PageLayoutServiceRemote.fetchLayouts(restAPI, forBlogID: blogID, withParameters: nil) { (result) in + PageLayoutServiceRemote.fetchLayouts(restAPI, forBlogID: blogID, withParameters: nil) { result in switch result { case .success(let layouts): XCTAssertNotNil(layouts.categories) @@ -42,7 +42,7 @@ class PageLayoutServiceRemoteTests: RemoteTestCase, RESTTestable { func testFetchCommonLayouts() { let expect = expectation(description: "Fetch blog specific site layouts") stubRemoteResponse(commonLayoutsEndPoint, filename: successMockFilename, contentType: .ApplicationJSON) - PageLayoutServiceRemote.fetchLayouts(restAPI, forBlogID: nil, withParameters: nil) { (result) in + PageLayoutServiceRemote.fetchLayouts(restAPI, forBlogID: nil, withParameters: nil) { result in switch result { case .success(let layouts): XCTAssertNotNil(layouts.categories) @@ -60,7 +60,7 @@ class PageLayoutServiceRemoteTests: RemoteTestCase, RESTTestable { func testMalformedData() { let expect = expectation(description: "Fetch blog specific site layouts") stubRemoteResponse(blogSpecificEndPoint, filename: malformedMockFilename, contentType: .ApplicationJSON) - PageLayoutServiceRemote.fetchLayouts(restAPI, forBlogID: blogID, withParameters: nil) { (result) in + PageLayoutServiceRemote.fetchLayouts(restAPI, forBlogID: blogID, withParameters: nil) { result in switch result { case .success: XCTFail("This callback shouldn't get called") diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/PlanServiceRemoteTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/PlanServiceRemoteTests.swift index 2f501142e910..2881a70f3156 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/PlanServiceRemoteTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/PlanServiceRemoteTests.swift @@ -230,7 +230,7 @@ class PlanServiceRemoteTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Get plan descriptions success") stubRemoteResponse(meSitesEndpoint, filename: getPlansMeSitesSuccessMockFilename, contentType: .ApplicationJSON) - remote.getPlanDescriptionsForAllSitesForLocale("en", success: { (response) in + remote.getPlanDescriptionsForAllSitesForLocale("en", success: { response in XCTAssertEqual(response.count, 5) expect.fulfill() }) { _ in @@ -245,7 +245,7 @@ class PlanServiceRemoteTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Get plan descriptions failure") stubRemoteResponse(meSitesEndpoint, data: Data(), contentType: .NoContentType, status: 500) - remote.getPlanDescriptionsForAllSitesForLocale("en", success: { (_) in + remote.getPlanDescriptionsForAllSitesForLocale("en", success: { _ in XCTFail("This callback shouldn't get called") expect.fulfill() }) { error in diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/PluginServiceRemoteTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/PluginServiceRemoteTests.swift index cc1356c39896..b397f9d5f48a 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/PluginServiceRemoteTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/PluginServiceRemoteTests.swift @@ -50,12 +50,12 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { stubRemoteResponse(sitePluginsEndpoint, filename: getPluginsSuccessMockFilename, contentType: .ApplicationJSON) - remote.getPlugins(siteID: siteID, success: { (sitePlugins) in + remote.getPlugins(siteID: siteID, success: { sitePlugins in XCTAssertEqual(sitePlugins.plugins.count, 8) XCTAssertTrue(sitePlugins.capabilities.autoupdate) XCTAssertTrue(sitePlugins.capabilities.modify) expect.fulfill() - }, failure: { (_) in + }, failure: { _ in XCTFail("This callback shouldn't get called") expect.fulfill() }) @@ -69,10 +69,10 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { stubRemoteResponse(sitePluginsEndpoint, filename: getPluginsErrorMockFilename, contentType: .ApplicationJSON) - remote.getPlugins(siteID: siteID, success: { (_) in + remote.getPlugins(siteID: siteID, success: { _ in XCTFail("This callback shouldn't get called") expect.fulfill() - }, failure: { (error) in + }, failure: { error in let error = error as NSError let expected = PluginServiceRemote.ResponseError.unauthorized as NSError XCTAssertEqual(error, expected) @@ -88,10 +88,10 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { stubRemoteResponse(sitePluginsEndpoint, filename: getPluginsMalformedMockFile, contentType: .ApplicationJSON) - remote.getPlugins(siteID: siteID, success: { (_) in + remote.getPlugins(siteID: siteID, success: { _ in XCTFail("This callback shouldn't get called") expect.fulfill() - }, failure: { (error) in + }, failure: { error in let error = error as NSError XCTAssertEqual(error.domain, "WordPressKit.WordPressComRestApiError") XCTAssertEqual(error.code, WordPressComRestApiErrorCode.responseSerializationFailed.rawValue) @@ -108,12 +108,12 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { filename: getFeaturedPluginsMockFile, contentType: .ApplicationJSON) - remote.getFeaturedPlugins(success: { (featuredPlugins) in + remote.getFeaturedPlugins(success: { featuredPlugins in XCTAssertEqual(featuredPlugins.count, 6) XCTAssertEqual(featuredPlugins[1].name, "Yoast SEO") XCTAssertEqual(featuredPlugins[3].slug, "tinymce-advanced") expect.fulfill() - }) { (_) in + }) { _ in XCTFail("This callback shouldn't get called") expect.fulfill() } @@ -128,10 +128,10 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { filename: getFeaturedPluginsMalformedMockFile, contentType: .ApplicationJSON) - remote.getFeaturedPlugins(success: { (_) in + remote.getFeaturedPlugins(success: { _ in XCTFail("Callback should not get called") expect.fulfill() - }) { (error) in + }) { error in let error = error as NSError XCTAssertEqual(error.domain, "WordPressKit.WordPressComRestApiError") XCTAssertEqual(error.code, WordPressComRestApiErrorCode.responseSerializationFailed.rawValue) @@ -149,10 +149,10 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { filename: getFeaturedPluginsInvalidResponse, contentType: .ApplicationJSON) - remote.getFeaturedPlugins(success: { (_) in + remote.getFeaturedPlugins(success: { _ in XCTFail("Callback should not get called") expect.fulfill() - }) { (error) in + }) { error in let error = error as NSError let expected = PluginServiceRemote.ResponseError.decodingFailure as NSError XCTAssertEqual(error, expected) @@ -170,10 +170,10 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { filename: getPluginsErrorMockFilename, contentType: .ApplicationJSON) - remote.getFeaturedPlugins(success: { (_) in + remote.getFeaturedPlugins(success: { _ in XCTFail("Callback should not get called") expect.fulfill() - }) { (error) in + }) { error in let error = error as NSError let expected = PluginServiceRemote.ResponseError.decodingFailure as NSError XCTAssertEqual(error, expected) @@ -201,7 +201,7 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { endpointAction: .update, responseFile: postRemotePluginUpdateJetpack) - remote.updatePlugin(pluginID: "jetpack/jetpack", siteID: siteID, success: { (pluginState) in + remote.updatePlugin(pluginID: "jetpack/jetpack", siteID: siteID, success: { pluginState in XCTAssertEqual(pluginState.slug, "jetpack") XCTAssertEqual(pluginState.name, "Jetpack by WordPress.com") XCTAssertEqual(pluginState.version, "8.6.1") @@ -209,7 +209,7 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { XCTAssertEqual(pluginState.updateState, PluginState.UpdateState.updated) expect.fulfill() - }) { (_) in + }) { _ in XCTFail("This callback shouldn't get called") expect.fulfill() } @@ -225,7 +225,7 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { endpointAction: .update, responseFile: postRemotePluginUpdateGutenberg) - remote.updatePlugin(pluginID: "gutenberg/gutenberg", siteID: siteID, success: { (pluginState) in + remote.updatePlugin(pluginID: "gutenberg/gutenberg", siteID: siteID, success: { pluginState in XCTAssertEqual(pluginState.slug, "gutenberg") XCTAssertEqual(pluginState.name, "Gutenberg") XCTAssertEqual(pluginState.version, "7.2.1") @@ -233,7 +233,7 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { XCTAssertEqual(pluginState.updateState, PluginState.UpdateState.available("8.3.0")) expect.fulfill() - }) { (_) in + }) { _ in XCTFail("This callback shouldn't get called") expect.fulfill() } @@ -249,10 +249,10 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { endpointAction: .update, responseFile: postRemotePluginUpdateAuthFailure) - remote.updatePlugin(pluginID: "gutenberg/gutenberg", siteID: siteID, success: { (_) in + remote.updatePlugin(pluginID: "gutenberg/gutenberg", siteID: siteID, success: { _ in XCTFail("This callback should not be called") expect.fulfill() - }) { (error) in + }) { error in let error = error as NSError let expected = PluginServiceRemote.ResponseError.unauthorized as NSError @@ -271,10 +271,10 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { endpointAction: .update, responseFile: postRemotePluginUpdateMalformed) - remote.updatePlugin(pluginID: "gutenberg/gutenberg", siteID: siteID, success: { (_) in + remote.updatePlugin(pluginID: "gutenberg/gutenberg", siteID: siteID, success: { _ in XCTFail("This callback shouldn't get called") expect.fulfill() - }) { (error) in + }) { error in let error = error as NSError XCTAssertEqual(error.domain, "WordPressKit.WordPressComRestApiError") XCTAssertEqual(error.code, WordPressComRestApiErrorCode.responseSerializationFailed.rawValue) @@ -291,14 +291,14 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { endpointAction: .install, responseFile: postPluginInstallSucceeds) - remote.install(pluginSlug: "code-snippets", siteID: siteID, success: { (pluginState) in + remote.install(pluginSlug: "code-snippets", siteID: siteID, success: { pluginState in XCTAssertEqual(pluginState.slug, "code-snippets") XCTAssertEqual(pluginState.name, "Code Snippets") XCTAssertEqual(pluginState.version, "2.14.0") XCTAssertEqual(pluginState.autoupdate, false) expect.fulfill() - }) { (_) in + }) { _ in XCTFail("This callback shouldn't get called") expect.fulfill() } @@ -313,10 +313,10 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { endpointAction: .install, responseFile: postPluginInstallAlreadyInstalled) - remote.install(pluginSlug: "code-snippets", siteID: siteID, success: { (_) in + remote.install(pluginSlug: "code-snippets", siteID: siteID, success: { _ in XCTFail("This callback shouldn't get called") expect.fulfill() - }) { (error) in + }) { error in let error = error as NSError let expected = PluginServiceRemote.ResponseError.unknownError as NSError XCTAssertEqual(error, expected) @@ -333,10 +333,10 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { endpointAction: .install, responseFile: postPluginInstallGenericError) - remote.install(pluginSlug: "code-snippets", siteID: siteID, success: { (_) in + remote.install(pluginSlug: "code-snippets", siteID: siteID, success: { _ in XCTFail("This callback shouldn't get called") expect.fulfill() - }) { (error) in + }) { error in let error = error as NSError let expected = PluginServiceRemote.ResponseError.unknownError as NSError XCTAssertEqual(error, expected) @@ -353,10 +353,10 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { endpointAction: .install, responseFile: postPluginModifyMalformed) - remote.install(pluginSlug: "code-snippets", siteID: siteID, success: { (_) in + remote.install(pluginSlug: "code-snippets", siteID: siteID, success: { _ in XCTFail("This callback shouldn't get called") expect.fulfill() - }) { (error) in + }) { error in let error = error as NSError XCTAssertEqual(error.domain, "WordPressKit.WordPressComRestApiError") XCTAssertEqual(error.code, WordPressComRestApiErrorCode.responseSerializationFailed.rawValue) @@ -376,7 +376,7 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { remote.remove(pluginID: "code-snippets/code-snippets", siteID: siteID, success: { XCTFail("This callback shouldn't get called") expect.fulfill() - }) { (error) in + }) { error in let error = error as NSError XCTAssertEqual(error.domain, "WordPressKit.WordPressComRestApiError") XCTAssertEqual(error.code, WordPressComRestApiErrorCode.responseSerializationFailed.rawValue) @@ -396,7 +396,7 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { remote.activatePlugin(pluginID: "code-snippets/code-snippets", siteID: siteID, success: { XCTFail("This callback shouldn't get called") expect.fulfill() - }) { (error) in + }) { error in let error = error as NSError XCTAssertEqual(error.domain, "WordPressKit.WordPressComRestApiError") XCTAssertEqual(error.code, WordPressComRestApiErrorCode.responseSerializationFailed.rawValue) @@ -416,7 +416,7 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { remote.deactivatePlugin(pluginID: "code-snippets/code-snippets", siteID: siteID, success: { XCTFail("This callback shouldn't get called") expect.fulfill() - }) { (error) in + }) { error in let error = error as NSError XCTAssertEqual(error.domain, "WordPressKit.WordPressComRestApiError") XCTAssertEqual(error.code, WordPressComRestApiErrorCode.responseSerializationFailed.rawValue) @@ -436,7 +436,7 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { remote.enableAutoupdates(pluginID: "code-snippets/code-snippets", siteID: siteID, success: { XCTFail("This callback shouldn't get called") expect.fulfill() - }) { (error) in + }) { error in let error = error as NSError XCTAssertEqual(error.domain, "WordPressKit.WordPressComRestApiError") XCTAssertEqual(error.code, WordPressComRestApiErrorCode.responseSerializationFailed.rawValue) @@ -456,7 +456,7 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { remote.disableAutoupdates(pluginID: "code-snippets/code-snippets", siteID: siteID, success: { XCTFail("This callback shouldn't get called") expect.fulfill() - }) { (error) in + }) { error in let error = error as NSError XCTAssertEqual(error.domain, "WordPressKit.WordPressComRestApiError") XCTAssertEqual(error.code, WordPressComRestApiErrorCode.responseSerializationFailed.rawValue) @@ -476,7 +476,7 @@ class PluginServiceRemoteTests: RemoteTestCase, RESTTestable { remote.activateAndEnableAutoupdates(pluginID: "code-snippets/code-snippets", siteID: siteID, success: { XCTFail("This callback shouldn't get called") expect.fulfill() - }) { (error) in + }) { error in let error = error as NSError XCTAssertEqual(error.domain, "WordPressKit.WordPressComRestApiError") XCTAssertEqual(error.code, WordPressComRestApiErrorCode.responseSerializationFailed.rawValue) diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/PostServiceRemoteRESTRevisionsTest.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/PostServiceRemoteRESTRevisionsTest.swift index e83cc0cfb422..03aa62ea5462 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/PostServiceRemoteRESTRevisionsTest.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/PostServiceRemoteRESTRevisionsTest.swift @@ -35,10 +35,10 @@ class PostServiceRemoteRESTRevisionsTest: RemoteTestCase, RESTTestable { stubRemoteResponse(performEndpoint, filename: performRevisionsSuccessFilename, contentType: .ApplicationJSON) remote.getPostRevisions(for: siteId, postId: postId, - success: { (revisions) in + success: { revisions in XCTAssertNotNil(revisions, "Revisions shouldn't be nil") expect.fulfill() - }) { (_) in + }) { _ in XCTFail("This callback shouldn't get called") expect.fulfill() } @@ -51,10 +51,10 @@ class PostServiceRemoteRESTRevisionsTest: RemoteTestCase, RESTTestable { stubRemoteResponse(performEndpoint, filename: performRevisionsFailureFilename, contentType: .ApplicationJSON) remote.getPostRevisions(for: siteId, postId: postId, - success: { (_) in + success: { _ in XCTFail("This callback shouldn't get called") expect.fulfill() - }) { (error) in + }) { error in XCTAssertNotNil(error) expect.fulfill() } @@ -67,7 +67,7 @@ class PostServiceRemoteRESTRevisionsTest: RemoteTestCase, RESTTestable { stubRemoteResponse(performEndpoint, filename: performRevisionsMappingSuccessFilename, contentType: .ApplicationJSON) remote.getPostRevisions(for: siteId, postId: postId, - success: { (revisions) in + success: { revisions in XCTAssertNotNil(revisions, "Revisions shouldn't be nil") XCTAssertNotNil(revisions?.first, "Revision model shouldn't be nil") XCTAssertNotNil(revisions?.first?.diff, "Revision diff shouldn't be nil") @@ -113,7 +113,7 @@ class PostServiceRemoteRESTRevisionsTest: RemoteTestCase, RESTTestable { XCTAssertEqual(diff.values.contentDiffs[5].operation, .copy) expect.fulfill() - }) { (_) in + }) { _ in XCTFail("This callback shouldn't get called") expect.fulfill() } diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderPostServiceRemote+SubscriptionTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderPostServiceRemote+SubscriptionTests.swift index a4e1f3ab531a..c171df5d3378 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderPostServiceRemote+SubscriptionTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderPostServiceRemote+SubscriptionTests.swift @@ -36,10 +36,10 @@ class ReaderPostServiceRemoteSubscriptionTests: RemoteTestCase, RESTTestable { contentType: .ApplicationJSON) let expect = expectation(description: "Check for subscription status") - readerPostServiceRemote.fetchSubscriptionStatus(for: postID, from: siteID, success: { (success) in + readerPostServiceRemote.fetchSubscriptionStatus(for: postID, from: siteID, success: { success in XCTAssertTrue(success, "Success should be true") expect.fulfill() - }) { (_) in + }) { _ in XCTFail("This callback shouldn't get called") expect.fulfill() } @@ -53,10 +53,10 @@ class ReaderPostServiceRemoteSubscriptionTests: RemoteTestCase, RESTTestable { contentType: .ApplicationJSON) let expect = expectation(description: "Subscribe to comments for a post") - readerPostServiceRemote.subscribeToPost(with: postID, for: siteID, success: { (success) in + readerPostServiceRemote.subscribeToPost(with: postID, for: siteID, success: { success in XCTAssertTrue(success, "Success should be true") expect.fulfill() - }) { (_) in + }) { _ in XCTFail("This callback shouldn't get called") expect.fulfill() } @@ -73,10 +73,10 @@ class ReaderPostServiceRemoteSubscriptionTests: RemoteTestCase, RESTTestable { contentType: .ApplicationJSON) let expect = expectation(description: "Subscribe to comments for a post") - readerPostServiceRemote.subscribeToPost(with: postID, for: siteID, success: { (successfullySubscribed) in + readerPostServiceRemote.subscribeToPost(with: postID, for: siteID, success: { successfullySubscribed in XCTAssertFalse(successfullySubscribed, "Success response should be false") expect.fulfill() - }) { (_) in + }) { _ in XCTFail("This callback shouldn't get called") expect.fulfill() } @@ -93,10 +93,10 @@ class ReaderPostServiceRemoteSubscriptionTests: RemoteTestCase, RESTTestable { contentType: .ApplicationJSON) let expect = expectation(description: "Unsubscribe from comments for a post") - readerPostServiceRemote.unsubscribeFromPost(with: postID, for: siteID, success: { (success) in + readerPostServiceRemote.unsubscribeFromPost(with: postID, for: siteID, success: { success in XCTAssertTrue(success, "Success should be true") expect.fulfill() - }) { (_) in + }) { _ in XCTFail("This callback shouldn't get called") expect.fulfill() } diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderSiteSearchServiceRemoteTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderSiteSearchServiceRemoteTests.swift index 9f95dde5d2b4..8b19c2c374f1 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderSiteSearchServiceRemoteTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderSiteSearchServiceRemoteTests.swift @@ -40,7 +40,7 @@ class ReaderSiteSearchServiceRemoteTests: RemoteTestCase, RESTTestable { stubRemoteResponse(performSearchEndpoint, filename: performSearchSuccessFilename, contentType: .ApplicationJSON) remote.performSearch("discover", - count: 10, success: { (feeds, hasMore, totalFeeds) in + count: 10, success: { feeds, hasMore, totalFeeds in XCTAssertEqual(feeds.count, 2, "The feed count should be 2") XCTAssertEqual(totalFeeds, 2, "The total feed count should be 2") XCTAssertFalse(hasMore, "The value of hasMore should be false") @@ -57,7 +57,7 @@ class ReaderSiteSearchServiceRemoteTests: RemoteTestCase, RESTTestable { stubRemoteResponse(performSearchEndpoint, filename: performSearchSuccessNoIconFilename, contentType: .ApplicationJSON) remote.performSearch("discover", - count: 10, success: { (feeds, hasMore, totalFeeds) in + count: 10, success: { feeds, hasMore, totalFeeds in XCTAssertEqual(feeds.count, 1, "The feed count should be 1") XCTAssertEqual(totalFeeds, 1, "The total feed count should be 1") XCTAssertFalse(hasMore, "The value of hasMore should be false") @@ -87,7 +87,7 @@ class ReaderSiteSearchServiceRemoteTests: RemoteTestCase, RESTTestable { stubRemoteResponse(performSearchEndpoint, filename: performSearchSuccessNoDataFilename, contentType: .ApplicationJSON) remote.performSearch("discover", - count: 10, success: { (feeds, hasMore, totalFeeds) in + count: 10, success: { feeds, hasMore, totalFeeds in XCTAssertEqual(feeds.count, 1, "The feed count should be 1") XCTAssertEqual(totalFeeds, 1, "The total feed count should be 1") XCTAssertFalse(hasMore, "The value of hasMore should be false") @@ -118,7 +118,7 @@ class ReaderSiteSearchServiceRemoteTests: RemoteTestCase, RESTTestable { stubRemoteResponse(performSearchEndpoint, filename: performSearchSuccessHasMoreFilename, contentType: .ApplicationJSON) remote.performSearch("discover", - count: 2, success: { (feeds, hasMore, totalFeeds) in + count: 2, success: { feeds, hasMore, totalFeeds in XCTAssertEqual(feeds.count, 2, "The feed count should be 2") XCTAssertEqual(totalFeeds, 3, "The total feed count should be 3") XCTAssertTrue(hasMore, "The value of hasMore should be true") @@ -135,7 +135,7 @@ class ReaderSiteSearchServiceRemoteTests: RemoteTestCase, RESTTestable { stubRemoteResponse(performSearchEndpoint, filename: performSearchSuccessFilename, contentType: .ApplicationJSON) remote.performSearch("discover", - count: 2, success: { (feeds, hasMore, totalFeeds) in + count: 2, success: { feeds, hasMore, totalFeeds in XCTAssertEqual(feeds.count, 2, "The feed count should be 2") XCTAssertEqual(totalFeeds, 2, "The total feed count should be 2") XCTAssertFalse(hasMore, "The value of hasMore should be false") @@ -152,7 +152,7 @@ class ReaderSiteSearchServiceRemoteTests: RemoteTestCase, RESTTestable { stubRemoteResponse(performSearchEndpoint, filename: performSearchBlogIDFallbackFilename, contentType: .ApplicationJSON) remote.performSearch("discover", - count: 10, success: { (feeds, hasMore, totalFeeds) in + count: 10, success: { feeds, hasMore, totalFeeds in XCTAssertEqual(feeds.count, 1, "The feed count should be 1") XCTAssertEqual(totalFeeds, 1, "The total feed count should be 1") XCTAssertFalse(hasMore, "The value of hasMore should be false") @@ -182,7 +182,7 @@ class ReaderSiteSearchServiceRemoteTests: RemoteTestCase, RESTTestable { stubRemoteResponse(performSearchEndpoint, filename: performSearchFailsWithNoBlogOrFeedIDFilename, contentType: .ApplicationJSON) remote.performSearch("discover", - count: 10, success: { (feeds, hasMore, totalFeeds) in + count: 10, success: { feeds, hasMore, totalFeeds in XCTAssertEqual(feeds.count, 1, "The feed count should be 1") XCTAssertEqual(totalFeeds, 2, "The total feed count should be 2") // one feed filtered out XCTAssertFalse(hasMore, "The value of hasMore should be false") diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderSiteServiceRemoteTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderSiteServiceRemoteTests.swift index 17379702bae4..5528baa03ce8 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderSiteServiceRemoteTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderSiteServiceRemoteTests.swift @@ -303,7 +303,7 @@ class ReaderSiteServiceRemoteTests: XCTestCase { readerSiteServiceRemote.checkSiteExists(at: testURL, success: { expect.fulfill() XCTAssertTrue(true) - }, failure: { (_) in + }, failure: { _ in expect.fulfill() XCTFail("This call should be successfull") }) @@ -326,7 +326,7 @@ class ReaderSiteServiceRemoteTests: XCTestCase { readerSiteServiceRemote.checkSiteExists(at: testURL, success: { expect.fulfill() XCTAssertTrue(false, "This call should be unsuccessfull") - }, failure: { (_) in + }, failure: { _ in expect.fulfill() XCTAssertTrue(true) }) @@ -344,7 +344,7 @@ class ReaderSiteServiceRemoteTests: XCTestCase { readerSiteServiceRemote.checkSiteExists(at: testURL, success: { expect.fulfill() XCTAssertTrue(false, "This call should be unsuccessfull") - }, failure: { (_) in + }, failure: { _ in expect.fulfill() XCTAssertTrue(true) }) diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderTopicServiceRemote+InterestsTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderTopicServiceRemote+InterestsTests.swift index 2a9184f2e430..c95d90253de8 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderTopicServiceRemote+InterestsTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderTopicServiceRemote+InterestsTests.swift @@ -20,7 +20,7 @@ class ReaderTopicServiceRemoteInterestsTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Get reader interests returns successfully") stubRemoteResponse("read/interests", filename: "reader-interests-success.json", contentType: .ApplicationJSON) - readerTopicServiceRemote.fetchInterests({ (interests) in + readerTopicServiceRemote.fetchInterests({ interests in XCTAssertTrue(interests.count == 5) expect.fulfill() }, failure: { _ in }) @@ -40,7 +40,7 @@ class ReaderTopicServiceRemoteInterestsTests: RemoteTestCase, RESTTestable { ["Four", "four"], ["Five", "five"] ] - readerTopicServiceRemote.fetchInterests({ (interests) in + readerTopicServiceRemote.fetchInterests({ interests in let mapped = interests.map { return [$0.title, $0.slug ]} XCTAssertEqual(mapped, expectedInterests) diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/SiteDesignServiceRemoteTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/SiteDesignServiceRemoteTests.swift index cf3cc5d1e497..389a6eeb2f56 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/SiteDesignServiceRemoteTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/SiteDesignServiceRemoteTests.swift @@ -30,7 +30,7 @@ class SiteDesignServiceRemoteTests: RemoteTestCase, RESTTestable { func testFetchSiteDesigns() { let expect = expectation(description: "Fetch available site designs") stubRemoteResponse(endpoint, filename: successMockFilename, contentType: .ApplicationJSON) - SiteDesignServiceRemote.fetchSiteDesigns(restAPI, request: request) { (result) in + SiteDesignServiceRemote.fetchSiteDesigns(restAPI, request: request) { result in switch result { case .success(let siteDesigns): XCTAssertNotNil(siteDesigns) @@ -46,7 +46,7 @@ class SiteDesignServiceRemoteTests: RemoteTestCase, RESTTestable { func testFetchSiteDesignsEmptyResponse() { let expect = expectation(description: "Fetch available site designs") stubRemoteResponse(endpoint, filename: emptyDesignsMockFilename, contentType: .ApplicationJSON) - SiteDesignServiceRemote.fetchSiteDesigns(restAPI) { (result) in + SiteDesignServiceRemote.fetchSiteDesigns(restAPI) { result in switch result { case .success(let siteDesigns): XCTAssertNotNil(siteDesigns) @@ -63,7 +63,7 @@ class SiteDesignServiceRemoteTests: RemoteTestCase, RESTTestable { func testMalformedData() { let expect = expectation(description: "Fetch available site designs") stubRemoteResponse(endpoint, filename: malformedMockFilename, contentType: .ApplicationJSON) - SiteDesignServiceRemote.fetchSiteDesigns(restAPI) { (result) in + SiteDesignServiceRemote.fetchSiteDesigns(restAPI) { result in switch result { case .success: XCTFail("This callback shouldn't get called") diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/StatsRemoteV2Tests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/StatsRemoteV2Tests.swift index da336b70948b..50e2f630ae73 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/StatsRemoteV2Tests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/StatsRemoteV2Tests.swift @@ -491,7 +491,7 @@ class StatsRemoteV2Tests: RemoteTestCase, RESTTestable { let feb21 = DateComponents(year: 2019, month: 2, day: 21) let date = Calendar.autoupdatingCurrent.date(from: feb21)! - remote.getDetails(forPostID: 9001) { (postDetails, error) in + remote.getDetails(forPostID: 9001) { postDetails, error in XCTAssertNil(error) XCTAssertNotNil(postDetails) @@ -853,7 +853,7 @@ class StatsRemoteV2Tests: RemoteTestCase, RESTTestable { stubRemoteResponse(siteEmailOpensEndpoint, filename: getEmailOpensFilename, contentType: .ApplicationJSON) - remote.getEmailOpens(for: 231) { (emailOpens, error) in + remote.getEmailOpens(for: 231) { emailOpens, error in XCTAssertNil(error) XCTAssertNotNil(emailOpens) diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/TimeZoneServiceRemoteTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/TimeZoneServiceRemoteTests.swift index 928caccb47a1..15271b9beaf2 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/TimeZoneServiceRemoteTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/TimeZoneServiceRemoteTests.swift @@ -40,7 +40,7 @@ class TimeZoneServiceRemoteTests: RemoteTestCase, RESTTestable { let expect = expectation(description: "Get time zones") let remote = TimeZoneServiceRemote(wordPressComRestApi: getRestApi()) - remote.getTimezones(success: { (results) in + remote.getTimezones(success: { results in XCTAssertEqual(results.count, 11) XCTAssertEqual(results[0].name, "Africa") XCTAssertEqual(results[10].name, "Manual Offsets") diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/TransactionsServiceRemoteTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/TransactionsServiceRemoteTests.swift index 8926780c4c46..de66a74d5e33 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/TransactionsServiceRemoteTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/TransactionsServiceRemoteTests.swift @@ -19,12 +19,12 @@ class TransactionsServiceRemoteTests: RemoteTestCase, RESTTestable { contentType: .ApplicationJSON, status: 200) - remote.getSupportedCountries(success: { (countryList) in + remote.getSupportedCountries(success: { countryList in expect.fulfill() XCTAssert(countryList.count == 239) XCTAssert(countryList[0].code == "TR") XCTAssert(countryList[0].name == "Turkey") - }) { (_) in + }) { _ in XCTFail("This callback shouldn't get called") expect.fulfill() } diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/UsersServiceRemoteXMLRPCTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/UsersServiceRemoteXMLRPCTests.swift index 3aa62fbd24d6..2d51f26c838f 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/UsersServiceRemoteXMLRPCTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/UsersServiceRemoteXMLRPCTests.swift @@ -35,7 +35,7 @@ class UsersServiceRemoteXMLRPCTests: RemoteTestCase, XMLRPCTestable { stubRemoteResponse(XMLRPCTestableConstants.xmlRpcUrl, filename: fetchProfileSuccessMockFilename, contentType: .XML) if let remoteInstance = remote as? UsersServiceRemoteXMLRPC { - remoteInstance.fetchProfile({ (remoteProfile) in + remoteInstance.fetchProfile({ remoteProfile in XCTAssertEqual(remoteProfile.bio, "", "Bios should be equal.") XCTAssertEqual(remoteProfile.displayName, "Test", "Display name should be equal.") XCTAssertEqual(remoteProfile.email, "user@example.com", "Email should be equal.") @@ -49,7 +49,7 @@ class UsersServiceRemoteXMLRPCTests: RemoteTestCase, XMLRPCTestable { expect.fulfill() - }, failure: { (_) in + }, failure: { _ in XCTFail("This callback shouldn't get called") expect.fulfill() }) @@ -64,7 +64,7 @@ class UsersServiceRemoteXMLRPCTests: RemoteTestCase, XMLRPCTestable { stubRemoteResponse(XMLRPCTestableConstants.xmlRpcUrl, filename: fetchProfileMissingDataMockFilename, contentType: .XML) if let remoteInstance = remote as? UsersServiceRemoteXMLRPC { - remoteInstance.fetchProfile({ (remoteProfile) in + remoteInstance.fetchProfile({ remoteProfile in XCTAssertEqual(remoteProfile.bio, "", "Bios should be equal.") XCTAssertEqual(remoteProfile.displayName, "", "Display name should be equal.") XCTAssertEqual(remoteProfile.email, "", "Email should be equal.") @@ -78,7 +78,7 @@ class UsersServiceRemoteXMLRPCTests: RemoteTestCase, XMLRPCTestable { expect.fulfill() - }, failure: { (_) in + }, failure: { _ in XCTFail("This callback shouldn't get called") expect.fulfill() }) diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/WordPressComServiceRemoteRestTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/WordPressComServiceRemoteRestTests.swift index 72f3781bf912..adbbb07cfc45 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/WordPressComServiceRemoteRestTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/WordPressComServiceRemoteRestTests.swift @@ -62,10 +62,10 @@ class WordPressComServiceRemoteRestTests: XCTestCase { andPassword: "fakePassword", andClientID: "moo", andClientSecret: "cow", - success: { (_) in + success: { _ in expect.fulfill() XCTFail("This call should fail") - }, failure: { (error) in + }, failure: { error in expect.fulfill() let error = error! as NSError XCTAssert(error.domain == "WordPressKit.WordPressComRestApiError", "The error should a WordPressComRestApiError") diff --git a/WordPress/Classes/Extensions/Array.swift b/WordPress/Classes/Extensions/Array.swift index c283f496527a..92aaf7e0a2ba 100644 --- a/WordPress/Classes/Extensions/Array.swift +++ b/WordPress/Classes/Extensions/Array.swift @@ -38,7 +38,7 @@ extension Array where Element: Equatable { /// corresponding element in the given array. /// public func differentIndices(_ other: [Element]) -> [Int] { - return enumerated().compactMap({ (offset, value) -> Int? in + return enumerated().compactMap({ offset, value -> Int? in guard offset < other.endIndex else { return offset } @@ -68,7 +68,7 @@ extension Array { var currentValue: Value? var currentGroup = [Element]() var result = [(Value, [Element])]() - forEach { (element) in + forEach { element in let value = transforming(element) if currentValue != value { if let currentValue { diff --git a/WordPress/Classes/Extensions/NSMutableAttributedString+Helpers.swift b/WordPress/Classes/Extensions/NSMutableAttributedString+Helpers.swift index cccf8001982e..5c1257038aa7 100644 --- a/WordPress/Classes/Extensions/NSMutableAttributedString+Helpers.swift +++ b/WordPress/Classes/Extensions/NSMutableAttributedString+Helpers.swift @@ -13,7 +13,7 @@ extension NSMutableAttributedString { let regex = try NSRegularExpression(pattern: pattern, options: .dotMatchesLineSeparators) let range = NSRange(location: 0, length: length) - regex.enumerateMatches(in: string, options: .reportCompletion, range: range) { (result, _, _) -> Void in + regex.enumerateMatches(in: string, options: .reportCompletion, range: range) { result, _, _ -> Void in if let theResult = result { self.addAttributes(styles, range: theResult.range) diff --git a/WordPress/Classes/Extensions/NotificationCenter+ObserveOnce.swift b/WordPress/Classes/Extensions/NotificationCenter+ObserveOnce.swift index 095163fdcf18..d86c54bab717 100644 --- a/WordPress/Classes/Extensions/NotificationCenter+ObserveOnce.swift +++ b/WordPress/Classes/Extensions/NotificationCenter+ObserveOnce.swift @@ -33,7 +33,7 @@ extension NotificationCenter { forName: name, object: object, queue: queue, - using: { (notification) in + using: { notification in guard filter?(notification) ?? true else { return } diff --git a/WordPress/Classes/Models/Gutenberg/BlockEditorSettings+GutenbergEditorSettings.swift b/WordPress/Classes/Models/Gutenberg/BlockEditorSettings+GutenbergEditorSettings.swift index f49cec2372ec..bb109a932a54 100644 --- a/WordPress/Classes/Models/Gutenberg/BlockEditorSettings+GutenbergEditorSettings.swift +++ b/WordPress/Classes/Models/Gutenberg/BlockEditorSettings+GutenbergEditorSettings.swift @@ -13,9 +13,9 @@ extension BlockEditorSettings: @retroactive GutenbergEditorSettings { } private func elementsByType(_ type: BlockEditorSettingElementTypes) -> [[String: String]]? { - return elements?.sorted(by: { (lhs, rhs) -> Bool in + return elements?.sorted(by: { lhs, rhs -> Bool in return lhs.order >= rhs.order - }).compactMap({ (element) -> [String: String]? in + }).compactMap({ element -> [String: String]? in guard element.type == type.rawValue else { return nil } return element.rawRepresentation }) @@ -31,11 +31,11 @@ extension BlockEditorSettings { var parsedElements = Set() if let themeSupport = editorTheme.themeSupport { - themeSupport.colors?.enumerated().forEach({ (index, color) in + themeSupport.colors?.enumerated().forEach({ index, color in parsedElements.insert(BlockEditorSettingElement(fromRawRepresentation: color, type: .color, order: index, context: context)) }) - themeSupport.gradients?.enumerated().forEach({ (index, gradient) in + themeSupport.gradients?.enumerated().forEach({ index, gradient in parsedElements.insert(BlockEditorSettingElement(fromRawRepresentation: gradient, type: .gradient, order: index, context: context)) }) } @@ -53,11 +53,11 @@ extension BlockEditorSettings { var parsedElements = Set() - remoteSettings.colors?.enumerated().forEach({ (index, color) in + remoteSettings.colors?.enumerated().forEach({ index, color in parsedElements.insert(BlockEditorSettingElement(fromRawRepresentation: color, type: .color, order: index, context: context)) }) - remoteSettings.gradients?.enumerated().forEach({ (index, gradient) in + remoteSettings.gradients?.enumerated().forEach({ index, gradient in parsedElements.insert(BlockEditorSettingElement(fromRawRepresentation: gradient, type: .gradient, order: index, context: context)) }) diff --git a/WordPress/Classes/Models/Notifications/Actions/MarkAsSpam.swift b/WordPress/Classes/Models/Notifications/Actions/MarkAsSpam.swift index 30fb19a03967..2c89931bc522 100644 --- a/WordPress/Classes/Models/Notifications/Actions/MarkAsSpam.swift +++ b/WordPress/Classes/Models/Notifications/Actions/MarkAsSpam.swift @@ -16,7 +16,7 @@ class MarkAsSpam: DefaultNotificationActionCommand { return } let request = NotificationDeletionRequest(kind: .spamming, action: { [weak self] requestCompletion in - self?.actionsService?.spamCommentWithBlock(block) { (success) in + self?.actionsService?.spamCommentWithBlock(block) { success in requestCompletion(success) } }) diff --git a/WordPress/Classes/Models/WPAccount+DeduplicateBlogs.swift b/WordPress/Classes/Models/WPAccount+DeduplicateBlogs.swift index 7d3322610c8e..7cfbfb88f2cd 100644 --- a/WordPress/Classes/Models/WPAccount+DeduplicateBlogs.swift +++ b/WordPress/Classes/Models/WPAccount+DeduplicateBlogs.swift @@ -52,7 +52,7 @@ extension WPAccount { // The original predicate from PostService.countPostsWithoutRemote() was: // "postID = NULL OR postID <= 0" // Swift optionals make things a bit more verbose, but this should be equivalent - return blog.posts?.filter({ (post) -> Bool in + return blog.posts?.filter({ post -> Bool in if let postID = post.postID?.intValue, postID > 0 { return false diff --git a/WordPress/Classes/Services/AccountSettingsService.swift b/WordPress/Classes/Services/AccountSettingsService.swift index b9fd8ef3d206..ffe70b995f7e 100644 --- a/WordPress/Classes/Services/AccountSettingsService.swift +++ b/WordPress/Classes/Services/AccountSettingsService.swift @@ -168,7 +168,7 @@ class AccountSettingsService { func updatePassword(_ password: String, finished: ((Bool, Error?) -> ())? = nil) { remote.updatePassword(password, success: { finished?(true, nil) - }) { (error) -> Void in + }) { error -> Void in DDLogError("Error saving account settings change \(error)") NotificationCenter.default.post(name: NSNotification.Name.AccountSettingsServiceChangeSaveFailed, object: error as NSError) diff --git a/WordPress/Classes/Services/AuthenticationService.swift b/WordPress/Classes/Services/AuthenticationService.swift index be8cbb459e50..299c04d94df8 100644 --- a/WordPress/Classes/Services/AuthenticationService.swift +++ b/WordPress/Classes/Services/AuthenticationService.swift @@ -159,7 +159,7 @@ class AuthenticationService { request.httpMethod = "POST" request.httpBody = body(withParameters: parameters) - headers.forEach { (key, value) in + headers.forEach { key, value in request.setValue(value, forHTTPHeaderField: key) } request.setValue(WPUserAgent.wordPress(), forHTTPHeaderField: "User-Agent") diff --git a/WordPress/Classes/Services/BlockEditorSettingsService.swift b/WordPress/Classes/Services/BlockEditorSettingsService.swift index 16a4290ad3b1..31a58339823c 100644 --- a/WordPress/Classes/Services/BlockEditorSettingsService.swift +++ b/WordPress/Classes/Services/BlockEditorSettingsService.swift @@ -60,7 +60,7 @@ class BlockEditorSettingsService { // MARK: Editor `theme_supports` support private extension BlockEditorSettingsService { func fetchTheme(_ completion: @escaping BlockEditorSettingsServiceCompletion) { - remote.fetchTheme { [weak self] (response) in + remote.fetchTheme { [weak self] response in guard let `self` = self else { return } switch response { case .success(let editorTheme): @@ -122,7 +122,7 @@ private extension BlockEditorSettingsService { // MARK: Editor Global Styles support private extension BlockEditorSettingsService { func fetchBlockEditorSettings(_ completion: @escaping BlockEditorSettingsServiceCompletion) { - remote.fetchBlockEditorSettings { [weak self] (response) in + remote.fetchBlockEditorSettings { [weak self] response in guard let `self` = self else { return } switch response { case .success(let remoteSettings): diff --git a/WordPress/Classes/Services/BlogJetpackSettingsService.swift b/WordPress/Classes/Services/BlogJetpackSettingsService.swift index 65febb40b8aa..b6e499ffb98d 100644 --- a/WordPress/Classes/Services/BlogJetpackSettingsService.swift +++ b/WordPress/Classes/Services/BlogJetpackSettingsService.swift @@ -34,22 +34,22 @@ struct BlogJetpackSettingsService { syncGroup.enter() remote.getJetpackSettingsForSite(blogDotComId, - success: { (remoteSettings) in + success: { remoteSettings in remoteJetpackSettings = remoteSettings syncGroup.leave() }, - failure: { (error) in + failure: { error in fetchError = error syncGroup.leave() }) syncGroup.enter() remote.getJetpackMonitorSettingsForSite(blogDotComId, - success: { (remoteMonitorSettings) in + success: { remoteMonitorSettings in remoteJetpackMonitorSettings = remoteMonitorSettings syncGroup.leave() }, - failure: { (error) in + failure: { error in fetchError = error syncGroup.leave() }) @@ -89,7 +89,7 @@ struct BlogJetpackSettingsService { let remote = BlogJetpackSettingsServiceRemote(wordPressComRestApi: remoteAPI) remote.getJetpackModulesSettingsForSite( blogDotComId, - success: { (remoteModulesSettings) in + success: { remoteModulesSettings in self.coreDataStack.performAndSave({ context in guard let blogSettings = Blog.lookup(withObjectID: blog.objectID, in: context)?.settings else { return diff --git a/WordPress/Classes/Services/BloggingPrompts/BloggingPromptsService.swift b/WordPress/Classes/Services/BloggingPrompts/BloggingPromptsService.swift index e30bf1a23a5b..66bfb86cc13c 100644 --- a/WordPress/Classes/Services/BloggingPrompts/BloggingPromptsService.swift +++ b/WordPress/Classes/Services/BloggingPrompts/BloggingPromptsService.swift @@ -85,7 +85,7 @@ class BloggingPromptsService { /// - failure: Closure to be called when the fetch process failed. func fetchTodaysPrompt(success: ((BloggingPrompt?) -> Void)? = nil, failure: ((Error?) -> Void)? = nil) { - fetchPrompts(from: Date(), number: 1, success: { (prompts) in + fetchPrompts(from: Date(), number: 1, success: { prompts in success?(prompts.first) }, failure: failure) } @@ -329,7 +329,7 @@ private extension BloggingPromptsService { return params }() - api.GET(path, parameters: requestParameter as [String: AnyObject], success: { (responseObject, _) in + api.GET(path, parameters: requestParameter as [String: AnyObject], success: { responseObject, _ in do { let data = try JSONSerialization.data(withJSONObject: responseObject, options: []) let remotePrompts = try Self.jsonDecoder.decode([BloggingPromptRemoteObject].self, from: data) @@ -337,7 +337,7 @@ private extension BloggingPromptsService { } catch { completion(.failure(error)) } - }, failure: { (error, _) in + }, failure: { error, _ in completion(.failure(error)) }) } diff --git a/WordPress/Classes/Services/EditorSettingsService.swift b/WordPress/Classes/Services/EditorSettingsService.swift index 22ab7dd7cfec..bdda97e937e8 100644 --- a/WordPress/Classes/Services/EditorSettingsService.swift +++ b/WordPress/Classes/Services/EditorSettingsService.swift @@ -33,7 +33,7 @@ import WordPressKit } let service = EditorServiceRemote(wordPressComRestApi: api) - service.getEditorSettings(siteID, success: { (settings) in + service.getEditorSettings(siteID, success: { settings in self.coreDataStack.performAndSave({ context in let blogInContext = try context.existingObject(with: blog.objectID) as! Blog try self.update(blogInContext, remoteEditorSettings: settings) @@ -80,7 +80,7 @@ import WordPressKit let service = EditorServiceRemote(wordPressComRestApi: api) service.postDesignateMobileEditorForAllSites(remoteEditor, setOnlyIfEmpty: !overrideRemote, success: { response in self.updateAllSites(with: response, completion: onSuccess) - }) { (error) in + }) { error in DDLogError("Error saving editor settings: \(error)") } } diff --git a/WordPress/Classes/Services/MediaCoordinator.swift b/WordPress/Classes/Services/MediaCoordinator.swift index c70373dfedaf..6f6c46e18151 100644 --- a/WordPress/Classes/Services/MediaCoordinator.swift +++ b/WordPress/Classes/Services/MediaCoordinator.swift @@ -778,7 +778,7 @@ extension MediaCoordinator { // We want to collect more data about that, so we're going to log that info to Sentry, // and also delete the `Media` object, since there isn't really a reasonable way to recover from that failure. func addObserverForDeletedFiles() { - addObserver({ (media, _) in + addObserver({ media, _ in guard let mediaError = media.error, media.hasMissingFileError else { return diff --git a/WordPress/Classes/Services/NotificationSyncMediator.swift b/WordPress/Classes/Services/NotificationSyncMediator.swift index 779740d9f56f..2cf2c7dcff21 100644 --- a/WordPress/Classes/Services/NotificationSyncMediator.swift +++ b/WordPress/Classes/Services/NotificationSyncMediator.swift @@ -265,7 +265,7 @@ final class NotificationSyncMediator: NotificationSyncMediatorProtocol { if let error { DDLogError("Error marking note as read: \(error)") } - self.syncNote(with: noteID) { (_, _) in + self.syncNote(with: noteID) { _, _ in completion?(error) } } diff --git a/WordPress/Classes/Services/Page Layouts/PageLayoutService.swift b/WordPress/Classes/Services/Page Layouts/PageLayoutService.swift index 5b2615422526..1db92539a5e8 100644 --- a/WordPress/Classes/Services/Page Layouts/PageLayoutService.swift +++ b/WordPress/Classes/Services/Page Layouts/PageLayoutService.swift @@ -37,10 +37,10 @@ class PageLayoutService { private static func fetchLayouts(_ api: WordPressComRestApi, _ dotComID: Int?, _ blogPersistentID: NSManagedObjectID, _ thumbnailSize: CGSize, _ completion: CompletionHandler?) { let params = parameters(thumbnailSize) - PageLayoutServiceRemote.fetchLayouts(api, forBlogID: dotComID, withParameters: params) { (result) in + PageLayoutServiceRemote.fetchLayouts(api, forBlogID: dotComID, withParameters: params) { result in switch result { case .success(let remoteLayouts): - persistToCoreData(blogPersistentID, remoteLayouts) { (persistanceResult) in + persistToCoreData(blogPersistentID, remoteLayouts) { persistanceResult in switch persistanceResult { case .success: completion?(.success(())) diff --git a/WordPress/Classes/Services/PeopleService.swift b/WordPress/Classes/Services/PeopleService.swift index 83dc70206f42..a0e12d675c6c 100644 --- a/WordPress/Classes/Services/PeopleService.swift +++ b/WordPress/Classes/Services/PeopleService.swift @@ -374,7 +374,7 @@ extension PeopleService { deleteInviteLinks(keys: deletedKeys, for: siteID) { success() } - } failure: { (error) in + } failure: { error in failure(error) } } diff --git a/WordPress/Classes/Services/PlanService.swift b/WordPress/Classes/Services/PlanService.swift index ba1e95786ffe..0abadd85a480 100644 --- a/WordPress/Classes/Services/PlanService.swift +++ b/WordPress/Classes/Services/PlanService.swift @@ -207,7 +207,7 @@ extension PlanService { let remote_v1_3 = PlanServiceRemote_ApiVersion1_3(wordPressComRestApi: restAPI) remote_v1_3.getPlansForSite( siteID, - success: { (plans) in + success: { plans in guard let planId = plans.activePlan.planID, let planIdInt = Int(planId) else { // There won't necessarily be an active plan so this is not really a failure diff --git a/WordPress/Classes/Services/PostCoordinator.swift b/WordPress/Classes/Services/PostCoordinator.swift index 0eab281e8c67..4236e8f61c93 100644 --- a/WordPress/Classes/Services/PostCoordinator.swift +++ b/WordPress/Classes/Services/PostCoordinator.swift @@ -718,7 +718,7 @@ class PostCoordinator: NSObject { completion(.failure(SavingError.mediaFailure(post, error))) } - return mediaCoordinator.addObserver({ [weak self](media, state) in + return mediaCoordinator.addObserver({ [weak self] media, state in guard let `self` = self else { return } @@ -733,7 +733,7 @@ class PostCoordinator: NSObject { } switch media.mediaType { case .video: - EditorMediaUtility.fetchRemoteVideoURL(for: media, in: post) { (result) in + EditorMediaUtility.fetchRemoteVideoURL(for: media, in: post) { result in switch result { case .failure(let error): handleSingleMediaFailure(error) @@ -821,12 +821,12 @@ class PostCoordinator: NSObject { // Gutenberg processors need to run first because they are more specific/and target only content inside specific blocks gutenbergBlockProcessors.forEach { $0.process(contentBlocks) } - postContent = gutenbergProcessors.reduce(postContent) { (content, processor) -> String in + postContent = gutenbergProcessors.reduce(postContent) { content, processor -> String in return processor.process(content) } // Aztec processors are next because they are more generic and only worried about HTML tags - postContent = aztecProcessors.reduce(postContent) { (content, processor) -> String in + postContent = aztecProcessors.reduce(postContent) { content, processor -> String in return processor.process(content) } diff --git a/WordPress/Classes/Services/PostService+Revisions.swift b/WordPress/Classes/Services/PostService+Revisions.swift index 8fed28963a6c..2c1d34646a3a 100644 --- a/WordPress/Classes/Services/PostService+Revisions.swift +++ b/WordPress/Classes/Services/PostService+Revisions.swift @@ -18,7 +18,7 @@ extension PostService { let remote = PostServiceRemoteREST(wordPressComRestApi: api, siteID: blogId) remote.getPostRevisions(for: blogId.intValue, postId: postId.intValue, - success: { (remoteRevisions) in + success: { remoteRevisions in self.managedObjectContext.perform { let _ = self.syncPostRevisions( from: remoteRevisions ?? [], diff --git a/WordPress/Classes/Services/ReaderSiteSearchService.swift b/WordPress/Classes/Services/ReaderSiteSearchService.swift index 67a959737058..072dae8ed9e6 100644 --- a/WordPress/Classes/Services/ReaderSiteSearchService.swift +++ b/WordPress/Classes/Services/ReaderSiteSearchService.swift @@ -50,7 +50,7 @@ class ReaderSiteSearchService { remote.performSearch(query, offset: page * Constants.pageSize, count: Constants.pageSize, - success: { (feeds, hasMore, total) in + success: { feeds, hasMore, total in success(feeds, hasMore, total) }, failure: { error in DDLogError("Error while performing Reader site search: \(String(describing: error))") diff --git a/WordPress/Classes/Services/ReaderTopicService+Interests.swift b/WordPress/Classes/Services/ReaderTopicService+Interests.swift index 6856c868a58c..a4f28c17fef4 100644 --- a/WordPress/Classes/Services/ReaderTopicService+Interests.swift +++ b/WordPress/Classes/Services/ReaderTopicService+Interests.swift @@ -17,9 +17,9 @@ extension ReaderTopicService: ReaderInterestsService { failure: @escaping (Error) -> Void) { let service = ReaderTopicServiceRemote(wordPressComRestApi: apiRequest()) - service.fetchInterests({ (interests) in + service.fetchInterests({ interests in success(interests) - }) { (error) in + }) { error in failure(error) } } diff --git a/WordPress/Classes/Services/RoleService.swift b/WordPress/Classes/Services/RoleService.swift index 06c3dad7082b..3aee487725d4 100644 --- a/WordPress/Classes/Services/RoleService.swift +++ b/WordPress/Classes/Services/RoleService.swift @@ -25,7 +25,7 @@ struct RoleService { /// Forces a refresh of roles from the api and stores them in Core Data. /// func fetchRoles(success: @escaping () -> Void, failure: @escaping (Error) -> Void) { - remote.getUserRoles(siteID, success: { (remoteRoles) in + remote.getUserRoles(siteID, success: { remoteRoles in self.coreDataStack.performAndSave({ context in self.mergeRoles(remoteRoles, in: context) }, completion: success, on: .main) diff --git a/WordPress/Classes/Services/SharingService.swift b/WordPress/Classes/Services/SharingService.swift index 928c619fa4ae..fc857bfa8446 100644 --- a/WordPress/Classes/Services/SharingService.swift +++ b/WordPress/Classes/Services/SharingService.swift @@ -301,7 +301,7 @@ import WordPressKit let currentPublicizeServices = (try? PublicizeService.allPublicizeServices(in: context)) ?? [] // Create or update based on the contents synced. - let servicesToKeep = remoteServices.map { (remoteService) -> PublicizeService in + let servicesToKeep = remoteServices.map { remoteService -> PublicizeService in self.createOrReplaceFromRemotePublicizeService(remoteService, in: context) } @@ -424,7 +424,7 @@ import WordPressKit let currentSharingbuttons = try SharingButton.allSharingButtons(for: blog, in: context) // Create or update based on the contents synced. - let buttonsToKeep = remoteSharingButtons.map { (remoteButton) -> SharingButton in + let buttonsToKeep = remoteSharingButtons.map { remoteButton -> SharingButton in return self.createOrReplaceFromRemoteSharingButton(remoteButton, blog: blog, in: context) } @@ -475,7 +475,7 @@ import WordPressKit /// - Returns: An array of `RemoteSharingButton` objects. /// private func remoteShareButtonsFromShareButtons(_ shareButtons: [SharingButton]) -> [RemoteSharingButton] { - return shareButtons.map { (shareButton) -> RemoteSharingButton in + return shareButtons.map { shareButton -> RemoteSharingButton in let btn = RemoteSharingButton() btn.buttonID = shareButton.buttonID btn.name = shareButton.name diff --git a/WordPress/Classes/Services/SharingSyncService.swift b/WordPress/Classes/Services/SharingSyncService.swift index bf6baab6391c..d65a11ccb10e 100644 --- a/WordPress/Classes/Services/SharingSyncService.swift +++ b/WordPress/Classes/Services/SharingSyncService.swift @@ -80,7 +80,7 @@ import WordPressKit let currentPublicizeConnections = self.allPublicizeConnections(for: blog, in: context) // Create or update based on the contents synced. - let connectionsToKeep = remoteConnections.map { (remoteConnection) -> PublicizeConnection in + let connectionsToKeep = remoteConnections.map { remoteConnection -> PublicizeConnection in let pubConnection = PublicizeConnection.createOrReplace(from: remoteConnection, in: context) pubConnection.blog = blog return pubConnection diff --git a/WordPress/Classes/Stores/JetpackInstallStore.swift b/WordPress/Classes/Stores/JetpackInstallStore.swift index b943c297da15..164fd75a66bc 100644 --- a/WordPress/Classes/Stores/JetpackInstallStore.swift +++ b/WordPress/Classes/Stores/JetpackInstallStore.swift @@ -42,8 +42,8 @@ private extension JetpackInstallStore { } state.current = .loading - service.installJetpack(url: url, username: username, password: password) { [weak self] (success, error) in - self?.transaction({ (state) in + service.installJetpack(url: url, username: username, password: password) { [weak self] success, error in + self?.transaction({ state in if success { state.current = .success } else { diff --git a/WordPress/Classes/Stores/PluginStore.swift b/WordPress/Classes/Stores/PluginStore.swift index bebf48ea2557..89109486efdd 100644 --- a/WordPress/Classes/Stores/PluginStore.swift +++ b/WordPress/Classes/Stores/PluginStore.swift @@ -321,8 +321,8 @@ class PluginStore: QueryStore { // MARK: - Selectors extension PluginStore { func getPlugins(site: JetpackSiteRef) -> Plugins? { - return state.plugins[site].map({ (sitePlugins) in - let plugins = sitePlugins.plugins.map({ (state) -> Plugin in + return state.plugins[site].map({ sitePlugins in + let plugins = sitePlugins.plugins.map({ state -> Plugin in let entry = getPluginDirectoryEntry(slug: state.slug) return Plugin(state: state, directoryEntry: entry) }) @@ -408,7 +408,7 @@ private extension PluginStore { guard let plugin = getPlugin(id: pluginID, site: site) else { return } - state.modifyPlugin(id: pluginID, site: site) { (plugin) in + state.modifyPlugin(id: pluginID, site: site) { plugin in plugin.active = true } @@ -417,10 +417,10 @@ private extension PluginStore { remote(site: site)?.activatePlugin( pluginID: plugin.state.id, success: {}, - failure: { [weak self] (error) in + failure: { [weak self] error in let message = String(format: NSLocalizedString("Error activating %@.", comment: "There was an error activating a plugin, placeholder is the plugin name"), plugin.name) self?.notifyRemoteError(message: message, error: error) - self?.state.modifyPlugin(id: pluginID, site: site, change: { (plugin) in + self?.state.modifyPlugin(id: pluginID, site: site, change: { plugin in plugin.active = false }) }) @@ -430,7 +430,7 @@ private extension PluginStore { guard let plugin = getPlugin(id: pluginID, site: site) else { return } - state.modifyPlugin(id: pluginID, site: site) { (plugin) in + state.modifyPlugin(id: pluginID, site: site) { plugin in plugin.active = false } @@ -439,10 +439,10 @@ private extension PluginStore { remote(site: site)?.deactivatePlugin( pluginID: plugin.state.id, success: {}, - failure: { [weak self] (error) in + failure: { [weak self] error in let message = String(format: NSLocalizedString("Error deactivating %@.", comment: "There was an error deactivating a plugin, placeholder is the plugin name"), plugin.name) self?.notifyRemoteError(message: message, error: error) - self?.state.modifyPlugin(id: pluginID, site: site, change: { (plugin) in + self?.state.modifyPlugin(id: pluginID, site: site, change: { plugin in plugin.active = true }) }) @@ -452,7 +452,7 @@ private extension PluginStore { guard let plugin = getPlugin(id: pluginID, site: site) else { return } - state.modifyPlugin(id: pluginID, site: site) { (plugin) in + state.modifyPlugin(id: pluginID, site: site) { plugin in plugin.autoupdate = true } @@ -461,10 +461,10 @@ private extension PluginStore { remote(site: site)?.enableAutoupdates( pluginID: plugin.state.id, success: {}, - failure: { [weak self] (error) in + failure: { [weak self] error in let message = String(format: NSLocalizedString("Error enabling autoupdates for %@.", comment: "There was an error enabling autoupdates for a plugin, placeholder is the plugin name"), plugin.name) self?.notifyRemoteError(message: message, error: error) - self?.state.modifyPlugin(id: pluginID, site: site, change: { (plugin) in + self?.state.modifyPlugin(id: pluginID, site: site, change: { plugin in plugin.autoupdate = false }) }) @@ -474,7 +474,7 @@ private extension PluginStore { guard let plugin = getPlugin(id: pluginID, site: site) else { return } - state.modifyPlugin(id: pluginID, site: site) { (plugin) in + state.modifyPlugin(id: pluginID, site: site) { plugin in plugin.autoupdate = false } @@ -483,10 +483,10 @@ private extension PluginStore { remote(site: site)?.disableAutoupdates( pluginID: plugin.state.id, success: {}, - failure: { [weak self] (error) in + failure: { [weak self] error in let message = String(format: NSLocalizedString("Error disabling autoupdates for %@.", comment: "There was an error disabling autoupdates for a plugin, placeholder is the plugin name"), plugin.name) self?.notifyRemoteError(message: message, error: error) - self?.state.modifyPlugin(id: pluginID, site: site, change: { (plugin) in + self?.state.modifyPlugin(id: pluginID, site: site, change: { plugin in plugin.autoupdate = true }) }) @@ -544,9 +544,9 @@ private extension PluginStore { case let .available(version) = plugin.state.updateState else { return } - transaction { (state) in + transaction { state in state.updatesInProgress[site, default: Set()].insert(pluginID) - state.modifyPlugin(id: pluginID, site: site, change: { (plugin) in + state.modifyPlugin(id: pluginID, site: site, change: { plugin in plugin.updateState = .updating(version) }) } @@ -554,17 +554,17 @@ private extension PluginStore { remote(site: site)?.updatePlugin( pluginID: plugin.state.id, - success: { [weak self] (plugin) in - self?.transaction({ (state) in - state.modifyPlugin(id: pluginID, site: site, change: { (updatedPlugin) in + success: { [weak self] plugin in + self?.transaction({ state in + state.modifyPlugin(id: pluginID, site: site, change: { updatedPlugin in updatedPlugin = plugin }) state.updatesInProgress[site]?.remove(pluginID) }) }, - failure: { [weak self] (error) in - self?.transaction({ (state) in - state.modifyPlugin(id: pluginID, site: site, change: { (updatedPlugin) in + failure: { [weak self] error in + self?.transaction({ state in + state.modifyPlugin(id: pluginID, site: site, change: { updatedPlugin in updatedPlugin.updateState = .available(version) }) state.updatesInProgress[site]?.remove(pluginID) @@ -587,7 +587,7 @@ private extension PluginStore { return } - let failure: (Error) -> Void = { [weak self] (error) in + let failure: (Error) -> Void = { [weak self] error in let message = String(format: NSLocalizedString("Error removing %@.", comment: "There was an error removing a plugin, placeholder is the plugin name"), plugin.name) self?.notifyRemoteError(message: message, error: error) self?.refreshPlugins(site: site) @@ -639,10 +639,10 @@ private extension PluginStore { } state.fetching[site] = true remote.getPlugins( - success: { [actionDispatcher] (plugins) in + success: { [actionDispatcher] plugins in actionDispatcher.dispatch(PluginAction.receivePlugins(site: site, plugins: plugins)) }, - failure: { [actionDispatcher] (error) in + failure: { [actionDispatcher] error in actionDispatcher.dispatch(PluginAction.receivePluginsFailed(site: site, error: error)) }) } @@ -650,7 +650,7 @@ private extension PluginStore { func receivePlugins(site: JetpackSiteRef, plugins: SitePlugins) { var plugins = plugins if let updatesForSite = state.updatesInProgress[site].map(Set.init(_:)) { - plugins.plugins = plugins.plugins.map({ (plugin) in + plugins.plugins = plugins.plugins.map({ plugin in var plugin = plugin if case let .available(version) = plugin.updateState, updatesForSite.contains(plugin.id) { @@ -660,7 +660,7 @@ private extension PluginStore { }) } if BlogService.blog(with: site)?.isAutomatedTransfer == true { - plugins.plugins = plugins.plugins.map({ (plugin) in + plugins.plugins = plugins.plugins.map({ plugin in var plugin = plugin if ["akismet", "jetpack", "vaultpress"].contains(plugin.slug) { plugin.automanaged = true @@ -668,7 +668,7 @@ private extension PluginStore { return plugin }) } - transaction { (state) in + transaction { state in state.plugins[site] = plugins state.fetching[site] = false state.lastFetch[site] = Date() @@ -677,7 +677,7 @@ private extension PluginStore { } func receivePluginsFailed(site: JetpackSiteRef) { - transaction { (state) in + transaction { state in state.fetching[site] = false state.lastFetch[site] = Date() } @@ -704,14 +704,14 @@ private extension PluginStore { } func receivePluginDirectoryEntry(slug: String, entry: PluginDirectoryEntry) { - transaction { (state) in + transaction { state in state.directoryEntries[slug] = .present(entry) state.fetchingDirectoryEntry[slug] = false } } func receivePluginDirectoryEntryFailed(slug: String, error: Error) { - transaction { (state) in + transaction { state in if (error as? PluginDirectoryGetInformationEndpoint.Error) == .pluginNotFound { state.directoryEntries[slug] = .missing(Date()) } @@ -761,7 +761,7 @@ private extension PluginStore { let zippedPlugins = zip(response.pageMetadata.pluginSlugs, response.plugins.map { PluginDirectoryEntryState.partial($0)}) let plugins = Dictionary(uniqueKeysWithValues: zippedPlugins) - transaction { (state) in + transaction { state in state.fetchingDirectoryFeed[feed.slug] = false state.directoryFeeds[feed.slug] = response.pageMetadata state.lastDirectoryFeedFetch[feed.slug] = Date() diff --git a/WordPress/Classes/System/Root View/RootViewPresenter+EditorNavigation.swift b/WordPress/Classes/System/Root View/RootViewPresenter+EditorNavigation.swift index bd2c12eb1463..9cce179bf9cc 100644 --- a/WordPress/Classes/System/Root View/RootViewPresenter+EditorNavigation.swift +++ b/WordPress/Classes/System/Root View/RootViewPresenter+EditorNavigation.swift @@ -61,7 +61,7 @@ extension RootViewPresenter { WPAnalytics.track(WPAnalyticsEvent.editorCreatedPage, properties: [WPAppAnalyticsKeyTapSource: source], blog: blog) - PageCoordinator.showLayoutPickerIfNeeded(from: rootViewController, forBlog: blog) { [weak self] (selectedLayout) in + PageCoordinator.showLayoutPickerIfNeeded(from: rootViewController, forBlog: blog) { [weak self] selectedLayout in self?.showEditor(blog: blog, title: selectedLayout?.title, content: selectedLayout?.content) } } diff --git a/WordPress/Classes/System/WordPressAppDelegate.swift b/WordPress/Classes/System/WordPressAppDelegate.swift index 3537059b415e..c2d9c6d67321 100644 --- a/WordPress/Classes/System/WordPressAppDelegate.swift +++ b/WordPress/Classes/System/WordPressAppDelegate.swift @@ -405,7 +405,7 @@ extension WordPressAppDelegate { } func configureSelfHostedChallengeHandler() { - WordPressOrgXMLRPCApi.onChallenge = { (challenge, completionHandler) in + WordPressOrgXMLRPCApi.onChallenge = { challenge, completionHandler in guard let alertController = HTTPAuthenticationAlertController.controller(for: challenge, handler: completionHandler) else { completionHandler(.performDefaultHandling, nil) return @@ -782,7 +782,7 @@ extension WordPressAppDelegate { } // Get the Apple User ID state. If not authorized, log out the account. - WordPressAuthenticator.shared.getAppleIDCredentialState(for: appleUserID) { [weak self] (state, error) in + WordPressAuthenticator.shared.getAppleIDCredentialState(for: appleUserID) { [weak self] state, error in Loggers.app.debug("checkAppleIDCredentialState: Apple ID state: \(state.rawValue)") diff --git a/WordPress/Classes/Utility/AccountHelper.swift b/WordPress/Classes/Utility/AccountHelper.swift index 7a9f6963b588..8d1083a65186 100644 --- a/WordPress/Classes/Utility/AccountHelper.swift +++ b/WordPress/Classes/Utility/AccountHelper.swift @@ -62,11 +62,11 @@ import WordPressData let accountsDescription = "wp.com account: " + (defaultAccount?.logDescription ?? "") + otherAccounts let blogTree = - blogsByAccount.map({ (account, blogs) -> String in + blogsByAccount.map({ account, blogs -> String in let accountDescription = account?.logDescription ?? "" let isDefault = (account != nil && account == defaultAccount) ? " (default)" : "" let blogsDescription = - blogs.map({ (blog) -> String in + blogs.map({ blog -> String in "└─ " + blog.logDescription }) .joined(separator: "\n") diff --git a/WordPress/Classes/Utility/Analytics/WPAnalyticsEvent.swift b/WordPress/Classes/Utility/Analytics/WPAnalyticsEvent.swift index cb2b0661af66..ed90a13240e2 100644 --- a/WordPress/Classes/Utility/Analytics/WPAnalyticsEvent.swift +++ b/WordPress/Classes/Utility/Analytics/WPAnalyticsEvent.swift @@ -1996,7 +1996,7 @@ extension WPAnalytics { #endif var mergedProperties: [AnyHashable: Any] = event.defaultProperties ?? [:] - mergedProperties.merge(properties) { (_, new) in new } + mergedProperties.merge(properties) { _, new in new } WPAnalytics.trackString(event.value, withProperties: mergedProperties) } @@ -2120,7 +2120,7 @@ extension WPAnalytics { if let value { let additionalProperties: [AnyHashable: Any] = ["value": value] - properties.merge(additionalProperties) { (_, new) in new } + properties.merge(additionalProperties) { _, new in new } } WPAnalytics.track(.settingsDidChange, properties: properties) diff --git a/WordPress/Classes/Utility/AppIcon.swift b/WordPress/Classes/Utility/AppIcon.swift index 2c8c6128f9c8..f396a74e7bda 100644 --- a/WordPress/Classes/Utility/AppIcon.swift +++ b/WordPress/Classes/Utility/AppIcon.swift @@ -55,7 +55,7 @@ struct AppIcon { return [defaultIcon] } - let customIcons = iconDict.compactMap { (key, value) -> AppIcon? in + let customIcons = iconDict.compactMap { key, value -> AppIcon? in guard let value = value as? [String: Any] else { return nil } diff --git a/WordPress/Classes/Utility/Automated Transfer/AutomatedTransferHelper.swift b/WordPress/Classes/Utility/Automated Transfer/AutomatedTransferHelper.swift index 9c52fa2621d8..764be4b00f3f 100644 --- a/WordPress/Classes/Utility/Automated Transfer/AutomatedTransferHelper.swift +++ b/WordPress/Classes/Utility/Automated Transfer/AutomatedTransferHelper.swift @@ -76,7 +76,7 @@ class AutomatedTransferHelper { self.delayWrapper = nil success() }, - failure: { (error) in + failure: { error in DDLogInfo(("[AT] Site ineligible for AT, error: \(error)")) let errorMessage: String @@ -167,7 +167,7 @@ class AutomatedTransferHelper { self.updateAutomatedTransferStatus() } - }, failure: { (error) in + }, failure: { error in // The async nature of AT process bites us here again. Sometimes, even though the backend says // 'hell yeah son, everything's fine, go ahead!' in the eligibility check, trying to actually @@ -222,7 +222,7 @@ class AutomatedTransferHelper { private func updateAutomatedTransferStatus() { // Definining this here, because we also want to be able to call it if we "successfully" fetch a status update // and the resulting status is `failed`. - let failureBlock: ((Error?) -> ()) = { (error) in + let failureBlock: ((Error?) -> ()) = { error in DDLogInfo("[AT] Status update failed: \(String(describing: error))") WPAnalytics.track(.automatedTransferStatusFailed) @@ -231,7 +231,7 @@ class AutomatedTransferHelper { ActionDispatcher.dispatch(NoticeAction.post(Notice(title: Constants.PluginNameStrings.genericErrorMessage(self.plugin.name)))) } - automatedTransferService.fetchAutomatedTransferStatus(siteID: site.siteID, success: { (status) in + automatedTransferService.fetchAutomatedTransferStatus(siteID: site.siteID, success: { status in DDLogInfo("[AT] Received AT status update: \(status)") guard status.status != .error else { @@ -284,7 +284,7 @@ class AutomatedTransferHelper { // after we refreshed the site, we need to manually fetch plugins so the directory/detail screens has correct data. self.reloadPlugins() - }, failure: { (error) in + }, failure: { error in DDLogInfo("[AT] Failed to fetch site info, error: \(error)") // It's expected for this call to initially fail, due to how JP/AT works. @@ -322,7 +322,7 @@ class AutomatedTransferHelper { DDLogInfo("[AT] Fetching site plugins.") let pluginsRemote = PluginServiceRemote(wordPressComRestApi: automatedTransferService.wordPressComRestApi) - pluginsRemote.getPlugins(siteID: site.siteID, success: { (plugins) in + pluginsRemote.getPlugins(siteID: site.siteID, success: { plugins in // This was the last step in the process! The transfer is complete. Time to celebrate 🎇🎉✨ DDLogInfo("[AT] Successfully fetched plugins.") DDLogInfo("[AT] AT Process complete.") @@ -332,7 +332,7 @@ class AutomatedTransferHelper { ActionDispatcher.dispatch(PluginAction.receivePlugins(site: self.site, plugins: plugins)) SVProgressHUD.dismiss() ActionDispatcher.dispatch(NoticeAction.post(Notice(title: Constants.PluginNameStrings.successMessage(self.plugin.name)))) - }, failure: { (error) in + }, failure: { error in DDLogInfo("[AT] Failed to fetch plugins, error: \(error)") // Same spiel as with site refresh — it's semi-expected for this call to fail initially. diff --git a/WordPress/Classes/Utility/BackgroundTasks/WeeklyRoundupBackgroundTask.swift b/WordPress/Classes/Utility/BackgroundTasks/WeeklyRoundupBackgroundTask.swift index 5ef650804e82..601751aef1ed 100644 --- a/WordPress/Classes/Utility/BackgroundTasks/WeeklyRoundupBackgroundTask.swift +++ b/WordPress/Classes/Utility/BackgroundTasks/WeeklyRoundupBackgroundTask.swift @@ -145,7 +145,7 @@ private class WeeklyRoundupDataProvider { /// definition of "best" through a sorting mechanism where the "best" sites are placed first. /// private func filterBest(_ count: Int, minimumViewsCount: Int = 5, from blogStats: SiteStats) -> SiteStats { - let filteredAndSorted = blogStats.filter { (_, stats) in + let filteredAndSorted = blogStats.filter { _, stats in stats.viewsCount >= minimumViewsCount }.sorted { (first: (_, value: StatsSummaryData), second: (_, value: StatsSummaryData)) in first.value.viewsCount >= second.value.viewsCount diff --git a/WordPress/Classes/Utility/Blogging Reminders/BloggingRemindersScheduleFormatter.swift b/WordPress/Classes/Utility/Blogging Reminders/BloggingRemindersScheduleFormatter.swift index 007a2df93a4c..a6170353ff86 100644 --- a/WordPress/Classes/Utility/Blogging Reminders/BloggingRemindersScheduleFormatter.swift +++ b/WordPress/Classes/Utility/Blogging Reminders/BloggingRemindersScheduleFormatter.swift @@ -39,7 +39,7 @@ struct BloggingRemindersScheduleFormatter { // We want the days sorted by their localized index because under some locale configurations // Sunday is the first day of the week, whereas in some other localizations Monday comes first. - let sortedDays = days.sorted { (first, second) -> Bool in + let sortedDays = days.sorted { first, second -> Bool in let firstIndex = self.calendar.localizedWeekdayIndex(unlocalizedWeekdayIndex: first.rawValue) let secondIndex = self.calendar.localizedWeekdayIndex(unlocalizedWeekdayIndex: second.rawValue) @@ -128,7 +128,7 @@ private extension BloggingRemindersScheduleFormatter { // This loop applies the default font to the whole text, while keeping any symbolic attributes the previous font may // have had (such as bold style). - attributedString.enumerateAttribute(.font, in: NSRange(location: 0, length: attributedString.length)) { (value, range, _) in + attributedString.enumerateAttribute(.font, in: NSRange(location: 0, length: attributedString.length)) { value, range, _ in guard let oldFont = value as? UIFont, let newDescriptor = UIFontDescriptor.preferredFontDescriptor(withTextStyle: .body) diff --git a/WordPress/Classes/Utility/Blogging Reminders/BloggingRemindersScheduler.swift b/WordPress/Classes/Utility/Blogging Reminders/BloggingRemindersScheduler.swift index f5c798df9503..5e278768aa87 100644 --- a/WordPress/Classes/Utility/Blogging Reminders/BloggingRemindersScheduler.swift +++ b/WordPress/Classes/Utility/Blogging Reminders/BloggingRemindersScheduler.swift @@ -380,7 +380,7 @@ class BloggingRemindersScheduler { let uuidString = UUID().uuidString let request = UNNotificationRequest(identifier: uuidString, content: content, trigger: trigger) - notificationScheduler.add(request) { (error) in + notificationScheduler.add(request) { error in if let error { DDLogError("\(error)") } diff --git a/WordPress/Classes/Utility/Editor/GutenbergSettings.swift b/WordPress/Classes/Utility/Editor/GutenbergSettings.swift index c152db2f9e20..21b0052a39b1 100644 --- a/WordPress/Classes/Utility/Editor/GutenbergSettings.swift +++ b/WordPress/Classes/Utility/Editor/GutenbergSettings.swift @@ -155,7 +155,7 @@ class GutenbergSettings { /// - Parameter blog: The site to synch editor settings func postSettingsToRemote(for blog: Blog) { let editorSettingsService = EditorSettingsService(coreDataStack: coreDataStack) - editorSettingsService.postEditorSetting(for: blog, success: {}) { (error) in + editorSettingsService.postEditorSetting(for: blog, success: {}) { error in DDLogError("Failed to post new post selection with Error: \(error)") } } diff --git a/WordPress/Classes/Utility/Logging/SentryStartupEvent.swift b/WordPress/Classes/Utility/Logging/SentryStartupEvent.swift index 66046ba9dc5b..0cde03713d1a 100644 --- a/WordPress/Classes/Utility/Logging/SentryStartupEvent.swift +++ b/WordPress/Classes/Utility/Logging/SentryStartupEvent.swift @@ -33,7 +33,7 @@ startup time. This will block the thread. Do not use unless you're sure. // Send the event and block the thread until it was actually sent @objc func send(title: String) { - let userInfo = errors.enumerated().reduce(into: [String: Any](), { (result, arg1) in + let userInfo = errors.enumerated().reduce(into: [String: Any](), { result, arg1 in let (index, errorWithCaller) = arg1 let error = errorWithCaller.error result["Error \(index + 1)"] = [ diff --git a/WordPress/Classes/Utility/Media/MediaThumbnailExporter.swift b/WordPress/Classes/Utility/Media/MediaThumbnailExporter.swift index bcb6b377b2d2..79188ccfab9d 100644 --- a/WordPress/Classes/Utility/Media/MediaThumbnailExporter.swift +++ b/WordPress/Classes/Utility/Media/MediaThumbnailExporter.swift @@ -145,7 +145,7 @@ class MediaThumbnailExporter: MediaExporter { onError(exporterErrorWith(error: ThumbnailExportError.failedToGenerateThumbnailFileURL)) return Progress.discreteCompletedProgress() } - return exportThumbnail(forFile: fileURL, onCompletion: { (_, export) in + return exportThumbnail(forFile: fileURL, onCompletion: { _, export in onCompletion(export) }, onError: onError) } @@ -189,7 +189,7 @@ class MediaThumbnailExporter: MediaExporter { let exporter = MediaImageExporter(url: url) exporter.mediaDirectoryType = .temporary exporter.options = imageExporterOptions - return exporter.export(onCompletion: { (export) in + return exporter.export(onCompletion: { export in self.exportImageToThumbnailCache(export, onCompletion: onCompletion, onError: onError) }, onError: onError) @@ -202,7 +202,7 @@ class MediaThumbnailExporter: MediaExporter { exporter.mediaDirectoryType = .temporary return exporter.exportPreviewImageForVideo(atURL: url, imageOptions: imageExporterOptions, - onCompletion: { (export) in + onCompletion: { export in self.exportImageToThumbnailCache(export, onCompletion: onCompletion, onError: onError) }, onError: onError) diff --git a/WordPress/Classes/Utility/Media/MediaURLExporter.swift b/WordPress/Classes/Utility/Media/MediaURLExporter.swift index 344854cf77a6..e16f13273142 100644 --- a/WordPress/Classes/Utility/Media/MediaURLExporter.swift +++ b/WordPress/Classes/Utility/Media/MediaURLExporter.swift @@ -118,7 +118,7 @@ class MediaURLExporter: MediaExporter { exporter.options = options } return exporter.export( - onCompletion: { (imageExport) in + onCompletion: { imageExport in onCompletion(imageExport) }, onError: onError) diff --git a/WordPress/Classes/Utility/Media/MediaVideoExporter.swift b/WordPress/Classes/Utility/Media/MediaVideoExporter.swift index a3bc6a253a99..42e8916336c4 100644 --- a/WordPress/Classes/Utility/Media/MediaVideoExporter.swift +++ b/WordPress/Classes/Utility/Media/MediaVideoExporter.swift @@ -208,7 +208,7 @@ class MediaVideoExporter: MediaExporter { generator.cancelAllCGImageGeneration() } generator.generateCGImagesAsynchronously(forTimes: [NSValue(time: CMTimeMake(value: 0, timescale: 1))], - completionHandler: { (_, cgImage, _, _, _) in + completionHandler: { _, cgImage, _, _, _ in progress.completedUnitCount = MediaExportProgressUnits.halfDone guard let cgImage else { onError(VideoExportError.failedGeneratingVideoPreviewImage) diff --git a/WordPress/Classes/Utility/Notifications/InteractiveNotificationsManager.swift b/WordPress/Classes/Utility/Notifications/InteractiveNotificationsManager.swift index ccd10dc6223d..19397b3cd861 100644 --- a/WordPress/Classes/Utility/Notifications/InteractiveNotificationsManager.swift +++ b/WordPress/Classes/Utility/Notifications/InteractiveNotificationsManager.swift @@ -61,7 +61,7 @@ final class InteractiveNotificationsManager: NSObject { let options: UNAuthorizationOptions = [.badge, .sound, .alert, .providesAppNotificationSettings] let notificationCenter = UNUserNotificationCenter.current() - notificationCenter.requestAuthorization(options: options) { [weak self] (allowed, _) in + notificationCenter.requestAuthorization(options: options) { [weak self] allowed, _ in DispatchQueue.main.async { if allowed { WPAnalytics.track(.pushNotificationOSAlertAllowed) diff --git a/WordPress/Classes/Utility/Notifications/PushAuthenticationManager.swift b/WordPress/Classes/Utility/Notifications/PushAuthenticationManager.swift index 4a7aa5fa249f..f7e95ad382f4 100644 --- a/WordPress/Classes/Utility/Notifications/PushAuthenticationManager.swift +++ b/WordPress/Classes/Utility/Notifications/PushAuthenticationManager.swift @@ -153,7 +153,7 @@ private extension PushAuthenticationManager { alertControllerProxy.show(withTitle: title, message: message, cancelButtonTitle: cancelButtonTitle, - otherButtonTitles: [acceptButtonTitle]) { (theAlertController, buttonIndex) in + otherButtonTitles: [acceptButtonTitle]) { theAlertController, buttonIndex in let approved = theAlertController?.actions[buttonIndex].style != .cancel completion(approved) } diff --git a/WordPress/Classes/Utility/Reachability/ReachabilityUtils+OnlineActions.swift b/WordPress/Classes/Utility/Reachability/ReachabilityUtils+OnlineActions.swift index b844bb93d592..15b7c19f5b64 100644 --- a/WordPress/Classes/Utility/Reachability/ReachabilityUtils+OnlineActions.swift +++ b/WordPress/Classes/Utility/Reachability/ReachabilityUtils+OnlineActions.swift @@ -38,7 +38,7 @@ extension ReachabilityUtils { object: nil, queue: .main, using: { _ in action() }, - filter: { (notification) in + filter: { notification in return notification.userInfo?[Foundation.Notification.reachabilityKey] as? Bool == true }) } diff --git a/WordPress/Classes/Utility/Universal Links/RouteMatcher.swift b/WordPress/Classes/Utility/Universal Links/RouteMatcher.swift index bd35e24f36e0..053fe5f909ed 100644 --- a/WordPress/Classes/Utility/Universal Links/RouteMatcher.swift +++ b/WordPress/Classes/Utility/Universal Links/RouteMatcher.swift @@ -47,7 +47,7 @@ class RouteMatcher { return nil } - let allValues = values.merging(placeholderValues, uniquingKeysWith: { (current, _) in current }) + let allValues = values.merging(placeholderValues, uniquingKeysWith: { current, _ in current }) return route.matched(with: allValues) }.first } diff --git a/WordPress/Classes/Utility/WebViewController/CookieJar.swift b/WordPress/Classes/Utility/WebViewController/CookieJar.swift index 4dca746dc93c..a23bdf3d9576 100644 --- a/WordPress/Classes/Utility/WebViewController/CookieJar.swift +++ b/WordPress/Classes/Utility/WebViewController/CookieJar.swift @@ -26,7 +26,7 @@ extension CookieJar { } private func hasWordPressAuthCookie(for url: URL, username: String, atomicSite: Bool, completion: @escaping (Bool) -> Void) { - getCookies(url: url) { (cookies) in + getCookies(url: url) { cookies in let cookie = cookies .contains(where: { cookie in return cookie.isWordPressLoggedIn(username: username, atomic: atomicSite) @@ -37,7 +37,7 @@ extension CookieJar { } func removeWordPressComCookies(completion: @escaping () -> Void) { - getCookies { [unowned self] (cookies) in + getCookies { [unowned self] cookies in self.removeCookies(cookies.filter({ $0.domain.hasSuffix(".wordpress.com") }), completion: completion) } } @@ -82,8 +82,8 @@ extension WKHTTPCookieStore: CookieJar { var urlCookies: [HTTPCookie] = [] DispatchQueue.main.async { - self.getAllCookies { (cookies) in - urlCookies = cookies.filter({ (cookie) in + self.getAllCookies { cookies in + urlCookies = cookies.filter({ cookie in return cookie.matches(url: url) }) group.leave() @@ -108,7 +108,7 @@ extension WKHTTPCookieStore: CookieJar { func removeCookies(_ cookies: [HTTPCookie], completion: @escaping () -> Void) { let group = DispatchGroup() cookies - .forEach({ [unowned self] (cookie) in + .forEach({ [unowned self] cookie in group.enter() self.delete(cookie, completionHandler: { group.leave() diff --git a/WordPress/Classes/Utility/WebViewController/WebKitViewController.swift b/WordPress/Classes/Utility/WebViewController/WebKitViewController.swift index 054f62c14665..68b56355093d 100644 --- a/WordPress/Classes/Utility/WebViewController/WebKitViewController.swift +++ b/WordPress/Classes/Utility/WebViewController/WebKitViewController.swift @@ -20,7 +20,7 @@ extension WebKitAuthenticatable { } DispatchQueue.main.async { - authenticator.request(url: url, cookieJar: cookieJar) { (request) in + authenticator.request(url: url, cookieJar: cookieJar) { request in completion(request) } } @@ -241,7 +241,7 @@ class WebKitViewController: UIViewController, WebKitAuthenticatable { return } - authenticatedRequest(for: url, on: webView) { [weak self] (request) in + authenticatedRequest(for: url, on: webView) { [weak self] request in self?.load(request: request) } } @@ -400,7 +400,7 @@ class WebKitViewController: UIViewController, WebKitAuthenticatable { activityViewController.modalPresentationStyle = .popover activityViewController.popoverPresentationController?.barButtonItem = shareButton - activityViewController.completionWithItemsHandler = { (type, completed, _, _) in + activityViewController.completionWithItemsHandler = { type, completed, _, _ in if completed, let type = type?.rawValue { WPActivityDefaults.trackActivityType(type) } diff --git a/WordPress/Classes/Utility/ZendeskUtils.swift b/WordPress/Classes/Utility/ZendeskUtils.swift index 9be0aabfe62d..bd11eb7028cb 100644 --- a/WordPress/Classes/Utility/ZendeskUtils.swift +++ b/WordPress/Classes/Utility/ZendeskUtils.swift @@ -588,7 +588,7 @@ private extension ZendeskUtils { return } - ZDKPushProvider(zendesk: zendeskInstance).register(deviceIdentifier: deviceID, locale: appLanguage) { (_, error) in + ZDKPushProvider(zendesk: zendeskInstance).register(deviceIdentifier: deviceID, locale: appLanguage) { _, error in if let error { DDLogInfo("Zendesk couldn't register device: \(deviceID). Error: \(error)") } else { @@ -872,14 +872,14 @@ private extension ZendeskUtils { // Cancel Action if let cancel = alertOptions.cancel { - alertController.addCancelActionWithTitle(cancel) { (_) in + alertController.addCancelActionWithTitle(cancel) { _ in completion(false) return } } // Submit Action - let submitAction = alertController.addDefaultActionWithTitle(alertOptions.submit) { [weak alertController] (_) in + let submitAction = alertController.addDefaultActionWithTitle(alertOptions.submit) { [weak alertController] _ in guard let email = alertController?.textFields?.first?.text, !email.isEmpty else { completion(false) return diff --git a/WordPress/Classes/ViewRelated/Aztec/Processors/VideoUploadProcessor.swift b/WordPress/Classes/ViewRelated/Aztec/Processors/VideoUploadProcessor.swift index c6eac3e9c3dc..a6b4c0e374b9 100644 --- a/WordPress/Classes/ViewRelated/Aztec/Processors/VideoUploadProcessor.swift +++ b/WordPress/Classes/ViewRelated/Aztec/Processors/VideoUploadProcessor.swift @@ -14,7 +14,7 @@ class VideoUploadProcessor: Processor { self.videoPressID = videoPressID } - lazy var videoPostMediaUploadProcessor = ShortcodeProcessor(tag: "video", replacer: { (shortcode) in + lazy var videoPostMediaUploadProcessor = ShortcodeProcessor(tag: "video", replacer: { shortcode in guard let uploadValue = shortcode.attributes[MediaAttachment.uploadKey]?.value, case let .string(uploadID) = uploadValue, self.mediaUploadID == uploadID else { diff --git a/WordPress/Classes/ViewRelated/Aztec/ViewControllers/AztecAttachmentViewController.swift b/WordPress/Classes/ViewRelated/Aztec/ViewControllers/AztecAttachmentViewController.swift index b5b16568e18c..55ee9adf0083 100644 --- a/WordPress/Classes/ViewRelated/Aztec/ViewControllers/AztecAttachmentViewController.swift +++ b/WordPress/Classes/ViewRelated/Aztec/ViewControllers/AztecAttachmentViewController.swift @@ -153,7 +153,7 @@ class AztecAttachmentViewController: UITableViewController { let values: [ImageAttachment.Alignment] = [.left, .center, .right, .none] - let titles = values.map { (value) in + let titles = values.map { value in return value.localizedString } @@ -185,7 +185,7 @@ class AztecAttachmentViewController: UITableViewController { func displaySizeSelector(row: ImmuTableRow) { let values: [ImageAttachment.Size] = [.thumbnail, .medium, .large, .full, .none] - let titles = values.map { (value) in + let titles = values.map { value in return value.localizedString } diff --git a/WordPress/Classes/ViewRelated/Aztec/ViewControllers/AztecPostViewController.swift b/WordPress/Classes/ViewRelated/Aztec/ViewControllers/AztecPostViewController.swift index cfd26fe4a7f7..4433c3c908e4 100644 --- a/WordPress/Classes/ViewRelated/Aztec/ViewControllers/AztecPostViewController.swift +++ b/WordPress/Classes/ViewRelated/Aztec/ViewControllers/AztecPostViewController.swift @@ -1590,7 +1590,7 @@ extension AztecPostViewController { } let linkSettings = LinkSettings(url: urlToUse?.absoluteString ?? "", text: title ?? "", openInNewWindow: target != nil, isNewLink: isInsertingNewLink) - let linkController = LinkSettingsViewController(settings: linkSettings, callback: { [weak self](action, settings) in + let linkController = LinkSettingsViewController(settings: linkSettings, callback: { [weak self]action, settings in guard let strongSelf = self else { return } @@ -2099,7 +2099,7 @@ extension AztecPostViewController { extension AztecPostViewController { func registerMediaObserver() { - mediaObserverReceipt = mediaCoordinator.addObserver({ [weak self](media, state) in + mediaObserverReceipt = mediaCoordinator.addObserver({ [weak self]media, state in self?.mediaObserver(media: media, state: state) }, forMediaFor: post) } @@ -2143,7 +2143,7 @@ extension AztecPostViewController { func findAttachment(withUploadID uploadID: String) -> MediaAttachment? { var result: MediaAttachment? - self.richTextView.textStorage.enumerateAttachments { (attachment, _) in + self.richTextView.textStorage.enumerateAttachments { attachment, _ in if let mediaAttachment = attachment as? MediaAttachment, mediaAttachment.uploadID == uploadID { result = mediaAttachment } @@ -2456,7 +2456,7 @@ extension AztecPostViewController { fileprivate var failedMediaIDs: [String] { var failedIDs = [String]() - richTextView.textStorage.enumerateAttachments { (attachment, _) in + richTextView.textStorage.enumerateAttachments { attachment, _ in guard let mediaAttachment = attachment as? MediaAttachment, let mediaUploadID = mediaAttachment.uploadID, let media = self.mediaCoordinator.media(withObjectID: mediaUploadID), @@ -2490,7 +2490,7 @@ extension AztecPostViewController { fileprivate func processMediaAttachments() { refreshGlobalProgress() - richTextView.textStorage.enumerateAttachments { (attachment, _) in + richTextView.textStorage.enumerateAttachments { attachment, _ in guard let mediaAttachment = attachment as? MediaAttachment else { return } @@ -2553,7 +2553,7 @@ extension AztecPostViewController { let title: String = MediaAttachmentActionSheet.title var message: String? let alertController = UIAlertController(title: title, message: nil, preferredStyle: .actionSheet) - let dismissAction = UIAlertAction(title: MediaAttachmentActionSheet.dismissActionTitle, style: .cancel) { (_) in + let dismissAction = UIAlertAction(title: MediaAttachmentActionSheet.dismissActionTitle, style: .cancel) { _ in if attachment == self.currentSelectedAttachment { self.currentSelectedAttachment = nil self.resetMediaAttachmentOverlay(attachment) @@ -2570,14 +2570,14 @@ extension AztecPostViewController { showDefaultActions = false alertController.addActionWithTitle(MediaAttachmentActionSheet.stopUploadActionTitle, style: .destructive, - handler: { (_) in + handler: { _ in self.mediaCoordinator.cancelUpload(of: media) }) } } else { alertController.addActionWithTitle(attachment is ImageAttachment ? MediaAttachmentActionSheet.removeImageActionTitle : MediaAttachmentActionSheet.removeVideoActionTitle, style: .destructive, - handler: { (_) in + handler: { _ in self.richTextView.remove(attachmentID: attachmentID) }) } @@ -2591,14 +2591,14 @@ extension AztecPostViewController { if failedMediaIDs.count > 1 { alertController.addActionWithTitle(MediaAttachmentActionSheet.retryAllFailedUploadsActionTitle, style: .default, - handler: { [weak self] (_) in + handler: { [weak self] _ in self?.retryAllFailedMediaUploads() }) } alertController.addActionWithTitle(MediaAttachmentActionSheet.retryUploadActionTitle, style: .default, - handler: { [weak self] (_) in + handler: { [weak self] _ in guard let strongSelf = self, let attachment = strongSelf.richTextView.attachment(withId: attachmentID) else { return @@ -2612,21 +2612,21 @@ extension AztecPostViewController { if let imageAttachment = attachment as? ImageAttachment { alertController.preferredAction = alertController.addActionWithTitle(MediaAttachmentActionSheet.settingsActionTitle, style: .default, - handler: { (_) in + handler: { _ in self.displayDetails(forAttachment: imageAttachment) }) if imageAttachment.isLoaded { alertController.addActionWithTitle(MediaAttachmentActionSheet.editActionTitle, style: .default, - handler: { (_) in + handler: { _ in self.edit(imageAttachment) }) } } else if let videoAttachment = attachment as? VideoAttachment { alertController.preferredAction = alertController.addActionWithTitle(MediaAttachmentActionSheet.playVideoActionTitle, style: .default, - handler: { (_) in + handler: { _ in self.displayPlayerFor(videoAttachment: videoAttachment, atPosition: position) }) } @@ -2663,7 +2663,7 @@ extension AztecPostViewController { controller.linkURL = url } - controller.onUpdate = { [weak self] (alignment, size, linkURL, alt, caption) in + controller.onUpdate = { [weak self] alignment, size, linkURL, alt, caption in guard let `self` = self else { return @@ -2720,7 +2720,7 @@ extension AztecPostViewController { return } - remote.getMetadataFromVideoPressID(videoPressID, isSitePrivate: self.post.blog.isPrivate, success: { [weak self] (metadata) in + remote.getMetadataFromVideoPressID(videoPressID, isSitePrivate: self.post.blog.isPrivate, success: { [weak self] metadata in guard let `self` = self else { return } @@ -2735,7 +2735,7 @@ extension AztecPostViewController { } self.richTextView.refresh(videoAttachment) self.displayVideoPlayer(for: newVideoURL) - }, failure: { [weak self] (error) in + }, failure: { [weak self] error in self?.displayUnableToPlayVideoAlert() DDLogError("Unable to find information for VideoPress video with ID = \(videoPressID). Details: \(String(describing: error?.localizedDescription))") }) @@ -2768,7 +2768,7 @@ extension AztecPostViewController { } func downloadImage(from url: URL, success: @escaping (UIImage) -> Void, onFailure failure: @escaping () -> Void) { - let receipt = mediaUtility.downloadImage(from: url, post: post, success: success, onFailure: { (_) in failure()}) + let receipt = mediaUtility.downloadImage(from: url, post: post, success: success, onFailure: { _ in failure()}) activeMediaRequests.append(receipt) } diff --git a/WordPress/Classes/ViewRelated/Aztec/ViewControllers/LinkSettingsViewController.swift b/WordPress/Classes/ViewRelated/Aztec/ViewControllers/LinkSettingsViewController.swift index df7168af60ee..3e410efaa9a8 100644 --- a/WordPress/Classes/ViewRelated/Aztec/ViewControllers/LinkSettingsViewController.swift +++ b/WordPress/Classes/ViewRelated/Aztec/ViewControllers/LinkSettingsViewController.swift @@ -151,7 +151,7 @@ class LinkSettingsViewController: UITableViewController { guard let blog else { return } - let selectPostViewController = SelectPostViewController(blog: blog, isSelectedPost: { [weak self] in $0.permaLink == self?.linkSettings.url }, callback: { [weak self] (post) in + let selectPostViewController = SelectPostViewController(blog: blog, isSelectedPost: { [weak self] in $0.permaLink == self?.linkSettings.url }, callback: { [weak self] post in guard let strongSelf = self, let url = post.permaLink else { return diff --git a/WordPress/Classes/ViewRelated/Blaze/Webview/BlazeCampaignDetailsWebViewModel.swift b/WordPress/Classes/ViewRelated/Blaze/Webview/BlazeCampaignDetailsWebViewModel.swift index 053fc2a5b76a..b09397813642 100644 --- a/WordPress/Classes/ViewRelated/Blaze/Webview/BlazeCampaignDetailsWebViewModel.swift +++ b/WordPress/Classes/ViewRelated/Blaze/Webview/BlazeCampaignDetailsWebViewModel.swift @@ -62,7 +62,7 @@ class BlazeCampaignDetailsWebViewModel: BlazeWebViewModel { view?.dismissView() return } - authenticatedRequest(for: initialURL, with: cookieJar) { [weak self] (request) in + authenticatedRequest(for: initialURL, with: cookieJar) { [weak self] request in guard let self else { return } diff --git a/WordPress/Classes/ViewRelated/Blaze/Webview/BlazeCreateCampaignWebViewModel.swift b/WordPress/Classes/ViewRelated/Blaze/Webview/BlazeCreateCampaignWebViewModel.swift index c47d0c51d373..5ac8f5f5c9b6 100644 --- a/WordPress/Classes/ViewRelated/Blaze/Webview/BlazeCreateCampaignWebViewModel.swift +++ b/WordPress/Classes/ViewRelated/Blaze/Webview/BlazeCreateCampaignWebViewModel.swift @@ -72,7 +72,7 @@ class BlazeCreateCampaignWebViewModel: BlazeWebViewModel { view?.dismissView() return } - authenticatedRequest(for: initialURL, with: cookieJar) { [weak self] (request) in + authenticatedRequest(for: initialURL, with: cookieJar) { [weak self] request in guard let weakSelf = self else { return } diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Pages/PagesCardViewModel.swift b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Pages/PagesCardViewModel.swift index 577976289263..87732a87f377 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Pages/PagesCardViewModel.swift +++ b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Pages/PagesCardViewModel.swift @@ -57,7 +57,7 @@ class PagesCardViewModel: NSObject { typealias Snapshot = NSDiffableDataSourceSnapshot typealias PagesSnapshot = NSDiffableDataSourceSnapshot - lazy var diffableDataSource = DataSource(tableView: view!.tableView) { [weak self] (tableView, indexPath, item) -> UITableViewCell? in + lazy var diffableDataSource = DataSource(tableView: view!.tableView) { [weak self] tableView, indexPath, item -> UITableViewCell? in guard let self else { return nil } diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Posts/PostsCardViewModel.swift b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Posts/PostsCardViewModel.swift index b01659bf2271..5d2ee376a03e 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Posts/PostsCardViewModel.swift +++ b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Posts/PostsCardViewModel.swift @@ -55,7 +55,7 @@ class PostsCardViewModel: NSObject { typealias Snapshot = NSDiffableDataSourceSnapshot typealias PostsSnapshot = NSDiffableDataSourceSnapshot - lazy var diffableDataSource = DataSource(tableView: view!.tableView) { [weak self] (tableView, indexPath, item) -> UITableViewCell? in + lazy var diffableDataSource = DataSource(tableView: view!.tableView) { [weak self] tableView, indexPath, item -> UITableViewCell? in guard let self else { return nil } diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift index 4f441d713e58..b3b02ea7df6d 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift +++ b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift @@ -478,10 +478,10 @@ private extension DashboardPromptsCardCell { return } - bloggingPromptsService.todaysPrompt(success: { [weak self] (prompt) in + bloggingPromptsService.todaysPrompt(success: { [weak self] prompt in self?.prompt = prompt self?.didFailLoadingPrompt = false - }, failure: { [weak self] (error) in + }, failure: { [weak self] error in self?.prompt = nil self?.didFailLoadingPrompt = true DDLogError("Failed fetching blogging prompt: \(String(describing: error))") diff --git a/WordPress/Classes/ViewRelated/Blog/Blogging Prompts/BloggingPromptsViewController.swift b/WordPress/Classes/ViewRelated/Blog/Blogging Prompts/BloggingPromptsViewController.swift index f6b7d0c6a2be..26544828f7b6 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blogging Prompts/BloggingPromptsViewController.swift +++ b/WordPress/Classes/ViewRelated/Blog/Blogging Prompts/BloggingPromptsViewController.swift @@ -117,10 +117,10 @@ private extension BloggingPromptsViewController { isLoading = true - bloggingPromptsService.fetchListPrompts(success: { [weak self] (prompts) in + bloggingPromptsService.fetchListPrompts(success: { [weak self] prompts in self?.isLoading = false self?.prompts = prompts.sorted(by: { $0.date.compare($1.date) == .orderedDescending }) - }, failure: { [weak self] (error) in + }, failure: { [weak self] error in DDLogError("Failed fetching blogging prompts: \(String(describing: error))") self?.isLoading = false self?.showErrorView() diff --git a/WordPress/Classes/ViewRelated/Blog/BloggingReminders/BloggingRemindersTracker.swift b/WordPress/Classes/ViewRelated/Blog/BloggingReminders/BloggingRemindersTracker.swift index 21ee945e40da..1a273ad7701c 100644 --- a/WordPress/Classes/ViewRelated/Blog/BloggingReminders/BloggingRemindersTracker.swift +++ b/WordPress/Classes/ViewRelated/Blog/BloggingReminders/BloggingRemindersTracker.swift @@ -127,7 +127,7 @@ class BloggingRemindersTracker { private func event(_ event: Event, properties: [String: String]) -> AnalyticsEvent { let finalProperties = sharedProperties().merging( properties, - uniquingKeysWith: { (first, _) in + uniquingKeysWith: { first, _ in return first }) diff --git a/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController.swift b/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController.swift index 807cae429bdc..982f225b63db 100644 --- a/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController.swift +++ b/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController.swift @@ -407,7 +407,7 @@ final class MySiteViewController: UIViewController, UIScrollViewDelegate, NoSite blogService.syncBlogs(for: account) { finishSync() - } failure: { (_) in + } failure: { _ in finishSync() } } diff --git a/WordPress/Classes/ViewRelated/Blog/Sharing/SharingButtonsViewController.swift b/WordPress/Classes/ViewRelated/Blog/Sharing/SharingButtonsViewController.swift index 7500aefe0653..0906f471bbb9 100644 --- a/WordPress/Classes/ViewRelated/Blog/Sharing/SharingButtonsViewController.swift +++ b/WordPress/Classes/ViewRelated/Blog/Sharing/SharingButtonsViewController.swift @@ -415,7 +415,7 @@ class SharingButtonsViewController: UITableViewController { rows.append(row) if !buttonsSection.editing { - let buttonsToShow = buttons.filter { (button) -> Bool in + let buttonsToShow = buttons.filter { button -> Bool in return button.enabled && button.visible } @@ -460,7 +460,7 @@ class SharingButtonsViewController: UITableViewController { rows.append(row) if !moreSection.editing { - let buttonsToShow = buttons.filter { (button) -> Bool in + let buttonsToShow = buttons.filter { button -> Bool in return button.enabled && !button.visible } @@ -595,13 +595,13 @@ class SharingButtonsViewController: UITableViewController { /// Updates rows after editing. /// private func updateButtonOrderAfterEditing() { - let buttonsForButtonSection = buttons.filter { (btn) -> Bool in + let buttonsForButtonSection = buttons.filter { btn -> Bool in return btn.enabled && btn.visible } - let buttonsForMoreSection = buttons.filter { (btn) -> Bool in + let buttonsForMoreSection = buttons.filter { btn -> Bool in return btn.enabled && !btn.visible } - let remainingButtons = buttons.filter { (btn) -> Bool in + let remainingButtons = buttons.filter { btn -> Bool in return !btn.enabled } @@ -697,7 +697,7 @@ class SharingButtonsViewController: UITableViewController { let controller = SettingsTextViewController(text: text, placeholder: placeholder, hint: hint) controller.title = labelTitle - controller.onValueChanged = {[unowned self] (value) in + controller.onValueChanged = {[unowned self] value in guard value != self.blog.settings!.sharingLabel else { return } @@ -731,7 +731,7 @@ class SharingButtonsViewController: UITableViewController { ] let controller = SettingsSelectionViewController(dictionary: dict) - controller?.onItemSelected = { [unowned self] (selected) in + controller?.onItemSelected = { [unowned self] selected in if let str = selected as? String { if self.blog.settings!.sharingButtonStyle == str { return @@ -755,7 +755,7 @@ class SharingButtonsViewController: UITableViewController { let controller = SettingsTextViewController(text: text, placeholder: placeholder, hint: hint) controller.title = twitterUsernameTitle - controller.onValueChanged = {[unowned self] (value) in + controller.onValueChanged = {[unowned self] value in if value == self.blog.settings!.sharingTwitterName { return } @@ -905,7 +905,7 @@ extension SharingButtonsViewController { let diff = destinationIndexPath.row - sourceIndexPath.row let movedRow = sourceSection.rows[sourceIndexPath.row] as! SortableSharingSwitchRow - let movedButton = buttons.filter { (button) -> Bool in + let movedButton = buttons.filter { button -> Bool in return button.buttonID == movedRow.buttonID } let theButton = movedButton.first! diff --git a/WordPress/Classes/ViewRelated/Blog/Site Settings/HomepageSettingsViewController.swift b/WordPress/Classes/ViewRelated/Blog/Site Settings/HomepageSettingsViewController.swift index 90c755fe654b..effa7f391aa9 100644 --- a/WordPress/Classes/ViewRelated/Blog/Site Settings/HomepageSettingsViewController.swift +++ b/WordPress/Classes/ViewRelated/Blog/Site Settings/HomepageSettingsViewController.swift @@ -213,7 +213,7 @@ import WordPressShared entityName: Page.entityName(), hiddenPosts: hiddenPosts, publishedOnly: selectionType.publishedPostsOnly, - callback: { [weak self] (post) in + callback: { [weak self] post in if let page = post as? Page { completion(page) } diff --git a/WordPress/Classes/ViewRelated/Blog/Site Settings/LanguageSelectorViewController.swift b/WordPress/Classes/ViewRelated/Blog/Site Settings/LanguageSelectorViewController.swift index a55c59fbd831..6dc53cdff89b 100644 --- a/WordPress/Classes/ViewRelated/Blog/Site Settings/LanguageSelectorViewController.swift +++ b/WordPress/Classes/ViewRelated/Blog/Site Settings/LanguageSelectorViewController.swift @@ -72,7 +72,7 @@ class LanguageSelectorViewController: UITableViewController, UISearchResultsUpda private func modelForSearch(query: String?) -> ImmuTable { let filtered: [Language] if let query { - filtered = database.all.filter({ (language) -> Bool in + filtered = database.all.filter({ language -> Bool in return language.name.localizedCaseInsensitiveContains(query) || language.description.localizedCaseInsensitiveContains(query) }) diff --git a/WordPress/Classes/ViewRelated/Blog/Site Settings/SiteIconPickerPresenter.swift b/WordPress/Classes/ViewRelated/Blog/Site Settings/SiteIconPickerPresenter.swift index 544a5ef367f1..f76b15edad89 100644 --- a/WordPress/Classes/ViewRelated/Blog/Site Settings/SiteIconPickerPresenter.swift +++ b/WordPress/Classes/ViewRelated/Blog/Site Settings/SiteIconPickerPresenter.swift @@ -73,7 +73,7 @@ final class SiteIconPickerPresenter: NSObject { post: nil, receiveUpdate: nil, thumbnailCallback: nil - ) { (media, error) in + ) { media, error in guard let media, error == nil else { WPAnalytics.track(.siteSettingsSiteIconUploadFailed) self.onCompletion?(nil, error) @@ -86,7 +86,7 @@ final class SiteIconPickerPresenter: NSObject { success: { WPAnalytics.track(.siteSettingsSiteIconUploaded) self.onCompletion?(media, nil) - }, failure: { (error) in + }, failure: { error in WPAnalytics.track(.siteSettingsSiteIconUploadFailed) self.onCompletion?(nil, error) }) diff --git a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainDetails/ViewController/RegisterDomainDetailsViewController.swift b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainDetails/ViewController/RegisterDomainDetailsViewController.swift index c0333dc15c14..b97a96dc233e 100644 --- a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainDetails/ViewController/RegisterDomainDetailsViewController.swift +++ b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainDetails/ViewController/RegisterDomainDetailsViewController.swift @@ -72,7 +72,7 @@ class RegisterDomainDetailsViewController: UITableViewController { configureTableView() WPStyleGuide.configureColors(view: view, tableView: tableView) - viewModel.onChange = { [weak self] (change) in + viewModel.onChange = { [weak self] change in self?.handle(change: change) } @@ -133,7 +133,7 @@ class RegisterDomainDetailsViewController: UITableViewController { let gestureRecognizer = UITapGestureRecognizer() gestureRecognizer.cancelsTouchesInView = false - gestureRecognizer.on { [weak self] (_) in + gestureRecognizer.on { [weak self] _ in self?.view.endEditing(true) } @@ -322,7 +322,7 @@ extension RegisterDomainDetailsViewController { viewController.selectRow(at: selectedIndex) } viewController.title = title - viewController.onSelect = { [weak self] (index) in + viewController.onSelect = { [weak self] index in self?.navigationController?.popViewController(animated: true) self?.selectedItemIndex[indexPath] = index if let section = SectionIndex(rawValue: indexPath.section) { diff --git a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainDetails/ViewModel/RegisterDomainDetailsViewModel+RowDefinitions.swift b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainDetails/ViewModel/RegisterDomainDetailsViewModel+RowDefinitions.swift index 0ccc5dcfc185..f40c3c425c5a 100644 --- a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainDetails/ViewModel/RegisterDomainDetailsViewModel+RowDefinitions.swift +++ b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainDetails/ViewModel/RegisterDomainDetailsViewModel+RowDefinitions.swift @@ -7,14 +7,14 @@ extension RegisterDomainDetailsViewModel { enum ValidationBlock { - static var nonEmpty: RowValidationBlock = { (text) in + static var nonEmpty: RowValidationBlock = { text in if let text { return !text.isEmpty } return false } - static var validEmail: RowValidationBlock = { (text) in + static var validEmail: RowValidationBlock = { text in guard let email = text else { return false } @@ -123,7 +123,7 @@ extension RegisterDomainDetailsViewModel { private func registerForValidationStateChangedEvent() { for rule in validationRules { - rule.validationStateChanged = { [weak self] (rule) in + rule.validationStateChanged = { [weak self] rule in guard let strongSelf = self else { return } strongSelf.validationStateChangedHandler?(strongSelf, rule) } diff --git a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainDetails/ViewModel/RegisterDomainDetailsViewModel+SectionDefinitions.swift b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainDetails/ViewModel/RegisterDomainDetailsViewModel+SectionDefinitions.swift index 22d50b91311e..4cac47529de7 100644 --- a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainDetails/ViewModel/RegisterDomainDetailsViewModel+SectionDefinitions.swift +++ b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainDetails/ViewModel/RegisterDomainDetailsViewModel+SectionDefinitions.swift @@ -28,7 +28,7 @@ extension RegisterDomainDetailsViewModel { let sectionIndex: SectionIndex var onChange: ((Change) -> Void)? - lazy var editableRowValidationStateChangeHandler: EditableKeyValueRow.ValidationStateChangedHandler = { [weak self] (editableRow, rule) in + lazy var editableRowValidationStateChangeHandler: EditableKeyValueRow.ValidationStateChangedHandler = { [weak self] editableRow, rule in guard let strongSelf = self, let rowIndex = strongSelf.rowIndex(of: editableRow) else { return @@ -48,7 +48,7 @@ extension RegisterDomainDetailsViewModel { } } - lazy var valueChangeHandler: EditableKeyValueRow.ValueChangeHandler = { [weak self] (editableRow) in + lazy var valueChangeHandler: EditableKeyValueRow.ValueChangeHandler = { [weak self] editableRow in guard let strongSelf = self, let rowIndex = strongSelf.rowIndex(of: editableRow) else { return @@ -95,7 +95,7 @@ extension RegisterDomainDetailsViewModel { } private func registerChangeHandlers() { - self.rows.forEach { (row) in + self.rows.forEach { row in switch row { case .inlineEditable(let editableRow): editableRow.validationStateChangedHandler = self.editableRowValidationStateChangeHandler diff --git a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainDetails/ViewModel/RegisterDomainDetailsViewModel.swift b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainDetails/ViewModel/RegisterDomainDetailsViewModel.swift index 1295ac393f33..1650b7943210 100644 --- a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainDetails/ViewModel/RegisterDomainDetailsViewModel.swift +++ b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainDetails/ViewModel/RegisterDomainDetailsViewModel.swift @@ -77,7 +77,7 @@ class RegisterDomainDetailsViewModel { manuallyTriggerValidation() } - lazy var sectionChangeHandler: ((Section.Change) -> Void)? = { [weak self] (change) in + lazy var sectionChangeHandler: ((Section.Change) -> Void)? = { [weak self] change in guard let strongSelf = self else { return } switch change { @@ -265,7 +265,7 @@ class RegisterDomainDetailsViewModel { private func fetchDomainContactInformation() { isLoading = true registerDomainDetailsService.getDomainContactInformation( - success: { [weak self] (domainContactInformation) in + success: { [weak self] domainContactInformation in guard let strongSelf = self else { return } @@ -287,7 +287,7 @@ class RegisterDomainDetailsViewModel { } else { prefillSuccessBlock() } - }) { [weak self] (_) in + }) { [weak self] _ in guard let strongSelf = self else { return } @@ -298,7 +298,7 @@ class RegisterDomainDetailsViewModel { private func fetchCountries(successCompletion: @escaping () -> Void) { isLoading = true - registerDomainDetailsService.getSupportedCountries(success: { [weak self] (countriesResponse) in + registerDomainDetailsService.getSupportedCountries(success: { [weak self] countriesResponse in guard let strongSelf = self else { return } @@ -319,7 +319,7 @@ class RegisterDomainDetailsViewModel { } strongSelf.countries = result successCompletion() - }) { [weak self] (_) in + }) { [weak self] _ in guard let strongSelf = self else { return } @@ -334,7 +334,7 @@ class RegisterDomainDetailsViewModel { clearStateSelection() registerDomainDetailsService.getStates( for: countryCode, - success: { [weak self] (statesResponse) in + success: { [weak self] statesResponse in guard let strongSelf = self else { return } @@ -351,7 +351,7 @@ class RegisterDomainDetailsViewModel { } strongSelf.states = result successCompletion?() - }) { [weak self] (_) in + }) { [weak self] _ in guard let strongSelf = self else { return } @@ -415,9 +415,9 @@ class RegisterDomainDetailsViewModel { if let privacySectionSelectedItem = privacySectionSelectedItem() { dict[privacySectionSelectedItem.jsonKey] = String(privacySectionSelectedItem.rawValue) } - dict.merge(phoneNumberSectionJson(), uniquingKeysWith: { (first, _) in first }) - dict.merge(sectionJson(sectionIndex: .contactInformation), uniquingKeysWith: { (first, _) in first }) - dict.merge(sectionJson(sectionIndex: .address), uniquingKeysWith: { (first, _) in first }) + dict.merge(phoneNumberSectionJson(), uniquingKeysWith: { first, _ in first }) + dict.merge(sectionJson(sectionIndex: .contactInformation), uniquingKeysWith: { first, _ in first }) + dict.merge(sectionJson(sectionIndex: .address), uniquingKeysWith: { first, _ in first }) return dict } @@ -485,7 +485,7 @@ extension RegisterDomainDetailsViewModel { registerDomainDetailsService.validateDomainContactInformation( contactInformation: jsonRepresentation(), domainNames: [domain.domainName], - success: { [weak self] (response) in + success: { [weak self] response in guard let strongSelf = self else { return } @@ -500,7 +500,7 @@ extension RegisterDomainDetailsViewModel { strongSelf.updateValidationErrors(with: response.messages) strongSelf.onChange?(.remoteValidationFinished) } - }) { [weak self] (_) in + }) { [weak self] _ in guard let strongSelf = self else { return } diff --git a/WordPress/Classes/ViewRelated/Domains/DomainSelectionViewController.swift b/WordPress/Classes/ViewRelated/Domains/DomainSelectionViewController.swift index ca7f14443a52..197dc30b30ab 100644 --- a/WordPress/Classes/ViewRelated/Domains/DomainSelectionViewController.swift +++ b/WordPress/Classes/ViewRelated/Domains/DomainSelectionViewController.swift @@ -232,7 +232,7 @@ final class DomainSelectionViewController: CollapsableHeaderViewController { updateNoResultsLabelTopInset() - coordinator.animate(alongsideTransition: nil) { [weak self] (_) in + coordinator.animate(alongsideTransition: nil) { [weak self] _ in guard let self else { return } if !self.siteTemplateHostingController.view.isHidden { @@ -304,7 +304,7 @@ final class DomainSelectionViewController: CollapsableHeaderViewController { let data = sortFreeAndPaidSuggestions(data) setAddressHintVisibility(isHidden: true) - let resultsHavePreviousSelection = data.contains { (suggestion) -> Bool in self.selectedDomain?.domainName == suggestion.domainName } + let resultsHavePreviousSelection = data.contains { suggestion -> Bool in self.selectedDomain?.domainName == suggestion.domainName } if !resultsHavePreviousSelection { clearSelectionAndCreateSiteButton() } diff --git a/WordPress/Classes/ViewRelated/Feature Introduction/Blogging Prompts/BloggingPromptsIntroductionPresenter.swift b/WordPress/Classes/ViewRelated/Feature Introduction/Blogging Prompts/BloggingPromptsIntroductionPresenter.swift index 210b0738eb0a..d06724368ba4 100644 --- a/WordPress/Classes/ViewRelated/Feature Introduction/Blogging Prompts/BloggingPromptsIntroductionPresenter.swift +++ b/WordPress/Classes/ViewRelated/Feature Introduction/Blogging Prompts/BloggingPromptsIntroductionPresenter.swift @@ -87,7 +87,7 @@ private extension BloggingPromptsIntroductionPresenter { return } - fetchPrompt(completion: { [weak self] (prompt) in + fetchPrompt(completion: { [weak self] prompt in guard let prompt else { self?.dispatchErrorNotice() self?.navigationController.dismiss(animated: true) @@ -138,9 +138,9 @@ private extension BloggingPromptsIntroductionPresenter { return } - bloggingPromptsService.fetchTodaysPrompt(success: { (prompt) in + bloggingPromptsService.fetchTodaysPrompt(success: { prompt in completion(prompt) - }, failure: { (error) in + }, failure: { error in completion(nil) DDLogError("Feature Introduction: failed fetching blogging prompt: \(String(describing: error))") }) diff --git a/WordPress/Classes/ViewRelated/Gutenberg/AztecAttachmentDelegate.swift b/WordPress/Classes/ViewRelated/Gutenberg/AztecAttachmentDelegate.swift index f86fd1b97369..cab588558e80 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/AztecAttachmentDelegate.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/AztecAttachmentDelegate.swift @@ -64,7 +64,7 @@ class AztecAttachmentDelegate: TextViewAttachmentDelegate { } func downloadImage(from url: URL, success: @escaping (UIImage) -> Void, onFailure failure: @escaping () -> Void) { - let receipt = mediaUtility.downloadImage(from: url, post: post, success: success, onFailure: { (_) in failure()}) + let receipt = mediaUtility.downloadImage(from: url, post: post, success: success, onFailure: { _ in failure()}) activeMediaRequests.append(receipt) } } diff --git a/WordPress/Classes/ViewRelated/Gutenberg/Collapsable Header/Collapsable Header Collection View Cell/CollapsableHeaderCollectionViewCell.swift b/WordPress/Classes/ViewRelated/Gutenberg/Collapsable Header/Collapsable Header Collection View Cell/CollapsableHeaderCollectionViewCell.swift index 2fdcf1ec6935..32302a500819 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/Collapsable Header/Collapsable Header Collection View Cell/CollapsableHeaderCollectionViewCell.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/Collapsable Header/Collapsable Header Collection View Cell/CollapsableHeaderCollectionViewCell.swift @@ -137,7 +137,7 @@ class CollapsableHeaderCollectionViewCell: UICollectionViewCell, NibLoadable { UIView.animate(withDuration: CollapsableHeaderCollectionViewCell.selectionAnimationSpeed, animations: { self.checkmarkContainerView.alpha = targetAlpha - }, completion: { (_) in + }, completion: { _ in self.checkmarkContainerView.isHidden = !self.isSelected }) } diff --git a/WordPress/Classes/ViewRelated/Gutenberg/Collapsable Header/CollapsableHeaderViewController.swift b/WordPress/Classes/ViewRelated/Gutenberg/Collapsable Header/CollapsableHeaderViewController.swift index 0b39bac27db3..d78fd2d213f0 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/Collapsable Header/CollapsableHeaderViewController.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/Collapsable Header/CollapsableHeaderViewController.swift @@ -95,7 +95,7 @@ class CollapsableHeaderViewController: UIViewController, NoResultsViewHost { @IBOutlet var visualEffects: [UIVisualEffectView]! { didSet { - visualEffects.forEach { (visualEffect) in + visualEffects.forEach { visualEffect in if #available(iOS 26, *) { visualEffect.effect = UIBlurEffect(style: .regular) } else { @@ -260,7 +260,7 @@ class CollapsableHeaderViewController: UIViewController, NoResultsViewHost { return } - coordinator.animate(alongsideTransition: nil) { (_) in + coordinator.animate(alongsideTransition: nil) { _ in self.accessoryBarTopCompactConstraint.isActive = self.shouldUseCompactLayout self.updateHeaderDisplay() // we're keeping this only for no results, @@ -377,7 +377,7 @@ class CollapsableHeaderViewController: UIViewController, NoResultsViewHost { private func styleButtons() { let seperator = UIColor.separator - [defaultActionButton, secondaryActionButton].forEach { (button) in + [defaultActionButton, secondaryActionButton].forEach { button in button?.titleLabel?.font = WPStyleGuide.fontForTextStyle(.body, fontWeight: .medium) button?.titleLabel?.adjustsFontSizeToFitWidth = true button?.titleLabel?.adjustsFontForContentSizeCategory = true @@ -491,7 +491,7 @@ class CollapsableHeaderViewController: UIViewController, NoResultsViewHost { subtitle: subtitle, noConnectionSubtitle: subtitle, buttonTitle: NSLocalizedString("Retry", comment: "A prompt to attempt the failed network request again"), - customizationBlock: { (noResultsController) in + customizationBlock: { noResultsController in noResultsController.delegate = resultsDelegate }) } @@ -527,7 +527,7 @@ class CollapsableHeaderViewController: UIViewController, NoResultsViewHost { /// A public interface to hide the header blur. func hideHeaderVisualEffects() { - visualEffects.forEach { (visualEffect) in + visualEffects.forEach { visualEffect in visualEffect.isHidden = true } } @@ -576,7 +576,7 @@ class CollapsableHeaderViewController: UIViewController, NoResultsViewHost { UIView.animate(withDuration: animationSpeed, delay: 0, options: .transitionCrossDissolve, animations: { self.defaultActionButton.alpha = alpha self.selectedStateButtonsContainer.alpha = selectedStateContainerAlpha - }) { (_) in + }) { _ in self.defaultActionButton.isHidden = hasSelectedItem self.selectedStateButtonsContainer.isHidden = !hasSelectedItem } @@ -725,23 +725,23 @@ extension CollapsableHeaderViewController: UIScrollViewDelegate { // MARK: - Keyboard Adjustments extension CollapsableHeaderViewController { private func startObservingKeyboardChanges() { - let willShowObserver = NotificationCenter.default.addObserver(forName: UIResponder.keyboardWillShowNotification, object: nil, queue: .main) { [weak self] (notification) in + let willShowObserver = NotificationCenter.default.addObserver(forName: UIResponder.keyboardWillShowNotification, object: nil, queue: .main) { [weak self] notification in guard let self else { return } - UIView.animate(withKeyboard: notification) { (_, endFrame) in + UIView.animate(withKeyboard: notification) { _, endFrame in self.scrollableContainerBottomConstraint.constant = endFrame.height - self.footerHeight } } - let willHideObserver = NotificationCenter.default.addObserver(forName: UIResponder.keyboardWillHideNotification, object: nil, queue: .main) { [weak self] (notification) in + let willHideObserver = NotificationCenter.default.addObserver(forName: UIResponder.keyboardWillHideNotification, object: nil, queue: .main) { [weak self] notification in guard let self else { return } - UIView.animate(withKeyboard: notification) { (_, _) in + UIView.animate(withKeyboard: notification) { _, _ in self.scrollableContainerBottomConstraint.constant = 0 } } - let willChangeFrameObserver = NotificationCenter.default.addObserver(forName: UIResponder.keyboardWillChangeFrameNotification, object: nil, queue: .main) { [weak self] (notification) in + let willChangeFrameObserver = NotificationCenter.default.addObserver(forName: UIResponder.keyboardWillChangeFrameNotification, object: nil, queue: .main) { [weak self] notification in guard let self else { return } - UIView.animate(withKeyboard: notification) { (_, endFrame) in + UIView.animate(withKeyboard: notification) { _, endFrame in self.scrollableContainerBottomConstraint.constant = endFrame.height - self.footerHeight } } @@ -752,7 +752,7 @@ extension CollapsableHeaderViewController { } private func stopObservingKeyboardChanges() { - notificationObservers.forEach { (observer) in + notificationObservers.forEach { observer in NotificationCenter.default.removeObserver(observer) } notificationObservers = [] diff --git a/WordPress/Classes/ViewRelated/Gutenberg/EditorMediaUtility.swift b/WordPress/Classes/ViewRelated/Gutenberg/EditorMediaUtility.swift index 3682c66e4606..19e451044d68 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/EditorMediaUtility.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/EditorMediaUtility.swift @@ -40,7 +40,7 @@ class EditorMediaUtility { func fetchPosterImage(for sourceURL: URL, onSuccess: @escaping (UIImage) -> (), onFailure: @escaping () -> ()) { let thumbnailGenerator = MediaVideoExporter(url: sourceURL) - thumbnailGenerator.exportPreviewImageForVideo(atURL: sourceURL, imageOptions: nil, onCompletion: { (exportResult) in + thumbnailGenerator.exportPreviewImageForVideo(atURL: sourceURL, imageOptions: nil, onCompletion: { exportResult in guard let image = UIImage(contentsOfFile: exportResult.url.path) else { onFailure() return @@ -48,7 +48,7 @@ class EditorMediaUtility { DispatchQueue.main.async { onSuccess(image) } - }, onError: { (error) in + }, onError: { error in DDLogError("Unable to grab frame from video = \(sourceURL). Details: \(error.localizedDescription)") onFailure() }) diff --git a/WordPress/Classes/ViewRelated/Gutenberg/GutenbergImageLoader.swift b/WordPress/Classes/ViewRelated/Gutenberg/GutenbergImageLoader.swift index 0d9af23a3e4a..c8bd0eef9e16 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/GutenbergImageLoader.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/GutenbergImageLoader.swift @@ -30,9 +30,9 @@ class GutenbergImageLoader: NSObject, RCTImageURLLoader { finalSize = CGSize(width: size.width / screenScale, height: size.height / screenScale) } - let task = mediaUtility.downloadImage(from: imageURL, size: finalSize, scale: finalScale, post: post, success: { (image) in + let task = mediaUtility.downloadImage(from: imageURL, size: finalSize, scale: finalScale, post: post, success: { image in completionHandler(nil, image) - }, onFailure: { (error) in + }, onFailure: { error in completionHandler(error, nil) }) diff --git a/WordPress/Classes/ViewRelated/Gutenberg/GutenbergMediaInserterHelper.swift b/WordPress/Classes/ViewRelated/Gutenberg/GutenbergMediaInserterHelper.swift index 09e1c8c7a820..cf3d44d8939a 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/GutenbergMediaInserterHelper.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/GutenbergMediaInserterHelper.swift @@ -152,7 +152,7 @@ class GutenbergMediaInserterHelper: NSObject { } private func registerMediaObserver() { - mediaObserverReceipt = mediaCoordinator.addObserver({ [weak self](media, state) in + mediaObserverReceipt = mediaCoordinator.addObserver({ [weak self] media, state in self?.mediaObserver(media: media, state: state) }, forMediaFor: post) } @@ -189,7 +189,7 @@ class GutenbergMediaInserterHelper: NSObject { case .video: // Fetch metadata when is a VideoPress video if media.videopressGUID != nil { - EditorMediaUtility.fetchVideoPressMetadata(for: media, in: post) { [weak self] (result) in + EditorMediaUtility.fetchVideoPressMetadata(for: media, in: post) { [weak self] result in guard let strongSelf = self else { return } diff --git a/WordPress/Classes/ViewRelated/Gutenberg/GutenbergNetworking.swift b/WordPress/Classes/ViewRelated/Gutenberg/GutenbergNetworking.swift index 1281153dc3ee..f1829b26acc1 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/GutenbergNetworking.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/GutenbergNetworking.swift @@ -43,17 +43,17 @@ struct GutenbergNetworkRequest { // MARK: - dotCom private func dotComGetRequest(with dotComID: NSNumber, completion: @escaping CompletionHandler) { - blog.wordPressComRestApi?.GET(dotComPath(with: dotComID), parameters: nil, success: { (response, _) in + blog.wordPressComRestApi?.GET(dotComPath(with: dotComID), parameters: nil, success: { response, _ in completion(.success(response)) - }, failure: { (error, httpResponse) in + }, failure: { error, httpResponse in completion(.failure(error.nsError(with: httpResponse))) }) } private func dotComPostRequest(with dotComID: NSNumber, data: [String: AnyObject]?, completion: @escaping CompletionHandler) { - blog.wordPressComRestApi?.POST(dotComPath(with: dotComID), parameters: data, success: { (response, _) in + blog.wordPressComRestApi?.POST(dotComPath(with: dotComID), parameters: data, success: { response, _ in completion(.success(response)) - }, failure: { (error, httpResponse) in + }, failure: { error, httpResponse in completion(.failure(error.nsError(with: httpResponse))) }) } diff --git a/WordPress/Classes/ViewRelated/Gutenberg/GutenbergViewController.swift b/WordPress/Classes/ViewRelated/Gutenberg/GutenbergViewController.swift index ba0b04fe4d89..6989d7b6927f 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/GutenbergViewController.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/GutenbergViewController.swift @@ -334,7 +334,7 @@ class GutenbergViewController: UIViewController, PostEditor, PublishingEditor { service?.syncJetpackSettingsForBlog(post.blog, success: { [weak self] in self?.gutenberg.updateCapabilities() - }, failure: { (error) in + }, failure: { error in DDLogError("Error syncing JETPACK: \(String(describing: error))") }) @@ -394,13 +394,13 @@ class GutenbergViewController: UIViewController, PostEditor, PublishingEditor { private var previousFirstResponder: UIView? private func setupKeyboardObservers() { - keyboardShowObserver = NotificationCenter.default.addObserver(forName: UIResponder.keyboardDidShowNotification, object: nil, queue: .main) { [weak self] (notification) in + keyboardShowObserver = NotificationCenter.default.addObserver(forName: UIResponder.keyboardDidShowNotification, object: nil, queue: .main) { [weak self] notification in if let self, let keyboardRect = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect { self.keyboardFrame = keyboardRect self.updateConstraintsToAvoidKeyboard(frame: keyboardRect) } } - keyboardHideObserver = NotificationCenter.default.addObserver(forName: UIResponder.keyboardDidShowNotification, object: nil, queue: .main) { [weak self] (notification) in + keyboardHideObserver = NotificationCenter.default.addObserver(forName: UIResponder.keyboardDidHideNotification, object: nil, queue: .main) { [weak self] notification in if let self, let keyboardRect = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect { self.keyboardFrame = keyboardRect self.updateConstraintsToAvoidKeyboard(frame: keyboardRect) @@ -731,7 +731,7 @@ extension GutenbergViewController: GutenbergBridgeDelegate { message: NSLocalizedString("You already have a featured image set. Do you want to replace it with the new image?", comment: "Main message on dialog that prompts user to confirm or cancel the replacement of a featured image."), preferredStyle: .actionSheet) - let replaceAction = UIAlertAction(title: NSLocalizedString("Replace featured image", comment: "Button to confirm the replacement of a featured image."), style: .default) { (_) in + let replaceAction = UIAlertAction(title: NSLocalizedString("Replace featured image", comment: "Button to confirm the replacement of a featured image."), style: .default) { _ in self.featuredImageHelper.setFeaturedImage(mediaID: mediaID) } @@ -754,13 +754,13 @@ extension GutenbergViewController: GutenbergBridgeDelegate { let title: String = MediaAttachmentActionSheet.title var message: String? = nil let alertController = UIAlertController(title: title, message: nil, preferredStyle: .actionSheet) - let dismissAction = UIAlertAction(title: MediaAttachmentActionSheet.dismissActionTitle, style: .cancel) { (_) in + let dismissAction = UIAlertAction(title: MediaAttachmentActionSheet.dismissActionTitle, style: .cancel) { _ in } alertController.addAction(dismissAction) if media.remoteStatus == .failed || media.remoteStatus == .processing || media.remoteStatus == .local || media.remoteStatus == .pushing { - let cancelUploadAction = UIAlertAction(title: MediaAttachmentActionSheet.stopUploadActionTitle, style: .destructive) { (_) in + let cancelUploadAction = UIAlertAction(title: MediaAttachmentActionSheet.stopUploadActionTitle, style: .destructive) { _ in self.mediaInserterHelper.cancelUploadOf(media: media) } alertController.addAction(cancelUploadAction) @@ -769,7 +769,7 @@ extension GutenbergViewController: GutenbergBridgeDelegate { if media.remoteStatus == .failed, let error = media.error { message = error.localizedDescription if media.canRetry { - let retryUploadAction = UIAlertAction(title: MediaAttachmentActionSheet.retryUploadActionTitle, style: .default) { (_) in + let retryUploadAction = UIAlertAction(title: MediaAttachmentActionSheet.retryUploadActionTitle, style: .default) { _ in self.mediaInserterHelper.retryFailedMediaUploads() } alertController.addAction(retryUploadAction) @@ -789,7 +789,7 @@ extension GutenbergViewController: GutenbergBridgeDelegate { let title: String = (self.post is Page) ? EmptyPostActionSheet.titlePage : EmptyPostActionSheet.titlePost let message: String = EmptyPostActionSheet.message let alertController = UIAlertController(title: title, message: message, preferredStyle: .actionSheet) - let dismissAction = UIAlertAction(title: MediaAttachmentActionSheet.dismissActionTitle, style: .cancel) { (_) in + let dismissAction = UIAlertAction(title: MediaAttachmentActionSheet.dismissActionTitle, style: .cancel) { _ in } alertController.addAction(dismissAction) @@ -1023,7 +1023,7 @@ extension GutenbergViewController { previousFirstResponder = view.findFirstResponder() let suggestionsController = GutenbergSuggestionsViewController(siteID: siteID, suggestionType: type) - suggestionsController.onCompletion = { (result) in + suggestionsController.onCompletion = { result in callback(result) suggestionsController.view.removeFromSuperview() suggestionsController.removeFromParent() diff --git a/WordPress/Classes/ViewRelated/Gutenberg/GutenbergWeb/GutenbergWebViewController.swift b/WordPress/Classes/ViewRelated/Gutenberg/GutenbergWeb/GutenbergWebViewController.swift index 0ec0dea33e61..97bb92ccb16a 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/GutenbergWeb/GutenbergWebViewController.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/GutenbergWeb/GutenbergWebViewController.swift @@ -48,7 +48,7 @@ class GutenbergWebViewController: GutenbergWebSingleBlockViewController, WebKitA } override func getRequest(for webView: WKWebView, completion: @escaping (URLRequest) -> Void) { - authenticatedRequest(for: url, on: webView) { (request) in + authenticatedRequest(for: url, on: webView) { request in completion(request) } } diff --git a/WordPress/Classes/ViewRelated/Gutenberg/Layout Picker/CategorySectionTableViewCell.swift b/WordPress/Classes/ViewRelated/Gutenberg/Layout Picker/CategorySectionTableViewCell.swift index c278b1c4b338..7bbc8e29e61b 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/Layout Picker/CategorySectionTableViewCell.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/Layout Picker/CategorySectionTableViewCell.swift @@ -113,7 +113,7 @@ class CategorySectionTableViewCell: UITableViewCell, NibLoadable { func deselectItems() { guard let selectedItems = collectionView.indexPathsForSelectedItems else { return } - selectedItems.forEach { (indexPath) in + selectedItems.forEach { indexPath in collectionView.deselectItem(at: indexPath, animated: true) } } diff --git a/WordPress/Classes/ViewRelated/Gutenberg/Layout Picker/FilterableCategoriesViewController.swift b/WordPress/Classes/ViewRelated/Gutenberg/Layout Picker/FilterableCategoriesViewController.swift index 980c64266939..432b563597ea 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/Layout Picker/FilterableCategoriesViewController.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/Layout Picker/FilterableCategoriesViewController.swift @@ -204,7 +204,7 @@ extension FilterableCategoriesViewController: CategorySectionTableViewCellDelega private func deselectCurrentLayout() { guard let previousSelection = selectedItem else { return } - tableView.indexPathsForVisibleRows?.forEach { (indexPath) in + tableView.indexPathsForVisibleRows?.forEach { indexPath in if containsSelectedItem(previousSelection, atIndexPath: indexPath) { (tableView.cellForRow(at: indexPath) as? CategorySectionTableViewCell)?.deselectItems() } diff --git a/WordPress/Classes/ViewRelated/Gutenberg/Layout Picker/GutenbergLayoutPickerViewController.swift b/WordPress/Classes/ViewRelated/Gutenberg/Layout Picker/GutenbergLayoutPickerViewController.swift index 609a886c75f0..bdee7142d84d 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/Layout Picker/GutenbergLayoutPickerViewController.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/Layout Picker/GutenbergLayoutPickerViewController.swift @@ -139,7 +139,7 @@ class GutenbergLayoutPickerViewController: FilterableCategoriesViewController { } private func makeSectionData(with controller: NSFetchedResultsController?) -> [GutenbergLayoutSection] { - return controller?.fetchedObjects?.map({ (category) -> GutenbergLayoutSection in + return controller?.fetchedObjects?.map({ category -> GutenbergLayoutSection in return GutenbergLayoutSection(category, thumbnailSize: GutenbergLayoutPickerViewController.thumbnailSize) }) ?? [] } diff --git a/WordPress/Classes/ViewRelated/Gutenberg/Layout Picker/LayoutPickerAnalyticsEvent.swift b/WordPress/Classes/ViewRelated/Gutenberg/Layout Picker/LayoutPickerAnalyticsEvent.swift index d0f465d47772..ee02393de5e2 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/Layout Picker/LayoutPickerAnalyticsEvent.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/Layout Picker/LayoutPickerAnalyticsEvent.swift @@ -47,13 +47,13 @@ class LayoutPickerAnalyticsEvent { for property: Any? in properties { if let template = property as? PageTemplateLayout { - result.merge([templateTrackingKey: template.slug]) { (_, new) in new } + result.merge([templateTrackingKey: template.slug]) { _, new in new } } if let previewMode = property as? PreviewDevice { - result.merge([previewModeTrackingKey: previewMode.rawValue]) { (_, new) in new } + result.merge([previewModeTrackingKey: previewMode.rawValue]) { _, new in new } } if let error = property as? Error { - result.merge([errorTrackingKey: error]) { (_, new) in new } + result.merge([errorTrackingKey: error]) { _, new in new } } } diff --git a/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergAudioUploadProcessor.swift b/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergAudioUploadProcessor.swift index d3db038c0c6a..f37fce7e08fb 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergAudioUploadProcessor.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergAudioUploadProcessor.swift @@ -18,7 +18,7 @@ class GutenbergAudioUploadProcessor: Processor { self.remoteURLString = remoteURLString } - lazy var fileHtmlProcessor = HTMLProcessor(for: "audio", replacer: { (audio) in + lazy var fileHtmlProcessor = HTMLProcessor(for: "audio", replacer: { audio in var attributes = audio.attributes attributes.set(.string(self.remoteURLString), forKey: AudioBlockKeys.src) diff --git a/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergCoverUploadProcessor.swift b/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergCoverUploadProcessor.swift index 65eee0dc4ec7..674ed78caa29 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergCoverUploadProcessor.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergCoverUploadProcessor.swift @@ -61,7 +61,7 @@ extension GutenbergCoverUploadProcessor { } private func imgUploadProcessor() -> HTMLProcessor { - return HTMLProcessor(for: ImgHTMLKeys.name, replacer: { (div) in + return HTMLProcessor(for: ImgHTMLKeys.name, replacer: { div in guard let styleAttributeValue = div.attributes[ImgHTMLKeys.styleComponents]?.value, case let .string(styleAttribute) = styleAttributeValue @@ -116,7 +116,7 @@ extension GutenbergCoverUploadProcessor { } private func videoUploadProcessor() -> HTMLProcessor { - return HTMLProcessor(for: VideoHTMLKeys.name, replacer: { (video) in + return HTMLProcessor(for: VideoHTMLKeys.name, replacer: { video in var attributes = video.attributes attributes.set(.string(self.remoteURLString), forKey: VideoHTMLKeys.source) diff --git a/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergGalleryUploadProcessor.swift b/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergGalleryUploadProcessor.swift index 1bff0fbe726c..3661750eecb9 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergGalleryUploadProcessor.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergGalleryUploadProcessor.swift @@ -39,7 +39,7 @@ class GutenbergGalleryUploadProcessor: GutenbergProcessor { let classAttributes = imgClass.components(separatedBy: " ") - guard let imageIDAttribute = classAttributes.first(where: { (value) -> Bool in + guard let imageIDAttribute = classAttributes.first(where: { value -> Bool in value.hasPrefix(GutenbergImgUploadProcessor.imgClassIDPrefixAttribute) }) else { return diff --git a/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergImgUploadProcessor.swift b/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergImgUploadProcessor.swift index 0da1cba80baa..88b5e84e3054 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergImgUploadProcessor.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergImgUploadProcessor.swift @@ -21,7 +21,7 @@ class GutenbergImgUploadProcessor: GutenbergProcessor { } let classAttributes = imgClass.components(separatedBy: " ") - guard let imageIDAttribute = classAttributes.first(where: { (value) -> Bool in + guard let imageIDAttribute = classAttributes.first(where: { value -> Bool in value.hasPrefix(GutenbergImgUploadProcessor.imgClassIDPrefixAttribute) }) else { return diff --git a/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergVideoUploadProcessor.swift b/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergVideoUploadProcessor.swift index 7170c879efc5..467798416f4b 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergVideoUploadProcessor.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/Processors/GutenbergVideoUploadProcessor.swift @@ -13,7 +13,7 @@ class GutenbergVideoUploadProcessor: Processor { self.remoteURLString = remoteURLString } - lazy var videoHtmlProcessor = HTMLProcessor(for: "video", replacer: { (video) in + lazy var videoHtmlProcessor = HTMLProcessor(for: "video", replacer: { video in var attributes = video.attributes attributes.set(.string(self.remoteURLString), forKey: "src") diff --git a/WordPress/Classes/ViewRelated/Gutenberg/Utils/GutenbergExternalMeidaPicker.swift b/WordPress/Classes/ViewRelated/Gutenberg/Utils/GutenbergExternalMeidaPicker.swift index 0fe1bf8251cb..666c536db254 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/Utils/GutenbergExternalMeidaPicker.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/Utils/GutenbergExternalMeidaPicker.swift @@ -80,7 +80,7 @@ extension GutenbergExternalMediaPicker: ExternalMediaPickerViewDelegate { return assertionFailure("Image picked without callback") } - let mediaInfo = assets.compactMap { (asset) -> MediaInfo? in + let mediaInfo = assets.compactMap { asset -> MediaInfo? in guard let media = self.mediaInserter.insert(exportableAsset: asset, source: source) else { return nil } diff --git a/WordPress/Classes/ViewRelated/Gutenberg/Utils/GutenbergFilesAppMediaSource.swift b/WordPress/Classes/ViewRelated/Gutenberg/Utils/GutenbergFilesAppMediaSource.swift index 01ddeefed4da..91dd54a8282a 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/Utils/GutenbergFilesAppMediaSource.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/Utils/GutenbergFilesAppMediaSource.swift @@ -65,7 +65,7 @@ extension GutenbergFilesAppMediaSource: UIDocumentPickerDelegate { return assertionFailure("Image picked without callback") } - let mediaInfo = urls.compactMap({ (url) -> MediaInfo? in + let mediaInfo = urls.compactMap({ url -> MediaInfo? in guard let media = mediaInserter.insert(exportableAsset: url as NSURL, source: .otherApps) else { return nil } diff --git a/WordPress/Classes/ViewRelated/Gutenberg/Views/GutenGhostView.swift b/WordPress/Classes/ViewRelated/Gutenberg/Views/GutenGhostView.swift index 1dcdf24bca4f..8e4dcf9de7a0 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/Views/GutenGhostView.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/Views/GutenGhostView.swift @@ -22,7 +22,7 @@ class GutenGhostView: UIView { @IBOutlet var blockElementViews: [UIView]! { didSet { - blockElementViews.forEach { (view) in + blockElementViews.forEach { view in view.backgroundColor = .ghostBlockBackground } } @@ -30,7 +30,7 @@ class GutenGhostView: UIView { @IBOutlet var buttonsViews: [UIView]! { didSet { - buttonsViews.forEach { (view) in + buttonsViews.forEach { view in view.backgroundColor = .clear } } @@ -45,7 +45,7 @@ class GutenGhostView: UIView { @IBOutlet private var roundedCornerViews: [UIView]! { didSet { - roundedCornerViews.forEach { (view) in + roundedCornerViews.forEach { view in view.layer.cornerRadius = 6 view.clipsToBounds = true } diff --git a/WordPress/Classes/ViewRelated/Jetpack/Branding/Fullscreen Overlay/JetpackPluginOverlayViewModel.swift b/WordPress/Classes/ViewRelated/Jetpack/Branding/Fullscreen Overlay/JetpackPluginOverlayViewModel.swift index d1b054a3b9e7..e6b10388271a 100644 --- a/WordPress/Classes/ViewRelated/Jetpack/Branding/Fullscreen Overlay/JetpackPluginOverlayViewModel.swift +++ b/WordPress/Classes/ViewRelated/Jetpack/Branding/Fullscreen Overlay/JetpackPluginOverlayViewModel.swift @@ -211,7 +211,7 @@ private extension NSAttributedString { convenience init(format: NSAttributedString, args: (String, NSAttributedString)...) { let mutableNSAttributedString = NSMutableAttributedString(attributedString: format) - args.forEach { (key, attributedString) in + args.forEach { key, attributedString in let range = NSString(string: mutableNSAttributedString.string).range(of: key) mutableNSAttributedString.replaceCharacters(in: range, with: attributedString) } diff --git a/WordPress/Classes/ViewRelated/Jetpack/Install/ViewModel/SelfHostedJetpackRemoteInstallViewModel.swift b/WordPress/Classes/ViewRelated/Jetpack/Install/ViewModel/SelfHostedJetpackRemoteInstallViewModel.swift index a3788f95844d..872ed5eb9401 100644 --- a/WordPress/Classes/ViewRelated/Jetpack/Install/ViewModel/SelfHostedJetpackRemoteInstallViewModel.swift +++ b/WordPress/Classes/ViewRelated/Jetpack/Install/ViewModel/SelfHostedJetpackRemoteInstallViewModel.swift @@ -22,7 +22,7 @@ class SelfHostedJetpackRemoteInstallViewModel: JetpackRemoteInstallViewModel { func viewReady() { state = .install - storeReceipt = store.onStateChange { [weak self] (_, state) in + storeReceipt = store.onStateChange { [weak self] _, state in switch state.current { case .loading: self?.state = .installing diff --git a/WordPress/Classes/ViewRelated/Jetpack/Install/Webview/JetpackConnectionWebViewController.swift b/WordPress/Classes/ViewRelated/Jetpack/Install/Webview/JetpackConnectionWebViewController.swift index f2c1399fad5c..c208bf254e06 100644 --- a/WordPress/Classes/ViewRelated/Jetpack/Install/Webview/JetpackConnectionWebViewController.swift +++ b/WordPress/Classes/ViewRelated/Jetpack/Install/Webview/JetpackConnectionWebViewController.swift @@ -241,7 +241,7 @@ private extension JetpackConnectionWebViewController { let success: () -> Void = { [weak self] in self?.delegate?.jetpackConnectionCompleted() } - let failure: (Error) -> Void = { (error) in + let failure: (Error) -> Void = { error in DDLogError("\(error)") success() } diff --git a/WordPress/Classes/ViewRelated/Jetpack/Jetpack Scan/JetpackScanCoordinator.swift b/WordPress/Classes/ViewRelated/Jetpack/Jetpack Scan/JetpackScanCoordinator.swift index 0e3703bb1134..dd2783e525a2 100644 --- a/WordPress/Classes/ViewRelated/Jetpack/Jetpack Scan/JetpackScanCoordinator.swift +++ b/WordPress/Classes/ViewRelated/Jetpack/Jetpack Scan/JetpackScanCoordinator.swift @@ -108,7 +108,7 @@ class JetpackScanCoordinator { // server doesn't update its state immediately after starting a scan startPolling(triggerImmediately: false) - service.startScan(for: blog) { [weak self] (success) in + service.startScan(for: blog) { [weak self] success in if success == false { DDLogError("Error starting scan: Scan response returned false") @@ -118,7 +118,7 @@ class JetpackScanCoordinator { self?.stopPolling() self?.view.showScanStartError() } - } failure: { [weak self] (error) in + } failure: { [weak self] error in DDLogError("Error starting scan: \(String(describing: error?.localizedDescription))") WPAnalytics.track(.jetpackScanError, properties: ["action": "scan", @@ -176,7 +176,7 @@ class JetpackScanCoordinator { startPolling(triggerImmediately: false) - service.fixThreats(threats, blog: blog) { [weak self] (response) in + service.fixThreats(threats, blog: blog) { [weak self] response in if response.success == false { DDLogError("Error starting scan: Scan response returned false") self?.stopPolling() @@ -184,7 +184,7 @@ class JetpackScanCoordinator { } else { self?.refreshData() } - } failure: { [weak self] (error) in + } failure: { [weak self] error in DDLogError("Error fixing threats: \(String(describing: error.localizedDescription))") self?.refreshDidFail(with: error) @@ -337,7 +337,7 @@ class JetpackScanCoordinator { return } - refreshTimer = Timer.scheduledTimer(withTimeInterval: Constants.refreshTimerInterval, repeats: true, block: { [weak self] (_) in + refreshTimer = Timer.scheduledTimer(withTimeInterval: Constants.refreshTimerInterval, repeats: true, block: { [weak self] _ in self?.refreshData() }) diff --git a/WordPress/Classes/ViewRelated/Jetpack/Jetpack Scan/JetpackScanThreatSectionGrouping.swift b/WordPress/Classes/ViewRelated/Jetpack/Jetpack Scan/JetpackScanThreatSectionGrouping.swift index 79e9a1dfc4ea..125e6c0ff064 100644 --- a/WordPress/Classes/ViewRelated/Jetpack/Jetpack Scan/JetpackScanThreatSectionGrouping.swift +++ b/WordPress/Classes/ViewRelated/Jetpack/Jetpack Scan/JetpackScanThreatSectionGrouping.swift @@ -5,7 +5,7 @@ struct JetpackScanThreatSectionGrouping { public var sections: [JetpackThreatSection]? init(threats: [JetpackScanThreat], siteRef: JetpackSiteRef) { - let grouping: [DateComponents: [JetpackScanThreat]] = Dictionary(grouping: threats) { (threat) -> DateComponents in + let grouping: [DateComponents: [JetpackScanThreat]] = Dictionary(grouping: threats) { threat -> DateComponents in return Calendar.current.dateComponents([.day, .year, .month], from: threat.firstDetected) } diff --git a/WordPress/Classes/ViewRelated/Jetpack/Jetpack Settings/JetpackSettingsViewController.swift b/WordPress/Classes/ViewRelated/Jetpack/Jetpack Settings/JetpackSettingsViewController.swift index e3335bab94d2..d5f4cf59e2ff 100644 --- a/WordPress/Classes/ViewRelated/Jetpack/Jetpack Settings/JetpackSettingsViewController.swift +++ b/WordPress/Classes/ViewRelated/Jetpack/Jetpack Settings/JetpackSettingsViewController.swift @@ -191,7 +191,7 @@ open class JetpackSettingsViewController: UITableViewController { self.reloadViewModel() self.service.updateJetpackSettingsForBlog(self.blog, success: {}, - failure: { [weak self] (_) in + failure: { [weak self] _ in self?.refreshSettingsAfterSavingError() }) } @@ -203,7 +203,7 @@ open class JetpackSettingsViewController: UITableViewController { self.settings.jetpackMonitorEmailNotifications = newValue self.service.updateJetpackMonitorSettingsForBlog(self.blog, success: {}, - failure: { [weak self] (_) in + failure: { [weak self] _ in self?.refreshSettingsAfterSavingError() }) } @@ -215,7 +215,7 @@ open class JetpackSettingsViewController: UITableViewController { self.settings.jetpackMonitorPushNotifications = newValue self.service.updateJetpackMonitorSettingsForBlog(self.blog, success: {}, - failure: { [weak self] (_) in + failure: { [weak self] _ in self?.refreshSettingsAfterSavingError() }) } @@ -228,7 +228,7 @@ open class JetpackSettingsViewController: UITableViewController { self.reloadViewModel() self.service.updateJetpackSettingsForBlog(self.blog, success: {}, - failure: { [weak self] (_) in + failure: { [weak self] _ in self?.refreshSettingsAfterSavingError() }) } @@ -260,7 +260,7 @@ open class JetpackSettingsViewController: UITableViewController { self?.refreshSettings() WPAnalytics.track(.jetpackAllowlistedIpsChanged) }, - failure: { [weak self] (_) in + failure: { [weak self] _ in self?.refreshSettingsAfterSavingError() }) } @@ -276,7 +276,7 @@ open class JetpackSettingsViewController: UITableViewController { self.reloadViewModel() self.service.updateJetpackSettingsForBlog(self.blog, success: {}, - failure: { [weak self] (_) in + failure: { [weak self] _ in self?.refreshSettingsAfterSavingError() }) } @@ -288,7 +288,7 @@ open class JetpackSettingsViewController: UITableViewController { self.settings.jetpackSSOMatchAccountsByEmail = newValue self.service.updateJetpackSettingsForBlog(self.blog, success: {}, - failure: { [weak self] (_) in + failure: { [weak self] _ in self?.refreshSettingsAfterSavingError() }) } @@ -300,7 +300,7 @@ open class JetpackSettingsViewController: UITableViewController { self.settings.jetpackSSORequireTwoStepAuthentication = newValue self.service.updateJetpackSettingsForBlog(self.blog, success: {}, - failure: { [weak self] (_) in + failure: { [weak self] _ in self?.refreshSettingsAfterSavingError() }) } diff --git a/WordPress/Classes/ViewRelated/Me/Account Settings/AccountSettingsViewController.swift b/WordPress/Classes/ViewRelated/Me/Account Settings/AccountSettingsViewController.swift index 4a49ca0f6911..85aea65f75c4 100644 --- a/WordPress/Classes/ViewRelated/Me/Account Settings/AccountSettingsViewController.swift +++ b/WordPress/Classes/ViewRelated/Me/Account Settings/AccountSettingsViewController.swift @@ -185,7 +185,7 @@ private class AccountSettingsController: SettingsController { return ChangePasswordViewController(username: settings?.username ?? "") { [weak self] value in DispatchQueue.main.async { SVProgressHUD.show(withStatus: Constants.changingPassword) - service.updatePassword(value, finished: { (success, error) in + service.updatePassword(value, finished: { success, error in if success { self?.refreshAccountDetails { SVProgressHUD.showSuccess(withStatus: Constants.changedPasswordSuccess) diff --git a/WordPress/Classes/ViewRelated/Me/App Settings/App Icons/AppIconListViewModel.swift b/WordPress/Classes/ViewRelated/Me/App Settings/App Icons/AppIconListViewModel.swift index 3f5e5a135bb2..f51cc2657252 100644 --- a/WordPress/Classes/ViewRelated/Me/App Settings/App Icons/AppIconListViewModel.swift +++ b/WordPress/Classes/ViewRelated/Me/App Settings/App Icons/AppIconListViewModel.swift @@ -18,7 +18,7 @@ final class AppIconListViewModel: AppIconListViewModelType { // Produces a closure which sorts alphabetically, giving priority to items // beginning with the specified prefix. func sortWithPriority(toItemsWithPrefix prefix: String) -> ((AppIcon, AppIcon) -> Bool) { - return { (first, second) in + return { first, second in let firstIsDefault = first.name.hasPrefix(prefix) let secondIsDefault = second.name.hasPrefix(prefix) diff --git a/WordPress/Classes/ViewRelated/Me/App Settings/AppSettingsViewController.swift b/WordPress/Classes/ViewRelated/Me/App Settings/AppSettingsViewController.swift index d4626676c0b2..b6df425945ad 100644 --- a/WordPress/Classes/ViewRelated/Me/App Settings/AppSettingsViewController.swift +++ b/WordPress/Classes/ViewRelated/Me/App Settings/AppSettingsViewController.swift @@ -135,7 +135,7 @@ class AppSettingsViewController: UITableViewController { fileprivate func updateMediaCacheSize() { setMediaCacheRowDescription(status: .calculatingSize) - MediaFileManager.calculateSizeOfMediaDirectories { [weak self] (allocatedSize) in + MediaFileManager.calculateSizeOfMediaDirectories { [weak self] allocatedSize in self?.setMediaCacheRowDescription(allocatedSize: allocatedSize) } } diff --git a/WordPress/Classes/ViewRelated/Me/App Settings/MediaCacheSettingsViewController.swift b/WordPress/Classes/ViewRelated/Me/App Settings/MediaCacheSettingsViewController.swift index 60d357d3e017..4d3747f6191d 100644 --- a/WordPress/Classes/ViewRelated/Me/App Settings/MediaCacheSettingsViewController.swift +++ b/WordPress/Classes/ViewRelated/Me/App Settings/MediaCacheSettingsViewController.swift @@ -110,7 +110,7 @@ class MediaCacheSettingsViewController: UITableViewController { fileprivate func updateMediaCacheSize() { setMediaCacheRowDescription(status: .calculatingSize) - MediaFileManager.calculateSizeOfMediaDirectories { [weak self] (allocatedSize) in + MediaFileManager.calculateSizeOfMediaDirectories { [weak self] allocatedSize in self?.setMediaCacheRowDescription(allocatedSize: allocatedSize) } } @@ -121,7 +121,7 @@ class MediaCacheSettingsViewController: UITableViewController { setMediaCacheRowDescription(status: .clearingCache) MediaFileManager.clearAllMediaCacheFiles(onCompletion: { [weak self] in self?.updateMediaCacheSize() - }, onError: { [weak self] (_) in + }, onError: { [weak self] _ in self?.updateMediaCacheSize() }) } diff --git a/WordPress/Classes/ViewRelated/Me/My Profile/Change Username/ChangeUsernameViewController.swift b/WordPress/Classes/ViewRelated/Me/My Profile/Change Username/ChangeUsernameViewController.swift index c4025860711c..309623a4c147 100644 --- a/WordPress/Classes/ViewRelated/Me/My Profile/Change Username/ChangeUsernameViewController.swift +++ b/WordPress/Classes/ViewRelated/Me/My Profile/Change Username/ChangeUsernameViewController.swift @@ -124,7 +124,7 @@ private extension ChangeUsernameViewController { SVProgressHUD.setDefaultMaskType(.clear) SVProgressHUD.show() - viewModel.save() { [weak self] (state, error) in + viewModel.save() { [weak self] state, error in SVProgressHUD.setDefaultMaskType(.none) switch state { case .success: diff --git a/WordPress/Classes/ViewRelated/Me/My Profile/Change Username/View Model/ChangeUsernameViewModel.swift b/WordPress/Classes/ViewRelated/Me/My Profile/Change Username/View Model/ChangeUsernameViewModel.swift index 77dd91ea8dd9..9b0340db8ae0 100644 --- a/WordPress/Classes/ViewRelated/Me/My Profile/Change Username/View Model/ChangeUsernameViewModel.swift +++ b/WordPress/Classes/ViewRelated/Me/My Profile/Change Username/View Model/ChangeUsernameViewModel.swift @@ -45,7 +45,7 @@ class ChangeUsernameViewModel { init(service: AccountSettingsService?, settings: AccountSettings?) { self.settings = settings self.store = AccountSettingsStore(service: service) - self.receipt = self.store.onStateChange { [weak self] (old, new) in + self.receipt = self.store.onStateChange { [weak self] old, new in DispatchQueue.main.async { if old.suggestUsernamesState != new.suggestUsernamesState { self?.suggestionsListener?(new.suggestUsernamesState, new.suggestions, self?.reloadAllSections ?? true) diff --git a/WordPress/Classes/ViewRelated/Media/SiteMedia/Views/MediaStorageDetailsView.swift b/WordPress/Classes/ViewRelated/Media/SiteMedia/Views/MediaStorageDetailsView.swift index 0268c67adf98..0e345b2a137d 100644 --- a/WordPress/Classes/ViewRelated/Media/SiteMedia/Views/MediaStorageDetailsView.swift +++ b/WordPress/Classes/ViewRelated/Media/SiteMedia/Views/MediaStorageDetailsView.swift @@ -413,7 +413,7 @@ private struct MediaTypeBreakdown { } // Then, we group media items into `Item` for displaying on the breakdown view. - var items = categorized.map { (category, media) in + var items = categorized.map { category, media in let size = media.reduce(0) { $0 + $1.actualFileSize } return Item(category: category, size: Measurement(value: size, unit: .bytes), percentage: size / allowed) } diff --git a/WordPress/Classes/ViewRelated/NUX/Controllers/Social Signup/SignupEpilogueViewController.swift b/WordPress/Classes/ViewRelated/NUX/Controllers/Social Signup/SignupEpilogueViewController.swift index 0707e1698c68..5a611de50e99 100644 --- a/WordPress/Classes/ViewRelated/NUX/Controllers/Social Signup/SignupEpilogueViewController.swift +++ b/WordPress/Classes/ViewRelated/NUX/Controllers/Social Signup/SignupEpilogueViewController.swift @@ -234,7 +234,7 @@ private extension SignupEpilogueViewController { let accountSettingService = AccountSettingsService(userID: userID.intValue, api: restApi) - accountSettingService.updateDisplayName(newDisplayName) { (success, _) in + accountSettingService.updateDisplayName(newDisplayName) { success, _ in let event: WPAnalyticsStat = success ? .signupEpilogueDisplayNameUpdateSucceeded : .signupEpilogueDisplayNameUpdateFailed WordPressAuthenticator.track(event, properties: self.tracksProperties()) diff --git a/WordPress/Classes/ViewRelated/NUX/Controllers/Social Signup/SignupUsernameTableViewController.swift b/WordPress/Classes/ViewRelated/NUX/Controllers/Social Signup/SignupUsernameTableViewController.swift index 4d4b498209bd..e7343c657466 100644 --- a/WordPress/Classes/ViewRelated/NUX/Controllers/Social Signup/SignupUsernameTableViewController.swift +++ b/WordPress/Classes/ViewRelated/NUX/Controllers/Social Signup/SignupUsernameTableViewController.swift @@ -44,7 +44,7 @@ class SignupUsernameTableViewController: UITableViewController, SearchTableViewC return } - suggestUsernames(for: nameToSearch) { [weak self] (suggestions) in + suggestUsernames(for: nameToSearch) { [weak self] suggestions in self?.suggestions = suggestions self?.reloadSections() } @@ -71,7 +71,7 @@ class SignupUsernameTableViewController: UITableViewController, SearchTableViewC func setupBackgroundTapGestureRecognizer() { let gestureRecognizer = UITapGestureRecognizer() - gestureRecognizer.on(call: { [weak self] (_) in + gestureRecognizer.on(call: { [weak self] _ in self?.view.endEditing(true) }) gestureRecognizer.cancelsTouchesInView = false @@ -259,7 +259,7 @@ extension SignupUsernameTableViewController { showLoader() let service = AccountSettingsService(userID: userID.intValue, api: api) - service.suggestUsernames(base: searchTerm) { [weak self] (newSuggestions) in + service.suggestUsernames(base: searchTerm) { [weak self] newSuggestions in if newSuggestions.isEmpty { WordPressAuthenticator.track(.signupEpilogueUsernameSuggestionsFailed) } diff --git a/WordPress/Classes/ViewRelated/NUX/Controllers/UnifiedPrologue/ContentViews/Components/Text+BoldSubString.swift b/WordPress/Classes/ViewRelated/NUX/Controllers/UnifiedPrologue/ContentViews/Components/Text+BoldSubString.swift index b153edcd265a..754c843e309c 100644 --- a/WordPress/Classes/ViewRelated/NUX/Controllers/UnifiedPrologue/ContentViews/Components/Text+BoldSubString.swift +++ b/WordPress/Classes/ViewRelated/NUX/Controllers/UnifiedPrologue/ContentViews/Components/Text+BoldSubString.swift @@ -18,7 +18,7 @@ extension Text { var text = Text("") - parts.enumerated().forEach { (index, part) in + parts.enumerated().forEach { index, part in let partText = Text(part) if index == parts.count - 2 { // last-but-one part diff --git a/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift b/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift index e3b277975f79..fd7fd89aeed4 100644 --- a/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift +++ b/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift @@ -415,7 +415,7 @@ extension NewGutenbergViewController { let title: String = (self.post is Page) ? EmptyPostActionSheet.titlePage : EmptyPostActionSheet.titlePost let message: String = EmptyPostActionSheet.message let alertController = UIAlertController(title: title, message: message, preferredStyle: .actionSheet) - let dismissAction = UIAlertAction(title: MediaAttachmentActionSheet.dismissActionTitle, style: .cancel) { (_) in + let dismissAction = UIAlertAction(title: MediaAttachmentActionSheet.dismissActionTitle, style: .cancel) { _ in } alertController.addAction(dismissAction) diff --git a/WordPress/Classes/ViewRelated/NewGutenberg/PostGBKEditorViewController.swift b/WordPress/Classes/ViewRelated/NewGutenberg/PostGBKEditorViewController.swift index b3b0fae9370a..59768f211837 100644 --- a/WordPress/Classes/ViewRelated/NewGutenberg/PostGBKEditorViewController.swift +++ b/WordPress/Classes/ViewRelated/NewGutenberg/PostGBKEditorViewController.swift @@ -230,13 +230,13 @@ private extension PostGBKEditorViewController { // MARK: - Keyboard Observers func setupKeyboardObservers() { - keyboardShowObserver = NotificationCenter.default.addObserver(forName: UIResponder.keyboardDidShowNotification, object: nil, queue: .main) { [weak self] (notification) in + keyboardShowObserver = NotificationCenter.default.addObserver(forName: UIResponder.keyboardDidShowNotification, object: nil, queue: .main) { [weak self] notification in if let self, let keyboardRect = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect { self.keyboardFrame = keyboardRect self.updateConstraintsToAvoidKeyboard(frame: keyboardRect) } } - keyboardHideObserver = NotificationCenter.default.addObserver(forName: UIResponder.keyboardDidHideNotification, object: nil, queue: .main) { [weak self] (notification) in + keyboardHideObserver = NotificationCenter.default.addObserver(forName: UIResponder.keyboardDidHideNotification, object: nil, queue: .main) { [weak self] notification in if let self, let keyboardRect = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect { self.keyboardFrame = keyboardRect self.updateConstraintsToAvoidKeyboard(frame: keyboardRect) @@ -292,7 +292,7 @@ private extension PostGBKEditorViewController { let previousFirstResponder = view.findFirstResponder() let suggestionsController = GutenbergSuggestionsViewController(siteID: siteID, suggestionType: type) currentSuggestionsController = suggestionsController - suggestionsController.onCompletion = { [weak self] (result) in + suggestionsController.onCompletion = { [weak self] result in callback(result) if let self { diff --git a/WordPress/Classes/ViewRelated/Notifications/Controllers/NotificationSettingsViewController.swift b/WordPress/Classes/ViewRelated/Notifications/Controllers/NotificationSettingsViewController.swift index 37f36b6d6adb..3ca1bc58f46f 100644 --- a/WordPress/Classes/ViewRelated/Notifications/Controllers/NotificationSettingsViewController.swift +++ b/WordPress/Classes/ViewRelated/Notifications/Controllers/NotificationSettingsViewController.swift @@ -121,7 +121,7 @@ class NotificationSettingsViewController: UIViewController { dispatchGroup.enter() siteService.fetchAllFollowedSites(success: { dispatchGroup.leave() - }, failure: { (error) in + }, failure: { error in dispatchGroup.leave() DDLogError("Could not sync sites: \(String(describing: error))") }) diff --git a/WordPress/Classes/ViewRelated/Notifications/Controllers/NotificationsViewController+PushPrimer.swift b/WordPress/Classes/ViewRelated/Notifications/Controllers/NotificationsViewController+PushPrimer.swift index c85656ca67b3..9b3a897113ee 100644 --- a/WordPress/Classes/ViewRelated/Notifications/Controllers/NotificationsViewController+PushPrimer.swift +++ b/WordPress/Classes/ViewRelated/Notifications/Controllers/NotificationsViewController+PushPrimer.swift @@ -15,7 +15,7 @@ extension NotificationsViewController { } func setupNotificationPrompt() { - PushNotificationsManager.shared.loadAuthorizationStatus { [weak self] (status) in + PushNotificationsManager.shared.loadAuthorizationStatus { [weak self] status in switch status { case .notDetermined: self?.setupPrimeForPush() diff --git a/WordPress/Classes/ViewRelated/Notifications/Controllers/NotificationsViewController/NotificationsViewController.swift b/WordPress/Classes/ViewRelated/Notifications/Controllers/NotificationsViewController/NotificationsViewController.swift index 19d96fd8601c..334777b6bf74 100644 --- a/WordPress/Classes/ViewRelated/Notifications/Controllers/NotificationsViewController/NotificationsViewController.swift +++ b/WordPress/Classes/ViewRelated/Notifications/Controllers/NotificationsViewController/NotificationsViewController.swift @@ -384,7 +384,7 @@ class NotificationsViewController: UIViewController, UITableViewDataSource, UITa let title = isRead ? NSLocalizedString("Mark Unread", comment: "Marks a notification as unread") : NSLocalizedString("Mark Read", comment: "Marks a notification as unread") - let action = UIContextualAction(style: .normal, title: title, handler: { (_, _, completionHandler) in + let action = UIContextualAction(style: .normal, title: title, handler: { _, _, completionHandler in if isRead { WPAnalytics.track(.notificationMarkAsUnreadTapped) self.markAsUnread(note: note) @@ -415,7 +415,7 @@ class NotificationsViewController: UIViewController, UITableViewDataSource, UITa return nil } - let action = UIContextualAction(style: .normal, title: actionTitle, handler: { (_, _, completionHandler) in + let action = UIContextualAction(style: .normal, title: actionTitle, handler: { _, _, completionHandler in WPAppAnalytics.track(approveAction.on ? .notificationsCommentUnapproved : .notificationsCommentApproved, properties: [Stats.sourceKey: Stats.sourceValue], blogID: block.metaSiteID) let actionContext = ActionContext(block: block) @@ -1255,7 +1255,7 @@ extension NotificationsViewController { let start = Date() - mediator.sync { [weak self] (error, _) in + mediator.sync { [weak self] error, _ in let delta = max(Syncing.minimumPullToRefreshDelay + start.timeIntervalSinceNow, 0) let delay = DispatchTime.now() + Double(Int64(delta * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC) @@ -1919,7 +1919,7 @@ extension NotificationsViewController { guard (try? WPAccount.lookupDefaultWordPressComAccount(in: mainContext)) != nil else { return } - PushNotificationsManager.shared.loadAuthorizationStatus { [weak self] (enabled) in + PushNotificationsManager.shared.loadAuthorizationStatus { [weak self] enabled in guard enabled == .notDetermined else { return } diff --git a/WordPress/Classes/ViewRelated/Notifications/Tools/NotificationMediaDownloader.swift b/WordPress/Classes/ViewRelated/Notifications/Tools/NotificationMediaDownloader.swift index a5bfaeb35367..eccf3c876a5e 100644 --- a/WordPress/Classes/ViewRelated/Notifications/Tools/NotificationMediaDownloader.swift +++ b/WordPress/Classes/ViewRelated/Notifications/Tools/NotificationMediaDownloader.swift @@ -51,7 +51,7 @@ class NotificationMediaDownloader: NSObject { group.enter() - downloadImage(url) { (_, image) in + downloadImage(url) { _, image in guard let image else { group.leave() return @@ -153,7 +153,7 @@ class NotificationMediaDownloader: NSObject { return } - imageDownloader.downloadImage(at: url) { (image, _) in + imageDownloader.downloadImage(at: url) { image, _ in guard let image else { self.downloadImage(url, retryCount: retryCount + 1, completion: completion) return diff --git a/WordPress/Classes/ViewRelated/Pages/Controllers/EditPageViewController.swift b/WordPress/Classes/ViewRelated/Pages/Controllers/EditPageViewController.swift index 75eb27248d1b..2e1cdc2fb575 100644 --- a/WordPress/Classes/ViewRelated/Pages/Controllers/EditPageViewController.swift +++ b/WordPress/Classes/ViewRelated/Pages/Controllers/EditPageViewController.swift @@ -68,7 +68,7 @@ class EditPageViewController: UIViewController { // Proceed with normal editor instantiation let editorViewController = editorFactory.instantiateEditor( for: page, - replaceEditor: { [weak self] (editor, replacement) in + replaceEditor: { [weak self] editor, replacement in self?.replaceEditor(editor: editor, replacement: replacement) }) @@ -94,7 +94,7 @@ class EditPageViewController: UIViewController { let editorViewController = editorFactory.instantiateEditor( for: page, - replaceEditor: { [weak self] (editor, replacement) in + replaceEditor: { [weak self] editor, replacement in self?.replaceEditor(editor: editor, replacement: replacement) }) diff --git a/WordPress/Classes/ViewRelated/Pages/Controllers/PageListViewController.swift b/WordPress/Classes/ViewRelated/Pages/Controllers/PageListViewController.swift index 89d06e6aa718..bc76180b152f 100644 --- a/WordPress/Classes/ViewRelated/Pages/Controllers/PageListViewController.swift +++ b/WordPress/Classes/ViewRelated/Pages/Controllers/PageListViewController.swift @@ -377,7 +377,7 @@ final class PageListViewController: AbstractPostListViewController { override func createPost() { WPAppAnalytics.track(.editorCreatedPost, properties: [WPAppAnalyticsKeyTapSource: Constant.Events.source, WPAppAnalyticsKeyPostType: Constant.Events.pagePostType], blog: blog) - PageCoordinator.showLayoutPickerIfNeeded(from: self, forBlog: blog) { [weak self] (selectedLayout) in + PageCoordinator.showLayoutPickerIfNeeded(from: self, forBlog: blog) { [weak self] selectedLayout in self?.createPage(selectedLayout) } } diff --git a/WordPress/Classes/ViewRelated/People/Controllers/PeopleViewController.swift b/WordPress/Classes/ViewRelated/People/Controllers/PeopleViewController.swift index 5999b0a61d1a..e9a4100850d5 100644 --- a/WordPress/Classes/ViewRelated/People/Controllers/PeopleViewController.swift +++ b/WordPress/Classes/ViewRelated/People/Controllers/PeopleViewController.swift @@ -333,7 +333,7 @@ private extension PeopleViewController { func refreshPeople() { self.isInitialLoad = true self.refreshNoResultsView() - loadPeoplePage() { [weak self] (retrieved, shouldLoadMore) in + loadPeoplePage() { [weak self] retrieved, shouldLoadMore in self?.isInitialLoad = false self?.refreshNoResultsView() self?.tableView.reloadData() @@ -360,7 +360,7 @@ private extension PeopleViewController { isLoadingMore = true - loadPeoplePage(nextRequestOffset) { [weak self] (retrieved, shouldLoadMore) in + loadPeoplePage(nextRequestOffset) { [weak self] retrieved, shouldLoadMore in self?.nextRequestOffset += retrieved self?.shouldLoadMore = shouldLoadMore self?.isLoadingMore = false @@ -392,7 +392,7 @@ private extension PeopleViewController { let group = DispatchGroup() group.enter() - peopleService.loadUsersPage(offset, success: { (retrieved, shouldLoadMore) in + peopleService.loadUsersPage(offset, success: { retrieved, shouldLoadMore in result = (retrieved, shouldLoadMore) group.leave() }, failure: { error in diff --git a/WordPress/Classes/ViewRelated/Plugins/Controllers/PluginListViewController.swift b/WordPress/Classes/ViewRelated/Plugins/Controllers/PluginListViewController.swift index e8ac3f378bb7..fe120d409b89 100644 --- a/WordPress/Classes/ViewRelated/Plugins/Controllers/PluginListViewController.swift +++ b/WordPress/Classes/ViewRelated/Plugins/Controllers/PluginListViewController.swift @@ -39,7 +39,7 @@ class PluginListViewController: UITableViewController, ImmuTablePresenter { ImmuTable.registerRows(PluginListViewModel.immutableRows, tableView: tableView) setupRefreshControl() - viewModelStateChangeReceipt = viewModel.onStateChange { [weak self] (change) in + viewModelStateChangeReceipt = viewModel.onStateChange { [weak self] change in self?.refreshModel(change: change) } viewModelChangeReceipt = viewModel.onChange { [weak self] in diff --git a/WordPress/Classes/ViewRelated/Plugins/ViewModels/PluginListViewModel.swift b/WordPress/Classes/ViewRelated/Plugins/ViewModels/PluginListViewModel.swift index 934d38d71e82..891d3e4bc276 100644 --- a/WordPress/Classes/ViewRelated/Plugins/ViewModels/PluginListViewModel.swift +++ b/WordPress/Classes/ViewRelated/Plugins/ViewModels/PluginListViewModel.swift @@ -123,7 +123,7 @@ class PluginListViewModel: Observable { storeReceipt = store.onChange { [weak self] in self?.refreshState() } - actionReceipt = ActionDispatcher.global.subscribe { [weak self] (action) in + actionReceipt = ActionDispatcher.global.subscribe { [weak self] action in guard let error = self?.receiveError(from: action) else { return } diff --git a/WordPress/Classes/ViewRelated/Plugins/ViewModels/PluginViewModel.swift b/WordPress/Classes/ViewRelated/Plugins/ViewModels/PluginViewModel.swift index 3b0eb3262958..e45dfc73aefe 100644 --- a/WordPress/Classes/ViewRelated/Plugins/ViewModels/PluginViewModel.swift +++ b/WordPress/Classes/ViewRelated/Plugins/ViewModels/PluginViewModel.swift @@ -247,7 +247,7 @@ class PluginViewModel: Observable { title: message, subtitle: subtitle, actionLabel: NSLocalizedString("Update", comment: "Button label to update a plugin"), - onButtonTap: { [unowned self] (_) in + onButtonTap: { [unowned self] _ in ActionDispatcher.dispatch(PluginAction.update(id: plugin.id, site: self.site)) } ) @@ -301,7 +301,7 @@ class PluginViewModel: Observable { return SwitchRow( title: NSLocalizedString("Active", comment: "Whether a plugin is active on a site"), value: activationPlugin.state.active, - onChange: { [unowned self] (active) in + onChange: { [unowned self] active in self.setActive(active, for: activationPlugin) } ) @@ -319,7 +319,7 @@ class PluginViewModel: Observable { return SwitchRow( title: NSLocalizedString("Autoupdates", comment: "Whether a plugin has enabled automatic updates"), value: autoUpdatePlugin.state.autoupdate, - onChange: { [unowned self] (autoupdate) in + onChange: { [unowned self] autoupdate in self.setAutoupdate(autoupdate, for: autoUpdatePlugin) } ) @@ -494,7 +494,7 @@ class PluginViewModel: Observable { WPAnalytics.track(.automatedTransferCustomDomainDialogCancelled) } - let registerDomainAction = alertController.addDefaultActionWithTitle(registerDomainActionTitle) { [weak self] (_) in + let registerDomainAction = alertController.addDefaultActionWithTitle(registerDomainActionTitle) { [weak self] _ in self?.presentDomainRegistration(for: directoryEntry) } @@ -594,7 +594,7 @@ class PluginViewModel: Observable { copy.enumerateAttribute(NSAttributedString.Key.font, in: NSRange(location: 0, length: copy.length), - options: NSAttributedString.EnumerationOptions(rawValue: 0)) { (value, range, _) in + options: NSAttributedString.EnumerationOptions(rawValue: 0)) { value, range, _ in guard let font = value as? UIFont, font.familyName == "Times New Roman" else { return } copy.addAttribute(.font, value: WPStyleGuide.subtitleFont(), range: range) @@ -605,7 +605,7 @@ class PluginViewModel: Observable { copy.enumerateAttribute(NSAttributedString.Key.paragraphStyle, in: NSRange(location: 0, length: copy.length), - options: [.longestEffectiveRangeNotRequired]) { (value, range, _) in + options: [.longestEffectiveRangeNotRequired]) { value, range, _ in guard let paragraphStyle = value as? NSParagraphStyle else { return } paragraphAttributes.append((paragraphStyle, range)) diff --git a/WordPress/Classes/ViewRelated/Post/EditPostViewController.swift b/WordPress/Classes/ViewRelated/Post/EditPostViewController.swift index b88d3b677f29..9ce55c798f7a 100644 --- a/WordPress/Classes/ViewRelated/Post/EditPostViewController.swift +++ b/WordPress/Classes/ViewRelated/Post/EditPostViewController.swift @@ -127,7 +127,7 @@ class EditPostViewController: UIViewController { // Proceed with normal editor instantiation let editor = editorFactory.instantiateEditor( for: post, - replaceEditor: { [weak self] (editor, replacement) in + replaceEditor: { [weak self] editor, replacement in self?.replaceEditor(editor: editor, replacement: replacement) }) editor.postIsReblogged = postIsReblogged @@ -154,7 +154,7 @@ class EditPostViewController: UIViewController { let editor = self.editorFactory.instantiateEditor( for: post, - replaceEditor: { [weak self] (editor, replacement) in + replaceEditor: { [weak self] editor, replacement in self?.replaceEditor(editor: editor, replacement: replacement) }) editor.postIsReblogged = self.postIsReblogged diff --git a/WordPress/Classes/ViewRelated/Post/PostSettings/Views/PostTagsView.swift b/WordPress/Classes/ViewRelated/Post/PostSettings/Views/PostTagsView.swift index 8caa382a7789..201086620873 100644 --- a/WordPress/Classes/ViewRelated/Post/PostSettings/Views/PostTagsView.swift +++ b/WordPress/Classes/ViewRelated/Post/PostSettings/Views/PostTagsView.swift @@ -115,7 +115,7 @@ struct PostTagsView: View { text: $viewModel.searchText, onSubmit: addTag ) - .onChange(of: viewModel.searchText) { (_, newValue) in + .onChange(of: viewModel.searchText) { _, newValue in handleTextChange(newValue) } diff --git a/WordPress/Classes/ViewRelated/Post/PostSharingController.swift b/WordPress/Classes/ViewRelated/Post/PostSharingController.swift index 14ac96f06fa1..14a98776ab63 100644 --- a/WordPress/Classes/ViewRelated/Post/PostSharingController.swift +++ b/WordPress/Classes/ViewRelated/Post/PostSharingController.swift @@ -16,7 +16,7 @@ import WordPressData if let title { controller.setValue(title, forKey: "subject") } - controller.completionWithItemsHandler = { (activityType, completed, _, _) in + controller.completionWithItemsHandler = { activityType, completed, _, _ in if completed { WPActivityDefaults.trackActivityType((activityType).map { $0.rawValue }) } diff --git a/WordPress/Classes/ViewRelated/Post/Revisions/Browser/Preview/RevisionPreviewTextViewManager.swift b/WordPress/Classes/ViewRelated/Post/Revisions/Browser/Preview/RevisionPreviewTextViewManager.swift index fb5e62252700..ced596598470 100644 --- a/WordPress/Classes/ViewRelated/Post/Revisions/Browser/Preview/RevisionPreviewTextViewManager.swift +++ b/WordPress/Classes/ViewRelated/Post/Revisions/Browser/Preview/RevisionPreviewTextViewManager.swift @@ -65,7 +65,7 @@ private extension RevisionPreviewTextViewManager { return } - let receipt = mediaUtility.downloadImage(from: url, post: post, success: success, onFailure: { (_) in failure() }) + let receipt = mediaUtility.downloadImage(from: url, post: post, success: success, onFailure: { _ in failure() }) activeMediaRequests.append(receipt) } } diff --git a/WordPress/Classes/ViewRelated/QR Login/Coordinators/QRLoginCoordinator.swift b/WordPress/Classes/ViewRelated/QR Login/Coordinators/QRLoginCoordinator.swift index 9c4a4ff11b53..2ee727fef255 100644 --- a/WordPress/Classes/ViewRelated/QR Login/Coordinators/QRLoginCoordinator.swift +++ b/WordPress/Classes/ViewRelated/QR Login/Coordinators/QRLoginCoordinator.swift @@ -68,7 +68,7 @@ extension QRLoginCoordinator { return } - props.merge(properties) { (_, new) in new } + props.merge(properties) { _, new in new } WPAnalytics.track(event, properties: props) } } diff --git a/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderStreamViewController+Sharing.swift b/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderStreamViewController+Sharing.swift index 925d4f7044d1..913dfeffa8b6 100644 --- a/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderStreamViewController+Sharing.swift +++ b/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderStreamViewController+Sharing.swift @@ -49,7 +49,7 @@ extension ReaderStreamViewController { let activities = WPActivityDefaults.defaultActivities() as! [UIActivity] let activityViewController = UIActivityViewController(activityItems: [sitePendingPost], applicationActivities: activities) - activityViewController.completionWithItemsHandler = { (activityType, completed, _, _) in + activityViewController.completionWithItemsHandler = { activityType, completed, _, _ in if completed { WPActivityDefaults.trackActivityType((activityType).map { $0.rawValue }) } diff --git a/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderStreamViewController.swift b/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderStreamViewController.swift index 7897e74523ce..6b9ca61f3b63 100644 --- a/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderStreamViewController.swift +++ b/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderStreamViewController.swift @@ -895,7 +895,7 @@ import AutomatticTracks } completionHandler(.newData) } - }, failure: { (_) in + }, failure: { _ in completionHandler(.failed) }) } diff --git a/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailViewController.swift b/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailViewController.swift index 8ddcc78ed64f..9105577c19e1 100644 --- a/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailViewController.swift +++ b/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailViewController.swift @@ -599,7 +599,7 @@ class ReaderDetailViewController: UIViewController, ReaderDetailView { /// (except for a few times when it returns a very big weird number) /// We use that value so the content is not displayed with weird empty space at the bottom /// - self.webView.evaluateJavaScript("document.body.scrollHeight", completionHandler: { [weak self] (webViewHeight, _) in + self.webView.evaluateJavaScript("document.body.scrollHeight", completionHandler: { [weak self] webViewHeight, _ in guard let self else { return } guard let webViewHeight = webViewHeight as? CGFloat else { self.webViewHeight.constant = height diff --git a/WordPress/Classes/ViewRelated/Reader/Manage/ReaderTagsTableViewModel.swift b/WordPress/Classes/ViewRelated/Reader/Manage/ReaderTagsTableViewModel.swift index 1c195425ed4e..08d67abab353 100644 --- a/WordPress/Classes/ViewRelated/Reader/Manage/ReaderTagsTableViewModel.swift +++ b/WordPress/Classes/ViewRelated/Reader/Manage/ReaderTagsTableViewModel.swift @@ -192,7 +192,7 @@ extension ReaderTagsTableViewModel { if let tag = service.currentTopic(in: self.context) as? ReaderTagTopic { self.scrollToTag(tag) } - }, failure: { (error) in + }, failure: { error in DDLogError("Could not follow topic named \(tagName) : \(String(describing: error))") generator.notificationOccurred(.error) diff --git a/WordPress/Classes/ViewRelated/Reader/Subscriptions/ReaderSubscriptionHelper.swift b/WordPress/Classes/ViewRelated/Reader/Subscriptions/ReaderSubscriptionHelper.swift index c88aa8a44a6f..ce04bd32e3c9 100644 --- a/WordPress/Classes/ViewRelated/Reader/Subscriptions/ReaderSubscriptionHelper.swift +++ b/WordPress/Classes/ViewRelated/Reader/Subscriptions/ReaderSubscriptionHelper.swift @@ -53,7 +53,7 @@ struct ReaderSubscriptionHelper { service.toggleFollowing(forSite: topic, success: { follow in ReaderHelpers.dispatchToggleFollowSiteMessage(site: topic, follow: follow, success: true) completion?(true) - }, failure: { (follow, _) in + }, failure: { follow, _ in ReaderHelpers.dispatchToggleFollowSiteMessage(site: topic, follow: follow, success: false) completion?(false) }) diff --git a/WordPress/Classes/ViewRelated/Site Creation/Design Selection/Preview/TemplatePreviewViewController.swift b/WordPress/Classes/ViewRelated/Site Creation/Design Selection/Preview/TemplatePreviewViewController.swift index eebc4246da1b..4f598efea6a6 100644 --- a/WordPress/Classes/ViewRelated/Site Creation/Design Selection/Preview/TemplatePreviewViewController.swift +++ b/WordPress/Classes/ViewRelated/Site Creation/Design Selection/Preview/TemplatePreviewViewController.swift @@ -106,7 +106,7 @@ class TemplatePreviewViewController: UIViewController, NoResultsViewHost, UIPopo } private func observeProgressEstimations() { - estimatedProgressObserver = webView.observe(\.estimatedProgress, options: [.new]) { [weak self] (webView, _) in + estimatedProgressObserver = webView.observe(\.estimatedProgress, options: [.new]) { [weak self] webView, _ in self?.progressBar.progress = Float(webView.estimatedProgress) } } diff --git a/WordPress/Classes/ViewRelated/Site Creation/Design Selection/SiteDesignStep.swift b/WordPress/Classes/ViewRelated/Site Creation/Design Selection/SiteDesignStep.swift index a3c7f7165ea2..84541d051902 100644 --- a/WordPress/Classes/ViewRelated/Site Creation/Design Selection/SiteDesignStep.swift +++ b/WordPress/Classes/ViewRelated/Site Creation/Design Selection/SiteDesignStep.swift @@ -9,7 +9,7 @@ final class SiteDesignStep: WizardStep { private let isLastStep: Bool private(set) lazy var content: UIViewController = { - return SiteDesignContentCollectionViewController(creator: creator, createsSite: isLastStep) { [weak self] (design) in + return SiteDesignContentCollectionViewController(creator: creator, createsSite: isLastStep) { [weak self] design in self?.didSelect(design) } }() diff --git a/WordPress/Classes/ViewRelated/Site Creation/Shared/SiteCreationAnalyticsHelper.swift b/WordPress/Classes/ViewRelated/Site Creation/Shared/SiteCreationAnalyticsHelper.swift index 8c4f42673e3e..ca807c39e37f 100644 --- a/WordPress/Classes/ViewRelated/Site Creation/Shared/SiteCreationAnalyticsHelper.swift +++ b/WordPress/Classes/ViewRelated/Site Creation/Shared/SiteCreationAnalyticsHelper.swift @@ -128,10 +128,10 @@ class SiteCreationAnalyticsHelper { for property: Any? in properties { if let siteDesign = property as? RemoteSiteDesign { - result.merge([siteDesignKey: siteDesign.slug]) { (_, new) in new } + result.merge([siteDesignKey: siteDesign.slug]) { _, new in new } } if let previewMode = property as? PreviewDevice { - result.merge([previewModeKey: previewMode.rawValue]) { (_, new) in new } + result.merge([previewModeKey: previewMode.rawValue]) { _, new in new } } } diff --git a/WordPress/Classes/ViewRelated/Site Creation/Web Address/WebAddressStep.swift b/WordPress/Classes/ViewRelated/Site Creation/Web Address/WebAddressStep.swift index 11efe7e67dab..4b0eb72a0a3f 100644 --- a/WordPress/Classes/ViewRelated/Site Creation/Web Address/WebAddressStep.swift +++ b/WordPress/Classes/ViewRelated/Site Creation/Web Address/WebAddressStep.swift @@ -16,7 +16,7 @@ final class WebAddressStep: WizardStep { domainSelectionType: .siteCreation, primaryActionTitle: primaryActionTitle, includeSupportButton: false - ) { [weak self] (address) in + ) { [weak self] address in self?.didSelect(address) } }() diff --git a/WordPress/Classes/ViewRelated/Support/SupportChatBot/SupportChatBotViewController.swift b/WordPress/Classes/ViewRelated/Support/SupportChatBot/SupportChatBotViewController.swift index af649850c455..f13bf39179c6 100644 --- a/WordPress/Classes/ViewRelated/Support/SupportChatBot/SupportChatBotViewController.swift +++ b/WordPress/Classes/ViewRelated/Support/SupportChatBot/SupportChatBotViewController.swift @@ -136,7 +136,7 @@ private extension SupportChatBotViewController { extension SupportChatBotViewController: WKNavigationDelegate { func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { - webView.evaluateJavaScript(createDocsBotInitCode(), completionHandler: { (_, error) in + webView.evaluateJavaScript(createDocsBotInitCode(), completionHandler: { _, error in if let error { DDLogError("Failed to initialize docs bot code: \(error)") } diff --git a/WordPress/Classes/ViewRelated/System/Action Sheet/ActionSheetViewController.swift b/WordPress/Classes/ViewRelated/System/Action Sheet/ActionSheetViewController.swift index 58a9e8243d8e..d327458fa466 100644 --- a/WordPress/Classes/ViewRelated/System/Action Sheet/ActionSheetViewController.swift +++ b/WordPress/Classes/ViewRelated/System/Action Sheet/ActionSheetViewController.swift @@ -93,7 +93,7 @@ class ActionSheetViewController: UIViewController { headerLabel.translatesAutoresizingMaskIntoConstraints = false headerLabel.adjustsFontForContentSizeCategory = true - let buttonViews = buttons.map({ (buttonInfo) -> UIButton in + let buttonViews = buttons.map({ buttonInfo -> UIButton in return button(buttonInfo) }) diff --git a/WordPress/Classes/ViewRelated/System/Floating Create Button/CreateButtonCoordinator.swift b/WordPress/Classes/ViewRelated/System/Floating Create Button/CreateButtonCoordinator.swift index 625720826afc..c69eb7be0692 100644 --- a/WordPress/Classes/ViewRelated/System/Floating Create Button/CreateButtonCoordinator.swift +++ b/WordPress/Classes/ViewRelated/System/Floating Create Button/CreateButtonCoordinator.swift @@ -186,9 +186,9 @@ private extension CreateButtonCoordinator { return } - bloggingPromptsService.todaysPrompt(success: { [weak self] (prompt) in + bloggingPromptsService.todaysPrompt(success: { [weak self] prompt in self?.prompt = prompt - }, failure: { [weak self] (error) in + }, failure: { [weak self] error in self?.prompt = nil DDLogError("FAB: failed fetching blogging prompt: \(String(describing: error))") }) @@ -301,7 +301,7 @@ private extension UIButton { let animator = UIViewPropertyAnimator(duration: duration, dampingRatio: damping) { self.transform = CGAffineTransform(scaleX: scaleFinal, y: scaleFinal) } - animator.addCompletion { (_) in + animator.addCompletion { _ in completion?(true) } animator.startAnimation() diff --git a/WordPress/Classes/ViewRelated/Tags/SiteCustomTaxonomiesView.swift b/WordPress/Classes/ViewRelated/Tags/SiteCustomTaxonomiesView.swift index a23a92ea267d..f1c2815ac3c9 100644 --- a/WordPress/Classes/ViewRelated/Tags/SiteCustomTaxonomiesView.swift +++ b/WordPress/Classes/ViewRelated/Tags/SiteCustomTaxonomiesView.swift @@ -58,7 +58,7 @@ struct SiteCustomTaxonomiesView: View { do { let result = try await client.api.taxonomies.listWithEditContext(params: .init()).data // The "Categories" and "Tags" are displayed in its own views. This view only displays custom taxonomies. - let customTaxonomies: [TaxonomyTypeDetailsWithEditContext] = result.taxonomyTypes.compactMap { (type, taxonomy) in + let customTaxonomies: [TaxonomyTypeDetailsWithEditContext] = result.taxonomyTypes.compactMap { type, taxonomy in switch type { case .category, .navMenu, .postTag, .wpPatternCategory: nil diff --git a/WordPress/Classes/ViewRelated/Themes/ThemeBrowserViewController.swift b/WordPress/Classes/ViewRelated/Themes/ThemeBrowserViewController.swift index f2bb6b06bc79..310ea3b6910c 100644 --- a/WordPress/Classes/ViewRelated/Themes/ThemeBrowserViewController.swift +++ b/WordPress/Classes/ViewRelated/Themes/ThemeBrowserViewController.swift @@ -423,7 +423,7 @@ public protocol ThemePresenter: AnyObject { self?.collectionView?.collectionViewLayout.invalidateLayout() } }, - failure: { (error) in + failure: { error in DDLogError("Error updating active theme: \(String(describing: error?.localizedDescription))") }) } @@ -466,7 +466,7 @@ public protocol ThemePresenter: AnyObject { } self?.totalThemeCount = themeCount }, - failure: { (error) in + failure: { error in DDLogError("Error syncing themes: \(String(describing: error?.localizedDescription))") if let failure, let error { @@ -484,7 +484,7 @@ public protocol ThemePresenter: AnyObject { } self?.totalCustomThemeCount = themeCount }, - failure: { (error) in + failure: { error in DDLogError("Error syncing themes: \(String(describing: error?.localizedDescription))") if let failure, let error { @@ -867,7 +867,7 @@ public protocol ThemePresenter: AnyObject { alertController.addDefaultActionWithTitle(SharedStrings.Button.ok, handler: nil) alertController.presentFromRootViewController() }, - failure: { [weak self] (error) in + failure: { [weak self] error in DDLogError("Error activating theme \(String(describing: theme.themeId)): \(String(describing: error?.localizedDescription))") let errorTitle = NSLocalizedString("Activation Error", comment: "Title of alert when theme activation fails") diff --git a/WordPress/JetpackIntents/SitesDataProvider.swift b/WordPress/JetpackIntents/SitesDataProvider.swift index f3503a641d89..5d8f228a7bb0 100644 --- a/WordPress/JetpackIntents/SitesDataProvider.swift +++ b/WordPress/JetpackIntents/SitesDataProvider.swift @@ -41,7 +41,7 @@ class SitesDataProvider { display: data.siteName, subtitle: siteDomain, image: nil) - }.sorted(by: { (firstSite, secondSite) -> Bool in + }.sorted(by: { firstSite, secondSite -> Bool in let firstTitle = firstSite.displayString.lowercased() let secondTitle = secondSite.displayString.lowercased() diff --git a/WordPress/WordPressScreenshotGeneration/SnapshotHelper.swift b/WordPress/WordPressScreenshotGeneration/SnapshotHelper.swift index 4a24e3521a8c..634ad284f320 100644 --- a/WordPress/WordPressScreenshotGeneration/SnapshotHelper.swift +++ b/WordPress/WordPressScreenshotGeneration/SnapshotHelper.swift @@ -275,7 +275,7 @@ private extension XCUIElementAttributes { private extension XCUIElementQuery { var networkLoadingIndicators: XCUIElementQuery { - let isNetworkLoadingIndicator = NSPredicate { (evaluatedObject, _) in + let isNetworkLoadingIndicator = NSPredicate { evaluatedObject, _ in guard let element = evaluatedObject as? XCUIElementAttributes else { return false } return element.isNetworkLoadingIndicator @@ -292,7 +292,7 @@ private extension XCUIElementQuery { let deviceWidth = app.windows.firstMatch.frame.width - let isStatusBar = NSPredicate { (evaluatedObject, _) in + let isStatusBar = NSPredicate { evaluatedObject, _ in guard let element = evaluatedObject as? XCUIElementAttributes else { return false } return element.isStatusBar(deviceWidth) diff --git a/WordPress/WordPressShareExtension/Sources/Services/ShareExtractor.swift b/WordPress/WordPressShareExtension/Sources/Services/ShareExtractor.swift index bb6a548f5b19..43293fd6b6a1 100644 --- a/WordPress/WordPressShareExtension/Sources/Services/ShareExtractor.swift +++ b/WordPress/WordPressShareExtension/Sources/Services/ShareExtractor.swift @@ -263,7 +263,7 @@ private extension TypeBasedExtensionContentExtractor { for provider in itemProviders { syncGroup.enter() // Remember, this is an async call.... - provider.loadItem(forTypeIdentifier: acceptedType, options: nil) { (payload, _) in + provider.loadItem(forTypeIdentifier: acceptedType, options: nil) { payload, _ in let payload = payload as? Payload let result = payload.flatMap(self.convert(payload:)) if let result { diff --git a/WordPress/WordPressShareExtension/Sources/UI/MainShareViewController.swift b/WordPress/WordPressShareExtension/Sources/UI/MainShareViewController.swift index 9f0980b96ae8..cc67ae831438 100644 --- a/WordPress/WordPressShareExtension/Sources/UI/MainShareViewController.swift +++ b/WordPress/WordPressShareExtension/Sources/UI/MainShareViewController.swift @@ -75,7 +75,7 @@ class MainShareViewController: UIViewController { private extension MainShareViewController { func loadAndPresentNavigationVC() { editorController.context = extensionContext - editorController.dismissalCompletionBlock = { [weak self] (exitSharing) in + editorController.dismissalCompletionBlock = { [weak self] exitSharing in if exitSharing { self?.extensionContext?.completeRequest(returningItems: nil, completionHandler: nil) } else { diff --git a/WordPress/WordPressShareExtension/Sources/UI/ShareExtensionAbstractViewController.swift b/WordPress/WordPressShareExtension/Sources/UI/ShareExtensionAbstractViewController.swift index cbc73c16b24a..957211ff6292 100644 --- a/WordPress/WordPressShareExtension/Sources/UI/ShareExtensionAbstractViewController.swift +++ b/WordPress/WordPressShareExtension/Sources/UI/ShareExtensionAbstractViewController.swift @@ -138,7 +138,7 @@ extension ShareExtensionAbstractViewController { let accept = AppLocalizedString("Cancel sharing", comment: "Share extension dialog dismiss button label - displayed when user is missing a login token.") let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) - let alertAction = UIAlertAction(title: accept, style: .default) { (_) in + let alertAction = UIAlertAction(title: accept, style: .default) { _ in self.cleanUpSharedContainerAndCache() self.dismissalCompletionBlock?(false) } diff --git a/WordPress/WordPressShareExtension/Sources/UI/ShareExtensionEditorViewController.swift b/WordPress/WordPressShareExtension/Sources/UI/ShareExtensionEditorViewController.swift index 6f8975337f38..0e98ecb680c2 100644 --- a/WordPress/WordPressShareExtension/Sources/UI/ShareExtensionEditorViewController.swift +++ b/WordPress/WordPressShareExtension/Sources/UI/ShareExtensionEditorViewController.swift @@ -961,7 +961,7 @@ extension ShareExtensionEditorViewController { comment: "User action to dismiss media options." ), style: .cancel, - handler: { (_) in + handler: { _ in if attachment == self.currentSelectedAttachment { self.currentSelectedAttachment = nil self.resetMediaAttachmentOverlay(attachment) @@ -977,7 +977,7 @@ extension ShareExtensionEditorViewController { comment: "User action to remove media." ), style: .destructive, - handler: { (_) in + handler: { _ in self.richTextView.remove(attachmentID: mediaID) } ) diff --git a/WordPress/WordPressShareExtension/Sources/UI/ShareModularViewController.swift b/WordPress/WordPressShareExtension/Sources/UI/ShareModularViewController.swift index 6bc32fa48885..37b61f6cab1c 100644 --- a/WordPress/WordPressShareExtension/Sources/UI/ShareModularViewController.swift +++ b/WordPress/WordPressShareExtension/Sources/UI/ShareModularViewController.swift @@ -891,13 +891,13 @@ fileprivate extension ShareModularViewController { value: "Try again", comment: "Share extension error dialog retry button label." ) - let acceptAction = UIAlertAction(title: acceptButtonText, style: .default) { (_) in + let acceptAction = UIAlertAction(title: acceptButtonText, style: .default) { _ in self.savePostToRemoteSite() } alertController.addAction(acceptAction) let dismissButtonText = dismiss - let dismissAction = UIAlertAction(title: dismissButtonText, style: .cancel) { (_) in + let dismissAction = UIAlertAction(title: dismissButtonText, style: .cancel) { _ in self.showCancellingView() self.cleanUpSharedContainerAndCache() self.dismiss() @@ -914,7 +914,7 @@ fileprivate extension ShareModularViewController { let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) - let dismissAction = UIAlertAction(title: dismiss, style: .cancel) { [weak self] (_) in + let dismissAction = UIAlertAction(title: dismiss, style: .cancel) { [weak self] _ in self?.noResultsViewController.removeFromView() } alertController.addAction(dismissAction)