From 41f849896ee3a8776688569d0fa597c5b5635892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Brul=C3=A9?= <raphael.brule@savoirfairelinux.com> Date: Fri, 14 Aug 2020 15:34:57 -0400 Subject: [PATCH] SwiftLint: enables some manual rules Enables some swiftlint rules as part of the gradual transition to a project adhering to stricter SwiftLint rules. Change-Id: I4618f28449990ba33ec3692cc06f0c31eb3b3cb5 Gitlab: #90 --- Ring/.swiftlint.yml | 15 +++++----- Ring/Ring/Account/AccountModelHelper.swift | 6 ++-- Ring/Ring/AppDelegate.swift | 6 ++-- Ring/Ring/Calls/ButtonsContainerView.swift | 1 + Ring/Ring/Calls/CallViewController.swift | 2 +- Ring/Ring/Calls/CallViewModel.swift | 18 ++++++------ .../ContactPickerViewController.swift | 2 +- .../Conference/ContactPickerViewModel.swift | 22 +++++++-------- .../ConferenceParticipantViewModel.swift | 4 +-- Ring/Ring/Contact/ContactViewModel.swift | 1 + .../DBHelpers/ConversationDataHepler.swift | 3 +- .../DBHelpers/InteractionDataHelper.swift | 17 +++++------ Ring/Ring/Database/DBManager.swift | 14 +++++----- Ring/Ring/EditProfileViewController.swift | 2 +- Ring/Ring/Extensions/Emoji+Helpers.swift | 2 +- Ring/Ring/Extensions/UIView+Ring.swift | 8 +++--- .../ContactRequestsViewController.swift | 6 ++-- .../ContactRequestsViewModel.swift | 12 ++++---- .../MessageCellLocationSharingSent.swift | 1 + .../ConversationViewController.swift | 14 +++++----- .../Conversation/ConversationViewModel.swift | 2 +- .../Conversation/GrowingTextView.swift | 1 + .../Conversation/MessageAccessoryView.swift | 2 +- .../Conversation/MessageViewModel.swift | 8 +++--- .../SendFile/SendFileViewController.swift | 2 +- .../SendFile/SendFileViewModel.swift | 6 ++-- .../Cells/AccountPickerAdapter.swift | 1 + .../IncognitoSmartListViewController.swift | 8 +++--- .../IncognitoSmartListViewModel.swift | 14 ++++++---- .../SmartList/SmartlistViewController.swift | 2 +- .../SmartList/SmartlistViewModel.swift | 25 +++++++++-------- .../views/ConfirmationAlert.swift | 5 ++-- .../views/JamiSearchView/JamiSearchView.swift | 4 +-- .../JamiSearchView/JamiSearchViewModel.swift | 15 +++++----- .../Conversations/views/PlayerView.swift | 2 +- .../Conversations/views/PlayerViewModel.swift | 12 ++++---- .../Features/Me/Me/MeViewController.swift | 10 +++---- Ring/Ring/Features/Me/Me/MeViewModel.swift | 8 +++--- .../CreateSipAccountViewModel.swift | 8 +++--- .../LinkToAccountManagerViewModel.swift | 4 +-- .../GeneralSettingsViewModel.swift | 1 + Ring/Ring/Helpers/JamiURI.swift | 4 +-- Ring/Ring/Models/AccountConfigModel.swift | 2 +- .../Protocols/ConversationNavigation.swift | 1 + Ring/Ring/QRCode/ScanViewController.swift | 2 ++ Ring/Ring/Services/AccountsService.swift | 28 +++++++++---------- Ring/Ring/Services/AudioService.swift | 6 ++-- .../Ring/Services/CallsProviderDelegate.swift | 2 +- Ring/Ring/Services/CallsService.swift | 14 ++++++---- Ring/Ring/Services/ContactsService.swift | 12 ++++---- Ring/Ring/Services/ConversationsManager.swift | 4 +-- Ring/Ring/Services/ConversationsService.swift | 8 +++--- Ring/Ring/Services/DaemonService.swift | 8 +++--- Ring/Ring/Services/DataTransferService.swift | 24 ++++++++-------- Ring/Ring/Services/NameService.swift | 8 +++--- Ring/Ring/Services/PresenceService.swift | 8 +++--- Ring/Ring/Services/ProfilesService.swift | 6 ++-- Ring/Ring/Services/ServiceEvent.swift | 4 +-- Ring/Ring/Services/VideoService.swift | 6 ++-- Ring/Ring/TabBar/BaseViewController.swift | 1 + Ring/Ring/UI/ProgressView.swift | 6 ++-- Ring/RingTests/ServiceEventTests.swift | 2 +- 62 files changed, 236 insertions(+), 216 deletions(-) diff --git a/Ring/.swiftlint.yml b/Ring/.swiftlint.yml index 25c0f54de..d557f7c96 100644 --- a/Ring/.swiftlint.yml +++ b/Ring/.swiftlint.yml @@ -1,5 +1,6 @@ disabled_rules: # rule identifiers to exclude from running - todo + - closure_parameter_position opt_in_rules: # some rules are only opt-in - closure_spacing # can be autocorrected @@ -12,16 +13,16 @@ opt_in_rules: # some rules are only opt-in - toggle_bool - empty_count # can't be autocorrected #- multiline_function_chains - #- closing_brace_spacing + - closing_brace_spacing #- closure_body_length - #- unused_declaration - #- vertical_parameter_alignment_on_call - #- collection_alignment - #- identical_operands - #- let_var_whitespace + - unused_declaration + - vertical_parameter_alignment_on_call + - collection_alignment + - identical_operands + - let_var_whitespace #- attributes #- lower_acl_than_parent - #- strict_fileprivate + - strict_fileprivate #- overridden_super_call #- unowned_variable_capture diff --git a/Ring/Ring/Account/AccountModelHelper.swift b/Ring/Ring/Account/AccountModelHelper.swift index 8bfbbdf79..4fbb46876 100644 --- a/Ring/Ring/Account/AccountModelHelper.swift +++ b/Ring/Ring/Account/AccountModelHelper.swift @@ -26,10 +26,10 @@ import SwiftyBeaver */ struct AccountModelHelper { - fileprivate static let ringIdPrefix = "ring:" - fileprivate static let sipIdPrefix = "sip:" + private static let ringIdPrefix = "ring:" + private static let sipIdPrefix = "sip:" - fileprivate var account: AccountModel + private var account: AccountModel /** logguer diff --git a/Ring/Ring/AppDelegate.swift b/Ring/Ring/AppDelegate.swift index d0a4f2e35..2f3c4d4ce 100644 --- a/Ring/Ring/AppDelegate.swift +++ b/Ring/Ring/AppDelegate.swift @@ -92,7 +92,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD private let log = SwiftyBeaver.self - fileprivate let disposeBag = DisposeBag() + private let disposeBag = DisposeBag() func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { @@ -249,7 +249,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD } // MARK: - Ring Daemon - fileprivate func startDaemon() { + private func startDaemon() { do { try self.daemonService.startDaemon() } catch StartDaemonError.initializationFailure { @@ -263,7 +263,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD } } - fileprivate func stopDaemon() { + private func stopDaemon() { do { try self.daemonService.stopDaemon() } catch StopDaemonError.daemonNotRunning { diff --git a/Ring/Ring/Calls/ButtonsContainerView.swift b/Ring/Ring/Calls/ButtonsContainerView.swift index d2dd38b62..37b95c5d6 100644 --- a/Ring/Ring/Calls/ButtonsContainerView.swift +++ b/Ring/Ring/Calls/ButtonsContainerView.swift @@ -66,6 +66,7 @@ class ButtonsContainerView: UIView, NibLoadable { }).disposed(by: self.disposeBag) } } + override init(frame: CGRect) { super.init(frame: frame) self.commonInit() diff --git a/Ring/Ring/Calls/CallViewController.swift b/Ring/Ring/Calls/CallViewController.swift index 80a5a2645..9fe840695 100644 --- a/Ring/Ring/Calls/CallViewController.swift +++ b/Ring/Ring/Calls/CallViewController.swift @@ -84,7 +84,7 @@ class CallViewController: UIViewController, StoryboardBased, ViewModelBased { var orientation = UIDevice.current.orientation var conferenceParticipantMenu: UIView? - fileprivate let disposeBag = DisposeBag() + private let disposeBag = DisposeBag() private let log = SwiftyBeaver.self diff --git a/Ring/Ring/Calls/CallViewModel.swift b/Ring/Ring/Calls/CallViewModel.swift index bd70de3b6..337ddd281 100644 --- a/Ring/Ring/Calls/CallViewModel.swift +++ b/Ring/Ring/Calls/CallViewModel.swift @@ -34,15 +34,15 @@ class CallViewModel: Stateable, ViewModel { }() let callService: CallsService - fileprivate let contactsService: ContactsService - fileprivate let accountService: AccountsService - fileprivate let videoService: VideoService - fileprivate let audioService: AudioService - fileprivate let profileService: ProfilesService - fileprivate let conversationService: ConversationsService + private let contactsService: ContactsService + private let accountService: AccountsService + private let videoService: VideoService + private let audioService: AudioService + private let profileService: ProfilesService + private let conversationService: ConversationsService private let disposeBag = DisposeBag() - fileprivate let log = SwiftyBeaver.self + private let log = SwiftyBeaver.self var isHeadsetConnected = false var isAudioOnly = false @@ -120,8 +120,8 @@ class CallViewModel: Stateable, ViewModel { } let type = account.type == AccountType.sip ? URIType.sip : URIType.ring guard let uriString = JamiURI.init(schema: type, - infoHach: call.participantUri, - account: account).uriString else { return nil } + infoHach: call.participantUri, + account: account).uriString else { return nil } return self.profileService.getProfile(uri: uriString, createIfNotexists: true, accountId: account.id) .filter({ profile in diff --git a/Ring/Ring/Calls/Conference/ContactPickerViewController.swift b/Ring/Ring/Calls/Conference/ContactPickerViewController.swift index 75049dabf..09861477a 100644 --- a/Ring/Ring/Calls/Conference/ContactPickerViewController.swift +++ b/Ring/Ring/Calls/Conference/ContactPickerViewController.swift @@ -32,7 +32,7 @@ class ContactPickerViewController: UIViewController, StoryboardBased, ViewModelB @IBOutlet weak var tableView: UITableView! var viewModel: ContactPickerViewModel! - fileprivate let disposeBag = DisposeBag() + private let disposeBag = DisposeBag() var blurEffect: UIVisualEffectView? diff --git a/Ring/Ring/Calls/Conference/ContactPickerViewModel.swift b/Ring/Ring/Calls/Conference/ContactPickerViewModel.swift index 626b7c911..7823c8f41 100644 --- a/Ring/Ring/Calls/Conference/ContactPickerViewModel.swift +++ b/Ring/Ring/Calls/Conference/ContactPickerViewModel.swift @@ -93,10 +93,10 @@ class ContactPickerViewModel: Stateable, ViewModel { } let profile = self.contactsService.getProfile(uri: contactUri, accountId: currentAccount.id) var contactToAdd = Contact(contactUri: contactUri, - accountId: currentAccount.id, - registrName: contact.userName ?? "", - presService: self.presenceService, - contactProfile: profile) + accountId: currentAccount.id, + registrName: contact.userName ?? "", + presService: self.presenceService, + contactProfile: profile) contactToAdd.hash = contact.hash let contactItem = ConferencableItem(conferenceID: "", contacts: [contactToAdd]) @@ -147,14 +147,14 @@ class ContactPickerViewModel: Stateable, ViewModel { }() let search = PublishSubject<String>() - fileprivate let disposeBag = DisposeBag() + private let disposeBag = DisposeBag() - fileprivate let contactsService: ContactsService - fileprivate let callService: CallsService - fileprivate let profileService: ProfilesService - fileprivate let accountService: AccountsService - fileprivate let presenceService: PresenceService - fileprivate let videoService: VideoService + private let contactsService: ContactsService + private let callService: CallsService + private let profileService: ProfilesService + private let accountService: AccountsService + private let presenceService: PresenceService + private let videoService: VideoService required init(with injectionBag: InjectionBag) { self.contactsService = injectionBag.contactsService diff --git a/Ring/Ring/Calls/views/ConferenceParticipantViewModel.swift b/Ring/Ring/Calls/views/ConferenceParticipantViewModel.swift index 3bf9194b3..be281fb10 100644 --- a/Ring/Ring/Calls/views/ConferenceParticipantViewModel.swift +++ b/Ring/Ring/Calls/views/ConferenceParticipantViewModel.swift @@ -44,8 +44,8 @@ class ConferenceParticipantViewModel { } let type = account.type == AccountType.sip ? URIType.sip : URIType.ring guard let uriString = JamiURI.init(schema: type, - infoHach: call.participantUri, - account: account).uriString else { return nil } + infoHach: call.participantUri, + account: account).uriString else { return nil } return self.profileService.getProfile(uri: uriString, createIfNotexists: true, accountId: account.id) }() diff --git a/Ring/Ring/Contact/ContactViewModel.swift b/Ring/Ring/Contact/ContactViewModel.swift index 7413241c8..7f7086a7b 100644 --- a/Ring/Ring/Contact/ContactViewModel.swift +++ b/Ring/Ring/Contact/ContactViewModel.swift @@ -146,6 +146,7 @@ class ContactViewModel: ViewModel, Stateable { } }() var profileImageData = Variable<Data?>(nil) + required init (with injectionBag: InjectionBag) { self.contactService = injectionBag.contactsService self.profileService = injectionBag.profileService diff --git a/Ring/Ring/Database/DBHelpers/ConversationDataHepler.swift b/Ring/Ring/Database/DBHelpers/ConversationDataHepler.swift index 406d96c3e..10b55271b 100644 --- a/Ring/Ring/Database/DBHelpers/ConversationDataHepler.swift +++ b/Ring/Ring/Database/DBHelpers/ConversationDataHepler.swift @@ -36,6 +36,7 @@ final class ConversationDataHelper { // to migrate from legacy db let participantId = Expression<Int64>("participant_id") + func migrateToDBForAccount(from oldDB: Connection, to newDB: Connection, accountProfileId: Int64, @@ -65,7 +66,7 @@ final class ConversationDataHelper { func insert(item: Conversation, dataBase: Connection) -> Bool { let query = table.insert(id <- item.id, - participant <- item.participant) + participant <- item.participant) do { let rowId = try dataBase.run(query) guard rowId > 0 else { diff --git a/Ring/Ring/Database/DBHelpers/InteractionDataHelper.swift b/Ring/Ring/Database/DBHelpers/InteractionDataHelper.swift index bf0296dce..6d6d0d52e 100644 --- a/Ring/Ring/Database/DBHelpers/InteractionDataHelper.swift +++ b/Ring/Ring/Database/DBHelpers/InteractionDataHelper.swift @@ -56,6 +56,7 @@ final class InteractionDataHelper { //migrations from legacy db let authorId = Expression<Int64>("author_id") let conversationId = Expression<Int64>("conversation_id") + func migrateToDBForAccount (from oldDB: Connection, to newDB: Connection, accountProfileId: Int64, @@ -133,14 +134,14 @@ final class InteractionDataHelper { func insert(item: Interaction, dataBase: Connection) -> Int64? { let query = table.insert(duration <- item.duration, - author <- item.author, - conversation <- item.conversation, - timestamp <- item.timestamp, - body <- item.body, - type <- item.type, - status <- item.status, - daemonId <- item.daemonID, - incoming <- item.incoming) + author <- item.author, + conversation <- item.conversation, + timestamp <- item.timestamp, + body <- item.body, + type <- item.type, + status <- item.status, + daemonId <- item.daemonID, + incoming <- item.incoming) do { let rowId = try dataBase.run(query) guard rowId > 0 else { diff --git a/Ring/Ring/Database/DBManager.swift b/Ring/Ring/Database/DBManager.swift index beb5cba9c..e41357fee 100644 --- a/Ring/Ring/Database/DBManager.swift +++ b/Ring/Ring/Database/DBManager.swift @@ -275,8 +275,8 @@ class DBManager { } do { try _ = self.getConversationsFor(contactUri: contactUri, - createIfNotExists: true, - dataBase: dataBase, accountId: accountId) + createIfNotExists: true, + dataBase: dataBase, accountId: accountId) } catch {} } @@ -414,8 +414,8 @@ class DBManager { for messageId in messagesIDs { if !self.interactionHepler .updateInteractionStatusWithID(interactionID: messageId, - interactionStatus: InteractionStatus(status: status).rawValue, - dataBase: dataBase) { + interactionStatus: InteractionStatus(status: status).rawValue, + dataBase: dataBase) { success = false } } @@ -604,7 +604,7 @@ class DBManager { } for conversationID in conversations.map({ $0.id }) { guard let participants = try self.getParticipantsForConversation(conversationID: conversationID, - dataBase: dataBase), + dataBase: dataBase), let participant = participants.first else { continue } @@ -728,7 +728,7 @@ class DBManager { createifNotExists: createIfNotExists) else { return nil } if self.dbConnections .isContactProfileExists(accountId: accountId, - profileURI: profileUri) || !createIfNotExists { + profileURI: profileUri) || !createIfNotExists { return getProfileFromPath(path: profilePath) } let profile = Profile(profileUri, nil, nil, type.rawValue) @@ -760,7 +760,7 @@ class DBManager { contactCard.phoneNumbers = [CNLabeledValue(label: CNLabelPhoneNumberiPhone, value: CNPhoneNumber(stringValue: profile.uri))] if let photo = profile.photo { contactCard.imageData = NSData(base64Encoded: photo, - options: NSData.Base64DecodingOptions.ignoreUnknownCharacters) as Data? + options: NSData.Base64DecodingOptions.ignoreUnknownCharacters) as Data? } let data = try CNContactVCardSerialization.dataWithImageAndUUID(from: contactCard, andImageCompression: 40000) try data.write(to: url) diff --git a/Ring/Ring/EditProfileViewController.swift b/Ring/Ring/EditProfileViewController.swift index 3c0336896..5c885853f 100644 --- a/Ring/Ring/EditProfileViewController.swift +++ b/Ring/Ring/EditProfileViewController.swift @@ -31,7 +31,7 @@ class EditProfileViewController: UIViewController, UITextFieldDelegate, UIImageP // MARK: - members var model: EditProfileViewModel! - fileprivate let disposeBag = DisposeBag() + private let disposeBag = DisposeBag() // MARK: - functions diff --git a/Ring/Ring/Extensions/Emoji+Helpers.swift b/Ring/Ring/Extensions/Emoji+Helpers.swift index 7cfc7b000..0dbf6e9f4 100644 --- a/Ring/Ring/Extensions/Emoji+Helpers.swift +++ b/Ring/Ring/Extensions/Emoji+Helpers.swift @@ -91,7 +91,7 @@ extension String { return scalars.map { $0.map { String($0) } .reduce("", +) } } - fileprivate var emojiScalars: [UnicodeScalar] { + private var emojiScalars: [UnicodeScalar] { var chars: [UnicodeScalar] = [] var previous: UnicodeScalar? diff --git a/Ring/Ring/Extensions/UIView+Ring.swift b/Ring/Ring/Extensions/UIView+Ring.swift index accbcfe8f..b6e9eb11f 100644 --- a/Ring/Ring/Extensions/UIView+Ring.swift +++ b/Ring/Ring/Extensions/UIView+Ring.swift @@ -178,10 +178,10 @@ extension UIView { func blink() { UIView.animate(withDuration: 1, - delay: 0.0, - options: [.curveEaseInOut, - .autoreverse, - .repeat], + delay: 0.0, + options: [.curveEaseInOut, + .autoreverse, + .repeat], animations: { [weak self] in self?.alpha = 0.4 }, diff --git a/Ring/Ring/Features/ContactRequests/ContactRequestsViewController.swift b/Ring/Ring/Features/ContactRequests/ContactRequestsViewController.swift index 4cfd1d46c..083887939 100644 --- a/Ring/Ring/Features/ContactRequests/ContactRequestsViewController.swift +++ b/Ring/Ring/Features/ContactRequests/ContactRequestsViewController.swift @@ -33,9 +33,9 @@ class ContactRequestsViewController: UIViewController, StoryboardBased, ViewMode @IBOutlet weak var noInvitationsPlaceholder: UIView! @IBOutlet weak var noRequestsLabel: UILabel! - fileprivate let disposeBag = DisposeBag() - fileprivate let cellIdentifier = "ContactRequestCell" - fileprivate let log = SwiftyBeaver.self + private let disposeBag = DisposeBag() + private let cellIdentifier = "ContactRequestCell" + private let log = SwiftyBeaver.self override func viewDidLoad() { super.viewDidLoad() diff --git a/Ring/Ring/Features/ContactRequests/ContactRequestsViewModel.swift b/Ring/Ring/Features/ContactRequests/ContactRequestsViewModel.swift index 89bf4dfea..6d2afc1ae 100644 --- a/Ring/Ring/Features/ContactRequests/ContactRequestsViewModel.swift +++ b/Ring/Ring/Features/ContactRequests/ContactRequestsViewModel.swift @@ -37,10 +37,10 @@ class ContactRequestsViewModel: Stateable, ViewModel { let presenceService: PresenceService let profileService: ProfilesService - fileprivate let disposeBag = DisposeBag() - fileprivate let log = SwiftyBeaver.self + private let disposeBag = DisposeBag() + private let log = SwiftyBeaver.self - fileprivate let injectionBag: InjectionBag + private let injectionBag: InjectionBag required init(with injectionBag: InjectionBag) { self.contactsService = injectionBag.contactsService @@ -112,7 +112,7 @@ class ContactRequestsViewModel: Stateable, ViewModel { } } - fileprivate func lookupUserName(withItem item: ContactRequestItem) { + private func lookupUserName(withItem item: ContactRequestItem) { self.nameService.usernameLookupStatus.asObservable() .filter({ lookupNameResponse in @@ -129,8 +129,8 @@ class ContactRequestsViewModel: Stateable, ViewModel { guard let currentAccount = accountsService.currentAccount else { return } self.nameService.lookupAddress(withAccount: currentAccount.id, - nameserver: "", - address: item.contactRequest.ringId) + nameserver: "", + address: item.contactRequest.ringId) } func showConversation (forRingId ringId: String) { diff --git a/Ring/Ring/Features/Conversations/Conversation/Cells/MessageCellLocationSharingSent.swift b/Ring/Ring/Features/Conversations/Conversation/Cells/MessageCellLocationSharingSent.swift index 7ca933235..5f0a6bfbd 100644 --- a/Ring/Ring/Features/Conversations/Conversation/Cells/MessageCellLocationSharingSent.swift +++ b/Ring/Ring/Features/Conversations/Conversation/Cells/MessageCellLocationSharingSent.swift @@ -32,6 +32,7 @@ class MessageCellLocationSharingSent: MessageCellLocationSharing { @IBOutlet weak var sentBubbleLeading: NSLayoutConstraint! @IBOutlet weak var stopSharingButton: UIButton! + @IBAction func stopSharingButton(_ sender: Any) { self.delete(sender) } diff --git a/Ring/Ring/Features/Conversations/Conversation/ConversationViewController.swift b/Ring/Ring/Features/Conversations/Conversation/ConversationViewController.swift index c77566993..7dcb28d46 100644 --- a/Ring/Ring/Features/Conversations/Conversation/ConversationViewController.swift +++ b/Ring/Ring/Features/Conversations/Conversation/ConversationViewController.swift @@ -80,8 +80,8 @@ class ConversationViewController: UIViewController, return } self.setupNavTitle(profileImageData: self.viewModel.profileImageData.value, - displayName: self.viewModel.displayName.value, - username: self.viewModel.userName.value) + displayName: self.viewModel.displayName.value, + username: self.viewModel.userName.value) self.tableView.reloadData() }).disposed(by: self.disposeBag) @@ -661,18 +661,18 @@ class ConversationViewController: UIViewController, }).disposed(by: disposeBag) } - fileprivate func updateBottomOffset() { + private func updateBottomOffset() { self.bottomOffset = self.tableView.contentSize.height - ( self.tableView.frame.size.height - self.tableView.contentInset.top - self.tableView.contentInset.bottom ) } - fileprivate func messagesLoadingFinished() { + private func messagesLoadingFinished() { self.spinnerView.isHidden = true } - fileprivate func scrollToBottomIfNeed() { + private func scrollToBottomIfNeed() { if (self.isBottomContentOffset || !self.tableView.isScrollEnabled) && !self.isExecutingDeleteMessage { self.scrollToBottom(animated: false) } @@ -681,7 +681,7 @@ class ConversationViewController: UIViewController, } } - fileprivate func scrollToBottom(animated: Bool) { + private func scrollToBottom(animated: Bool) { let numberOfRows = self.tableView.numberOfRows(inSection: 0) if numberOfRows > 0 { let last = IndexPath(row: numberOfRows - 1, section: 0) @@ -690,7 +690,7 @@ class ConversationViewController: UIViewController, } } - fileprivate var isBottomContentOffset: Bool { + private var isBottomContentOffset: Bool { self.updateBottomOffset() let offset = abs((self.tableView.contentOffset.y + self.tableView.contentInset.top) - bottomOffset) return offset <= scrollOffsetThreshold diff --git a/Ring/Ring/Features/Conversations/Conversation/ConversationViewModel.swift b/Ring/Ring/Features/Conversations/Conversation/ConversationViewModel.swift index 79a41f7f8..e1a6b51e4 100644 --- a/Ring/Ring/Features/Conversations/Conversation/ConversationViewModel.swift +++ b/Ring/Ring/Features/Conversations/Conversation/ConversationViewModel.swift @@ -445,7 +445,7 @@ class ConversationViewModel: Stateable, ViewModel { self.messages.value.removeAll(where: { $0.messageId == messageId }) } - fileprivate var unreadMessagesCount: Int { + private var unreadMessagesCount: Int { let unreadMessages = self.conversation.value.messages .filter({ message in return message.status != .displayed && diff --git a/Ring/Ring/Features/Conversations/Conversation/GrowingTextView.swift b/Ring/Ring/Features/Conversations/Conversation/GrowingTextView.swift index 22ac27a14..a292e2c1c 100644 --- a/Ring/Ring/Features/Conversations/Conversation/GrowingTextView.swift +++ b/Ring/Ring/Features/Conversations/Conversation/GrowingTextView.swift @@ -86,6 +86,7 @@ open class GrowingTextView: UITextView { } private var shouldScrollAfterHeightChanged = false + override open func layoutSubviews() { super.layoutSubviews() diff --git a/Ring/Ring/Features/Conversations/Conversation/MessageAccessoryView.swift b/Ring/Ring/Features/Conversations/Conversation/MessageAccessoryView.swift index 90e046d9b..09c280e04 100644 --- a/Ring/Ring/Features/Conversations/Conversation/MessageAccessoryView.swift +++ b/Ring/Ring/Features/Conversations/Conversation/MessageAccessoryView.swift @@ -52,7 +52,7 @@ class MessageAccessoryView: UIView, NibLoadable, GrowingTextViewDelegate { } self.bottomAnchor .constraint(lessThanOrEqualToSystemSpacingBelow: window.safeAreaLayoutGuide.bottomAnchor, - multiplier: 1) + multiplier: 1) .isActive = true } blurEffect?.removeFromSuperview() diff --git a/Ring/Ring/Features/Conversations/Conversation/MessageViewModel.swift b/Ring/Ring/Features/Conversations/Conversation/MessageViewModel.swift index 9102bd432..f4702c301 100644 --- a/Ring/Ring/Features/Conversations/Conversation/MessageViewModel.swift +++ b/Ring/Ring/Features/Conversations/Conversation/MessageViewModel.swift @@ -51,11 +51,11 @@ enum GeneratedMessageType: String { class MessageViewModel { - fileprivate let log = SwiftyBeaver.self + private let log = SwiftyBeaver.self - fileprivate let accountService: AccountsService - fileprivate let conversationsService: ConversationsService - fileprivate let dataTransferService: DataTransferService + private let accountService: AccountsService + private let conversationsService: ConversationsService + private let dataTransferService: DataTransferService var message: MessageModel var shouldShowTimeString: Bool = false diff --git a/Ring/Ring/Features/Conversations/SendFile/SendFileViewController.swift b/Ring/Ring/Features/Conversations/SendFile/SendFileViewController.swift index ef185fcc3..5d8014eaa 100644 --- a/Ring/Ring/Features/Conversations/SendFile/SendFileViewController.swift +++ b/Ring/Ring/Features/Conversations/SendFile/SendFileViewController.swift @@ -26,7 +26,7 @@ import SwiftyBeaver class SendFileViewController: UIViewController, StoryboardBased, ViewModelBased { var viewModel: SendFileViewModel! - fileprivate let disposeBag = DisposeBag() + private let disposeBag = DisposeBag() private let log = SwiftyBeaver.self @IBOutlet weak var preview: UIImageView! diff --git a/Ring/Ring/Features/Conversations/SendFile/SendFileViewModel.swift b/Ring/Ring/Features/Conversations/SendFile/SendFileViewModel.swift index 61f86fe53..334acf9b3 100644 --- a/Ring/Ring/Features/Conversations/SendFile/SendFileViewModel.swift +++ b/Ring/Ring/Features/Conversations/SendFile/SendFileViewModel.swift @@ -110,9 +110,9 @@ class SendFileViewModel: Stateable, ViewModel { }() var audioOnly: Bool = false - fileprivate let videoService: VideoService - fileprivate let accountService: AccountsService - fileprivate let fileTransferService: DataTransferService + private let videoService: VideoService + private let accountService: AccountsService + private let fileTransferService: DataTransferService var fileName = "" var conversation: ConversationModel! diff --git a/Ring/Ring/Features/Conversations/SmartList/Cells/AccountPickerAdapter.swift b/Ring/Ring/Features/Conversations/SmartList/Cells/AccountPickerAdapter.swift index 6fda26791..cd7d5985a 100644 --- a/Ring/Ring/Features/Conversations/SmartList/Cells/AccountPickerAdapter.swift +++ b/Ring/Ring/Features/Conversations/SmartList/Cells/AccountPickerAdapter.swift @@ -29,6 +29,7 @@ struct AccountItem { final class AccountPickerAdapter: NSObject, UIPickerViewDataSource, UIPickerViewDelegate, RxPickerViewDataSourceType, SectionedViewDataSourceType { typealias Element = [AccountItem] + private var items: [AccountItem] = [] func model(at indexPath: IndexPath) throws -> Any { diff --git a/Ring/Ring/Features/Conversations/SmartList/IncognitoSmartListViewController.swift b/Ring/Ring/Features/Conversations/SmartList/IncognitoSmartListViewController.swift index 71adf1921..c050aabb1 100644 --- a/Ring/Ring/Features/Conversations/SmartList/IncognitoSmartListViewController.swift +++ b/Ring/Ring/Features/Conversations/SmartList/IncognitoSmartListViewController.swift @@ -38,7 +38,7 @@ class IncognitoSmartListViewController: UIViewController, StoryboardBased, ViewM @IBOutlet weak var searchBarShadow: UIView! var viewModel: IncognitoSmartListViewModel! - fileprivate let disposeBag = DisposeBag() + private let disposeBag = DisposeBag() override func viewDidLoad() { super.viewDidLoad() @@ -182,9 +182,9 @@ class IncognitoSmartListViewController: UIViewController, StoryboardBased, ViewM func confirmBoothModeAlert() { boothConfirmation.configure(title: L10n.AccountPage.disableBoothMode, - msg: "", - enable: false, presenter: self, - disposeBag: self.disposeBag) + msg: "", + enable: false, presenter: self, + disposeBag: self.disposeBag) } } diff --git a/Ring/Ring/Features/Conversations/SmartList/IncognitoSmartListViewModel.swift b/Ring/Ring/Features/Conversations/SmartList/IncognitoSmartListViewModel.swift index d66a1f761..4db0de3f1 100644 --- a/Ring/Ring/Features/Conversations/SmartList/IncognitoSmartListViewModel.swift +++ b/Ring/Ring/Features/Conversations/SmartList/IncognitoSmartListViewModel.swift @@ -29,19 +29,19 @@ class IncognitoSmartListViewModel: Stateable, ViewModel, FilterConversationDataS return self.stateSubject.asObservable() }() - fileprivate let disposeBag = DisposeBag() + private let disposeBag = DisposeBag() //Services - fileprivate let accountService: AccountsService - fileprivate let networkService: NetworkService - fileprivate let contactService: ContactsService + private let accountService: AccountsService + private let networkService: NetworkService + private let contactService: ContactsService let conversationService: ConversationsService lazy var currentAccount: AccountModel? = { return self.accountService.currentAccount }() - fileprivate var lookupName = BehaviorRelay<String?>(value: "") + private var lookupName = BehaviorRelay<String?>(value: "") var searching = PublishSubject<Bool>() @@ -51,6 +51,7 @@ class IncognitoSmartListViewModel: Stateable, ViewModel, FilterConversationDataS func networkConnectionState() -> ConnectionType { return self.networkService.connectionState.value } + let injectionBag: InjectionBag required init(with injectionBag: InjectionBag) { @@ -70,7 +71,8 @@ class IncognitoSmartListViewModel: Stateable, ViewModel, FilterConversationDataS contactFoundConversation.value = conversation lookupName.accept(name) } - fileprivate var contactFoundConversation = Variable<ConversationViewModel?>(nil) + + private var contactFoundConversation = Variable<ConversationViewModel?>(nil) func showConversation (withConversationViewModel conversationViewModel: ConversationViewModel) { } diff --git a/Ring/Ring/Features/Conversations/SmartList/SmartlistViewController.swift b/Ring/Ring/Features/Conversations/SmartList/SmartlistViewController.swift index 8c8540560..34ea01d9e 100644 --- a/Ring/Ring/Features/Conversations/SmartList/SmartlistViewController.swift +++ b/Ring/Ring/Features/Conversations/SmartList/SmartlistViewController.swift @@ -71,7 +71,7 @@ class SmartlistViewController: UIViewController, StoryboardBased, ViewModelBased // MARK: members var viewModel: SmartlistViewModel! - fileprivate let disposeBag = DisposeBag() + private let disposeBag = DisposeBag() private let contactPicker = CNContactPickerViewController() diff --git a/Ring/Ring/Features/Conversations/SmartList/SmartlistViewModel.swift b/Ring/Ring/Features/Conversations/SmartList/SmartlistViewModel.swift index 04b36d910..746d2604a 100644 --- a/Ring/Ring/Features/Conversations/SmartList/SmartlistViewModel.swift +++ b/Ring/Ring/Features/Conversations/SmartList/SmartlistViewModel.swift @@ -34,17 +34,17 @@ class SmartlistViewModel: Stateable, ViewModel, FilterConversationDataSource { return self.stateSubject.asObservable() }() - fileprivate let disposeBag = DisposeBag() - fileprivate var tempBag = DisposeBag() + private let disposeBag = DisposeBag() + private var tempBag = DisposeBag() //Services - fileprivate let conversationsService: ConversationsService - fileprivate let nameService: NameService - fileprivate let accountsService: AccountsService - fileprivate let contactsService: ContactsService - fileprivate let networkService: NetworkService - fileprivate let profileService: ProfilesService - fileprivate let callService: CallsService + private let conversationsService: ConversationsService + private let nameService: NameService + private let accountsService: AccountsService + private let contactsService: ContactsService + private let networkService: NetworkService + private let profileService: ProfilesService + private let callService: CallsService lazy var currentAccount: AccountModel? = { return self.accountsService.currentAccount @@ -52,7 +52,7 @@ class SmartlistViewModel: Stateable, ViewModel, FilterConversationDataSource { var searching = PublishSubject<Bool>() - fileprivate var contactFoundConversation = Variable<ConversationViewModel?>(nil) + private var contactFoundConversation = Variable<ConversationViewModel?>(nil) lazy var hideNoConversationsMessage: Observable<Bool> = { return Observable<Bool> @@ -88,6 +88,7 @@ class SmartlistViewModel: Stateable, ViewModel, FilterConversationDataSource { func networkConnectionState() -> ConnectionType { return self.networkService.connectionState.value } + let injectionBag: InjectionBag //Values need to be updated when selected account changed var profileImageForCurrentAccount = PublishSubject<Profile>() @@ -247,7 +248,7 @@ class SmartlistViewModel: Stateable, ViewModel, FilterConversationDataSource { self.conversationsService .clearHistory(conversation: conversationViewModel.conversation.value, - keepConversation: true) + keepConversation: true) self.conversationViewModels.remove(at: index) } } @@ -266,7 +267,7 @@ class SmartlistViewModel: Stateable, ViewModel, FilterConversationDataSource { .subscribe(onCompleted: { [weak self] in self?.conversationsService .clearHistory(conversation: conversationViewModel.conversation.value, - keepConversation: false) + keepConversation: false) self?.conversationViewModels.remove(at: index) }).disposed(by: self.disposeBag) } diff --git a/Ring/Ring/Features/Conversations/views/ConfirmationAlert.swift b/Ring/Ring/Features/Conversations/views/ConfirmationAlert.swift index dff010d86..16ceb8a2c 100644 --- a/Ring/Ring/Features/Conversations/views/ConfirmationAlert.swift +++ b/Ring/Ring/Features/Conversations/views/ConfirmationAlert.swift @@ -29,14 +29,15 @@ protocol BoothModeConfirmationPresenter: UIViewController { class ConfirmationAlert { var alert = UIAlertController() + func configure(title: String, msg: String, enable: Bool, presenter: BoothModeConfirmationPresenter, disposeBag: DisposeBag) { alert = UIAlertController(title: title, - message: msg, - preferredStyle: .alert) + message: msg, + preferredStyle: .alert) let actionCancel = UIAlertAction(title: L10n.Actions.cancelAction, style: .cancel) { [weak presenter] _ in presenter?.switchBoothModeState(state: !enable) diff --git a/Ring/Ring/Features/Conversations/views/JamiSearchView/JamiSearchView.swift b/Ring/Ring/Features/Conversations/views/JamiSearchView/JamiSearchView.swift index d43c3e576..00b9aac65 100644 --- a/Ring/Ring/Features/Conversations/views/JamiSearchView/JamiSearchView.swift +++ b/Ring/Ring/Features/Conversations/views/JamiSearchView/JamiSearchView.swift @@ -29,8 +29,8 @@ class JamiSearchView: NSObject, UITableViewDelegate { @IBOutlet weak var searchingLabel: UILabel! @IBOutlet weak var searchResultsTableView: UITableView! - fileprivate var viewModel: JamiSearchViewModel! - fileprivate let disposeBag = DisposeBag() + private var viewModel: JamiSearchViewModel! + private let disposeBag = DisposeBag() var editSearch = PublishSubject<Bool>() var isIncognito = false diff --git a/Ring/Ring/Features/Conversations/views/JamiSearchView/JamiSearchViewModel.swift b/Ring/Ring/Features/Conversations/views/JamiSearchView/JamiSearchViewModel.swift index 4541c9eb9..e6b22fbf4 100644 --- a/Ring/Ring/Features/Conversations/views/JamiSearchView/JamiSearchViewModel.swift +++ b/Ring/Ring/Features/Conversations/views/JamiSearchView/JamiSearchViewModel.swift @@ -24,6 +24,7 @@ import RxCocoa protocol FilterConversationDataSource { var conversationViewModels: [ConversationViewModel] { get set } + func conversationFound(conversation: ConversationViewModel?, name: String) func showConversation(withConversationViewModel conversationViewModel: ConversationViewModel) } @@ -31,11 +32,11 @@ protocol FilterConversationDataSource { class JamiSearchViewModel { //Services - fileprivate let nameService: NameService - fileprivate let accountsService: AccountsService - fileprivate let injectionBag: InjectionBag + private let nameService: NameService + private let accountsService: AccountsService + private let injectionBag: InjectionBag - fileprivate let disposeBag = DisposeBag() + private let disposeBag = DisposeBag() lazy var searchResults: Observable<[ConversationSection]> = { return Observable<[ConversationSection]> @@ -53,8 +54,8 @@ class JamiSearchViewModel { }).observeOn(MainScheduler.instance) }() - fileprivate var contactFoundConversation = BehaviorRelay<ConversationViewModel?>(value: nil) - fileprivate var filteredResults = Variable([ConversationViewModel]()) + private var contactFoundConversation = BehaviorRelay<ConversationViewModel?>(value: nil) + private var filteredResults = Variable([ConversationViewModel]()) let searchBarText = Variable<String>("") var isSearching: Observable<Bool>! @@ -120,7 +121,7 @@ class JamiSearchViewModel { }).disposed(by: disposeBag) } - fileprivate func search(withText text: String) { + private func search(withText text: String) { guard let currentAccount = self.accountsService.currentAccount else { return } self.contactFoundConversation.accept(nil) diff --git a/Ring/Ring/Features/Conversations/views/PlayerView.swift b/Ring/Ring/Features/Conversations/views/PlayerView.swift index a0d9a6380..d6545d445 100644 --- a/Ring/Ring/Features/Conversations/views/PlayerView.swift +++ b/Ring/Ring/Features/Conversations/views/PlayerView.swift @@ -72,7 +72,7 @@ class PlayerView: UIView { progressSlider.setThumbImage(circleImage, for: .highlighted) } - fileprivate func makeCircleWith(size: CGSize, backgroundColor: UIColor) -> UIImage? { + private func makeCircleWith(size: CGSize, backgroundColor: UIColor) -> UIImage? { UIGraphicsBeginImageContextWithOptions(size, false, 0.0) let context = UIGraphicsGetCurrentContext() context?.setFillColor(backgroundColor.cgColor) diff --git a/Ring/Ring/Features/Conversations/views/PlayerViewModel.swift b/Ring/Ring/Features/Conversations/views/PlayerViewModel.swift index 65456394e..639ce322f 100644 --- a/Ring/Ring/Features/Conversations/views/PlayerViewModel.swift +++ b/Ring/Ring/Features/Conversations/views/PlayerViewModel.swift @@ -39,13 +39,13 @@ class PlayerViewModel { var firstFrame: UIImage? - fileprivate let disposeBag = DisposeBag() - fileprivate var playBackDisposeBag = DisposeBag() + private let disposeBag = DisposeBag() + private var playBackDisposeBag = DisposeBag() - fileprivate let videoService: VideoService - fileprivate let filePath: String - fileprivate var playerId = "" - fileprivate var progressTimer: Timer? + private let videoService: VideoService + private let filePath: String + private var playerId = "" + private var progressTimer: Timer? init(injectionBag: InjectionBag, path: String) { self.videoService = injectionBag.videoService diff --git a/Ring/Ring/Features/Me/Me/MeViewController.swift b/Ring/Ring/Features/Me/Me/MeViewController.swift index b28ec4c0d..4ab081463 100644 --- a/Ring/Ring/Features/Me/Me/MeViewController.swift +++ b/Ring/Ring/Features/Me/Me/MeViewController.swift @@ -35,7 +35,7 @@ class MeViewController: EditProfileViewController, StoryboardBased, ViewModelBas // MARK: - members var viewModel: MeViewModel! - fileprivate let disposeBag = DisposeBag() + private let disposeBag = DisposeBag() private var stretchyHeader: AccountHeader! var sipCredentialsMargin: CGFloat = 0 @@ -374,8 +374,8 @@ class MeViewController: EditProfileViewController, StoryboardBased, ViewModelBas case .jamiUserName(let label): if !label.isEmpty { return self.configureCellWithEnableTextCopy(text: L10n.AccountPage.username, - secondaryText: label, - style: .callout) + secondaryText: label, + style: .callout) } let cell = DisposableCell() cell.textLabel?.text = L10n.AccountPage.registerNameTitle @@ -703,8 +703,8 @@ class MeViewController: EditProfileViewController, StoryboardBased, ViewModelBas cell.detailTextLabel?.font = UIFont.preferredFont(forTextStyle: .callout) cell.detailTextLabel?.textColor = UIColor.clear var frame = CGRect(x: self.sipCredentialsMargin, y: 0, - width: self.view.frame.width - self.sipCredentialsMargin, - height: cell.frame.height) + width: self.view.frame.width - self.sipCredentialsMargin, + height: cell.frame.height) if self.view.frame.width - self.sipCredentialsMargin < text.frame.size.width { let origin = CGPoint(x: 10, y: cell.textLabel!.frame.size.height + 25) let size = text.frame.size diff --git a/Ring/Ring/Features/Me/Me/MeViewModel.swift b/Ring/Ring/Features/Me/Me/MeViewModel.swift index 1cf3bf1cb..5a0ed5946 100644 --- a/Ring/Ring/Features/Me/Me/MeViewModel.swift +++ b/Ring/Ring/Features/Me/Me/MeViewModel.swift @@ -127,7 +127,7 @@ class MeViewModel: ViewModel, Stateable { return Observable .combineLatest(userName.startWith(""), ringId.startWith("")) { (name, ringID) in var items: [SettingsSection.SectionRow] = [.sectionHeader(title: L10n.AccountPage.credentialsHeader), - .jamiID(label: ringID)] + .jamiID(label: ringID)] items.append(.jamiUserName(label: name)) items.append(.shareAccountDetails) return SettingsSection @@ -243,9 +243,9 @@ class MeViewModel: ViewModel, Stateable { lazy var otherSipSettings: Observable<SettingsSection> = { return Observable .just(SettingsSection.accountSettings( items: [.sectionHeader(title: ""), - .accountState(state: self.accountStatus), - .enableAccount, - .removeAccount])) + .accountState(state: self.accountStatus), + .enableAccount, + .removeAccount])) }() lazy var sipCredentials: Observable<SettingsSection> = { diff --git a/Ring/Ring/Features/Walkthrough/CreateSipAccount/CreateSipAccountViewModel.swift b/Ring/Ring/Features/Walkthrough/CreateSipAccount/CreateSipAccountViewModel.swift index 8a23638ea..9b13f62b0 100644 --- a/Ring/Ring/Features/Walkthrough/CreateSipAccount/CreateSipAccountViewModel.swift +++ b/Ring/Ring/Features/Walkthrough/CreateSipAccount/CreateSipAccountViewModel.swift @@ -32,7 +32,7 @@ class CreateSipAccountViewModel: Stateable, ViewModel { var password = Variable<String>("") var sipServer = Variable<String>("") var port = Variable<String>("") - fileprivate let accountsService: AccountsService + private let accountsService: AccountsService required init(with injectionBag: InjectionBag) { self.accountsService = injectionBag.accountService @@ -40,9 +40,9 @@ class CreateSipAccountViewModel: Stateable, ViewModel { func createSipaccount() { let created = self.accountsService.addSipAccount(userName: userName.value, - password: password.value, - sipServer: sipServer.value, - port: port.value) + password: password.value, + sipServer: sipServer.value, + port: port.value) if created { DispatchQueue.main.async { self.stateSubject.onNext(WalkthroughState.accountCreated) diff --git a/Ring/Ring/Features/Walkthrough/LinkToAccountManager/LinkToAccountManagerViewModel.swift b/Ring/Ring/Features/Walkthrough/LinkToAccountManager/LinkToAccountManagerViewModel.swift index 068976933..5a68bb680 100644 --- a/Ring/Ring/Features/Walkthrough/LinkToAccountManager/LinkToAccountManagerViewModel.swift +++ b/Ring/Ring/Features/Walkthrough/LinkToAccountManager/LinkToAccountManagerViewModel.swift @@ -32,8 +32,8 @@ class LinkToAccountManagerViewModel: Stateable, ViewModel { var password = Variable<String>("") var manager = Variable<String>("") let notificationSwitch = Variable<Bool>(true) - fileprivate let accountsService: AccountsService - fileprivate let disposeBag = DisposeBag() + private let accountsService: AccountsService + private let disposeBag = DisposeBag() private let accountCreationState = Variable<AccountCreationState>(.unknown) lazy var createState: Observable<AccountCreationState> = { return self.accountCreationState.asObservable() diff --git a/Ring/Ring/GeneralSettings/GeneralSettingsViewModel.swift b/Ring/Ring/GeneralSettings/GeneralSettingsViewModel.swift index 4b82666aa..78bbb7edb 100644 --- a/Ring/Ring/GeneralSettings/GeneralSettingsViewModel.swift +++ b/Ring/Ring/GeneralSettings/GeneralSettingsViewModel.swift @@ -31,6 +31,7 @@ enum GeneralSettingsSection: SectionModelType { case hardwareAcceleration case sectionHeader(title: String) } + var items: [SectionRow] { switch self { case .generalSettings(let items): diff --git a/Ring/Ring/Helpers/JamiURI.swift b/Ring/Ring/Helpers/JamiURI.swift index 67aa15491..f04fcd8fc 100644 --- a/Ring/Ring/Helpers/JamiURI.swift +++ b/Ring/Ring/Helpers/JamiURI.swift @@ -52,7 +52,7 @@ class JamiURI { self.parce(infoHach: infoHach) } - fileprivate func parce(infoHach: String, account: AccountModel) { + private func parce(infoHach: String, account: AccountModel) { self.parce(infoHach: infoHach) if self.schema == .ring || self.userInfo.isEmpty { return @@ -67,7 +67,7 @@ class JamiURI { } } - fileprivate func parce(infoHach: String) { + private func parce(infoHach: String) { var info = infoHach.replacingOccurrences(of: "ring:", with: "") .replacingOccurrences(of: "sip:", with: "") .replacingOccurrences(of: "@ring.dht", with: "") diff --git a/Ring/Ring/Models/AccountConfigModel.swift b/Ring/Ring/Models/AccountConfigModel.swift index 0d78abb99..61782cd93 100644 --- a/Ring/Ring/Models/AccountConfigModel.swift +++ b/Ring/Ring/Models/AccountConfigModel.swift @@ -68,7 +68,7 @@ class AccountConfigModel: Object { /** The collection of configuration elements. */ - fileprivate var configValues = [ConfigKeyModel: String]() + private var configValues = [ConfigKeyModel: String]() /** logguer diff --git a/Ring/Ring/Protocols/ConversationNavigation.swift b/Ring/Ring/Protocols/ConversationNavigation.swift index 7b7391dd5..be9e27c92 100644 --- a/Ring/Ring/Protocols/ConversationNavigation.swift +++ b/Ring/Ring/Protocols/ConversationNavigation.swift @@ -41,6 +41,7 @@ enum ConversationState: State { protocol ConversationNavigation: class { var injectionBag: InjectionBag { get } + func addLockFlags() } diff --git a/Ring/Ring/QRCode/ScanViewController.swift b/Ring/Ring/QRCode/ScanViewController.swift index c33d49b0a..6b7cba36a 100644 --- a/Ring/Ring/QRCode/ScanViewController.swift +++ b/Ring/Ring/QRCode/ScanViewController.swift @@ -35,7 +35,9 @@ class ScanViewController: UIViewController, StoryboardBased, AVCaptureMetadataOu // MARK: variables let systemSoundId: SystemSoundID = 1016 + typealias VMType = ScanViewModel + var scannedQrCode: Bool = false //captureSession manages capture activity and coordinates between input device and captures outputs var captureSession: AVCaptureSession? diff --git a/Ring/Ring/Services/AccountsService.swift b/Ring/Ring/Services/AccountsService.swift index 8c1679bd8..d51d970b2 100644 --- a/Ring/Ring/Services/AccountsService.swift +++ b/Ring/Ring/Services/AccountsService.swift @@ -71,17 +71,17 @@ class AccountsService: AccountAdapterDelegate { /** Used to register the service to daemon events, injected by constructor. */ - fileprivate let accountAdapter: AccountAdapter + private let accountAdapter: AccountAdapter /** - Fileprivate Accounts list. + private Accounts list. Can be used for all the operations, but won't be accessed from outside this file. - SeeAlso: `accounts` */ - fileprivate var accountList: [AccountModel] + private var accountList: [AccountModel] - fileprivate let disposeBag = DisposeBag() + private let disposeBag = DisposeBag() /** PublishSubject forwarding AccountRxEvent events. @@ -91,7 +91,7 @@ class AccountsService: AccountAdapterDelegate { - SeeAlso: `ServiceEvent` - SeeAlso: `sharedResponseStream` */ - fileprivate let responseStream = PublishSubject<ServiceEvent>() + private let responseStream = PublishSubject<ServiceEvent>() let dbManager: DBManager let needMigrateCurrentAccount = PublishSubject<String>() @@ -101,13 +101,13 @@ class AccountsService: AccountAdapterDelegate { Can be used to access by constant the list of accounts. */ var accounts: [AccountModel] { - set { - accountList = newValue - } get { let lAccounts = accountList return lAccounts } + set { + accountList = newValue + } } var accountsObservable = Variable<[AccountModel]>([AccountModel]()) @@ -178,7 +178,7 @@ class AccountsService: AccountAdapterDelegate { AccountAdapter.delegate = self } - fileprivate func loadAccountsFromDaemon() { + private func loadAccountsFromDaemon() { let selectedAccount = self.currentAccount self.accountList.removeAll() for accountId in accountAdapter.getAccountList() { @@ -200,7 +200,7 @@ class AccountsService: AccountAdapterDelegate { } } - fileprivate func loadDatabases() -> Bool { + private func loadDatabases() -> Bool { for account in accountList { if dbManager.isMigrationToDBv2Needed(accountId: account.id) { if let accountURI = AccountModelHelper @@ -253,7 +253,7 @@ class AccountsService: AccountAdapterDelegate { return !accountList.isEmpty } - fileprivate func reloadAccounts() { + private func reloadAccounts() { for account in accountList { account.details = self.getAccountDetails(fromAccountId: account.id) account.volatileDetails = self.getVolatileAccountDetails(fromAccountId: account.id) @@ -673,7 +673,7 @@ class AccountsService: AccountAdapterDelegate { - Returns the details. */ - fileprivate func getInitialAccountDetails(accountType: String) throws -> [String: String] { + private func getInitialAccountDetails(accountType: String) throws -> [String: String] { let details: NSMutableDictionary = accountAdapter.getAccountTemplate(accountType) var accountDetails = details as NSDictionary? as? [String: String] ?? nil if accountDetails == nil { @@ -692,7 +692,7 @@ class AccountsService: AccountAdapterDelegate { - Returns the details. */ - fileprivate func getRingInitialAccountDetails() throws -> [String: String] { + private func getRingInitialAccountDetails() throws -> [String: String] { do { let defaultDetails = try getInitialAccountDetails(accountType: AccountType.ring.rawValue) return defaultDetails @@ -968,7 +968,7 @@ class AccountsService: AccountAdapterDelegate { // MARK: - Private daemon wrappers extension AccountsService { - fileprivate func buildAccountFromDaemon(accountId id: String) throws -> AccountModel { + private func buildAccountFromDaemon(accountId id: String) throws -> AccountModel { let accountModel = AccountModel(withAccountId: id) accountModel.details = self.getAccountDetails(fromAccountId: id) accountModel.volatileDetails = self.getVolatileAccountDetails(fromAccountId: id) diff --git a/Ring/Ring/Services/AudioService.swift b/Ring/Ring/Services/AudioService.swift index 4b2e8779a..c86809559 100644 --- a/Ring/Ring/Services/AudioService.swift +++ b/Ring/Ring/Services/AudioService.swift @@ -30,10 +30,10 @@ enum OutputPortType: Int { } class AudioService { - fileprivate let disposeBag = DisposeBag() - fileprivate let log = SwiftyBeaver.self + private let disposeBag = DisposeBag() + private let log = SwiftyBeaver.self - fileprivate let audioAdapter: AudioAdapter + private let audioAdapter: AudioAdapter var isHeadsetConnected = Variable<Bool>(false) var isOutputToSpeaker = Variable<Bool>(true) diff --git a/Ring/Ring/Services/CallsProviderDelegate.swift b/Ring/Ring/Services/CallsProviderDelegate.swift index e02cebc4a..c653d679f 100644 --- a/Ring/Ring/Services/CallsProviderDelegate.swift +++ b/Ring/Ring/Services/CallsProviderDelegate.swift @@ -27,7 +27,7 @@ class CallsProviderDelegate: NSObject { private lazy var callController = CXCallController() let responseStream = PublishSubject<ServiceEvent>() var sharedResponseStream: Observable<ServiceEvent> - fileprivate let disposeBag = DisposeBag() + private let disposeBag = DisposeBag() override init() { self.sharedResponseStream = responseStream.share() diff --git a/Ring/Ring/Services/CallsService.swift b/Ring/Ring/Services/CallsService.swift index 8e128e255..72e205ccd 100644 --- a/Ring/Ring/Services/CallsService.swift +++ b/Ring/Ring/Services/CallsService.swift @@ -48,23 +48,25 @@ enum MediaType: String, CustomStringConvertible { // swiftlint:disable type_body_length // swiftlint:disable file_length class CallsService: CallsAdapterDelegate { - fileprivate let disposeBag = DisposeBag() - fileprivate let callsAdapter: CallsAdapter - fileprivate let log = SwiftyBeaver.self + private let disposeBag = DisposeBag() + private let callsAdapter: CallsAdapter + private let log = SwiftyBeaver.self var calls = Variable<[String: CallModel]>([String: CallModel]()) var pendingConferences = [String: Set<String>]() - fileprivate let ringVCardMIMEType = "x-ring/ring.profile.vcard;" + private let ringVCardMIMEType = "x-ring/ring.profile.vcard;" let currentCallsEvents = ReplaySubject<CallModel>.create(bufferSize: 1) let newCall = Variable<CallModel>(CallModel(withCallId: "", callDetails: [:])) - fileprivate let responseStream = PublishSubject<ServiceEvent>() + private let responseStream = PublishSubject<ServiceEvent>() var sharedResponseStream: Observable<ServiceEvent> - fileprivate let newMessagesStream = PublishSubject<ServiceEvent>() + private let newMessagesStream = PublishSubject<ServiceEvent>() var newMessage: Observable<ServiceEvent> let dbManager: DBManager + typealias ConferenceUpdates = (conferenceID: String, state: String, calls: Set<String>) + let currentConferenceEvent: Variable<ConferenceUpdates> = Variable<ConferenceUpdates>(ConferenceUpdates("", "", Set<String>())) let inConferenceCalls = PublishSubject<CallModel>() diff --git a/Ring/Ring/Services/ContactsService.swift b/Ring/Ring/Services/ContactsService.swift index 9fa3de163..2694f75c4 100644 --- a/Ring/Ring/Services/ContactsService.swift +++ b/Ring/Ring/Services/ContactsService.swift @@ -33,16 +33,16 @@ enum ContactServiceError: Error { class ContactsService { - fileprivate let contactsAdapter: ContactsAdapter - fileprivate let log = SwiftyBeaver.self - fileprivate let disposeBag = DisposeBag() + private let contactsAdapter: ContactsAdapter + private let log = SwiftyBeaver.self + private let disposeBag = DisposeBag() let contactRequests = Variable([ContactRequestModel]()) let contacts = Variable([ContactModel]()) let contactStatus = PublishSubject<ContactModel>() - fileprivate let responseStream = PublishSubject<ServiceEvent>() + private let responseStream = PublishSubject<ServiceEvent>() var sharedResponseStream: Observable<ServiceEvent> let dbManager: DBManager @@ -209,7 +209,7 @@ class ContactsService { } if let photo = accountProfile.photo { vCard.imageData = NSData(base64Encoded: photo, - options: NSData.Base64DecodingOptions.ignoreUnknownCharacters) as Data? + options: NSData.Base64DecodingOptions.ignoreUnknownCharacters) as Data? cardChanged = true } if cardChanged { @@ -255,7 +255,7 @@ class ContactsService { } } - fileprivate func removeContactRequest(withRingId ringId: String) { + private func removeContactRequest(withRingId ringId: String) { guard let contactRequestToRemove = self.contactRequests.value.filter({ $0.ringId == ringId }).first else { return } diff --git a/Ring/Ring/Services/ConversationsManager.swift b/Ring/Ring/Services/ConversationsManager.swift index 10ffe3b4e..9295273cd 100644 --- a/Ring/Ring/Services/ConversationsManager.swift +++ b/Ring/Ring/Services/ConversationsManager.swift @@ -36,9 +36,9 @@ class ConversationsManager: MessagesAdapterDelegate { private let locationSharingService: LocationSharingService private let disposeBag = DisposeBag() - fileprivate let textPlainMIMEType = "text/plain" + private let textPlainMIMEType = "text/plain" private let geoLocationMIMEType = "application/geo" - fileprivate let maxSizeForAutoaccept = 20 * 1024 * 1024 + private let maxSizeForAutoaccept = 20 * 1024 * 1024 private let notificationHandler = LocalNotificationsHelper() // swiftlint:disable cyclomatic_complexity diff --git a/Ring/Ring/Services/ConversationsService.swift b/Ring/Ring/Services/ConversationsService.swift index 48ccf718a..89b7997d7 100644 --- a/Ring/Ring/Services/ConversationsService.swift +++ b/Ring/Ring/Services/ConversationsService.swift @@ -31,12 +31,12 @@ class ConversationsService { */ private let log = SwiftyBeaver.self - fileprivate let messageAdapter: MessagesAdapter - fileprivate let disposeBag = DisposeBag() - fileprivate let textPlainMIMEType = "text/plain" + private let messageAdapter: MessagesAdapter + private let disposeBag = DisposeBag() + private let textPlainMIMEType = "text/plain" private let geoLocationMIMEType = "application/geo" - fileprivate let responseStream = PublishSubject<ServiceEvent>() + private let responseStream = PublishSubject<ServiceEvent>() var sharedResponseStream: Observable<ServiceEvent> var conversations = Variable([ConversationModel]()) diff --git a/Ring/Ring/Services/DaemonService.swift b/Ring/Ring/Services/DaemonService.swift index 85765bda8..5b941f691 100644 --- a/Ring/Ring/Services/DaemonService.swift +++ b/Ring/Ring/Services/DaemonService.swift @@ -62,16 +62,16 @@ class DaemonService { private let log = SwiftyBeaver.self /// Indicates whether the daemon is started or not. - internal fileprivate(set) var daemonStarted = false + internal private(set) var daemonStarted = false /// The DRingAdaptor making the c++ bridge between the deamon and the App Swift source code. - fileprivate let dRingAdaptor: DRingAdapter + private let dRingAdaptor: DRingAdapter /// The time interval separating each poll. - fileprivate let pollingTimeInterval = 0.01 + private let pollingTimeInterval = 0.01 /// The timer scheduling the calls to the poll method. - fileprivate var pollingTimer: Timer? + private var pollingTimer: Timer? // MARK: Initialization init(dRingAdaptor: DRingAdapter) { diff --git a/Ring/Ring/Services/DataTransferService.swift b/Ring/Ring/Services/DataTransferService.swift index 49707a422..5878bae9c 100644 --- a/Ring/Ring/Services/DataTransferService.swift +++ b/Ring/Ring/Services/DataTransferService.swift @@ -87,10 +87,10 @@ public final class DataTransferService: DataTransferAdapterDelegate { typealias ImageTuple = (isImage: Bool, data: UIImage?) private var transferedImages = [String: ImageTuple]() - fileprivate let dataTransferAdapter: DataTransferAdapter + private let dataTransferAdapter: DataTransferAdapter - fileprivate let disposeBag = DisposeBag() - fileprivate let responseStream = PublishSubject<ServiceEvent>() + private let disposeBag = DisposeBag() + private let responseStream = PublishSubject<ServiceEvent>() var sharedResponseStream: Observable<ServiceEvent> let dbManager: DBManager @@ -301,7 +301,7 @@ public final class DataTransferService: DataTransferAdapterDelegate { // MARK: private - fileprivate func getFilePath(fileName: String, inFolder: String, accountID: String, conversationID: String) -> URL? { + private func getFilePath(fileName: String, inFolder: String, accountID: String, conversationID: String) -> URL? { let folderName = inFolder guard let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return nil @@ -311,7 +311,7 @@ public final class DataTransferService: DataTransferAdapterDelegate { return directoryURL.appendingPathComponent(fileName) } - fileprivate func getFilePathForDirectory(directory: String, fileName: String, accountID: String, conversationID: String) -> URL? { + private func getFilePathForDirectory(directory: String, fileName: String, accountID: String, conversationID: String) -> URL? { let folderName = directory let fileNameOnly = (fileName as NSString).deletingPathExtension let fileExtensionOnly = (fileName as NSString).pathExtension @@ -353,7 +353,7 @@ public final class DataTransferService: DataTransferAdapterDelegate { } } - fileprivate func getFilePathForTransfer(forFile fileName: String, accountID: String, conversationID: String) -> URL? { + private func getFilePathForTransfer(forFile fileName: String, accountID: String, conversationID: String) -> URL? { return self.getFilePathForDirectory(directory: Directories.downloads.rawValue, fileName: fileName, accountID: accountID, @@ -369,11 +369,11 @@ public final class DataTransferService: DataTransferAdapterDelegate { // MARK: DataTransferAdapter - fileprivate func dataTransferIdList() -> [UInt64]? { + private func dataTransferIdList() -> [UInt64]? { return self.dataTransferAdapter.dataTransferList() as? [UInt64] } - fileprivate func sendFile(withId transferId: inout UInt64, withInfo info: NSDataTransferInfo) -> NSDataTransferError { + private func sendFile(withId transferId: inout UInt64, withInfo info: NSDataTransferInfo) -> NSDataTransferError { var err: NSDataTransferError = .unknown let _id = UnsafeMutablePointer<UInt64>.allocate(capacity: 1) err = self.dataTransferAdapter.sendFile(with: info, withTransferId: _id) @@ -381,19 +381,19 @@ public final class DataTransferService: DataTransferAdapterDelegate { return err } - fileprivate func acceptFileTransfer(withId transferId: UInt64, withPath filePath: String, withOffset offset: Int64 = 0) -> NSDataTransferError { + private func acceptFileTransfer(withId transferId: UInt64, withPath filePath: String, withOffset offset: Int64 = 0) -> NSDataTransferError { return self.dataTransferAdapter.acceptFileTransfer(withId: transferId, withFilePath: filePath, withOffset: offset) } - fileprivate func cancelDataTransfer(withId transferId: UInt64) -> NSDataTransferError { + private func cancelDataTransfer(withId transferId: UInt64) -> NSDataTransferError { return self.dataTransferAdapter.cancelDataTransfer(withId: transferId) } - fileprivate func dataTransferInfo(withId transferId: UInt64, withInfo info: inout NSDataTransferInfo) -> NSDataTransferError { + private func dataTransferInfo(withId transferId: UInt64, withInfo info: inout NSDataTransferInfo) -> NSDataTransferError { return self.dataTransferAdapter.dataTransferInfo(withId: transferId, with: info) } - fileprivate func dataTransferBytesProgress(withId transferId: UInt64, withTotal total: inout Int64, withProgress progress: inout Int64) -> NSDataTransferError { + private func dataTransferBytesProgress(withId transferId: UInt64, withTotal total: inout Int64, withProgress progress: inout Int64) -> NSDataTransferError { var err: NSDataTransferError = .unknown let _total = UnsafeMutablePointer<Int64>.allocate(capacity: 1) let _progress = UnsafeMutablePointer<Int64>.allocate(capacity: 1) diff --git a/Ring/Ring/Services/NameService.swift b/Ring/Ring/Services/NameService.swift index 6553a21e0..a16b0ad69 100644 --- a/Ring/Ring/Services/NameService.swift +++ b/Ring/Ring/Services/NameService.swift @@ -43,17 +43,17 @@ class NameService: NameRegistrationAdapterDelegate { /** Used to make lookup name request to the daemon */ - fileprivate let nameRegistrationAdapter: NameRegistrationAdapter + private let nameRegistrationAdapter: NameRegistrationAdapter - fileprivate var delayedLookupNameCall: DispatchWorkItem? + private var delayedLookupNameCall: DispatchWorkItem? - fileprivate let lookupNameCallDelay = 0.5 + private let lookupNameCallDelay = 0.5 /** Status of the current username validation request */ var usernameValidationStatus = PublishSubject<UsernameValidationStatus>() - fileprivate let registrationStatus = PublishSubject<ServiceEvent>() + private let registrationStatus = PublishSubject<ServiceEvent>() var sharedRegistrationStatus: Observable<ServiceEvent> init(withNameRegistrationAdapter nameRegistrationAdapter: NameRegistrationAdapter) { diff --git a/Ring/Ring/Services/PresenceService.swift b/Ring/Ring/Services/PresenceService.swift index 25fdc5a43..ade0563cd 100644 --- a/Ring/Ring/Services/PresenceService.swift +++ b/Ring/Ring/Services/PresenceService.swift @@ -23,14 +23,14 @@ import RxSwift class PresenceService { - fileprivate let presenceAdapter: PresenceAdapter - fileprivate let log = SwiftyBeaver.self + private let presenceAdapter: PresenceAdapter + private let log = SwiftyBeaver.self var contactPresence: [String: Variable<Bool>] - fileprivate let responseStream = PublishSubject<ServiceEvent>() + private let responseStream = PublishSubject<ServiceEvent>() var sharedResponseStream: Observable<ServiceEvent> - fileprivate let disposeBag = DisposeBag() + private let disposeBag = DisposeBag() init(withPresenceAdapter presenceAdapter: PresenceAdapter) { self.contactPresence = [String: Variable<Bool>]() diff --git a/Ring/Ring/Services/ProfilesService.swift b/Ring/Ring/Services/ProfilesService.swift index a3779dfc6..d3be135f9 100644 --- a/Ring/Ring/Services/ProfilesService.swift +++ b/Ring/Ring/Services/ProfilesService.swift @@ -41,9 +41,9 @@ struct Base64VCard { class ProfilesService { - fileprivate let ringVCardMIMEType = "x-ring/ring.profile.vcard;" - fileprivate var base64VCards = [Int: Base64VCard]() - fileprivate let log = SwiftyBeaver.self + private let ringVCardMIMEType = "x-ring/ring.profile.vcard;" + private var base64VCards = [Int: Base64VCard]() + private let log = SwiftyBeaver.self var profiles = [String: ReplaySubject<Profile>]() var accountProfiles = [String: ReplaySubject<Profile>]() diff --git a/Ring/Ring/Services/ServiceEvent.swift b/Ring/Ring/Services/ServiceEvent.swift index f19caa453..a6a5a2902 100644 --- a/Ring/Ring/Services/ServiceEvent.swift +++ b/Ring/Ring/Services/ServiceEvent.swift @@ -97,13 +97,13 @@ struct ServiceEvent { /** Identifies the event type. */ - internal fileprivate(set) var eventType: ServiceEventType + internal private(set) var eventType: ServiceEventType // MARK: - Private members /** Contains all the metadata of the event. */ - fileprivate var inputs = [ServiceEventInput: Any]() + private var inputs = [ServiceEventInput: Any]() /** Initializer diff --git a/Ring/Ring/Services/VideoService.swift b/Ring/Ring/Services/VideoService.swift index 2f79eca59..aa3c588bd 100644 --- a/Ring/Ring/Services/VideoService.swift +++ b/Ring/Ring/Services/VideoService.swift @@ -295,8 +295,8 @@ typealias RendererTuple = (rendererId: String, data: UIImage?) // swiftlint:disable file_length class VideoService: FrameExtractorDelegate { - fileprivate let videoAdapter: VideoAdapter - fileprivate let camera = FrameExtractor() + private let videoAdapter: VideoAdapter + private let camera = FrameExtractor() var cameraPosition = AVCaptureDevice.Position.front let incomingVideoFrame = PublishSubject<RendererTuple?>() @@ -313,7 +313,7 @@ class VideoService: FrameExtractorDelegate { var angle: Int = 0 var switchInputRequested: Bool = false - fileprivate let disposeBag = DisposeBag() + private let disposeBag = DisposeBag() var recording = false diff --git a/Ring/Ring/TabBar/BaseViewController.swift b/Ring/Ring/TabBar/BaseViewController.swift index 91090e2e8..e31f673d8 100644 --- a/Ring/Ring/TabBar/BaseViewController.swift +++ b/Ring/Ring/TabBar/BaseViewController.swift @@ -52,6 +52,7 @@ class BaseViewController: UINavigationController { .disposed(by: self.disposeBag) } } + convenience init(with type: TabBarItemType) { self.init() self.navigationBar.isTranslucent = true diff --git a/Ring/Ring/UI/ProgressView.swift b/Ring/Ring/UI/ProgressView.swift index 23fa28ec9..cf6a4209e 100644 --- a/Ring/Ring/UI/ProgressView.swift +++ b/Ring/Ring/UI/ProgressView.swift @@ -57,6 +57,9 @@ class ProgressView: UIView { var currentProgress: CGFloat = 0 var progress: CGFloat { + get { + return innerProgress / toAngleScaler + } set (newProgress) { target = newProgress currentProgress += (target - currentProgress) * 0.1 @@ -64,9 +67,6 @@ class ProgressView: UIView { self.progressVariable.value = newProgress setImage() } - get { - return innerProgress / toAngleScaler - } } // MARK: configure path diff --git a/Ring/RingTests/ServiceEventTests.swift b/Ring/RingTests/ServiceEventTests.swift index 6f81f32a1..1e67e6029 100644 --- a/Ring/RingTests/ServiceEventTests.swift +++ b/Ring/RingTests/ServiceEventTests.swift @@ -27,7 +27,7 @@ import XCTest class ServiceEventTests: XCTestCase { /// The ServiceEvent that will be used during the tests. - fileprivate var event: ServiceEvent? + private var event: ServiceEvent? override func setUp() { self.event = ServiceEvent(withEventType: .accountsChanged) -- GitLab