diff --git a/Nynja.xcodeproj/project.pbxproj b/Nynja.xcodeproj/project.pbxproj index 2dbb0e267d9167ae372275b609aaeeffe4f95d0c..9d58d6a4bcc4117301778f3e25517c04765a661e 100644 --- a/Nynja.xcodeproj/project.pbxproj +++ b/Nynja.xcodeproj/project.pbxproj @@ -629,6 +629,7 @@ 5C468A609C445962C0D19DD3 /* HistoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D6900257B1AB2CA0BC834EB /* HistoryViewController.swift */; }; 5DBBAAF3AAB09B2D4E71B806 /* AddContactViaPhoneViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FB993F14055EAE59F572530 /* AddContactViaPhoneViewController.swift */; }; 5E278E14F45F56BACB71271C /* VideoPreviewWireframe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F5541C91FE7845F3E5C7EB2 /* VideoPreviewWireframe.swift */; }; + 5E710687212C24A00063118D /* ReachabilityServiceExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E710686212C24A00063118D /* ReachabilityServiceExtension.swift */; }; 5EB13FDBA6153EE67366115F /* ScheduleMessageInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5095F3CF5921F107D81C8652 /* ScheduleMessageInteractor.swift */; }; 5ED473EC698E99DC021E553A /* MapSearchInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BD49CF323041B47A752603E /* MapSearchInteractor.swift */; }; 619C44B00CC7B169077CDEC2 /* EditProfileProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B377AA90A6B6BA0120C31F1 /* EditProfileProtocols.swift */; }; @@ -2664,6 +2665,7 @@ 5BC1D38020D3B54B002A44B3 /* CallInfoViewLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallInfoViewLayout.swift; sourceTree = ""; }; 5BC1D38320D3B670002A44B3 /* CallCreatorMediator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallCreatorMediator.swift; sourceTree = ""; }; 5D3E868EE32625048BCB13A8 /* HistoryInteractor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = HistoryInteractor.swift; sourceTree = ""; }; + 5E710686212C24A00063118D /* ReachabilityServiceExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReachabilityServiceExtension.swift; sourceTree = ""; }; 5EEA3D18EFB98D7959F993E4 /* AddParticipantsProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AddParticipantsProtocols.swift; sourceTree = ""; }; 5F509C0C8B9C738DBC7ABE07 /* SecurityViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SecurityViewController.swift; sourceTree = ""; }; 61B964D5CB991533BA5C164C /* HistoryPresenter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = HistoryPresenter.swift; sourceTree = ""; }; @@ -5627,6 +5629,7 @@ 3A1F74F91F5ED344009A11E4 /* PushService.swift */, 26ABCA3D21189DA400EA4782 /* Aps.swift */, 3A1C87431F6103820029B0BC /* ReachabilityService.swift */, + 5E710686212C24A00063118D /* ReachabilityServiceExtension.swift */, E7F2CFE11F5EEF1E00806E43 /* PermissionManager.swift */, 35F2DA601F73CAD400777920 /* NotificationManager.swift */, 2652D6171FA85B28005E62C7 /* ImageSelector.swift */, @@ -14961,6 +14964,7 @@ A43B259520AB1DFA00FF8107 /* InputContentProtocol.swift in Sources */, 2625DBF620EFC52E00E01C05 /* AudioFileConvertOperation.swift in Sources */, 0062D9482062EC4100B915AC /* InviteFriendsInteractor.swift in Sources */, + 5E710687212C24A00063118D /* ReachabilityServiceExtension.swift in Sources */, 8562853220D140FC000C9739 /* InputBar+ButtonType.swift in Sources */, A43B25AC20AB1DFA00FF8107 /* BaseInputView.swift in Sources */, F127F3BA20BF03BF007A6F87 /* DateFormatterExtension.swift in Sources */, @@ -15417,6 +15421,7 @@ INFOPLIST_FILE = "$(SRCROOT)/Nynja/Resources/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_SWIFT_FLAGS = "$(inherited) -D SQLITE_HAS_CODEC -D GRDBCIPHER $(inherited) \"-D\" \"COCOAPODS\" -Xfrontend -debug-time-function-bodies"; PRODUCT_BUNDLE_IDENTIFIER = "$(BundleIdentifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = "dc81b7c8-7ca8-4e18-9fee-d0f512f7c8ca"; @@ -15446,6 +15451,7 @@ INFOPLIST_FILE = "$(SRCROOT)/Nynja/Resources/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_SWIFT_FLAGS = "$(inherited) -D SQLITE_HAS_CODEC -D GRDBCIPHER $(inherited) \"-D\" \"COCOAPODS\" -Xfrontend -debug-time-function-bodies"; PRODUCT_BUNDLE_IDENTIFIER = "$(BundleIdentifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = "f7246486-87f5-46b9-aeed-3ddf15f9a589"; @@ -15537,6 +15543,7 @@ INFOPLIST_FILE = "$(SRCROOT)/Nynja/Resources/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_SWIFT_FLAGS = "$(inherited) -D SQLITE_HAS_CODEC -D GRDBCIPHER $(inherited) \"-D\" \"COCOAPODS\" -Xfrontend -debug-time-function-bodies"; PRODUCT_BUNDLE_IDENTIFIER = "$(BundleIdentifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = "e9cc21bd-73cb-4b39-92ab-097127d12162"; @@ -15726,6 +15733,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = NO; + OTHER_SWIFT_FLAGS = "$(inherited) -D SQLITE_HAS_CODEC -D GRDBCIPHER $(inherited) \"-D\" \"COCOAPODS\" -Xfrontend -debug-time-function-bodies"; PRODUCT_BUNDLE_IDENTIFIER = "$(BundleIdentifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = "3d9e361e-de0d-4189-be64-4bea82318684"; diff --git a/Nynja/KeychainService/KeychainService.swift b/Nynja/KeychainService/KeychainService.swift index ef4f1ac22c7a380a2c4225208d3d830f2101b268..030086b7163999c928655c1139a460bea70bded0 100644 --- a/Nynja/KeychainService/KeychainService.swift +++ b/Nynja/KeychainService/KeychainService.swift @@ -92,11 +92,12 @@ final class KeychainService { return queries.reduce(true) { partial, query in let deleteResult = SecItemDelete(query as CFDictionary) let isSuccess = deleteResult == errSecSuccess || deleteResult == errSecItemNotFound - return partial && isSuccess - } - - defer { - LogService.log(topic: .keychain, text: "Wipe keychain") + + let result = partial && isSuccess + + LogService.log(topic: .keychain, text: "Wipe keychain with status - \(result)") + + return result } } diff --git a/Nynja/Library/UI/Extensions/Localizable.swift b/Nynja/Library/UI/Extensions/Localizable.swift index 57dd6a27659e2319135f15bcf539867953cffbd2..97855fb58670b7ef1fc2a9df61e3709d2b963b22 100644 --- a/Nynja/Library/UI/Extensions/Localizable.swift +++ b/Nynja/Library/UI/Extensions/Localizable.swift @@ -129,21 +129,6 @@ extension String { return Bundle.localizedBundle.localizedString(forKey: self, value: nil, table: table) } - var localizedImage: UIImage? { - return localizedImage() - ?? localizedImage(type: ".png") - ?? localizedImage(type: ".jpg") - ?? localizedImage(type: ".jpeg") - ?? UIImage(named: self) - } - - private func localizedImage(type: String = "") -> UIImage? { - guard let imagePath = Bundle.localizedBundle.path(forResource: self, ofType: type) else { - return nil - } - return UIImage(contentsOfFile: imagePath) - } - var localizedDateFormat: String { if self == "MMMM d" { return self.MMMM_d_format diff --git a/Nynja/Library/UI/Extensions/StringExtensions.swift b/Nynja/Library/UI/Extensions/StringExtensions.swift index 6a299d1ec0c2f9d0fc3608e689d5f7f57d382c26..8911d7353766b6d8b72c4477057479b603e4b194 100644 --- a/Nynja/Library/UI/Extensions/StringExtensions.swift +++ b/Nynja/Library/UI/Extensions/StringExtensions.swift @@ -59,15 +59,6 @@ extension String { return fontSize } - - var pairs: [String] { - var result: [String] = [] - let characters = Array(self.characters) - stride(from: 0, to: characters.count, by: 2).forEach { - result.append(String(characters[$0.. CGFloat { - let factor = 100.0 / CGFloat(items.count + 1) - return (100.0 - factor * CGFloat(index)) / 100.0 + let itemsIncrement = items.count + 1 + let itemsIncrementInFloat = CGFloat(itemsIncrement) + let factor = 100.0 / itemsIncrementInFloat + + let factorForIndex = factor * CGFloat(index) + + let updatedFactorForIndex = 100.0 - factorForIndex + + return updatedFactorForIndex / 100.0 } private func adjustAlpha(for imageView: UIImageView, index: Int) { diff --git a/Nynja/Library/UI/WheelContainer/Wheel/Wheel.swift b/Nynja/Library/UI/WheelContainer/Wheel/Wheel.swift index c56fb7fb3c0a43cd3449541ec876e5543b179fbb..39fa6ad73ea229f8a7bf81c69d9b02a7e10b97a0 100644 --- a/Nynja/Library/UI/WheelContainer/Wheel/Wheel.swift +++ b/Nynja/Library/UI/WheelContainer/Wheel/Wheel.swift @@ -183,7 +183,9 @@ extension Wheel: iCarouselDelegate { // Set arc if option == .arc { - return CGFloat(2*Double.pi*configuration.multiplierArc) + let sqrtPi = 2 * Double.pi + + return CGFloat(sqrtPi * configuration.multiplierArc) } // Set radius @@ -200,23 +202,16 @@ extension Wheel: iCarouselDelegate { if option == .wrap { return 0 } - -// if option == .usingStoppers { -// if carousel.numberOfItems>=Int(configuration.numberOfVisibleSector) { -// return 1.0 -// } else { -// return value -// } -// } - - let widthTop = 2*Double.pi*configuration.imaginaryRadius * configuration.multiplierArc / configuration.numberOfVisibleSector - let range = 2*Double.pi*configuration.imaginaryRadius/4 + 90.adjustedByWidth + + let widthTop = getWidthTop() + let range = getRange() let minAngle: Double! - if carousel.numberOfItems>=Int(configuration.numberOfVisibleSector) { - minAngle = (range/widthTop - 1)/2 + + if carousel.numberOfItems >= Int(configuration.numberOfVisibleSector) { + minAngle = (range / widthTop - 1) / 2 } else { - minAngle = Double(carousel.numberOfItems-1)/2 + minAngle = Double(carousel.numberOfItems - 1) / 2 } if option == .minAngle { @@ -224,7 +219,7 @@ extension Wheel: iCarouselDelegate { } if option == .maxAngle { - if carousel.numberOfItems>=Int(configuration.numberOfVisibleSector) { + if carousel.numberOfItems >= Int(configuration.numberOfVisibleSector) { return CGFloat(Double(carousel.numberOfItems - 1) - minAngle) } else { return CGFloat(minAngle) @@ -234,6 +229,24 @@ extension Wheel: iCarouselDelegate { return value } + private func getWidthTop() -> Double { + let sqrtPi = 2 * Double.pi + var widthTop = sqrtPi * configuration.imaginaryRadius + widthTop = widthTop * configuration.multiplierArc + widthTop = widthTop / configuration.numberOfVisibleSector + + return widthTop + } + + private func getRange() -> Double { + let doublePi = 2 * Double.pi + var range = doublePi * configuration.imaginaryRadius + range = range / 4 + range = range + 90.adjustedByWidth + + return range + } + func carousel(_ carousel: iCarousel, didSelectItemAt index: Int) { let wheel = carousel as! Wheel // diff --git a/Nynja/Modules/AddParticipants/Interactor/AddParticipantsInteractor.swift b/Nynja/Modules/AddParticipants/Interactor/AddParticipantsInteractor.swift index c38d8579c2db7cf93ffee2cfd2abce1fe49052d9..5d827a2eccc49bc67370b55f70caa7d0f8fef097 100644 --- a/Nynja/Modules/AddParticipants/Interactor/AddParticipantsInteractor.swift +++ b/Nynja/Modules/AddParticipants/Interactor/AddParticipantsInteractor.swift @@ -97,8 +97,21 @@ class AddParticipantsInteractor: BaseInteractor, AddParticipantsInteractorInputP } func filterParticipantsByAlias(with text: String) { - let filtered = self.participants.filter { ($0.contact.nick ?? $0.contact.fullName)?.starts(with: text, by: { String($0).lowercased() == String($1).lowercased() }) ?? false } - self.presenter.participantsFiltered(filtered) + let filtered = participants.filter { (participant) -> Bool in + var contactName = participant.contact.nick + + if contactName == nil { + contactName = participant.contact.fullName + } + + guard let name = contactName?.lowercased() else { + return false + } + + return name.starts(with: text, by: { String($0).lowercased() == String($1).lowercased() }) + } + + presenter.participantsFiltered(filtered) } func getContactsSuccess(contacts: [Contact], _ mode: ParticipantsModeType = .create) { diff --git a/Nynja/Modules/AddParticipants/View/AddParticipantsViewController.swift b/Nynja/Modules/AddParticipants/View/AddParticipantsViewController.swift index f130142853afa5af381e685a1a420accce18ad2d..d3b2d4882094ae63681ad98e97693298abf07836 100644 --- a/Nynja/Modules/AddParticipants/View/AddParticipantsViewController.swift +++ b/Nynja/Modules/AddParticipants/View/AddParticipantsViewController.swift @@ -287,20 +287,19 @@ class AddParticipantsViewController: BaseVC, AddParticipantsViewProtocol { // MARK: - Actions @objc private func doneTapped(_ button: UIButton) { //TODO: IOS-87 - self.view.endEditing(true) - if (presenter.participantsMode == .create || presenter.participantsMode == .createConferenceCall || presenter.participantsMode == .createGroupCall || - presenter.participantsMode == .updateGroupCall || presenter.participantsMode == .createConferenceCall) - && participantsDataSource.selectedParticipants.isEmpty { - AlertManager.sharedInstance.showAlertOk(message: "please_choose_at_least_one_member".localized) - return + view.endEditing(true) + + let modes: [ParticipantsModeType] = [.create, .createConferenceCall, .createGroupCall, .updateGroupCall, .createConferenceCall] + + if modes.contains(presenter.participantsMode) && participantsDataSource.selectedParticipants.isEmpty { + return AlertManager.sharedInstance.showAlertOk(message: "please_choose_at_least_one_member".localized) } + if presenter.participantsMode == .delete && participantsDataSource.selectedParticipants.count == participantsDataSource.numberOfRows(tableView: tableView) { - AlertManager.sharedInstance.showAlertOk(message: "you_cannot_remove_all".localized) - return + return AlertManager.sharedInstance.showAlertOk(message: "you_cannot_remove_all".localized) } - let contacts = self.participantsDataSource.selectedParticipants.map({ (participant) -> Contact in - return participant.contact - }) + + let contacts = self.participantsDataSource.selectedParticipants.map { $0.contact } if .createConferenceCall == presenter.participantsMode { presenter.createGroup(with: contacts) @@ -309,8 +308,6 @@ class AddParticipantsViewController: BaseVC, AddParticipantsViewProtocol { } } - - @objc private func backButtonAction(sender: UIButton!) { presenter.hide(with: [Contact]()) diff --git a/Nynja/Modules/Contacts/Presenter/ContactsPresenter.swift b/Nynja/Modules/Contacts/Presenter/ContactsPresenter.swift index 7e89af39819eb149b2227f303175480945553985..69ac72d0f697a47ec28d69c0a171a3bf89224a3d 100644 --- a/Nynja/Modules/Contacts/Presenter/ContactsPresenter.swift +++ b/Nynja/Modules/Contacts/Presenter/ContactsPresenter.swift @@ -18,8 +18,6 @@ class ContactsPresenter: BasePresenter, ContactsPresenterProtocol, ContactsInter return ByContactsItemsFactory() case .shareContact: return ShareContactsItemsFactory() - default: - return nil } } diff --git a/Nynja/Modules/GroupStorage/WireFrame/GroupStorageWireframe.swift b/Nynja/Modules/GroupStorage/WireFrame/GroupStorageWireframe.swift index 46ac2e96e57d325a0a9114f844288bad118e512e..912034dabc28c02476a9f98e3b7a8f1d2deecca9 100644 --- a/Nynja/Modules/GroupStorage/WireFrame/GroupStorageWireframe.swift +++ b/Nynja/Modules/GroupStorage/WireFrame/GroupStorageWireframe.swift @@ -52,8 +52,11 @@ class GroupStorageWireFrame: GroupStorageWireFrameProtocol { } func openLink(link: URL) { - UIApplication.shared.openURL(link) + if UIApplication.shared.canOpenURL(link) { + UIApplication.shared.open(link, options: [:], completionHandler: nil) + } } + func openMessage(id: String) { for i in 0..<(self.navigation?.viewControllers.count ?? 0) { if let messageVC = self.navigation?.viewControllers[i] as? MessageVC { diff --git a/Nynja/Modules/Message/View/MessageVC+CellDelegate.swift b/Nynja/Modules/Message/View/MessageVC+CellDelegate.swift index 413192a6e7e3aa18cc510938997ad5d76eac7051..e195d4c362005a6e7399c67cd4ac7d6e59746397 100644 --- a/Nynja/Modules/Message/View/MessageVC+CellDelegate.swift +++ b/Nynja/Modules/Message/View/MessageVC+CellDelegate.swift @@ -122,7 +122,7 @@ extension MessageVC: BaseChatCellDelegate, AudioManagerDelegate, ProximitySensor } func didForwardTapped(_ cell: BaseChatCell) { - guard let serverId = cell.model?.serverID else { return } +// guard let serverId = cell.model?.serverID else { return } // presenter.forwardMessageTapped(serverId: serverId) [NY-1981] } diff --git a/Nynja/ReachabilityServiceExtension.swift b/Nynja/ReachabilityServiceExtension.swift new file mode 100644 index 0000000000000000000000000000000000000000..d1d5de491f29f435447c9dbaefac3673ac3afc33 --- /dev/null +++ b/Nynja/ReachabilityServiceExtension.swift @@ -0,0 +1,22 @@ +// +// ReachabilityServiceExtension.swift +// Nynja +// +// Created by Ash on 8/21/18. +// Copyright © 2018 TecSynt Solutions. All rights reserved. +// + +import Foundation + + +extension ReachabilityService { + // MARK: - Perform if connected + + func performIfConnected(action: () -> Void) { + if isReachable { + action() + } else { + AlertManager.sharedInstance.showNoInternetConnection() + } + } +} diff --git a/Nynja/ServerModel/Source/Decoder.swift b/Nynja/ServerModel/Source/Decoder.swift index 58d3811347ae04864c4bfe751c1255e19d3f552d..84a56e1279c61cb49287d2e7c4a37b6a6d39add2 100644 --- a/Nynja/ServerModel/Source/Decoder.swift +++ b/Nynja/ServerModel/Source/Decoder.swift @@ -4,29 +4,29 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? case "writer": if body.count != 5 { return nil } let a_writer = writer() - a_writer.id = body[0].parse(bert: tuple.elements[1]) as? AnyObject + a_writer.id = body[0].parse(bert: tuple.elements[1]) as AnyObject a_writer.count = body[1].parse(bert: tuple.elements[2]) as? Int64 a_writer.cache = body[2].parse(bert: tuple.elements[3]) as? [AnyObject] - a_writer.args = body[3].parse(bert: tuple.elements[4]) as? AnyObject + a_writer.args = body[3].parse(bert: tuple.elements[4]) as AnyObject a_writer.first = body[4].parse(bert: tuple.elements[5]) as? [AnyObject] return a_writer case "reader": if body.count != 6 { return nil } let a_reader = reader() - a_reader.id = body[0].parse(bert: tuple.elements[1]) as? AnyObject + a_reader.id = body[0].parse(bert: tuple.elements[1]) as AnyObject a_reader.pos = body[1].parse(bert: tuple.elements[2]) as? Int64 a_reader.cache = body[2].parse(bert: tuple.elements[3]) as? Int64 - a_reader.args = body[3].parse(bert: tuple.elements[4]) as? AnyObject - a_reader.feed = body[4].parse(bert: tuple.elements[5]) as? AnyObject - a_reader.dir = body[5].parse(bert: tuple.elements[6]) as? AnyObject + a_reader.args = body[3].parse(bert: tuple.elements[4]) as AnyObject + a_reader.feed = body[4].parse(bert: tuple.elements[5]) as AnyObject + a_reader.dir = body[5].parse(bert: tuple.elements[6]) as AnyObject return a_reader case "cur": if body.count != 11 { return nil } let a_cur = cur() - a_cur.id = body[0].parse(bert: tuple.elements[1]) as? AnyObject + a_cur.id = body[0].parse(bert: tuple.elements[1]) as AnyObject a_cur.top = body[1].parse(bert: tuple.elements[2]) as? Int64 a_cur.bot = body[2].parse(bert: tuple.elements[3]) as? Int64 - a_cur.dir = body[3].parse(bert: tuple.elements[4]) as? AnyObject + a_cur.dir = body[3].parse(bert: tuple.elements[4]) as AnyObject a_cur.reader = body[4].parse(bert: tuple.elements[5]) as? [AnyObject] a_cur.writer = body[5].parse(bert: tuple.elements[6]) as? [AnyObject] a_cur.args = body[8].parse(bert: tuple.elements[9]) as? [AnyObject] @@ -35,7 +35,7 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? if body.count != 4 { return nil } let a_iter = iter() a_iter.id = body[0].parse(bert: tuple.elements[1]) as? Int64 - a_iter.feed = body[1].parse(bert: tuple.elements[2]) as? AnyObject + a_iter.feed = body[1].parse(bert: tuple.elements[2]) as AnyObject a_iter.next = body[2].parse(bert: tuple.elements[3]) as? Int64 a_iter.prev = body[3].parse(bert: tuple.elements[4]) as? Int64 return a_iter @@ -52,7 +52,7 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? let a_iterator = iterator() a_iterator.id = body[0].parse(bert: tuple.elements[1]) as? Int64 a_iterator.container = body[1].parse(bert: tuple.elements[2]) as? StringAtom - a_iterator.feed_id = body[2].parse(bert: tuple.elements[3]) as? AnyObject + a_iterator.feed_id = body[2].parse(bert: tuple.elements[3]) as AnyObject a_iterator.prev = body[3].parse(bert: tuple.elements[4]) as? Int64 a_iterator.next = body[4].parse(bert: tuple.elements[5]) as? Int64 a_iterator.feeds = body[5].parse(bert: tuple.elements[6]) as? [AnyObject] @@ -70,7 +70,7 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? let a_operation = operation() a_operation.id = body[0].parse(bert: tuple.elements[1]) as? Int64 a_operation.container = body[1].parse(bert: tuple.elements[2]) as? StringAtom - a_operation.feed_id = body[2].parse(bert: tuple.elements[3]) as? AnyObject + a_operation.feed_id = body[2].parse(bert: tuple.elements[3]) as AnyObject a_operation.prev = body[3].parse(bert: tuple.elements[4]) as? Int64 a_operation.next = body[4].parse(bert: tuple.elements[5]) as? Int64 a_operation.feeds = body[5].parse(bert: tuple.elements[6]) as? [AnyObject] @@ -78,36 +78,36 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? case "error": if body.count != 1 { return nil } let a_error = error() - a_error.code = body[0].parse(bert: tuple.elements[1]) as? AnyObject + a_error.code = body[0].parse(bert: tuple.elements[1]) as AnyObject return a_error case "ok": if body.count != 1 { return nil } let a_ok = ok() - a_ok.code = body[0].parse(bert: tuple.elements[1]) as? AnyObject + a_ok.code = body[0].parse(bert: tuple.elements[1]) as AnyObject return a_ok case "error2": if body.count != 2 { return nil } let a_error2 = error2() a_error2.code = body[0].parse(bert: tuple.elements[1]) as? StringAtom - a_error2.src = body[1].parse(bert: tuple.elements[2]) as? AnyObject + a_error2.src = body[1].parse(bert: tuple.elements[2]) as AnyObject return a_error2 case "ok2": if body.count != 2 { return nil } let a_ok2 = ok2() a_ok2.code = body[0].parse(bert: tuple.elements[1]) as? StringAtom - a_ok2.src = body[1].parse(bert: tuple.elements[2]) as? AnyObject + a_ok2.src = body[1].parse(bert: tuple.elements[2]) as AnyObject return a_ok2 case "io": if body.count != 2 { return nil } let a_io = io() - a_io.code = body[0].parse(bert: tuple.elements[1]) as? AnyObject - a_io.data = body[1].parse(bert: tuple.elements[2]) as? AnyObject + a_io.code = body[0].parse(bert: tuple.elements[1]) as AnyObject + a_io.data = body[1].parse(bert: tuple.elements[2]) as AnyObject return a_io case "errors": if body.count != 2 { return nil } let a_errors = errors() a_errors.code = body[0].parse(bert: tuple.elements[1]) as? [String] - a_errors.data = body[1].parse(bert: tuple.elements[2]) as? AnyObject + a_errors.data = body[1].parse(bert: tuple.elements[2]) as AnyObject return a_errors case "chain": if body.count != 6 { return nil } @@ -133,9 +133,9 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? a_Search.id = body[0].parse(bert: tuple.elements[1]) as? Int64 a_Search.ref = body[1].parse(bert: tuple.elements[2]) as? String a_Search.field = body[2].parse(bert: tuple.elements[3]) as? String - a_Search.type = body[3].parse(bert: tuple.elements[4]) as? AnyObject - a_Search.value = body[4].parse(bert: tuple.elements[5]) as? AnyObject - a_Search.status = body[5].parse(bert: tuple.elements[6]) as? AnyObject + a_Search.type = body[3].parse(bert: tuple.elements[4]) as AnyObject + a_Search.value = body[4].parse(bert: tuple.elements[5]) as AnyObject + a_Search.status = body[5].parse(bert: tuple.elements[6]) as AnyObject return a_Search case "p2p": if body.count != 2 { return nil } @@ -152,14 +152,14 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? if body.count != 12 { return nil } let a_CDR = CDR() a_CDR.id = body[0].parse(bert: tuple.elements[1]) as? Int64 - a_CDR.feed = body[1].parse(bert: tuple.elements[2]) as? AnyObject + a_CDR.feed = body[1].parse(bert: tuple.elements[2]) as AnyObject a_CDR.next = body[2].parse(bert: tuple.elements[3]) as? Int64 a_CDR.prev = body[3].parse(bert: tuple.elements[4]) as? Int64 a_CDR.from = body[4].parse(bert: tuple.elements[5]) as? String a_CDR.to = body[5].parse(bert: tuple.elements[6]) as? String a_CDR.start = body[6].parse(bert: tuple.elements[7]) as? Int64 a_CDR.stop = body[7].parse(bert: tuple.elements[8]) as? Int64 - a_CDR.type = body[8].parse(bert: tuple.elements[9]) as? AnyObject + a_CDR.type = body[8].parse(bert: tuple.elements[9]) as AnyObject a_CDR.desc = body[9].parse(bert: tuple.elements[10]) as? String a_CDR.bill = body[10].parse(bert: tuple.elements[11]) as? Int64 a_CDR.tariff = body[11].parse(bert: tuple.elements[12]) as? String @@ -168,8 +168,8 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? if body.count != 17 { return nil } let a_Member = Member() a_Member.id = body[0].parse(bert: tuple.elements[1]) as? Int64 - a_Member.container = body[1].parse(bert: tuple.elements[2]) as? AnyObject - a_Member.feed_id = body[2].parse(bert: tuple.elements[3]) as? AnyObject + a_Member.container = body[1].parse(bert: tuple.elements[2]) as AnyObject + a_Member.feed_id = body[2].parse(bert: tuple.elements[3]) as AnyObject a_Member.prev = body[3].parse(bert: tuple.elements[4]) as? Int64 a_Member.next = body[4].parse(bert: tuple.elements[5]) as? Int64 a_Member.feeds = body[5].parse(bert: tuple.elements[6]) as? [AnyObject] @@ -182,8 +182,8 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? a_Member.update = body[12].parse(bert: tuple.elements[13]) as? Int64 a_Member.settings = body[13].parse(bert: tuple.elements[14]) as? [Feature] a_Member.services = body[14].parse(bert: tuple.elements[15]) as? [Service] - a_Member.presence = body[15].parse(bert: tuple.elements[16]) as? AnyObject - a_Member.status = body[16].parse(bert: tuple.elements[17]) as? AnyObject + a_Member.presence = body[15].parse(bert: tuple.elements[16]) as AnyObject + a_Member.status = body[16].parse(bert: tuple.elements[17]) as AnyObject return a_Member case "Person": if body.count != 11 { return nil } @@ -198,7 +198,7 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? a_Person.BlockUsers = body[7].parse(bert: tuple.elements[8]) as? [AnyObject] a_Person.balance = body[8].parse(bert: tuple.elements[9]) as? Int64 a_Person.isParticipants = body[9].parse(bert: tuple.elements[10]) as? [String] - a_Person.status = body[10].parse(bert: tuple.elements[11]) as? AnyObject + a_Person.status = body[10].parse(bert: tuple.elements[11]) as AnyObject return a_Person case "Desc": if body.count != 5 { return nil } @@ -226,21 +226,21 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? if body.count != 16 { return nil } let a_Message = Message() a_Message.id = body[0].parse(bert: tuple.elements[1]) as? Int64 - a_Message.container = body[1].parse(bert: tuple.elements[2]) as? AnyObject - a_Message.feed_id = body[2].parse(bert: tuple.elements[3]) as? AnyObject + a_Message.container = body[1].parse(bert: tuple.elements[2]) as AnyObject + a_Message.feed_id = body[2].parse(bert: tuple.elements[3]) as AnyObject a_Message.prev = body[3].parse(bert: tuple.elements[4]) as? Int64 a_Message.next = body[4].parse(bert: tuple.elements[5]) as? Int64 a_Message.msg_id = body[5].parse(bert: tuple.elements[6]) as? String a_Message.from = body[6].parse(bert: tuple.elements[7]) as? String a_Message.to = body[7].parse(bert: tuple.elements[8]) as? String - a_Message.created = body[8].parse(bert: tuple.elements[9]) as? AnyObject + a_Message.created = body[8].parse(bert: tuple.elements[9]) as AnyObject a_Message.files = body[9].parse(bert: tuple.elements[10]) as? [Desc] a_Message.type = body[10].parse(bert: tuple.elements[11]) as? [AnyObject] a_Message.link = body[11].parse(bert: tuple.elements[12]) as? Int64 a_Message.seenby = body[12].parse(bert: tuple.elements[13]) as? [AnyObject] a_Message.repliedby = body[13].parse(bert: tuple.elements[14]) as? [AnyObject] a_Message.mentioned = body[14].parse(bert: tuple.elements[15]) as? [AnyObject] - a_Message.status = body[15].parse(bert: tuple.elements[16]) as? AnyObject + a_Message.status = body[15].parse(bert: tuple.elements[16]) as AnyObject return a_Message case "Link": if body.count != 5 { return nil } @@ -249,7 +249,7 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? a_Link.name = body[1].parse(bert: tuple.elements[2]) as? String a_Link.room_id = body[2].parse(bert: tuple.elements[3]) as? String a_Link.created = body[3].parse(bert: tuple.elements[4]) as? Int64 - a_Link.status = body[4].parse(bert: tuple.elements[5]) as? AnyObject + a_Link.status = body[4].parse(bert: tuple.elements[5]) as AnyObject return a_Link case "Room": if body.count != 18 { return nil } @@ -262,7 +262,7 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? a_Room.members = body[5].parse(bert: tuple.elements[6]) as? [Member] a_Room.admins = body[6].parse(bert: tuple.elements[7]) as? [Member] a_Room.data = body[7].parse(bert: tuple.elements[8]) as? [Desc] - a_Room.type = body[8].parse(bert: tuple.elements[9]) as? AnyObject + a_Room.type = body[8].parse(bert: tuple.elements[9]) as AnyObject a_Room.tos = body[9].parse(bert: tuple.elements[10]) as? String a_Room.tos_update = body[10].parse(bert: tuple.elements[11]) as? Int64 a_Room.unread = body[11].parse(bert: tuple.elements[12]) as? Int64 @@ -271,7 +271,7 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? a_Room.last_msg = body[14].parse(bert: tuple.elements[15]) as? Message a_Room.update = body[15].parse(bert: tuple.elements[16]) as? Int64 a_Room.created = body[16].parse(bert: tuple.elements[17]) as? Int64 - a_Room.status = body[17].parse(bert: tuple.elements[18]) as? AnyObject + a_Room.status = body[17].parse(bert: tuple.elements[18]) as AnyObject return a_Room case "Tag": if body.count != 4 { return nil } @@ -279,7 +279,7 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? a_Tag.roster_id = body[0].parse(bert: tuple.elements[1]) as? String a_Tag.name = body[1].parse(bert: tuple.elements[2]) as? String a_Tag.color = body[2].parse(bert: tuple.elements[3]) as? String - a_Tag.status = body[3].parse(bert: tuple.elements[4]) as? AnyObject + a_Tag.status = body[3].parse(bert: tuple.elements[4]) as AnyObject return a_Tag case "Star": if body.count != 6 { return nil } @@ -289,23 +289,23 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? a_Star.roster_id = body[2].parse(bert: tuple.elements[3]) as? Int64 a_Star.message = body[3].parse(bert: tuple.elements[4]) as? Message a_Star.tags = body[4].parse(bert: tuple.elements[5]) as? [Tag] - a_Star.status = body[5].parse(bert: tuple.elements[6]) as? AnyObject + a_Star.status = body[5].parse(bert: tuple.elements[6]) as AnyObject return a_Star case "History": if body.count != 6 { return nil } let a_History = History() a_History.roster_id = body[0].parse(bert: tuple.elements[1]) as? String - a_History.feed = body[1].parse(bert: tuple.elements[2]) as? AnyObject + a_History.feed = body[1].parse(bert: tuple.elements[2]) as AnyObject a_History.size = body[2].parse(bert: tuple.elements[3]) as? Int64 a_History.entity_id = body[3].parse(bert: tuple.elements[4]) as? Int64 a_History.data = body[4].parse(bert: tuple.elements[5]) as? [AnyObject] - a_History.status = body[5].parse(bert: tuple.elements[6]) as? AnyObject + a_History.status = body[5].parse(bert: tuple.elements[6]) as AnyObject return a_History case "Typing": if body.count != 2 { return nil } let a_Typing = Typing() a_Typing.phone_id = body[0].parse(bert: tuple.elements[1]) as? String - a_Typing.comments = body[1].parse(bert: tuple.elements[2]) as? AnyObject + a_Typing.comments = body[1].parse(bert: tuple.elements[2]) as AnyObject return a_Typing case "Contact": if body.count != 14 || tuple.elements.count != 15 { return nil } @@ -323,13 +323,13 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? a_Contact.settings = body[10].parse(bert: tuple.elements[11]) as? [Feature] a_Contact.services = body[11].parse(bert: tuple.elements[12]) as? [Service] a_Contact.presence = body[12].parse(bert: tuple.elements[13]) as? StringAtom - a_Contact.status = body[13].parse(bert: tuple.elements[14]) as? AnyObject + a_Contact.status = body[13].parse(bert: tuple.elements[14]) as AnyObject return a_Contact case "ExtendedStar": if body.count != 2 { return nil } let a_ExtendedStar = ExtendedStar() a_ExtendedStar.star = body[0].parse(bert: tuple.elements[1]) as? Star - a_ExtendedStar.from = body[1].parse(bert: tuple.elements[2]) as? AnyObject + a_ExtendedStar.from = body[1].parse(bert: tuple.elements[2]) as AnyObject return a_ExtendedStar case "Auth": if body.count != 14 { return nil } @@ -345,20 +345,20 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? a_Auth.services = body[8].parse(bert: tuple.elements[9]) as? [String] a_Auth.settings = body[9].parse(bert: tuple.elements[10]) as? [Feature] a_Auth.push = body[10].parse(bert: tuple.elements[11]) as? String - a_Auth.os = body[11].parse(bert: tuple.elements[12]) as? AnyObject - a_Auth.created = body[12].parse(bert: tuple.elements[13]) as? AnyObject + a_Auth.os = body[11].parse(bert: tuple.elements[12]) as AnyObject + a_Auth.created = body[12].parse(bert: tuple.elements[13]) as AnyObject a_Auth.last_online = body[13].parse(bert: tuple.elements[14]) as? Int64 return a_Auth case "Service": if body.count != 7 { return nil } let a_Service = Service() a_Service.id = body[0].parse(bert: tuple.elements[1]) as? String - a_Service.type = body[1].parse(bert: tuple.elements[2]) as? AnyObject - a_Service.data = body[2].parse(bert: tuple.elements[3]) as? AnyObject + a_Service.type = body[1].parse(bert: tuple.elements[2]) as AnyObject + a_Service.data = body[2].parse(bert: tuple.elements[3]) as AnyObject a_Service.login = body[3].parse(bert: tuple.elements[4]) as? String a_Service.password = body[4].parse(bert: tuple.elements[5]) as? String a_Service.expiration = body[5].parse(bert: tuple.elements[6]) as? Int64 - a_Service.status = body[6].parse(bert: tuple.elements[7]) as? AnyObject + a_Service.status = body[6].parse(bert: tuple.elements[7]) as AnyObject return a_Service case "Roster": if body.count != 13 { return nil } @@ -375,7 +375,7 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? a_Roster.phone = body[9].parse(bert: tuple.elements[10]) as? String a_Roster.avatar = body[10].parse(bert: tuple.elements[11]) as? String a_Roster.update = body[11].parse(bert: tuple.elements[12]) as? Int64 - a_Roster.status = body[12].parse(bert: tuple.elements[13]) as? AnyObject + a_Roster.status = body[12].parse(bert: tuple.elements[13]) as AnyObject return a_Roster case "Feature": if body.count != 4 { return nil } @@ -410,26 +410,26 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? a_Friend.phone_id = body[0].parse(bert: tuple.elements[1]) as? String a_Friend.friend_id = body[1].parse(bert: tuple.elements[2]) as? String a_Friend.settings = body[2].parse(bert: tuple.elements[3]) as? [Feature] - a_Friend.status = body[3].parse(bert: tuple.elements[4]) as? AnyObject + a_Friend.status = body[3].parse(bert: tuple.elements[4]) as AnyObject return a_Friend case "Index": if body.count != 2 { return nil } let a_Index = Index() - a_Index.id = body[0].parse(bert: tuple.elements[1]) as? AnyObject + a_Index.id = body[0].parse(bert: tuple.elements[1]) as AnyObject a_Index.roster = body[1].parse(bert: tuple.elements[2]) as? [AnyObject] return a_Index case "act": if body.count != 2 { return nil } let a_act = act() a_act.name = body[0].parse(bert: tuple.elements[1]) as? String - a_act.data = body[1].parse(bert: tuple.elements[2]) as? AnyObject + a_act.data = body[1].parse(bert: tuple.elements[2]) as AnyObject return a_act case "process": if body.count != 22 { return nil } let a_process = process() a_process.id = body[0].parse(bert: tuple.elements[1]) as? Int64 a_process.container = body[1].parse(bert: tuple.elements[2]) as? StringAtom - a_process.feed_id = body[2].parse(bert: tuple.elements[3]) as? AnyObject + a_process.feed_id = body[2].parse(bert: tuple.elements[3]) as AnyObject a_process.prev = body[3].parse(bert: tuple.elements[4]) as? Int64 a_process.next = body[4].parse(bert: tuple.elements[5]) as? Int64 a_process.feeds = body[5].parse(bert: tuple.elements[6]) as? [AnyObject] @@ -437,14 +437,14 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? a_process.roles = body[7].parse(bert: tuple.elements[8]) as? [AnyObject] a_process.tasks = body[8].parse(bert: tuple.elements[9]) as? [AnyObject] a_process.events = body[9].parse(bert: tuple.elements[10]) as? [AnyObject] - a_process.hist = body[10].parse(bert: tuple.elements[11]) as? AnyObject + a_process.hist = body[10].parse(bert: tuple.elements[11]) as AnyObject a_process.flows = body[11].parse(bert: tuple.elements[12]) as? [sequenceFlow] - a_process.rules = body[12].parse(bert: tuple.elements[13]) as? AnyObject + a_process.rules = body[12].parse(bert: tuple.elements[13]) as AnyObject a_process.docs = body[13].parse(bert: tuple.elements[14]) as? [AnyObject] - a_process.options = body[14].parse(bert: tuple.elements[15]) as? AnyObject + a_process.options = body[14].parse(bert: tuple.elements[15]) as AnyObject a_process.task = body[15].parse(bert: tuple.elements[16]) as? StringAtom a_process.timer = body[16].parse(bert: tuple.elements[17]) as? String - a_process.notifications = body[17].parse(bert: tuple.elements[18]) as? AnyObject + a_process.notifications = body[17].parse(bert: tuple.elements[18]) as AnyObject a_process.result = body[18].parse(bert: tuple.elements[19]) as? String a_process.started = body[19].parse(bert: tuple.elements[20]) as? String a_process.beginEvent = body[20].parse(bert: tuple.elements[21]) as? StringAtom @@ -467,17 +467,17 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? if body.count != 12 { return nil } let a_Job = Job() a_Job.id = body[0].parse(bert: tuple.elements[1]) as? Int64 - a_Job.container = body[1].parse(bert: tuple.elements[2]) as? AnyObject + a_Job.container = body[1].parse(bert: tuple.elements[2]) as AnyObject a_Job.feed_id = body[2].parse(bert: tuple.elements[3]) as? act a_Job.prev = body[3].parse(bert: tuple.elements[4]) as? Int64 a_Job.next = body[4].parse(bert: tuple.elements[5]) as? Int64 - a_Job.context = body[5].parse(bert: tuple.elements[6]) as? AnyObject - a_Job.proc = body[6].parse(bert: tuple.elements[7]) as? AnyObject + a_Job.context = body[5].parse(bert: tuple.elements[6]) as AnyObject + a_Job.proc = body[6].parse(bert: tuple.elements[7]) as AnyObject a_Job.time = body[7].parse(bert: tuple.elements[8]) as? Int64 a_Job.data = body[8].parse(bert: tuple.elements[9]) as? [Message] a_Job.events = body[9].parse(bert: tuple.elements[10]) as? [messageEvent] a_Job.settings = body[10].parse(bert: tuple.elements[11]) as? [Feature] - a_Job.status = body[11].parse(bert: tuple.elements[12]) as? AnyObject + a_Job.status = body[11].parse(bert: tuple.elements[12]) as AnyObject return a_Job case "task": if body.count != 3 { return nil } @@ -532,7 +532,7 @@ func parseObject(name: String, body:[Model], tuple: BertTuple) -> AnyObject? case "Test": if body.count != 2 { return nil } let a_Test = Test() - a_Test.type = body[0].parse(bert: tuple.elements[1]) as? AnyObject + a_Test.type = body[0].parse(bert: tuple.elements[1]) as AnyObject a_Test.count = body[1].parse(bert: tuple.elements[2]) as? Int64 return a_Test default: return nil diff --git a/Nynja/Services/MQTT/MQTTService.swift b/Nynja/Services/MQTT/MQTTService.swift index 2c76dbdf3a9d540866b6c3e7e00dd596e6beaba4..151b396dab7e4fb0692f6e37fe6c16cb117eb21c 100644 --- a/Nynja/Services/MQTT/MQTTService.swift +++ b/Nynja/Services/MQTT/MQTTService.swift @@ -133,20 +133,38 @@ final class MQTTService: NSObject, CocoaMQTTDelegate, ReachabilityServiceObserve mqtt?.password = token mqtt?.username = "api" mqtt?.cleanSession = true + + logMQTTSetup(clientID: clientId, password: token) } else { mqtt?.delegate = nil - mqtt = CocoaMQTT(clientID: "reg_\(deviceId)", host: host.url, port: host.port) - mqtt?.password = "" + + var clientID = "reg_" + clientID.append(deviceId) + let password = "" + + mqtt = CocoaMQTT(clientID: clientID, host: host.url, port: host.port) + mqtt?.password = password mqtt?.username = "api" mqtt?.cleanSession = false + + logMQTTSetup(clientID: clientID, password: password) } - mqtt?.willMessage = CocoaMQTTWill(topic: "version/\(MQTTService.version)", message: "") + var topic = "version/" + topic.append(String(MQTTService.version)) + + mqtt?.willMessage = CocoaMQTTWill(topic: topic, message: "") mqtt?.keepAlive = 0 mqtt?.delegate = self // mqtt?.enableSSL = true + } + + private func logMQTTSetup(clientID: String, password: String) { + var log = "setup clientID: " + log.append(clientID) + log.append(" & password: ") + log.append(password) - let log = "setup clientID: \(mqtt?.clientID ?? "") & password: \(mqtt?.password ?? "")" LogService.log(topic: .MQTT, text: log) } diff --git a/Nynja/Services/ReachabilityService.swift b/Nynja/Services/ReachabilityService.swift index ed5665628bbfda2905940a920e03de7c98beba26..81f3b2e524f16c87a7b2320beb8d6d5a6ce4c5d5 100644 --- a/Nynja/Services/ReachabilityService.swift +++ b/Nynja/Services/ReachabilityService.swift @@ -84,20 +84,6 @@ class ReachabilityService: NSObject { notify { $0.reachabilityStatusChanged(isReachable: reachability.isReachable) } } - - #if !SHARE_EXTENSION - // MARK: - Perform if connected - - func performIfConnected(action: () -> Void) { - if isReachable { - action() - } else { - AlertManager.sharedInstance.showNoInternetConnection() - } - } - #endif - - // MARK: - Notify private func notify(_ closure: (ReachabilityServiceObserver) -> Void) {