diff --git a/Example Apps/SPPermissions.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Example Apps/SPPermissions.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 74bc60d1..c5b2fe62 100644 --- a/Example Apps/SPPermissions.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Example Apps/SPPermissions.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -6,7 +6,7 @@ "repositoryURL": "https://github.com/ivanvorobei/SparrowKit", "state": { "branch": "main", - "revision": "bea6f0dcf3f9a9df0dc2a0e1801dddbd23054aa2", + "revision": "d1a2d489417f98620558da08ddcf44a9d53e58f3", "version": null } } diff --git a/Example Apps/SPPermissions.xcodeproj/project.xcworkspace/xcuserdata/ivanvorobei.xcuserdatad/UserInterfaceState.xcuserstate b/Example Apps/SPPermissions.xcodeproj/project.xcworkspace/xcuserdata/ivanvorobei.xcuserdatad/UserInterfaceState.xcuserstate index ae387955..e345691f 100644 Binary files a/Example Apps/SPPermissions.xcodeproj/project.xcworkspace/xcuserdata/ivanvorobei.xcuserdatad/UserInterfaceState.xcuserstate and b/Example Apps/SPPermissions.xcodeproj/project.xcworkspace/xcuserdata/ivanvorobei.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/SPPermissions.podspec b/SPPermissions.podspec index fa6fde09..df5e7b1e 100644 --- a/SPPermissions.podspec +++ b/SPPermissions.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "SPPermissions" - s.version = "6.5.6" + s.version = "6.6.0" s.summary = "Ask permissions on Swift. Available List, Dialog & Native interface. Can check state permission." s.homepage = "https://github.com/ivanvorobei/SPPermissions" s.source = { :git => "https://github.com/ivanvorobei/SPPermissions.git", :tag => s.version } diff --git a/Sources/SPPermissions/Extensions/UIApplicationExtension.swift b/Sources/SPPermissions/Extensions/UIApplicationExtension.swift deleted file mode 100644 index 3ff4047b..00000000 --- a/Sources/SPPermissions/Extensions/UIApplicationExtension.swift +++ /dev/null @@ -1,29 +0,0 @@ -// The MIT License (MIT) -// Copyright © 2020 Ivan Vorobei (hello@ivanvorobei.by) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -import UIKit - -extension UIApplication { - - var userInterfaceRightToLeft: Bool { - UIApplication.shared.userInterfaceLayoutDirection == .rightToLeft - } -} diff --git a/Sources/SPPermissions/Extensions/UIColorExtension.swift b/Sources/SPPermissions/Extensions/UIColorExtension.swift index b38766fa..f9ca48a4 100644 --- a/Sources/SPPermissions/Extensions/UIColorExtension.swift +++ b/Sources/SPPermissions/Extensions/UIColorExtension.swift @@ -79,6 +79,7 @@ extension UIColor { } } + @available(iOSApplicationExtension, unavailable) static var tint: UIColor { get { let value = UIApplication.shared.windows.first?.tintColor diff --git a/Sources/SPPermissions/Interface/Dialog Style/SPPermissionsDialogController.swift b/Sources/SPPermissions/Interface/Dialog Style/SPPermissionsDialogController.swift index 1aeaeda4..d5bf84a2 100644 --- a/Sources/SPPermissions/Interface/Dialog Style/SPPermissionsDialogController.swift +++ b/Sources/SPPermissions/Interface/Dialog Style/SPPermissionsDialogController.swift @@ -22,7 +22,7 @@ import UIKit #if os(iOS) - +@available(iOSApplicationExtension, unavailable) public class SPPermissionsDialogController: UIViewController, SPPermissionsControllerInterface { /** @@ -305,7 +305,7 @@ public class SPPermissionsDialogController: UIViewController, SPPermissionsContr } // MARK: - Table Data Source & Delegate - +@available(iOSApplicationExtension, unavailable) extension SPPermissionsDialogController: UITableViewDataSource, UITableViewDelegate { public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { diff --git a/Sources/SPPermissions/Interface/Dialog Style/SPPermissionsDialogView.swift b/Sources/SPPermissions/Interface/Dialog Style/SPPermissionsDialogView.swift index bba10264..3963a2ba 100644 --- a/Sources/SPPermissions/Interface/Dialog Style/SPPermissionsDialogView.swift +++ b/Sources/SPPermissions/Interface/Dialog Style/SPPermissionsDialogView.swift @@ -109,7 +109,7 @@ class SPPermissionsDialogView: UIView { // RTL - if UIApplication.shared.userInterfaceRightToLeft { + if effectiveUserInterfaceLayoutDirection == .rightToLeft { closeButton.frame.origin.x = inset / 2.5 } } diff --git a/Sources/SPPermissions/Interface/List Style/SPPermissionsList.swift b/Sources/SPPermissions/Interface/List Style/SPPermissionsList.swift index 36832063..657d9de8 100644 --- a/Sources/SPPermissions/Interface/List Style/SPPermissionsList.swift +++ b/Sources/SPPermissions/Interface/List Style/SPPermissionsList.swift @@ -24,6 +24,7 @@ import SwiftUI @available(iOS 13.0, *) +@available(iOSApplicationExtension, unavailable) public struct SPPermissionsList: UIViewControllerRepresentable { private weak var dataSource: SPPermissionsDataSource? diff --git a/Sources/SPPermissions/Interface/List Style/SPPermissionsListController.swift b/Sources/SPPermissions/Interface/List Style/SPPermissionsListController.swift index 2c9cf7ce..71dd8e2e 100644 --- a/Sources/SPPermissions/Interface/List Style/SPPermissionsListController.swift +++ b/Sources/SPPermissions/Interface/List Style/SPPermissionsListController.swift @@ -22,7 +22,7 @@ #if os(iOS) import UIKit - +@available(iOSApplicationExtension, unavailable) public class SPPermissionsListController: UITableViewController, SPPermissionsControllerInterface { /** @@ -199,7 +199,7 @@ public class SPPermissionsListController: UITableViewController, SPPermissionsCo } // MARK: - Table Data Source & Delegate - +@available(iOSApplicationExtension, unavailable) extension SPPermissionsListController { public override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { @@ -230,7 +230,7 @@ extension SPPermissionsListController { } // MARK: - UIAdaptivePresentationControllerDelegate - +@available(iOSApplicationExtension, unavailable) extension SPPermissionsListController: UIAdaptivePresentationControllerDelegate { public func presentationControllerShouldDismiss(_ presentationController: UIPresentationController) -> Bool { diff --git a/Sources/SPPermissions/Interface/Native Style/SPPermissionsNativeController.swift b/Sources/SPPermissions/Interface/Native Style/SPPermissionsNativeController.swift index 2461a180..2beec077 100644 --- a/Sources/SPPermissions/Interface/Native Style/SPPermissionsNativeController.swift +++ b/Sources/SPPermissions/Interface/Native Style/SPPermissionsNativeController.swift @@ -20,7 +20,7 @@ // SOFTWARE. import UIKit - +@available(iOSApplicationExtension, unavailable) public class SPPermissionsNativeController: NSObject, SPPermissionsControllerInterface { public weak var delegate: SPPermissionsDelegate? diff --git a/Sources/SPPermissions/Interface/Shared/SPPermissionsActionButton.swift b/Sources/SPPermissions/Interface/Shared/SPPermissionsActionButton.swift index 567d79e7..95d448ee 100644 --- a/Sources/SPPermissions/Interface/Shared/SPPermissionsActionButton.swift +++ b/Sources/SPPermissions/Interface/Shared/SPPermissionsActionButton.swift @@ -22,7 +22,7 @@ import UIKit #if os(iOS) - +@available(iOSApplicationExtension, unavailable) public class SPPermissionsActionButton: UIButton { var permission: SPPermissions.Permission? diff --git a/Sources/SPPermissions/Interface/Shared/SPPermissionsDrawIconView.swift b/Sources/SPPermissions/Interface/Shared/SPPermissionsDrawIconView.swift index d35b9773..9b9c9300 100644 --- a/Sources/SPPermissions/Interface/Shared/SPPermissionsDrawIconView.swift +++ b/Sources/SPPermissions/Interface/Shared/SPPermissionsDrawIconView.swift @@ -22,7 +22,7 @@ import UIKit #if os(iOS) - +@available(iOSApplicationExtension, unavailable) public class SPPermissionsDrawIconView: UIView { var permission: SPPermissions.Permission? { diff --git a/Sources/SPPermissions/Interface/Shared/SPPermissionsPermissionIconView.swift b/Sources/SPPermissions/Interface/Shared/SPPermissionsPermissionIconView.swift index cb7e7450..74df3539 100644 --- a/Sources/SPPermissions/Interface/Shared/SPPermissionsPermissionIconView.swift +++ b/Sources/SPPermissions/Interface/Shared/SPPermissionsPermissionIconView.swift @@ -20,7 +20,7 @@ // SOFTWARE. import UIKit - +@available(iOSApplicationExtension, unavailable) public class SPPermissionsPermissionIconView: UIView { // MARK: - Views diff --git a/Sources/SPPermissions/Interface/Shared/SPPermissionsTableViewCell.swift b/Sources/SPPermissions/Interface/Shared/SPPermissionsTableViewCell.swift index 569dc805..4ab9db0b 100644 --- a/Sources/SPPermissions/Interface/Shared/SPPermissionsTableViewCell.swift +++ b/Sources/SPPermissions/Interface/Shared/SPPermissionsTableViewCell.swift @@ -22,7 +22,7 @@ import UIKit #if os(iOS) - +@available(iOSApplicationExtension, unavailable) public class SPPermissionsTableViewCell: UITableViewCell { public let permissionTitleLabel = UILabel() @@ -81,7 +81,7 @@ public class SPPermissionsTableViewCell: UITableViewCell { // Icons permissionIconView.frame = .init(x: contentView.layoutMargins.left - 2, y: contentView.layoutMargins.top, width: 36, height: 36) - + // Button permissionButton.sizeToFit() @@ -104,7 +104,7 @@ public class SPPermissionsTableViewCell: UITableViewCell { // RTL - if UIApplication.shared.userInterfaceRightToLeft { + if effectiveUserInterfaceLayoutDirection == .rightToLeft { permissionIconView.frame.origin.x = contentView.frame.width - contentView.layoutMargins.right - permissionIconView.frame.width permissionButton.frame.origin.x = contentView.layoutMargins.right permissionTitleLabel.frame.origin.x = permissionIconView.frame.origin.x - leftContentLeadingSpace - permissionTitleLabel.frame.width diff --git a/Sources/SPPermissions/Protocols/SPPermissionsControllerInterface.swift b/Sources/SPPermissions/Protocols/SPPermissionsControllerInterface.swift index b278d504..3a42e8e9 100644 --- a/Sources/SPPermissions/Protocols/SPPermissionsControllerInterface.swift +++ b/Sources/SPPermissions/Protocols/SPPermissionsControllerInterface.swift @@ -24,6 +24,7 @@ import UIKit /** SPPermissions: Protocol using for implement all same properties for each interface style. */ +@available(iOSApplicationExtension, unavailable) protocol SPPermissionsControllerInterface { /** diff --git a/Sources/SPPermissions/Protocols/SPPermissionsDataSource.swift b/Sources/SPPermissions/Protocols/SPPermissionsDataSource.swift index 85186fb3..9d0dd725 100644 --- a/Sources/SPPermissions/Protocols/SPPermissionsDataSource.swift +++ b/Sources/SPPermissions/Protocols/SPPermissionsDataSource.swift @@ -24,6 +24,7 @@ import UIKit /** SPPermissions: Protocol using for configure permission cell and alert texts. */ +@available(iOSApplicationExtension, unavailable) public protocol SPPermissionsDataSource: AnyObject { #if os(iOS) @@ -46,7 +47,7 @@ public protocol SPPermissionsDataSource: AnyObject { } // Using like default for allow it like optional. - +@available(iOSApplicationExtension, unavailable) public extension SPPermissionsDataSource { #if os(iOS) diff --git a/Sources/SPPermissions/Protocols/SPPermissionsDelegate.swift b/Sources/SPPermissions/Protocols/SPPermissionsDelegate.swift index 4547f898..d9dfb3f0 100644 --- a/Sources/SPPermissions/Protocols/SPPermissionsDelegate.swift +++ b/Sources/SPPermissions/Protocols/SPPermissionsDelegate.swift @@ -24,6 +24,7 @@ import UIKit /** SPPermissions: Get notifications about events. */ +@available(iOSApplicationExtension, unavailable) public protocol SPPermissionsDelegate: AnyObject { /** @@ -49,7 +50,7 @@ public protocol SPPermissionsDelegate: AnyObject { } // Using like default for allow it like optional. - +@available(iOSApplicationExtension, unavailable) public extension SPPermissionsDelegate { func didAllowPermission(_ permission: SPPermissions.Permission) {} diff --git a/Sources/SPPermissions/SPPermissions.swift b/Sources/SPPermissions/SPPermissions.swift index ce1e5798..35085955 100644 --- a/Sources/SPPermissions/SPPermissions.swift +++ b/Sources/SPPermissions/SPPermissions.swift @@ -33,6 +33,7 @@ public enum SPPermissions { - parameter permissions: List if permissions for request, using model `SPPermissions.Permission`. */ + @available(iOSApplicationExtension, unavailable) public static func native(_ permissions: [SPPermissions.Permission]) -> SPPermissionsNativeController { let controller = SPPermissionsNativeController(prepare(permissions)) return controller @@ -45,6 +46,7 @@ public enum SPPermissions { - parameter permissions: List if permissions for request, using model `SPPermissions.Permission`. */ + @available(iOSApplicationExtension, unavailable) public static func list(_ permissions: [SPPermissions.Permission]) -> SPPermissionsListController { let controller = SPPermissionsListController(prepare(permissions)) return controller @@ -55,6 +57,7 @@ public enum SPPermissions { - parameter permissions: List if permissions for request, using model `SPPermissions.Permission`. */ + @available(iOSApplicationExtension, unavailable) public static func dialog(_ permissions: [SPPermissions.Permission]) -> SPPermissionsDialogController { let controller = SPPermissionsDialogController(prepare(permissions)) return controller diff --git a/Sources/SPPermissions/Services/OpenService.swift b/Sources/SPPermissions/Services/OpenService.swift index cd990237..7e2c0814 100644 --- a/Sources/SPPermissions/Services/OpenService.swift +++ b/Sources/SPPermissions/Services/OpenService.swift @@ -23,6 +23,7 @@ import UIKit enum OpenService { + @available(iOSApplicationExtension, unavailable) static func openSettings() { DispatchQueue.main.async { diff --git a/Sources/SPPermissions/Services/Presenter.swift b/Sources/SPPermissions/Services/Presenter.swift index 4acd139f..49e74ecc 100644 --- a/Sources/SPPermissions/Services/Presenter.swift +++ b/Sources/SPPermissions/Services/Presenter.swift @@ -23,6 +23,7 @@ import UIKit enum Presenter { + @available(iOSApplicationExtension, unavailable) static func presentAlertAboutDeniedPermission(_ permission: SPPermissions.Permission, dataSource: SPPermissionsDataSource?, on controller: UIViewController) { let data = dataSource?.deniedAlertTexts(for: permission)