diff --git a/Gemfile b/Gemfile index 911f61d3c2..0057dd43c0 100644 --- a/Gemfile +++ b/Gemfile @@ -1,8 +1,8 @@ source "https://rubygems.org" ruby "3.2.1" -gem "fastlane", "2.220.0" -gem "cocoapods", "1.16.0" +gem "fastlane", "2.225.0" +gem "cocoapods", "1.16.1" gem "generamba", git: "https://github.com/ivan-magda/Generamba.git", branch: "develop" eval_gemfile("fastlane/Pluginfile") \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock index 582254dc0d..4092fe1238 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -56,10 +56,10 @@ GEM base64 (0.2.0) bigdecimal (3.1.8) claide (1.1.0) - cocoapods (1.16.0) + cocoapods (1.16.1) addressable (~> 2.8) claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.16.0) + cocoapods-core (= 1.16.1) cocoapods-deintegrate (>= 1.0.3, < 2.0) cocoapods-downloader (>= 2.1, < 3.0) cocoapods-plugins (>= 1.0.0, < 2.0) @@ -74,7 +74,7 @@ GEM nap (~> 1.0) ruby-macho (>= 2.3.0, < 3.0) xcodeproj (>= 1.26.0, < 2.0) - cocoapods-core (1.16.0) + cocoapods-core (1.16.1) activesupport (>= 5.0, < 8) addressable (~> 2.8) algoliasearch (~> 1.0) @@ -139,7 +139,7 @@ GEM faraday_middleware (1.2.1) faraday (~> 1.0) fastimage (2.3.1) - fastlane (2.220.0) + fastlane (2.225.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -155,6 +155,7 @@ GEM faraday-cookie_jar (~> 0.0.6) faraday_middleware (~> 1.0) fastimage (>= 2.1.0, < 3.0.0) + fastlane-sirp (>= 1.0.0) gh_inspector (>= 1.1.2, < 2.0.0) google-apis-androidpublisher_v3 (~> 0.3) google-apis-playcustomapp_v1 (~> 0.1) @@ -183,7 +184,10 @@ GEM fastlane-plugin-firebase_app_distribution (0.9.1) google-apis-firebaseappdistribution_v1 (~> 0.3.0) google-apis-firebaseappdistribution_v1alpha (~> 0.2.0) + fastlane-sirp (1.0.0) + sysrandom (~> 1.0) ffi (1.17.0-arm64-darwin) + ffi (1.17.0-x86_64-linux-gnu) fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) @@ -194,10 +198,9 @@ GEM google-apis-core (>= 0.11.0, < 2.a) google-apis-core (0.11.3) addressable (~> 2.5, >= 2.5.1) - googleauth (~> 1.9) - httpclient (>= 2.8.3, < 3.a) + googleauth (>= 0.16.2, < 2.a) + httpclient (>= 2.8.1, < 3.a) mini_mime (~> 1.0) - mutex_m representable (~> 3.0) retriable (>= 2.0, < 4.a) rexml @@ -223,7 +226,7 @@ GEM google-apis-iamcredentials_v1 (~> 0.1) google-apis-storage_v1 (~> 0.31.0) google-cloud-core (~> 1.6) - googleauth (~> 1.9) + googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) googleauth (1.8.1) faraday (>= 0.17.3, < 3.a) @@ -280,6 +283,7 @@ GEM simctl (1.6.10) CFPropertyList naturally + sysrandom (1.0.5) terminal-notifier (2.0.0) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) @@ -310,10 +314,11 @@ GEM PLATFORMS arm64-darwin-22 + x86_64-linux DEPENDENCIES - cocoapods (= 1.16.0) - fastlane (= 2.220.0) + cocoapods (= 1.16.1) + fastlane (= 2.225.0) fastlane-plugin-firebase_app_distribution generamba! @@ -321,4 +326,4 @@ RUBY VERSION ruby 3.2.1p31 BUNDLED WITH - 2.4.10 + 2.5.22 diff --git a/Podfile b/Podfile index 75e6a5dc94..9bbc833ca1 100644 --- a/Podfile +++ b/Podfile @@ -15,14 +15,14 @@ project "Stepic", def shared_pods pod "StepikModel", path: "./StepikModel" - pod "Alamofire", "5.4.4" + pod "Alamofire", "5.10.1" pod "Atributika", "4.10.1" - pod "SwiftyJSON", "5.0.0" - pod "SDWebImage", "5.12.1" - pod "SVGKit", :git => "https://github.com/SVGKit/SVGKit.git", :branch => "2.x" - pod "DeviceKit", "4.5.2" - pod "PromiseKit", :git => "https://github.com/mxcl/PromiseKit.git", :tag => "6.16.2" - pod "SwiftLint", "0.45.1" + pod "SwiftyJSON", "5.0.2" + pod "SDWebImage", "5.19.7" + pod "SVGKit", :git => "https://github.com/SVGKit/SVGKit.git", :branch => "3.x" + pod "DeviceKit", "5.5.0" + pod "PromiseKit", "8.0.0" + pod "SwiftLint", "0.57.0" if ENV["FASTLANE_BETA_PROFILE"] == "true" pod "FLEX", @@ -39,21 +39,19 @@ end def all_pods shared_pods - pod "DownloadButton", "0.1.0" - pod "SVProgressHUD", "2.2.5" - - pod "SnapKit", "5.0.1" + pod "SVProgressHUD", "2.3.1" + pod "SnapKit", "5.7.1" # Firebase - pod "Firebase/Core", "10.15.0" - pod "Firebase/Messaging", "10.15.0" - pod "Firebase/Analytics", "10.15.0" - pod "Firebase/Crashlytics", "10.15.0" - pod "Firebase/RemoteConfig", "10.15.0" + pod "Firebase/Core", "10.29.0" + pod "Firebase/Messaging", "10.29.0" + pod "Firebase/Analytics", "10.29.0" + pod "Firebase/Crashlytics", "10.29.0" + pod "Firebase/RemoteConfig", "10.29.0" - pod "YandexMobileMetrica/Dynamic", "3.17.0" - pod "Amplitude", "8.5.0" - pod "Branch", "1.40.2" + pod "AppMetricaCore", "5.8.2" + pod "Amplitude", "8.22.0" + pod "BranchSDK", "3.6.5" pod "BEMCheckBox", "1.4.1" @@ -71,17 +69,17 @@ def all_pods pod "Presentr", :git => "https://github.com/ivan-magda/Presentr.git", :tag => "v1.9.1" pod "PanModal", :git => "https://github.com/ivan-magda/PanModal.git", :branch => "remove-presenting-appearance-transitions" - pod "Agrume", "5.6.13" + pod "Agrume", "5.8.0" pod "Highlightr", :git => "https://github.com/ivan-magda/Highlightr.git", :tag => "v2.1.3" pod "TTTAttributedLabel", "2.0.0" pod "lottie-ios", "3.2.3" pod "Koloda", "5.0.1" - pod "Charts", "4.1.0" + pod "DGCharts", "5.1.0" pod "EasyTipView", "2.1.0" - pod "ActionSheetPicker-3.0", "2.7.1" - pod "Nuke", "9.5.0" + pod "ActionSheetPicker-3.0", "2.7.4" + pod "Nuke", "10.7.1" pod "STRegex", "2.1.1" - pod "Tabman", "2.10.0" + pod "Tabman", "3.2.0" pod "SwiftDate", "6.3.1" end diff --git a/Podfile.lock b/Podfile.lock index a3a77c45b9..aee86855aa 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,100 +1,139 @@ PODS: - - ActionSheetPicker-3.0 (2.7.1) - - Agrume (5.6.13): + - ActionSheetPicker-3.0 (2.7.4) + - Agrume (5.8.0): - SwiftyGif - - Alamofire (5.4.4) - - Amplitude (8.5.0) + - Alamofire (5.10.1) + - Amplitude (8.22.0): + - AnalyticsConnector (~> 1.0.0) + - AnalyticsConnector (1.0.3) - AppAuth (1.7.5): - AppAuth/Core (= 1.7.5) - AppAuth/ExternalUserAgent (= 1.7.5) - AppAuth/Core (1.7.5) - AppAuth/ExternalUserAgent (1.7.5): - AppAuth/Core + - AppMetricaCore (5.8.2): + - AppMetricaCoreUtils (= 5.8.2) + - AppMetricaEncodingUtils (= 5.8.2) + - AppMetricaFMDB (= 5.8.2) + - AppMetricaHostState (= 5.8.2) + - AppMetricaLog (= 5.8.2) + - AppMetricaNetwork (= 5.8.2) + - AppMetricaPlatform (= 5.8.2) + - AppMetricaProtobuf (= 5.8.2) + - AppMetricaProtobufUtils (= 5.8.2) + - AppMetricaStorageUtils (= 5.8.2) + - AppMetricaCoreUtils (5.8.2): + - AppMetricaLog (= 5.8.2) + - AppMetricaEncodingUtils (5.8.2): + - AppMetricaCoreUtils (= 5.8.2) + - AppMetricaLog (= 5.8.2) + - AppMetricaPlatform (= 5.8.2) + - AppMetricaFMDB (5.8.2) + - AppMetricaHostState (5.8.2): + - AppMetricaCoreUtils (= 5.8.2) + - AppMetricaLog (= 5.8.2) + - AppMetricaLog (5.8.2) + - AppMetricaNetwork (5.8.2): + - AppMetricaCoreUtils (= 5.8.2) + - AppMetricaLog (= 5.8.2) + - AppMetricaPlatform (= 5.8.2) + - AppMetricaPlatform (5.8.2): + - AppMetricaCoreUtils (= 5.8.2) + - AppMetricaLog (= 5.8.2) + - AppMetricaProtobuf (5.8.2) + - AppMetricaProtobufUtils (5.8.2): + - AppMetricaProtobuf (= 5.8.2) + - AppMetricaStorageUtils (5.8.2): + - AppMetricaCoreUtils (= 5.8.2) + - AppMetricaLog (= 5.8.2) - Atributika (4.10.1) - BEMCheckBox (1.4.1) - - Branch (1.40.2) - - Charts (4.1.0): - - Charts/Core (= 4.1.0) - - Charts/Core (4.1.0): - - SwiftAlgorithms (~> 1.0) + - BranchSDK (3.6.5) - CocoaLumberjack (3.8.5): - CocoaLumberjack/Core (= 3.8.5) - CocoaLumberjack/Core (3.8.5) - - DeviceKit (4.5.2) - - DownloadButton (0.1.0) + - DeviceKit (5.5.0) + - DGCharts (5.1.0): + - DGCharts/Core (= 5.1.0) + - DGCharts/Core (5.1.0) - EasyTipView (2.1.0) - - Firebase/Analytics (10.15.0): + - Firebase/Analytics (10.29.0): - Firebase/Core - - Firebase/Core (10.15.0): + - Firebase/Core (10.29.0): - Firebase/CoreOnly - - FirebaseAnalytics (~> 10.15.0) - - Firebase/CoreOnly (10.15.0): - - FirebaseCore (= 10.15.0) - - Firebase/Crashlytics (10.15.0): + - FirebaseAnalytics (~> 10.29.0) + - Firebase/CoreOnly (10.29.0): + - FirebaseCore (= 10.29.0) + - Firebase/Crashlytics (10.29.0): - Firebase/CoreOnly - - FirebaseCrashlytics (~> 10.15.0) - - Firebase/Messaging (10.15.0): + - FirebaseCrashlytics (~> 10.29.0) + - Firebase/Messaging (10.29.0): - Firebase/CoreOnly - - FirebaseMessaging (~> 10.15.0) - - Firebase/RemoteConfig (10.15.0): + - FirebaseMessaging (~> 10.29.0) + - Firebase/RemoteConfig (10.29.0): - Firebase/CoreOnly - - FirebaseRemoteConfig (~> 10.15.0) + - FirebaseRemoteConfig (~> 10.29.0) - FirebaseABTesting (10.29.0): - FirebaseCore (~> 10.0) - - FirebaseAnalytics (10.15.0): - - FirebaseAnalytics/AdIdSupport (= 10.15.0) + - FirebaseAnalytics (10.29.0): + - FirebaseAnalytics/AdIdSupport (= 10.29.0) - FirebaseCore (~> 10.0) - FirebaseInstallations (~> 10.0) - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - GoogleUtilities/MethodSwizzler (~> 7.11) - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseAnalytics/AdIdSupport (10.15.0): + - nanopb (< 2.30911.0, >= 2.30908.0) + - FirebaseAnalytics/AdIdSupport (10.29.0): - FirebaseCore (~> 10.0) - FirebaseInstallations (~> 10.0) - - GoogleAppMeasurement (= 10.15.0) + - GoogleAppMeasurement (= 10.29.0) - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - GoogleUtilities/MethodSwizzler (~> 7.11) - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseCore (10.15.0): + - nanopb (< 2.30911.0, >= 2.30908.0) + - FirebaseCore (10.29.0): - FirebaseCoreInternal (~> 10.0) - - GoogleUtilities/Environment (~> 7.8) - - GoogleUtilities/Logger (~> 7.8) + - GoogleUtilities/Environment (~> 7.12) + - GoogleUtilities/Logger (~> 7.12) - FirebaseCoreExtension (10.29.0): - FirebaseCore (~> 10.0) - FirebaseCoreInternal (10.29.0): - "GoogleUtilities/NSData+zlib (~> 7.8)" - - FirebaseCrashlytics (10.15.0): + - FirebaseCrashlytics (10.29.0): - FirebaseCore (~> 10.5) - FirebaseInstallations (~> 10.0) + - FirebaseRemoteConfigInterop (~> 10.23) - FirebaseSessions (~> 10.5) - GoogleDataTransport (~> 9.2) - GoogleUtilities/Environment (~> 7.8) - - nanopb (< 2.30910.0, >= 2.30908.0) + - nanopb (< 2.30911.0, >= 2.30908.0) - PromisesObjC (~> 2.1) - FirebaseInstallations (10.29.0): - FirebaseCore (~> 10.0) - GoogleUtilities/Environment (~> 7.8) - GoogleUtilities/UserDefaults (~> 7.8) - PromisesObjC (~> 2.1) - - FirebaseMessaging (10.15.0): + - FirebaseMessaging (10.29.0): - FirebaseCore (~> 10.0) - FirebaseInstallations (~> 10.0) - - GoogleDataTransport (~> 9.2) + - GoogleDataTransport (~> 9.3) - GoogleUtilities/AppDelegateSwizzler (~> 7.8) - GoogleUtilities/Environment (~> 7.8) - GoogleUtilities/Reachability (~> 7.8) - GoogleUtilities/UserDefaults (~> 7.8) - - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseRemoteConfig (10.15.0): + - nanopb (< 2.30911.0, >= 2.30908.0) + - FirebaseRemoteConfig (10.29.0): - FirebaseABTesting (~> 10.0) - FirebaseCore (~> 10.0) - FirebaseInstallations (~> 10.0) + - FirebaseRemoteConfigInterop (~> 10.23) + - FirebaseSharedSwift (~> 10.0) - GoogleUtilities/Environment (~> 7.8) - "GoogleUtilities/NSData+zlib (~> 7.8)" + - FirebaseRemoteConfigInterop (10.29.0) - FirebaseSessions (10.29.0): - FirebaseCore (~> 10.5) - FirebaseCoreExtension (~> 10.0) @@ -104,27 +143,28 @@ PODS: - GoogleUtilities/UserDefaults (~> 7.13) - nanopb (< 2.30911.0, >= 2.30908.0) - PromisesSwift (~> 2.1) + - FirebaseSharedSwift (10.29.0) - FLEX (4.4.1) - - GoogleAppMeasurement (10.15.0): - - GoogleAppMeasurement/AdIdSupport (= 10.15.0) + - GoogleAppMeasurement (10.29.0): + - GoogleAppMeasurement/AdIdSupport (= 10.29.0) - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - GoogleUtilities/MethodSwizzler (~> 7.11) - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleAppMeasurement/AdIdSupport (10.15.0): - - GoogleAppMeasurement/WithoutAdIdSupport (= 10.15.0) + - nanopb (< 2.30911.0, >= 2.30908.0) + - GoogleAppMeasurement/AdIdSupport (10.29.0): + - GoogleAppMeasurement/WithoutAdIdSupport (= 10.29.0) - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - GoogleUtilities/MethodSwizzler (~> 7.11) - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleAppMeasurement/WithoutAdIdSupport (10.15.0): + - nanopb (< 2.30911.0, >= 2.30908.0) + - GoogleAppMeasurement/WithoutAdIdSupport (10.29.0): - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - GoogleUtilities/MethodSwizzler (~> 7.11) - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - - nanopb (< 2.30910.0, >= 2.30908.0) + - nanopb (< 2.30911.0, >= 2.30908.0) - GoogleDataTransport (9.4.1): - GoogleUtilities/Environment (~> 7.7) - nanopb (< 2.30911.0, >= 2.30908.0) @@ -178,74 +218,69 @@ PODS: - URITemplate (~> 3.0) - Mockingjay/XCTest (3.0.0-alpha.1): - Mockingjay/Core - - nanopb (2.30909.1): - - nanopb/decode (= 2.30909.1) - - nanopb/encode (= 2.30909.1) - - nanopb/decode (2.30909.1) - - nanopb/encode (2.30909.1) + - nanopb (2.30910.0): + - nanopb/decode (= 2.30910.0) + - nanopb/encode (= 2.30910.0) + - nanopb/decode (2.30910.0) + - nanopb/encode (2.30910.0) - Nimble (9.2.1) - - Nuke (9.5.0) - - Pageboy (3.6.2) + - Nuke (10.7.1) + - Pageboy (4.2.0) - PanModal (1.2.7) - pop (1.0.12) - Presentr (1.9) - - PromiseKit (6.16.1): - - PromiseKit/CorePromise (= 6.16.1) - - PromiseKit/Foundation (= 6.16.1) - - PromiseKit/UIKit (= 6.16.1) - - PromiseKit/CorePromise (6.16.1) - - PromiseKit/Foundation (6.16.1): + - PromiseKit (8.0.0): + - PromiseKit/CorePromise (= 8.0.0) + - PromiseKit/Foundation (= 8.0.0) + - PromiseKit/UIKit (= 8.0.0) + - PromiseKit/CorePromise (8.0.0) + - PromiseKit/Foundation (8.0.0): - PromiseKit/CorePromise - - PromiseKit/UIKit (6.16.1): + - PromiseKit/UIKit (8.0.0): - PromiseKit/CorePromise - PromisesObjC (2.4.0) - PromisesSwift (2.4.0): - PromisesObjC (= 2.4.0) - Quick (4.0.0) - - SDWebImage (5.12.1): - - SDWebImage/Core (= 5.12.1) - - SDWebImage/Core (5.12.1) - - SnapKit (5.0.1) + - SDWebImage (5.19.7): + - SDWebImage/Core (= 5.19.7) + - SDWebImage/Core (5.19.7) + - SnapKit (5.7.1) - StepikModel (0.0.1) - STRegex (2.1.1) - - SVGKit (2.1.0): + - SVGKit (3.1.1): - CocoaLumberjack (~> 3.0) - - SVProgressHUD (2.2.5) - - SwiftAlgorithms (1.0.0) + - SVProgressHUD (2.3.1): + - SVProgressHUD/Core (= 2.3.1) + - SVProgressHUD/Core (2.3.1) - SwiftDate (6.3.1) - - SwiftLint (0.45.1) + - SwiftLint (0.57.0) - SwiftyGif (5.4.5) - - SwiftyJSON (5.0.0) - - Tabman (2.10.0): - - Pageboy (~> 3.6.0) + - SwiftyJSON (5.0.2) + - Tabman (3.2.0): + - Pageboy (~> 4.2.0) - TTTAttributedLabel (2.0.0) - TUSafariActivity (1.0.4) - URITemplate (3.0.1) - VK-ios-sdk (1.6.2) - - YandexMobileMetrica/Dynamic (3.17.0): - - YandexMobileMetrica/Dynamic/Core (= 3.17.0) - - YandexMobileMetrica/Dynamic/Crashes (= 3.17.0) - - YandexMobileMetrica/Dynamic/Core (3.17.0) - - YandexMobileMetrica/Dynamic/Crashes (3.17.0): - - YandexMobileMetrica/Dynamic/Core DEPENDENCIES: - - ActionSheetPicker-3.0 (= 2.7.1) - - Agrume (= 5.6.13) - - Alamofire (= 5.4.4) - - Amplitude (= 8.5.0) + - ActionSheetPicker-3.0 (= 2.7.4) + - Agrume (= 5.8.0) + - Alamofire (= 5.10.1) + - Amplitude (= 8.22.0) + - AppMetricaCore (= 5.8.2) - Atributika (= 4.10.1) - BEMCheckBox (= 1.4.1) - - Branch (= 1.40.2) - - Charts (= 4.1.0) - - DeviceKit (= 4.5.2) - - DownloadButton (= 0.1.0) + - BranchSDK (= 3.6.5) + - DeviceKit (= 5.5.0) + - DGCharts (= 5.1.0) - EasyTipView (= 2.1.0) - - Firebase/Analytics (= 10.15.0) - - Firebase/Core (= 10.15.0) - - Firebase/Crashlytics (= 10.15.0) - - Firebase/Messaging (= 10.15.0) - - Firebase/RemoteConfig (= 10.15.0) + - Firebase/Analytics (= 10.29.0) + - Firebase/Core (= 10.29.0) + - Firebase/Crashlytics (= 10.29.0) + - Firebase/Messaging (= 10.29.0) + - Firebase/RemoteConfig (= 10.29.0) - FLEX (from `https://github.com/ivan-magda/FLEX.git`, branch `master`) - GoogleSignIn (= 6.1.0) - Highlightr (from `https://github.com/ivan-magda/Highlightr.git`, tag `v2.1.3`) @@ -255,25 +290,24 @@ DEPENDENCIES: - lottie-ios (= 3.2.3) - Mockingjay (from `https://github.com/kylef/Mockingjay.git`, branch `master`) - Nimble (= 9.2.1) - - Nuke (= 9.5.0) + - Nuke (= 10.7.1) - PanModal (from `https://github.com/ivan-magda/PanModal.git`, branch `remove-presenting-appearance-transitions`) - Presentr (from `https://github.com/ivan-magda/Presentr.git`, tag `v1.9.1`) - - PromiseKit (from `https://github.com/mxcl/PromiseKit.git`, tag `6.16.2`) + - PromiseKit (= 8.0.0) - Quick (= 4.0.0) - - SDWebImage (= 5.12.1) - - SnapKit (= 5.0.1) + - SDWebImage (= 5.19.7) + - SnapKit (= 5.7.1) - StepikModel (from `./StepikModel`) - STRegex (= 2.1.1) - - SVGKit (from `https://github.com/SVGKit/SVGKit.git`, branch `2.x`) - - SVProgressHUD (= 2.2.5) + - SVGKit (from `https://github.com/SVGKit/SVGKit.git`, branch `3.x`) + - SVProgressHUD (= 2.3.1) - SwiftDate (= 6.3.1) - - SwiftLint (= 0.45.1) - - SwiftyJSON (= 5.0.0) - - Tabman (= 2.10.0) + - SwiftLint (= 0.57.0) + - SwiftyJSON (= 5.0.2) + - Tabman (= 3.2.0) - TTTAttributedLabel (= 2.0.0) - TUSafariActivity (= 1.0.4) - VK-ios-sdk (= 1.6.2) - - YandexMobileMetrica/Dynamic (= 3.17.0) SPEC REPOS: https://github.com/CocoaPods/Specs.git: @@ -281,14 +315,25 @@ SPEC REPOS: - Agrume - Alamofire - Amplitude + - AnalyticsConnector - AppAuth + - AppMetricaCore + - AppMetricaCoreUtils + - AppMetricaEncodingUtils + - AppMetricaFMDB + - AppMetricaHostState + - AppMetricaLog + - AppMetricaNetwork + - AppMetricaPlatform + - AppMetricaProtobuf + - AppMetricaProtobufUtils + - AppMetricaStorageUtils - Atributika - BEMCheckBox - - Branch - - Charts + - BranchSDK - CocoaLumberjack - DeviceKit - - DownloadButton + - DGCharts - EasyTipView - Firebase - FirebaseABTesting @@ -300,7 +345,9 @@ SPEC REPOS: - FirebaseInstallations - FirebaseMessaging - FirebaseRemoteConfig + - FirebaseRemoteConfigInterop - FirebaseSessions + - FirebaseSharedSwift - GoogleAppMeasurement - GoogleDataTransport - GoogleSignIn @@ -316,6 +363,7 @@ SPEC REPOS: - Nuke - Pageboy - pop + - PromiseKit - PromisesObjC - PromisesSwift - Quick @@ -323,7 +371,6 @@ SPEC REPOS: - SnapKit - STRegex - SVProgressHUD - - SwiftAlgorithms - SwiftDate - SwiftLint - SwiftyGif @@ -333,7 +380,6 @@ SPEC REPOS: - TUSafariActivity - URITemplate - VK-ios-sdk - - YandexMobileMetrica EXTERNAL SOURCES: FLEX: @@ -351,13 +397,10 @@ EXTERNAL SOURCES: Presentr: :git: https://github.com/ivan-magda/Presentr.git :tag: v1.9.1 - PromiseKit: - :git: https://github.com/mxcl/PromiseKit.git - :tag: 6.16.2 StepikModel: :path: "./StepikModel" SVGKit: - :branch: 2.x + :branch: 3.x :git: https://github.com/SVGKit/SVGKit.git CHECKOUT OPTIONS: @@ -376,40 +419,50 @@ CHECKOUT OPTIONS: Presentr: :git: https://github.com/ivan-magda/Presentr.git :tag: v1.9.1 - PromiseKit: - :git: https://github.com/mxcl/PromiseKit.git - :tag: 6.16.2 SVGKit: - :commit: c40671b9a264f8f71831c4e0452736debfae2164 + :commit: 6f75e96948fa72fa5ebc5d1f0bfa761a5614c546 :git: https://github.com/SVGKit/SVGKit.git SPEC CHECKSUMS: - ActionSheetPicker-3.0: 36da254b97a09ff89679ecb8b8510bd3e5bdc773 - Agrume: 21b96a1138abc0f890211bfcb12f8b1e3464b4c1 - Alamofire: f3b09a368f1582ab751b3fff5460276e0d2cf5c9 - Amplitude: ef9ed339ddd33c9183edf63fa4bbaa86cf873321 + ActionSheetPicker-3.0: a380d57270b6b2d321c4add024ba5c466a7f5cfd + Agrume: 0b1a42b5bfbc3aa9f0801f2857d8df1138cf2951 + Alamofire: 840d2a1ad82355b536ec6ba5f97e5bfa54600ca3 + Amplitude: d5c696f6fc1632a0e6672af2f01aa184e0b93194 + AnalyticsConnector: a53214d38ae22734c6266106c0492b37832633a9 AppAuth: 501c04eda8a8d11f179dbe8637b7a91bb7e5d2fa + AppMetricaCore: bf95c826ec74260b8c81cca9fc21efb8aea52a70 + AppMetricaCoreUtils: e272b7ae0d4da73e178cc9d7cf391ce67c713d61 + AppMetricaEncodingUtils: ee11733ecad85bf10d513920ef091bbc0ae5f2c7 + AppMetricaFMDB: 44ffa4aa173513c04af2a1fbf6dfc180f266872a + AppMetricaHostState: c6a10727120cdd4d7eaaabf57f9e562ec9cd6b0f + AppMetricaLog: 49eb3d5ef7d4288a388cc34eaa53cbcd42241b8a + AppMetricaNetwork: f29d5bedc1abb6dff4be1f89422e5403dcda7dee + AppMetricaPlatform: f3423676add2e9a61b6b67f2692f385b62bf87a8 + AppMetricaProtobuf: d895f7478c9e90ac3a50bd2f2ae8bd022205dbd1 + AppMetricaProtobufUtils: 2e4134f486620a27306940347265c824784c906c + AppMetricaStorageUtils: d4b1470acba258fe9a07d9860defdeb93096b89b Atributika: 47e778507cfb3cd2c996278b0285221a62e97d71 BEMCheckBox: 5ba6e37ade3d3657b36caecc35c8b75c6c2b1a4e - Branch: d99436c6f3d5b2529ba948d273e47e732830f207 - Charts: ce0768268078eee0336f122c3c4ca248e4e204c5 + BranchSDK: ef7d89062afb08b20f65d5b1633b215ee77ab77f CocoaLumberjack: 6a459bc897d6d80bd1b8c78482ec7ad05dffc3f0 - DeviceKit: c622fc19f795f3e0b4d75d6d11b26604338cdab3 - DownloadButton: 49a21a89e0d7d1b42d9134f79aaa40e727cd57c3 + DeviceKit: d83e38ca196a4ebf0cc5f37d6f0316a24b794d5b + DGCharts: 1c6daf585b6cfc78807af44ea690d357c410627f EasyTipView: a92b6edc377b81c5ac18e9fd35d5ee78e9409488 - Firebase: 66043bd4579e5b73811f96829c694c7af8d67435 + Firebase: cec914dab6fd7b1bd8ab56ea07ce4e03dd251c2d FirebaseABTesting: d87f56707159bae64e269757a6e963d490f2eebe - FirebaseAnalytics: 47cef43728f81a839cf1306576bdd77ffa2eac7e - FirebaseCore: 2cec518b43635f96afe7ac3a9c513e47558abd2e + FirebaseAnalytics: 23717de130b779aa506e757edb9713d24b6ffeda + FirebaseCore: 30e9c1cbe3d38f5f5e75f48bfcea87d7c358ec16 FirebaseCoreExtension: 705ca5b14bf71d2564a0ddc677df1fc86ffa600f FirebaseCoreInternal: df84dd300b561c27d5571684f389bf60b0a5c934 - FirebaseCrashlytics: a83f26fb922a3fe181eb738fb4dcf0c92bba6455 + FirebaseCrashlytics: 34647b41e18de773717fdd348a22206f2f9bc774 FirebaseInstallations: 913cf60d0400ebd5d6b63a28b290372ab44590dd - FirebaseMessaging: 0c0ae1eb722ef0c07f7801e5ded8dccd1357d6d4 - FirebaseRemoteConfig: 64b6ada098c649304114a817effd7e5f87229b11 + FirebaseMessaging: 7b5d8033e183ab59eb5b852a53201559e976d366 + FirebaseRemoteConfig: 48ef3f243742a8d72422ccfc9f986e19d7de53fd + FirebaseRemoteConfigInterop: 6efda51fb5e2f15b16585197e26eaa09574e8a4d FirebaseSessions: dbd14adac65ce996228652c1fc3a3f576bdf3ecc + FirebaseSharedSwift: 20530f495084b8d840f78a100d8c5ee613375f6e FLEX: 75ca95cff4bd57592c6e75adee7651ace29f9c25 - GoogleAppMeasurement: 722db6550d1e6d552b08398b69a975ac61039338 + GoogleAppMeasurement: f9de05ee17401e3355f68e8fc8b5064d429f5918 GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a GoogleSignIn: c90b5bec45e780f54c6a8e1e3c182a86e3dda69d GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15 @@ -421,35 +474,33 @@ SPEC CHECKSUMS: Koloda: d07b9199a383abc5898b62aa945a599f5e7c0c4b lottie-ios: c058aeafa76daa4cf64d773554bccc8385d0150e Mockingjay: 97656c6f59879923976a0a52ef09da45756cca82 - nanopb: d4d75c12cd1316f4a64e3c6963f879ecd4b5e0d5 + nanopb: 438bc412db1928dac798aa6fd75726007be04262 Nimble: e7e615c0335ee4bf5b0d786685451e62746117d5 - Nuke: 6f400a4ea957e09149ec335a3c6acdcc814d89e4 - Pageboy: cf121b9dd48c63f3f281b2a9ec93d02e0f23879b + Nuke: 279f17a599fd1c83cf51de5e0e1f2db143a287b0 + Pageboy: 7f7886f61c76633df635861bf7839caf2cabdb3e PanModal: 3e16ead1a907fb06f4df3f13492fd00149fa4974 pop: d582054913807fd11fd50bfe6a539d91c7e1a55a Presentr: 931d50e158060ea88fbf8f3dd202b17e0bb53eb0 - PromiseKit: d4b7fa52340b2bf1423ddb39b5edbc4642d1b13a + PromiseKit: 7039707ba8764b6ce98501debce2489561b038a5 PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851 Quick: 6473349e43b9271a8d43839d9ba1c442ed1b7ac4 - SDWebImage: 4dc3e42d9ec0c1028b960a33ac6b637bb432207b - SnapKit: 97b92857e3df3a0c71833cce143274bf6ef8e5eb + SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3 + SnapKit: d612e99e678a2d3b95bf60b0705ed0a35c03484a StepikModel: 7bf35e3dcd1687b5b7cf4f49838e1e74776a593c STRegex: d49e88d0fe58538d3175fdd989bc1243b9be2a07 - SVGKit: 8a2fc74258bdb2abb54d3b65f3dd68b0277a9c4d - SVProgressHUD: 1428aafac632c1f86f62aa4243ec12008d7a51d6 - SwiftAlgorithms: 38dda4731d19027fdeee1125f973111bf3386b53 + SVGKit: 3f02ad9c8227831e508e2e37ecc4005d2f0496a5 + SVProgressHUD: 4837c74bdfe2e51e8821c397825996a8d7de6e22 SwiftDate: 72d28954e8e1c6c1c0f917ccc8005e4f83c7d4b2 - SwiftLint: 06ac37e4d38c7068e0935bb30cda95f093bec761 + SwiftLint: eb47480d47c982481592c195c221d11013a679cc SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 - SwiftyJSON: 36413e04c44ee145039d332b4f4e2d3e8d6c4db7 - Tabman: d8d6ab0b483c7db375a71ac227d3ef791b56a049 + SwiftyJSON: f5b1bf1cd8dd53cd25887ac0eabcfd92301c6a5a + Tabman: 49f9181a2bfe5c29d002864dac2de8e0b7ea9180 TTTAttributedLabel: 8cffe8e127e4e82ff3af1e5386d4cd0ad000b656 TUSafariActivity: afc55a00965377939107ce4fdc7f951f62454546 URITemplate: 5f5a79f3e384884102c4e6b3325d159c20a8035a VK-ios-sdk: 5bcf00a2014a7323f98db9328b603d4f96635caa - YandexMobileMetrica: 9e713c16bb6aca0ba63b84c8d7b8b86d32f4ecc4 -PODFILE CHECKSUM: 32ae5ca74085f0729c6725e8dc77732580571c83 +PODFILE CHECKSUM: d03640469d149734e912909db96c9be5974aa6f8 -COCOAPODS: 1.16.0 +COCOAPODS: 1.16.1 diff --git a/Stepic.xcodeproj/project.pbxproj b/Stepic.xcodeproj/project.pbxproj index 687af4acfa..12a73ed434 100644 --- a/Stepic.xcodeproj/project.pbxproj +++ b/Stepic.xcodeproj/project.pbxproj @@ -10562,7 +10562,6 @@ buildConfigurationList = 08DE94301B8C58AC00D278AB /* Build configuration list for PBXNativeTarget "Stepic" */; buildPhases = ( 5753E9371DCCED3A6EA46861 /* [CP] Check Pods Manifest.lock */, - 08983F241F3E4112008199B1 /* SwiftLint Script */, 08DE940F1B8C58AC00D278AB /* Resources */, 08DE940D1B8C58AC00D278AB /* Sources */, 08DE940E1B8C58AC00D278AB /* Frameworks */, @@ -10630,20 +10629,20 @@ TargetAttributes = { 085D5CD81D007F2100092060 = { CreatedOnToolsVersion = 7.3; - DevelopmentTeam = UJ4KC2QN7B; + DevelopmentTeam = F2X3HLX8GN; LastSwiftMigration = 1130; ProvisioningStyle = Automatic; TestTargetID = 08DE94101B8C58AC00D278AB; }; 086538341EB02715003A8415 = { CreatedOnToolsVersion = 8.3.2; - DevelopmentTeam = UJ4KC2QN7B; + DevelopmentTeam = F2X3HLX8GN; LastSwiftMigration = 0920; ProvisioningStyle = Automatic; }; 08DE94101B8C58AC00D278AB = { CreatedOnToolsVersion = 6.4; - DevelopmentTeam = UJ4KC2QN7B; + DevelopmentTeam = F2X3HLX8GN; LastSwiftMigration = 1130; ProvisioningStyle = Automatic; SystemCapabilities = { @@ -10669,12 +10668,12 @@ }; 2CF6E62425ADB92A00B5A703 = { CreatedOnToolsVersion = 12.3; - DevelopmentTeam = UJ4KC2QN7B; + DevelopmentTeam = F2X3HLX8GN; ProvisioningStyle = Automatic; }; 8489EE7325FAF13A004A85C5 = { CreatedOnToolsVersion = 12.4; - DevelopmentTeam = UJ4KC2QN7B; + DevelopmentTeam = F2X3HLX8GN; ProvisioningStyle = Automatic; TestTargetID = 08DE94101B8C58AC00D278AB; }; @@ -10906,20 +10905,6 @@ shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/FirebaseCrashlytics/run\"\n"; }; - 08983F241F3E4112008199B1 /* SwiftLint Script */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "SwiftLint Script"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "${SRCROOT}/lint.sh ${TARGET_NAME}\n"; - }; 2C47A16C206297D0003E87EC /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 8; @@ -10984,14 +10969,25 @@ "${BUILT_PRODUCTS_DIR}/Agrume/Agrume.framework", "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework", "${BUILT_PRODUCTS_DIR}/Amplitude/Amplitude.framework", + "${BUILT_PRODUCTS_DIR}/AnalyticsConnector/AnalyticsConnector.framework", "${BUILT_PRODUCTS_DIR}/AppAuth/AppAuth.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaCore/AppMetricaCore.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaCoreUtils/AppMetricaCoreUtils.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaEncodingUtils/AppMetricaEncodingUtils.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaFMDB/AppMetricaFMDB.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaHostState/AppMetricaHostState.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaLog/AppMetricaLog.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaNetwork/AppMetricaNetwork.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaPlatform/AppMetricaPlatform.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaProtobuf/AppMetricaProtobuf.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaProtobufUtils/AppMetricaProtobufUtils.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaStorageUtils/AppMetricaStorageUtils.framework", "${BUILT_PRODUCTS_DIR}/Atributika/Atributika.framework", "${BUILT_PRODUCTS_DIR}/BEMCheckBox/BEMCheckBox.framework", - "${BUILT_PRODUCTS_DIR}/Branch/Branch.framework", - "${BUILT_PRODUCTS_DIR}/Charts/Charts.framework", + "${BUILT_PRODUCTS_DIR}/BranchSDK/BranchSDK.framework", "${BUILT_PRODUCTS_DIR}/CocoaLumberjack/CocoaLumberjack.framework", + "${BUILT_PRODUCTS_DIR}/DGCharts/DGCharts.framework", "${BUILT_PRODUCTS_DIR}/DeviceKit/DeviceKit.framework", - "${BUILT_PRODUCTS_DIR}/DownloadButton/DownloadButton.framework", "${BUILT_PRODUCTS_DIR}/EasyTipView/EasyTipView.framework", "${BUILT_PRODUCTS_DIR}/FLEX/FLEX.framework", "${BUILT_PRODUCTS_DIR}/FirebaseABTesting/FirebaseABTesting.framework", @@ -11002,7 +10998,9 @@ "${BUILT_PRODUCTS_DIR}/FirebaseInstallations/FirebaseInstallations.framework", "${BUILT_PRODUCTS_DIR}/FirebaseMessaging/FirebaseMessaging.framework", "${BUILT_PRODUCTS_DIR}/FirebaseRemoteConfig/FirebaseRemoteConfig.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseRemoteConfigInterop/FirebaseRemoteConfigInterop.framework", "${BUILT_PRODUCTS_DIR}/FirebaseSessions/FirebaseSessions.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseSharedSwift/FirebaseSharedSwift.framework", "${BUILT_PRODUCTS_DIR}/GTMAppAuth/GTMAppAuth.framework", "${BUILT_PRODUCTS_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework", "${BUILT_PRODUCTS_DIR}/GoogleDataTransport/GoogleDataTransport.framework", @@ -11025,7 +11023,6 @@ "${BUILT_PRODUCTS_DIR}/SVProgressHUD/SVProgressHUD.framework", "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework", "${BUILT_PRODUCTS_DIR}/StepikModel/StepikModel.framework", - "${BUILT_PRODUCTS_DIR}/SwiftAlgorithms/Algorithms.framework", "${BUILT_PRODUCTS_DIR}/SwiftDate/SwiftDate.framework", "${BUILT_PRODUCTS_DIR}/SwiftyGif/SwiftyGif.framework", "${BUILT_PRODUCTS_DIR}/SwiftyJSON/SwiftyJSON.framework", @@ -11040,8 +11037,6 @@ "${BUILT_PRODUCTS_DIR}/Nimble/Nimble.framework", "${BUILT_PRODUCTS_DIR}/Quick/Quick.framework", "${BUILT_PRODUCTS_DIR}/URITemplate/URITemplate.framework", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/YandexMobileMetrica/Dynamic/Core/YandexMobileMetrica.framework/YandexMobileMetrica", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/YandexMobileMetrica/Dynamic/Crashes/YandexMobileMetricaCrashes.framework/YandexMobileMetricaCrashes", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( @@ -11049,14 +11044,25 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Agrume.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Amplitude.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AnalyticsConnector.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppAuth.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaCore.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaCoreUtils.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaEncodingUtils.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaFMDB.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaHostState.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaLog.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaNetwork.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaPlatform.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaProtobuf.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaProtobufUtils.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaStorageUtils.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Atributika.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BEMCheckBox.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Branch.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Charts.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BranchSDK.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CocoaLumberjack.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DGCharts.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DeviceKit.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DownloadButton.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/EasyTipView.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FLEX.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseABTesting.framework", @@ -11067,7 +11073,9 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseInstallations.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseMessaging.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseRemoteConfig.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseRemoteConfigInterop.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseSessions.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseSharedSwift.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GTMAppAuth.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GTMSessionFetcher.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleDataTransport.framework", @@ -11090,7 +11098,6 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SVProgressHUD.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/StepikModel.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Algorithms.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftDate.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyGif.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyJSON.framework", @@ -11105,8 +11112,6 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Nimble.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Quick.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/URITemplate.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YandexMobileMetrica.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YandexMobileMetricaCrashes.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -11124,14 +11129,25 @@ "${BUILT_PRODUCTS_DIR}/Agrume/Agrume.framework", "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework", "${BUILT_PRODUCTS_DIR}/Amplitude/Amplitude.framework", + "${BUILT_PRODUCTS_DIR}/AnalyticsConnector/AnalyticsConnector.framework", "${BUILT_PRODUCTS_DIR}/AppAuth/AppAuth.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaCore/AppMetricaCore.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaCoreUtils/AppMetricaCoreUtils.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaEncodingUtils/AppMetricaEncodingUtils.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaFMDB/AppMetricaFMDB.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaHostState/AppMetricaHostState.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaLog/AppMetricaLog.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaNetwork/AppMetricaNetwork.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaPlatform/AppMetricaPlatform.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaProtobuf/AppMetricaProtobuf.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaProtobufUtils/AppMetricaProtobufUtils.framework", + "${BUILT_PRODUCTS_DIR}/AppMetricaStorageUtils/AppMetricaStorageUtils.framework", "${BUILT_PRODUCTS_DIR}/Atributika/Atributika.framework", "${BUILT_PRODUCTS_DIR}/BEMCheckBox/BEMCheckBox.framework", - "${BUILT_PRODUCTS_DIR}/Branch/Branch.framework", - "${BUILT_PRODUCTS_DIR}/Charts/Charts.framework", + "${BUILT_PRODUCTS_DIR}/BranchSDK/BranchSDK.framework", "${BUILT_PRODUCTS_DIR}/CocoaLumberjack/CocoaLumberjack.framework", + "${BUILT_PRODUCTS_DIR}/DGCharts/DGCharts.framework", "${BUILT_PRODUCTS_DIR}/DeviceKit/DeviceKit.framework", - "${BUILT_PRODUCTS_DIR}/DownloadButton/DownloadButton.framework", "${BUILT_PRODUCTS_DIR}/EasyTipView/EasyTipView.framework", "${BUILT_PRODUCTS_DIR}/FLEX/FLEX.framework", "${BUILT_PRODUCTS_DIR}/FirebaseABTesting/FirebaseABTesting.framework", @@ -11142,7 +11158,9 @@ "${BUILT_PRODUCTS_DIR}/FirebaseInstallations/FirebaseInstallations.framework", "${BUILT_PRODUCTS_DIR}/FirebaseMessaging/FirebaseMessaging.framework", "${BUILT_PRODUCTS_DIR}/FirebaseRemoteConfig/FirebaseRemoteConfig.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseRemoteConfigInterop/FirebaseRemoteConfigInterop.framework", "${BUILT_PRODUCTS_DIR}/FirebaseSessions/FirebaseSessions.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseSharedSwift/FirebaseSharedSwift.framework", "${BUILT_PRODUCTS_DIR}/GTMAppAuth/GTMAppAuth.framework", "${BUILT_PRODUCTS_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework", "${BUILT_PRODUCTS_DIR}/GoogleDataTransport/GoogleDataTransport.framework", @@ -11165,7 +11183,6 @@ "${BUILT_PRODUCTS_DIR}/SVProgressHUD/SVProgressHUD.framework", "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework", "${BUILT_PRODUCTS_DIR}/StepikModel/StepikModel.framework", - "${BUILT_PRODUCTS_DIR}/SwiftAlgorithms/Algorithms.framework", "${BUILT_PRODUCTS_DIR}/SwiftDate/SwiftDate.framework", "${BUILT_PRODUCTS_DIR}/SwiftyGif/SwiftyGif.framework", "${BUILT_PRODUCTS_DIR}/SwiftyJSON/SwiftyJSON.framework", @@ -11176,8 +11193,6 @@ "${BUILT_PRODUCTS_DIR}/lottie-ios/Lottie.framework", "${BUILT_PRODUCTS_DIR}/nanopb/nanopb.framework", "${BUILT_PRODUCTS_DIR}/pop/pop.framework", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/YandexMobileMetrica/Dynamic/Core/YandexMobileMetrica.framework/YandexMobileMetrica", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/YandexMobileMetrica/Dynamic/Crashes/YandexMobileMetricaCrashes.framework/YandexMobileMetricaCrashes", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( @@ -11185,14 +11200,25 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Agrume.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Amplitude.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AnalyticsConnector.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppAuth.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaCore.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaCoreUtils.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaEncodingUtils.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaFMDB.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaHostState.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaLog.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaNetwork.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaPlatform.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaProtobuf.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaProtobufUtils.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppMetricaStorageUtils.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Atributika.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BEMCheckBox.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Branch.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Charts.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BranchSDK.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CocoaLumberjack.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DGCharts.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DeviceKit.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DownloadButton.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/EasyTipView.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FLEX.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseABTesting.framework", @@ -11203,7 +11229,9 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseInstallations.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseMessaging.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseRemoteConfig.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseRemoteConfigInterop.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseSessions.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseSharedSwift.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GTMAppAuth.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GTMSessionFetcher.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleDataTransport.framework", @@ -11226,7 +11254,6 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SVProgressHUD.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/StepikModel.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Algorithms.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftDate.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyGif.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyJSON.framework", @@ -11237,8 +11264,6 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Lottie.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/nanopb.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/pop.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YandexMobileMetrica.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YandexMobileMetricaCrashes.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -13266,7 +13291,7 @@ "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; INFOPLIST_FILE = "StepicTests/Info-Production.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -13288,7 +13313,7 @@ CLANG_ANALYZER_NONNULL = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; INFOPLIST_FILE = "StepicTests/Info-Production.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -13310,9 +13335,9 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 437; + CURRENT_PROJECT_VERSION = 441; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; INFOPLIST_FILE = "StickerPackExtension/Info-Production.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = com.AlexKarpov.Stepic.StickerPackExtension; @@ -13335,8 +13360,8 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 437; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + CURRENT_PROJECT_VERSION = 441; + DEVELOPMENT_TEAM = F2X3HLX8GN; INFOPLIST_FILE = "StickerPackExtension/Info-Production.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = com.AlexKarpov.Stepic.StickerPackExtension; @@ -13477,8 +13502,8 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 437; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + CURRENT_PROJECT_VERSION = 441; + DEVELOPMENT_TEAM = F2X3HLX8GN; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Stepic/Info-Production.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; @@ -13507,8 +13532,8 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 437; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + CURRENT_PROJECT_VERSION = 441; + DEVELOPMENT_TEAM = F2X3HLX8GN; ENABLE_BITCODE = NO; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; INFOPLIST_FILE = "Stepic/Info-Production.plist"; @@ -13598,8 +13623,8 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 437; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + CURRENT_PROJECT_VERSION = 441; + DEVELOPMENT_TEAM = F2X3HLX8GN; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Stepic/Info-Develop.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; @@ -13627,7 +13652,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; INFOPLIST_FILE = "StepicTests/Info-Develop.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -13650,9 +13675,9 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 437; + CURRENT_PROJECT_VERSION = 441; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; INFOPLIST_FILE = "StickerPackExtension/Info-Develop.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = com.AlexKarpov.Stepic.StickerPackExtension; @@ -13731,8 +13756,8 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 437; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + CURRENT_PROJECT_VERSION = 441; + DEVELOPMENT_TEAM = F2X3HLX8GN; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Stepic/Info-Develop.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; @@ -13757,7 +13782,7 @@ CLANG_ANALYZER_NONNULL = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; INFOPLIST_FILE = "StepicTests/Info-Develop.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -13779,8 +13804,8 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 437; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + CURRENT_PROJECT_VERSION = 441; + DEVELOPMENT_TEAM = F2X3HLX8GN; INFOPLIST_FILE = "StickerPackExtension/Info-Develop.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = com.AlexKarpov.Stepic.StickerPackExtension; @@ -13834,7 +13859,7 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -13910,7 +13935,7 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -13982,7 +14007,7 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -14054,7 +14079,7 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -14125,7 +14150,7 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -14196,7 +14221,7 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -14299,8 +14324,8 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 437; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + CURRENT_PROJECT_VERSION = 441; + DEVELOPMENT_TEAM = F2X3HLX8GN; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Stepic/Info-Release.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; @@ -14329,7 +14354,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; INFOPLIST_FILE = "StepicTests/Info-Release.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -14353,9 +14378,9 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 437; + CURRENT_PROJECT_VERSION = 441; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; INFOPLIST_FILE = "StickerPackExtension/Info-Release.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = com.AlexKarpov.Stepic.StickerPackExtension; @@ -14435,8 +14460,8 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 437; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + CURRENT_PROJECT_VERSION = 441; + DEVELOPMENT_TEAM = F2X3HLX8GN; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Stepic/Info-Release.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; @@ -14461,7 +14486,7 @@ CLANG_ANALYZER_NONNULL = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; INFOPLIST_FILE = "StepicTests/Info-Release.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -14483,8 +14508,8 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 437; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + CURRENT_PROJECT_VERSION = 441; + DEVELOPMENT_TEAM = F2X3HLX8GN; INFOPLIST_FILE = "StickerPackExtension/Info-Release.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = com.AlexKarpov.Stepic.StickerPackExtension; @@ -14532,7 +14557,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; @@ -14598,7 +14623,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; ENABLE_NS_ASSERTIONS = YES; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -14661,7 +14686,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; ENABLE_NS_ASSERTIONS = YES; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -14723,7 +14748,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -14784,7 +14809,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -14845,7 +14870,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; - DEVELOPMENT_TEAM = UJ4KC2QN7B; + DEVELOPMENT_TEAM = F2X3HLX8GN; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; diff --git a/Stepic/Info-Develop.plist b/Stepic/Info-Develop.plist index 948baf9d78..6f35a16350 100644 --- a/Stepic/Info-Develop.plist +++ b/Stepic/Info-Develop.plist @@ -16,8 +16,10 @@ Stepik CFBundlePackageType APPL + LSMinimumSystemVersion + 12.0 CFBundleShortVersionString - 1.219.2-develop + 1.220-develop CFBundleSignature ???? CFBundleURLTypes @@ -62,7 +64,7 @@ CFBundleVersion - 437 + 441 FacebookAppID 171127739724012 FacebookDisplayName diff --git a/Stepic/Info-Production.plist b/Stepic/Info-Production.plist index 0718512bdc..230e782a44 100644 --- a/Stepic/Info-Production.plist +++ b/Stepic/Info-Production.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.219.2 + 1.220 CFBundleSignature ???? CFBundleURLTypes @@ -62,7 +62,7 @@ CFBundleVersion - 437 + 441 FacebookAppID 171127739724012 FacebookDisplayName @@ -78,6 +78,8 @@ fbauth2 fbshareextension + LSMinimumSystemVersion + 12.0 LSRequiresIPhoneOS NSAppTransportSecurity @@ -85,52 +87,19 @@ NSAllowsArbitraryLoads - UIBackgroundModes - - audio - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UIRequiredDeviceCapabilities - - armv7 - - UIStatusBarStyle - UIStatusBarStyleLightContent - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - UIInterfaceOrientationPortraitUpsideDown - - UISupportedInterfaceOrientations~ipad + NSUserActivityTypes - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight + $(PRODUCT_BUNDLE_IDENTIFIER).ContinueLearningUserActivity - UIViewControllerBasedStatusBarAppearance - - branch_key - - live - key_live_ekt7qHLldFSKQyO2DT3NYellwFfko55Q - test - key_test_gjtWCOSjnAMKMtV9qJ4YyeelFzced092 - UIApplicationShortcutItems - UIApplicationShortcutItemType - $(PRODUCT_BUNDLE_IDENTIFIER).ContinueLearning UIApplicationShortcutItemIconType UIApplicationShortcutIconTypePlay UIApplicationShortcutItemTitle shortcutTitleContinueLearning + UIApplicationShortcutItemType + $(PRODUCT_BUNDLE_IDENTIFIER).ContinueLearning UIApplicationShortcutItemUserInfo version @@ -138,12 +107,12 @@ - UIApplicationShortcutItemType - $(PRODUCT_BUNDLE_IDENTIFIER).SearchCourses UIApplicationShortcutItemIconType UIApplicationShortcutIconTypeSearch UIApplicationShortcutItemTitle shortcutTitleSearchCourses + UIApplicationShortcutItemType + $(PRODUCT_BUNDLE_IDENTIFIER).SearchCourses UIApplicationShortcutItemUserInfo version @@ -151,12 +120,12 @@ - UIApplicationShortcutItemType - $(PRODUCT_BUNDLE_IDENTIFIER).Profile UIApplicationShortcutItemIconType UIApplicationShortcutIconTypeContact UIApplicationShortcutItemTitle shortcutTitleProfile + UIApplicationShortcutItemType + $(PRODUCT_BUNDLE_IDENTIFIER).Profile UIApplicationShortcutItemUserInfo version @@ -164,12 +133,12 @@ - UIApplicationShortcutItemType - $(PRODUCT_BUNDLE_IDENTIFIER).Notifications UIApplicationShortcutItemIconFile shortcut-item-notifications UIApplicationShortcutItemTitle shortcutTitleNotifications + UIApplicationShortcutItemType + $(PRODUCT_BUNDLE_IDENTIFIER).Notifications UIApplicationShortcutItemUserInfo version @@ -177,9 +146,42 @@ - NSUserActivityTypes + UIBackgroundModes - $(PRODUCT_BUNDLE_IDENTIFIER).ContinueLearningUserActivity + audio + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UIStatusBarStyle + UIStatusBarStyleLightContent + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationPortraitUpsideDown + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + branch_key + + live + key_live_ekt7qHLldFSKQyO2DT3NYellwFfko55Q + test + key_test_gjtWCOSjnAMKMtV9qJ4YyeelFzced092 + diff --git a/Stepic/Info-Release.plist b/Stepic/Info-Release.plist index e8373e7fc3..f15374dfe0 100644 --- a/Stepic/Info-Release.plist +++ b/Stepic/Info-Release.plist @@ -16,8 +16,10 @@ Stepik CFBundlePackageType APPL + LSMinimumSystemVersion + 12.0 CFBundleShortVersionString - 1.219.2-release + 1.220-release CFBundleSignature ???? CFBundleURLTypes @@ -62,7 +64,7 @@ CFBundleVersion - 437 + 441 FacebookAppID 171127739724012 FacebookDisplayName diff --git a/Stepic/Legacy/Analytics/AnalyticsUserProperties.swift b/Stepic/Legacy/Analytics/AnalyticsUserProperties.swift index 2fa9079950..abcc360cda 100644 --- a/Stepic/Legacy/Analytics/AnalyticsUserProperties.swift +++ b/Stepic/Legacy/Analytics/AnalyticsUserProperties.swift @@ -1,8 +1,8 @@ import Amplitude +import AppMetricaCore import FirebaseAnalytics import FirebaseCrashlytics import UIKit -import YandexMobileMetrica final class AnalyticsUserProperties: ABAnalyticsServiceProtocol { static let shared = AnalyticsUserProperties() @@ -12,10 +12,10 @@ final class AnalyticsUserProperties: ABAnalyticsServiceProtocol { func setGroup(test: String, group: String) { self.setAmplitudeProperty(key: test, value: group) // AppMetrica - let userProfile = YMMMutableUserProfile() - let groupAttribute = YMMProfileAttribute.customString(test) + let userProfile = MutableUserProfile() + let groupAttribute = ProfileAttribute.customString(test) userProfile.apply(groupAttribute.withValue(group)) - YMMYandexMetrica.report(userProfile, onFailure: nil) + AppMetrica.reportUserProfile(userProfile, onFailure: nil) } // MARK: Public API @@ -31,7 +31,7 @@ final class AnalyticsUserProperties: ABAnalyticsServiceProtocol { let userProfileID: String? = id != nil ? String(id.require()) : nil // Update AppMetrica user profile id. - YMMYandexMetrica.setUserProfileID(userProfileID) + AppMetrica.userProfileID = userProfileID // Update FirebaseAnalytics user profile id. FirebaseAnalytics.Analytics.setUserID(userProfileID) } @@ -158,20 +158,20 @@ final class AnalyticsUserProperties: ABAnalyticsServiceProtocol { } private func setYandexMetricaProfileAttributes(_ profileAttributes: [String: Any]) { - let userProfileUpdates = profileAttributes.map { key, value -> YMMUserProfileUpdate in + let userProfileUpdates = profileAttributes.map { key, value -> UserProfileUpdate in if let boolValue = value as? Bool { - return YMMProfileAttribute.customBool(key).withValue(boolValue) + return ProfileAttribute.customBool(key).withValue(boolValue) } else if let doubleValue = value as? Double { - return YMMProfileAttribute.customNumber(key).withValue(doubleValue) + return ProfileAttribute.customNumber(key).withValue(doubleValue) } else { - return YMMProfileAttribute.customString(key).withValue(String(describing: value)) + return ProfileAttribute.customString(key).withValue(String(describing: value)) } } - let userProfile = YMMMutableUserProfile() + let userProfile = MutableUserProfile() userProfile.apply(from: userProfileUpdates) - YMMYandexMetrica.report(userProfile) { error in - print("AnalyticsUserProperties :: YMMYandexMetrica :: failed report userProfile with error = \(error)") + AppMetrica.reportUserProfile(userProfile) { error in + print("AnalyticsUserProperties :: AppMetrica :: failed report userProfile with error = \(error)") } } diff --git a/Stepic/Legacy/AppDelegate.swift b/Stepic/Legacy/AppDelegate.swift index a8115d51d2..7cac700fc5 100644 --- a/Stepic/Legacy/AppDelegate.swift +++ b/Stepic/Legacy/AppDelegate.swift @@ -17,7 +17,6 @@ import PromiseKit import SVProgressHUD import UIKit import VK_ios_sdk -import YandexMobileMetrica @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { diff --git a/Stepic/Legacy/Controllers/AdaptiveSteps/Adaptive.storyboard b/Stepic/Legacy/Controllers/AdaptiveSteps/Adaptive.storyboard index a66eca8893..65b3d86743 100644 --- a/Stepic/Legacy/Controllers/AdaptiveSteps/Adaptive.storyboard +++ b/Stepic/Legacy/Controllers/AdaptiveSteps/Adaptive.storyboard @@ -299,7 +299,7 @@ - + diff --git a/Stepic/Legacy/Controllers/AdaptiveSteps/Stats/AdaptiveStats/AdaptiveStatsViewController.swift b/Stepic/Legacy/Controllers/AdaptiveSteps/Stats/AdaptiveStats/AdaptiveStatsViewController.swift index f3b43f0cf9..6da2a71b84 100644 --- a/Stepic/Legacy/Controllers/AdaptiveSteps/Stats/AdaptiveStats/AdaptiveStatsViewController.swift +++ b/Stepic/Legacy/Controllers/AdaptiveSteps/Stats/AdaptiveStats/AdaptiveStatsViewController.swift @@ -6,7 +6,7 @@ // Copyright © 2017 Alex Karpov. All rights reserved. // -import Charts +import DGCharts import UIKit final class AdaptiveStatsViewController: UIViewController { diff --git a/Stepic/Legacy/Controllers/Quizzes/CodeQuiz/CodeAnalysis/CodePlaygroundManager.swift b/Stepic/Legacy/Controllers/Quizzes/CodeQuiz/CodeAnalysis/CodePlaygroundManager.swift index ee6b095bdb..3fc4257671 100644 --- a/Stepic/Legacy/Controllers/Quizzes/CodeQuiz/CodeAnalysis/CodePlaygroundManager.swift +++ b/Stepic/Legacy/Controllers/Quizzes/CodeQuiz/CodeAnalysis/CodePlaygroundManager.swift @@ -13,9 +13,8 @@ final class CodePlaygroundManager { typealias AnalysisResult = (text: String, position: Int, autocomplete: Autocomplete?) typealias Changes = (isInsertion: Bool, changes: String) - let closers: [String: String] = ["{": "}", "[": "]", "(": ")", "\"": "\"", "'": "'"] - - let allowedCharactersSet = Set("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890_") + private static let closers = ["{": "}", "[": "]", "(": ")", "\"": "\"", "'": "'"] + private static let allowedCharactersSet = Set("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890_") var suggestionsController: CodeSuggestionsTableViewController? var isSuggestionsViewPresented: Bool { self.suggestionsController != nil } @@ -23,62 +22,25 @@ final class CodePlaygroundManager { /// Detects the changes string between currentText and previousText. /// All changes should be a substring inserted somewhere into the string. func getChangesSubstring(currentText: String, previousText: String) -> Changes { - var maxString = "" - var minString = "" - var isInsertion = true - - // Determine if something was deleted or inserted - if currentText.count > previousText.count { - maxString = currentText - minString = previousText - isInsertion = true - } else { - maxString = previousText - minString = currentText - isInsertion = false - } + let startIndex = zip(currentText, previousText) + .enumerated() + .first(where: { $1.0 != $1.1 })?.0 ?? min(currentText.count, previousText.count) + let endIndexCurrent = currentText.index(currentText.endIndex, offsetBy: -(currentText.count - startIndex)) + let endIndexPrevious = previousText.index(previousText.endIndex, offsetBy: -(previousText.count - startIndex)) - // Search for the beginning of the changed substring - var changesBeginningOffset = 0 - while changesBeginningOffset < minString.count - && minString[minString.index(minString.startIndex, offsetBy: changesBeginningOffset)] - == maxString[maxString.index(maxString.startIndex, offsetBy: changesBeginningOffset)] { - changesBeginningOffset += 1 - } + let reversedCurrentText = String(currentText[endIndexCurrent...].reversed()) + let reversedPreviousText = String(previousText[endIndexPrevious...].reversed()) - minString.removeSubrange( - minString.startIndex.. previousText.count + let changes = isInsertion + ? String(currentText.dropFirst(startIndex).dropLast(reversedIndex)) + : String(previousText.dropFirst(startIndex).dropLast(reversedIndex)) - if !minString.isEmpty { - minString.removeSubrange( - minString.index( - minString.index(before: minString.endIndex), - offsetBy: -changesEndingOffset + 1 - ).. (shouldMakeNewLine: Bool, paired: Bool) { - switch language { - case .python, .python31: - return symbol == ":" - ? (shouldMakeNewLine: true, paired: false) - : (shouldMakeNewLine: false, paired: false) - case .c, - .cValgrind, - .cpp11, - .cpp, - .java, - .java8, - .java9, - .java11, - .java17, - .cs, - .csMono, - .kotlin, - .swift, - .rust, - .javascript, - .scala, - .scala3, - .go, - .perl, - .php: - return symbol == "{" - ? (shouldMakeNewLine: true, paired: true) - : (shouldMakeNewLine: false, paired: false) + switch symbol { + case ":": + switch language { + case .python, .python31: + return (shouldMakeNewLine: true, paired: false) + default: + return (shouldMakeNewLine: false, paired: false) + } + case "{": + switch language { + case .c, + .cValgrind, + .cpp, + .cpp11, + .java, + .java8, + .java9, + .java11, + .java17, + .cs, + .csMono, + .kotlin, + .swift, + .rust, + .javascript, + .scala, + .scala3, + .go, + .perl, + .php: + return (shouldMakeNewLine: true, paired: true) + default: + return (shouldMakeNewLine: false, paired: false) + } default: return (shouldMakeNewLine: false, paired: false) } @@ -128,22 +96,30 @@ final class CodePlaygroundManager { return "" } - var offsetBefore = 0 - while let character = text[safe: (cursorPosition - offsetBefore - 1)], - self.allowedCharactersSet.contains(character) { - offsetBefore += 1 - } + let startIndex = text.startIndex + let cursorIndex = text.index(startIndex, offsetBy: cursorPosition, limitedBy: text.endIndex) ?? text.endIndex - var offsetAfter = 0 - while let character = text[safe: (cursorPosition + offsetAfter)], - self.allowedCharactersSet.contains(character) { - offsetAfter += 1 + var beforeCursorIndex = cursorIndex + while beforeCursorIndex > text.startIndex { + let prevIndex = text.index(before: beforeCursorIndex) + if Self.allowedCharactersSet.contains(text[prevIndex]) { + beforeCursorIndex = prevIndex + } else { + break + } } - let beforeCursorString = text[safe: (cursorPosition - offsetBefore).. AnalysisResult? { guard changes.isInsertion, - let closer = closers[changes.changes] else { + let closer = Self.closers[changes.changes] else { return nil } @@ -250,16 +226,16 @@ final class CodePlaygroundManager { // Check if there is text after the bracket, not a \n or whitespace let cursorIndex = text.index(text.startIndex, offsetBy: cursorPosition) + if cursorIndex != text.endIndex { let textAfter = String(text[cursorIndex...]) if let indexOfLineEndAfter = textAfter.indexOf("\n") { let line = String(textAfter[.. Int { - var minTabSize = 100 + var minTabSize = Int.max text.enumerateLines { line, _ in - var spacesBeforeFirstCharacter = 0 - - for character in line { - if character == " " { - spacesBeforeFirstCharacter += 1 - } else { - break - } - } - - if spacesBeforeFirstCharacter > 0 && minTabSize > spacesBeforeFirstCharacter { - minTabSize = spacesBeforeFirstCharacter + let leadingSpaces = line.prefix(while: { $0 == " " }).count + // Update the minimum tab size if this line has leading spaces and it's fewer than any previous line + if leadingSpaces > 0 { + minTabSize = min(minTabSize, leadingSpaces) } } - if minTabSize == 100 { - minTabSize = 4 - } - - return minTabSize + return minTabSize == Int.max ? 4 : minTabSize } private func hideSuggestions() { @@ -429,8 +393,8 @@ final class CodePlaygroundManager { func textRangeFrom(position: Int, textView: UITextView) -> UITextRange { let firstCharacterPosition = textView.beginningOfDocument - let characterPosition = textView.position(from: firstCharacterPosition, offset: position)! - let characterRange = textView.textRange(from: characterPosition, to: characterPosition)! + let characterPosition = textView.position(from: firstCharacterPosition, offset: position).require() + let characterRange = textView.textRange(from: characterPosition, to: characterPosition).require() return characterRange } @@ -439,13 +403,18 @@ final class CodePlaygroundManager { return } - let cursorPosition = textView.offset(from: textView.beginningOfDocument, to: selectedRange.start) - var text = textView.text! - text.insert(contentsOf: symbols, at: text.index(text.startIndex, offsetBy: cursorPosition)) - textView.text = text - // Import here to update selectedTextRange before calling textViewDidChange #APPS-2352 - textView.selectedTextRange = self.textRangeFrom(position: cursorPosition + symbols.count, textView: textView) - // Manually call textViewDidChange, becuase when manually setting the text of a UITextView with code, + if selectedRange.isEmpty { + let cursorPosition = textView.offset(from: textView.beginningOfDocument, to: selectedRange.start) + var text = textView.text ?? "" + text.insert(contentsOf: symbols, at: text.index(text.startIndex, offsetBy: cursorPosition)) + textView.text = text + // Import here to update selectedTextRange before calling textViewDidChange #APPS-2352 + textView.selectedTextRange = textRangeFrom(position: cursorPosition + symbols.count, textView: textView) + } else { + textView.replace(selectedRange, withText: symbols) + } + + // Manually call textViewDidChange, because when manually setting the text of a UITextView with code, // the textViewDidChange: method does not get called. textView.delegate?.textViewDidChange?(textView) } diff --git a/Stepic/Legacy/Helpers/AnalyticsHelper.swift b/Stepic/Legacy/Helpers/AnalyticsHelper.swift index 9751354145..188a361ee6 100644 --- a/Stepic/Legacy/Helpers/AnalyticsHelper.swift +++ b/Stepic/Legacy/Helpers/AnalyticsHelper.swift @@ -10,7 +10,7 @@ import Amplitude import Firebase import FirebaseCore import UIKit -import YandexMobileMetrica +import AppMetricaCore final class AnalyticsHelper { static var sharedHelper = AnalyticsHelper() @@ -18,8 +18,12 @@ final class AnalyticsHelper { func setupAnalytics() { FirebaseApp.configure() - if let config = YMMYandexMetricaConfiguration(apiKey: Tokens.shared.appMetricaToken) { - YMMYandexMetrica.activate(with: config) + if let configuration = AppMetricaConfiguration(apiKey: Tokens.shared.appMetricaToken) { + AppMetrica.activate(with: configuration) + } else { + #if DEBUG + print("AnalyticsHelper :: failed to initialize AppMetrica") + #endif } Amplitude.instance().initializeApiKey(Tokens.shared.amplitudeToken) diff --git a/Stepic/Legacy/Model/Network/Endpoints/CoursesAPI.swift b/Stepic/Legacy/Model/Network/Endpoints/CoursesAPI.swift index 8d31eeec0a..c9d776f151 100644 --- a/Stepic/Legacy/Model/Network/Endpoints/CoursesAPI.swift +++ b/Stepic/Legacy/Model/Network/Endpoints/CoursesAPI.swift @@ -34,7 +34,11 @@ final class CoursesAPI: APIEndpoint { return .value([]) } - return self.getObjectsByIds(ids: ids, updating: existing) + if RemoteConfig.shared.coursesApiFilterFreeOnly { + return self.getObjectsByIds(ids: ids, updating: existing).filterValues({ !$0.isPaid }) + } else { + return self.getObjectsByIds(ids: ids, updating: existing) + } } @available(*, deprecated, message: "Legacy: we want to pass existing") @@ -47,9 +51,22 @@ final class CoursesAPI: APIEndpoint { return .value([]) } - return self.coursesPersistenceService.fetch(ids: ids).then { cachedCourses, _ in - self.getObjectsByIds(ids: ids, updating: cachedCourses) - }.then { self.indexCoursesInSpotlight($0) } + if RemoteConfig.shared.coursesApiFilterFreeOnly { + return self.coursesPersistenceService + .fetch(ids: ids) + .then { cachedCourses, _ in + self.getObjectsByIds(ids: ids, updating: cachedCourses) + } + .then { self.indexCoursesInSpotlight($0) } + .filterValues({ !$0.isPaid }) + } else { + return self.coursesPersistenceService + .fetch(ids: ids) + .then { cachedCourses, _ in + self.getObjectsByIds(ids: ids, updating: cachedCourses) + } + .then { self.indexCoursesInSpotlight($0) } + } } func retrieve( @@ -120,13 +137,34 @@ final class CoursesAPI: APIEndpoint { params["page"] = page - return self.retrieve.requestWithFetching( - requestEndpoint: "courses", - paramName: "courses", - params: params, - withManager: self.manager - ).then { courses, meta in - self.indexCoursesInSpotlight(courses).map { _ in (courses, meta) } + if RemoteConfig.shared.coursesApiFilterFreeOnly { + return self.retrieve + .requestWithFetching( + requestEndpoint: "courses", + paramName: "courses", + params: params, + withManager: self.manager + ) + .then { courses, meta in + self.indexCoursesInSpotlight(courses) + .map { _ in + (courses.filter({ !$0.isPaid }), meta) + } + } + } else { + return self.retrieve + .requestWithFetching( + requestEndpoint: "courses", + paramName: "courses", + params: params, + withManager: self.manager + ) + .then { courses, meta in + self.indexCoursesInSpotlight(courses) + .map { _ in + (courses, meta) + } + } } } diff --git a/Stepic/Legacy/Model/RemoteConfig/RemoteConfig.swift b/Stepic/Legacy/Model/RemoteConfig/RemoteConfig.swift index 032c124508..d17fd4d28b 100644 --- a/Stepic/Legacy/Model/RemoteConfig/RemoteConfig.swift +++ b/Stepic/Legacy/Model/RemoteConfig/RemoteConfig.swift @@ -43,7 +43,8 @@ The price includes commission from App Store and VAT. By paying for access to th Key.purchaseFlowDisclaimerRussian.rawValue: NSString(string: Self.defaultPurchaseFlowDisclaimerRussian), Key.purchaseFlowDisclaimerEnglish.rawValue: NSString(string: Self.defaultPurchaseFlowDisclaimerEnglish), Key.purchaseFlowPromoCodeEnabled.rawValue: NSNumber(value: false), - Key.purchaseFlowStartFlowFromCourseScreenEnabled.rawValue: NSNumber(value: false) + Key.purchaseFlowStartFlowFromCourseScreenEnabled.rawValue: NSNumber(value: false), + Key.coursesApiFilterFreeOnly.rawValue: NSNumber(value: true) ] var showStreaksNotificationTrigger: ShowStreaksNotificationTrigger { @@ -137,6 +138,10 @@ The price includes commission from App Store and VAT. By paying for access to th self.getStringValueFromDelegateOrRemoteConfigForKey(.promoBanners) } + var coursesApiFilterFreeOnly: Bool { + self.getNSStringValueFromDelegateOrRemoteConfigForKey(.coursesApiFilterFreeOnly)?.boolValue ?? true + } + init(delegate: RemoteConfigDelegate? = nil) { self.delegate = delegate @@ -254,6 +259,7 @@ The price includes commission from App Store and VAT. By paying for access to th case purchaseFlowPromoCodeEnabled = "purchase_flow_ios_promocode_enabled" case purchaseFlowStartFlowFromCourseScreenEnabled = "purchase_flow_ios_start_flow_from_course_screen_enabled" case promoBanners = "promo_banners_ios" + case coursesApiFilterFreeOnly = "ios_courses_api_filter_free_only" var valueDataType: ValueDataType { .string } diff --git a/Stepic/Legacy/Services/DeepLinks/BranchService.swift b/Stepic/Legacy/Services/DeepLinks/BranchService.swift index 051ef70bf1..ed83d1bd2d 100644 --- a/Stepic/Legacy/Services/DeepLinks/BranchService.swift +++ b/Stepic/Legacy/Services/DeepLinks/BranchService.swift @@ -6,7 +6,7 @@ // Copyright © 2018 Alex Karpov. All rights reserved. // -import Branch +import BranchSDK import Foundation final class BranchService { diff --git a/Stepic/Sources/Common/ImageDataProvider.swift b/Stepic/Sources/Common/ImageDataProvider.swift index c7310538a9..f082ed379e 100644 --- a/Stepic/Sources/Common/ImageDataProvider.swift +++ b/Stepic/Sources/Common/ImageDataProvider.swift @@ -112,5 +112,5 @@ final class NukeImageDataProvider: ImageDataProvider { return imageContainer.image.jpegData(compressionQuality: self.compressionQuality) } - var contentURL: URL? { self.imageRequest.urlRequest.url } + var contentURL: URL? { self.imageRequest.urlRequest?.url } } diff --git a/Stepic/Sources/Frameworks/Analytics/AnalyticsEngine.swift b/Stepic/Sources/Frameworks/Analytics/AnalyticsEngine.swift index ec6771075e..915a6d710b 100644 --- a/Stepic/Sources/Frameworks/Analytics/AnalyticsEngine.swift +++ b/Stepic/Sources/Frameworks/Analytics/AnalyticsEngine.swift @@ -1,7 +1,7 @@ import Amplitude +import AppMetricaCore import FirebaseAnalytics import Foundation -import YandexMobileMetrica protocol AnalyticsEngine: AnyObject { func sendAnalyticsEvent(named name: String, parameters: [String: Any]?, forceSend: Bool) @@ -74,7 +74,7 @@ final class AppMetricaAnalyticsEngine: AnalyticsEngine { init() {} func sendAnalyticsEvent(named name: String, parameters: [String: Any]?, forceSend: Bool) { - YMMYandexMetrica.reportEvent(name, parameters: parameters) { error in + AppMetrica.reportEvent(name: name, parameters: parameters) { error in if LaunchArguments.analyticsDebugEnabled { print( """ diff --git a/Stepic/Sources/Frameworks/InAppPurchases/IAPProductsService.swift b/Stepic/Sources/Frameworks/InAppPurchases/IAPProductsService.swift index 0a40c58216..6813c94a00 100644 --- a/Stepic/Sources/Frameworks/InAppPurchases/IAPProductsService.swift +++ b/Stepic/Sources/Frameworks/InAppPurchases/IAPProductsService.swift @@ -133,7 +133,7 @@ final class IAPProductsService: IAPProductsServiceProtocol { // MARK: - IAPProductRequest: NSObject, SKProductsRequestDelegate - -fileprivate final class IAPProductRequest: NSObject, SKProductsRequestDelegate { +private final class IAPProductRequest: NSObject, SKProductsRequestDelegate { typealias CompletionHandler = (Swift.Result<[SKProduct], Swift.Error>) -> Void private let request: SKProductsRequest diff --git a/Stepic/Sources/Frameworks/InAppPurchases/IAPReceiptValidationService.swift b/Stepic/Sources/Frameworks/InAppPurchases/IAPReceiptValidationService.swift index 590af8397b..7af3bdc86b 100644 --- a/Stepic/Sources/Frameworks/InAppPurchases/IAPReceiptValidationService.swift +++ b/Stepic/Sources/Frameworks/InAppPurchases/IAPReceiptValidationService.swift @@ -145,7 +145,7 @@ final class IAPReceiptValidationService: IAPReceiptValidationServiceProtocol { // MARK: - IAPReceiptRefreshRequest: NSObject, SKRequestDelegate - -fileprivate final class IAPReceiptRefreshRequest: NSObject, SKRequestDelegate { +private final class IAPReceiptRefreshRequest: NSObject, SKRequestDelegate { typealias CompletionHandler = (ResultType) -> Void private let request: SKReceiptRefreshRequest diff --git a/Stepic/Sources/Frameworks/Notifications/Registration/NotificationsRegistrationService.swift b/Stepic/Sources/Frameworks/Notifications/Registration/NotificationsRegistrationService.swift index 141ffdd84b..49ec2c611a 100644 --- a/Stepic/Sources/Frameworks/Notifications/Registration/NotificationsRegistrationService.swift +++ b/Stepic/Sources/Frameworks/Notifications/Registration/NotificationsRegistrationService.swift @@ -222,7 +222,7 @@ final class NotificationsRegistrationService: NotificationsRegistrationServicePr remoteDevice.isBadgesEnabled = true return ApiDataDownloader.devices.update(remoteDevice) } - }.done { device -> Void in + }.done { device in print("NotificationsRegistrationService: device registered, info = \(device.json)") DeviceDefaults.sharedDefaults.deviceId = device.id }.catch { error in diff --git a/Stepic/Sources/Modules/CourseInfoSubmodules/CourseInfoTabNews/Views/CourseInfoTabNewsTableViewAdapter.swift b/Stepic/Sources/Modules/CourseInfoSubmodules/CourseInfoTabNews/Views/CourseInfoTabNewsTableViewAdapter.swift index b9e20295ef..af92b01088 100644 --- a/Stepic/Sources/Modules/CourseInfoSubmodules/CourseInfoTabNews/Views/CourseInfoTabNewsTableViewAdapter.swift +++ b/Stepic/Sources/Modules/CourseInfoSubmodules/CourseInfoTabNews/Views/CourseInfoTabNewsTableViewAdapter.swift @@ -121,8 +121,14 @@ extension CourseInfoTabNewsTableViewAdapter: UITableViewDataSource { self.cellHeightCache[viewModelUniqueIdentifier] = newHeight - let workItem = DispatchWorkItem { [weak tableView] in - guard let strongTableView = tableView else { + let workItem = DispatchWorkItem { [weak self, weak tableView] in + guard let strongSelf = self, + let strongTableView = tableView else { + return + } + + guard !strongSelf.viewModels.isEmpty + && strongTableView.dataSource != nil else { return } diff --git a/Stepic/Stepic-Bridging-Header.h b/Stepic/Stepic-Bridging-Header.h index 934ec07d96..902411584a 100644 --- a/Stepic/Stepic-Bridging-Header.h +++ b/Stepic/Stepic-Bridging-Header.h @@ -1,5 +1,4 @@ #import -#import #import "ExceptionCatcher.h" #import "WKWebViewPanelManager.h" diff --git a/StepicTests/Info-Develop.plist b/StepicTests/Info-Develop.plist index f16b5e37dd..2f24517018 100644 --- a/StepicTests/Info-Develop.plist +++ b/StepicTests/Info-Develop.plist @@ -15,10 +15,10 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 1.219.2-develop + 1.220-develop CFBundleSignature ???? CFBundleVersion - 437 + 441 diff --git a/StepicTests/Info-Production.plist b/StepicTests/Info-Production.plist index 5508f3b03b..05c9c72f0b 100644 --- a/StepicTests/Info-Production.plist +++ b/StepicTests/Info-Production.plist @@ -15,10 +15,10 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 1.219.2 + 1.220 CFBundleSignature ???? CFBundleVersion - 437 + 441 diff --git a/StepicTests/Info-Release.plist b/StepicTests/Info-Release.plist index d86cc2a941..824815409c 100644 --- a/StepicTests/Info-Release.plist +++ b/StepicTests/Info-Release.plist @@ -15,10 +15,10 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 1.219.2-release + 1.220-release CFBundleSignature ???? CFBundleVersion - 437 + 441 diff --git a/StepicUITests/Info-Develop.plist b/StepicUITests/Info-Develop.plist index bac3b6b782..3114dba4f4 100644 --- a/StepicUITests/Info-Develop.plist +++ b/StepicUITests/Info-Develop.plist @@ -15,8 +15,8 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.219.2-develop + 1.220-develop CFBundleVersion - 437 + 441 diff --git a/StepicUITests/Info-Production.plist b/StepicUITests/Info-Production.plist index 8462164916..ea1a0cb19e 100644 --- a/StepicUITests/Info-Production.plist +++ b/StepicUITests/Info-Production.plist @@ -15,8 +15,8 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.219.2 + 1.220 CFBundleVersion - 437 + 441 diff --git a/StepicUITests/Info-Release.plist b/StepicUITests/Info-Release.plist index 2720639f6b..389044a55d 100644 --- a/StepicUITests/Info-Release.plist +++ b/StepicUITests/Info-Release.plist @@ -15,8 +15,8 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.219.2-release + 1.220-release CFBundleVersion - 437 + 441 diff --git a/StepicWidget/Info-Develop.plist b/StepicWidget/Info-Develop.plist index 1c97c7d59b..55abc4dfa6 100644 --- a/StepicWidget/Info-Develop.plist +++ b/StepicWidget/Info-Develop.plist @@ -17,9 +17,9 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.219.2-develop + 1.220-develop CFBundleVersion - 437 + 441 NSExtension NSExtensionPointIdentifier diff --git a/StepicWidget/Info-Production.plist b/StepicWidget/Info-Production.plist index d04d5f54bc..553e2b38a5 100644 --- a/StepicWidget/Info-Production.plist +++ b/StepicWidget/Info-Production.plist @@ -17,9 +17,9 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.219.2 + 1.220 CFBundleVersion - 437 + 441 NSExtension NSExtensionPointIdentifier diff --git a/StepicWidget/Info-Release.plist b/StepicWidget/Info-Release.plist index e51e058f45..6f63985f3a 100644 --- a/StepicWidget/Info-Release.plist +++ b/StepicWidget/Info-Release.plist @@ -17,9 +17,9 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.219.2-release + 1.220-release CFBundleVersion - 437 + 441 NSExtension NSExtensionPointIdentifier diff --git a/StepicWidget/Sources/StepicWidget.swift b/StepicWidget/Sources/StepicWidget.swift index b15ecd9606..dd10064449 100644 --- a/StepicWidget/Sources/StepicWidget.swift +++ b/StepicWidget/Sources/StepicWidget.swift @@ -12,6 +12,28 @@ struct StepicWidget: Widget { .configurationDisplayName("ConfigurationDisplayName") .description("ConfigurationDescription") .supportedFamilies([.systemSmall, .systemMedium]) + .safeContentMarginsDisabled() + } +} + +extension View { + @ViewBuilder + func safeContainerBackground(@ViewBuilder content: () -> some View) -> some View { + if #available(iOS 17.0, *) { + self.containerBackground(for: .widget, content: content) + } else { + self.background(content()) + } + } +} + +extension WidgetConfiguration { + func safeContentMarginsDisabled() -> some WidgetConfiguration { + if #available(iOS 15.0, *) { + return contentMarginsDisabled() + } else { + return self + } } } diff --git a/StepicWidget/Sources/Views/EntryView/ContinueCourseView.swift b/StepicWidget/Sources/Views/EntryView/ContinueCourseView.swift index f1c3df7115..47a27943a9 100644 --- a/StepicWidget/Sources/Views/EntryView/ContinueCourseView.swift +++ b/StepicWidget/Sources/Views/EntryView/ContinueCourseView.swift @@ -54,7 +54,7 @@ struct ContinueCourseView: View { } .padding() .foregroundColor(Color.white) - .background(Color.backgroundColor) + .safeContainerBackground { Color.backgroundColor } } private var emptyView: some View { @@ -88,7 +88,7 @@ struct ContinueCourseView: View { } .padding() .foregroundColor(Color.white) - .background(Color.backgroundColor) + .safeContainerBackground { Color.backgroundColor } } } diff --git a/StepicWidget/Sources/Views/EntryView/ContinueCourseWithCourseListView.swift b/StepicWidget/Sources/Views/EntryView/ContinueCourseWithCourseListView.swift index 5a8c8de7cd..e6cfb4278b 100644 --- a/StepicWidget/Sources/Views/EntryView/ContinueCourseWithCourseListView.swift +++ b/StepicWidget/Sources/Views/EntryView/ContinueCourseWithCourseListView.swift @@ -38,7 +38,7 @@ struct ContinueCourseWithCourseListView: View { .background(Color.black.opacity(0.15)) } .foregroundColor(Color.white) - .background(Color.backgroundColor) + .safeContainerBackground { Color.backgroundColor } } private var primaryCourseView: some View { diff --git a/StickerPackExtension/Info-Develop.plist b/StickerPackExtension/Info-Develop.plist index 2b87af752c..925ca2e833 100644 --- a/StickerPackExtension/Info-Develop.plist +++ b/StickerPackExtension/Info-Develop.plist @@ -17,9 +17,9 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 1.219.2-develop + 1.220-develop CFBundleVersion - 437 + 441 UIRequiredDeviceCapabilities arm64 diff --git a/StickerPackExtension/Info-Production.plist b/StickerPackExtension/Info-Production.plist index a5d87b3eba..2fce90d9a6 100644 --- a/StickerPackExtension/Info-Production.plist +++ b/StickerPackExtension/Info-Production.plist @@ -17,9 +17,9 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 1.219.2 + 1.220 CFBundleVersion - 437 + 441 UIRequiredDeviceCapabilities arm64 diff --git a/StickerPackExtension/Info-Release.plist b/StickerPackExtension/Info-Release.plist index 6f04310b3a..797892f1ac 100644 --- a/StickerPackExtension/Info-Release.plist +++ b/StickerPackExtension/Info-Release.plist @@ -17,9 +17,9 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 1.219.2-release + 1.220-release CFBundleVersion - 437 + 441 UIRequiredDeviceCapabilities arm64 diff --git a/autocorrect.sh b/autocorrect.sh index dd34b84bff..a393eda342 100755 --- a/autocorrect.sh +++ b/autocorrect.sh @@ -1,9 +1,9 @@ target_name=$1 if [[ $target_name == "Stepic" ]]; then - path="Stepic/Sources" + path="${PWD}/Stepic/Sources" elif [[ $target_name == "StepicUITests" ]]; then - path="StepicUITests/" + path="${PWD}/StepicUITests" else echo "warning: unknown target name ${target_name}" fi @@ -15,11 +15,11 @@ fi swiftlint_executable="${PWD}/Pods/SwiftLint/swiftlint" if [[ -f $swiftlint_executable ]]; then - if [[ $target_name == "Stepic" ]]; then - $swiftlint_executable --fix --config ${PWD}/.swiftlint.yml --path $path - else - $swiftlint_executable --fix --config ${PWD}/.swiftlint.yml --path $path --format - fi + if [[ $target_name == "Stepic" ]]; then + $swiftlint_executable --fix --config "${PWD}/.swiftlint.yml" "$path" + else + $swiftlint_executable --fix --config "${PWD}/.swiftlint.yml" "$path" --format + fi else - echo "warning: SwiftLint not installed, run pod install" -fi \ No newline at end of file + echo "warning: SwiftLint not installed, run pod install" +fi diff --git a/fastlane/Appfile b/fastlane/Appfile index 40121e91e8..4bfa04a064 100644 Binary files a/fastlane/Appfile and b/fastlane/Appfile differ diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 562b1b4459..8b73403971 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -1,4 +1,4 @@ -fastlane_version "2.214.0" +fastlane_version "2.225.0" default_platform :ios diff --git a/lint.sh b/lint.sh index 41e49fced1..64a3988bec 100755 --- a/lint.sh +++ b/lint.sh @@ -1,9 +1,9 @@ target_name=$1 if [[ $target_name == "Stepic" ]]; then - path="Stepic/Sources" + path="${PWD}/Stepic/Sources" elif [[ $target_name == "StepicUITests" ]]; then - path="StepicUITests/" + path="${PWD}/StepicUITests" else echo "warning: unknown target name ${target_name}" fi @@ -15,7 +15,7 @@ fi swiftlint_executable="${PWD}/Pods/SwiftLint/swiftlint" if [[ -f $swiftlint_executable ]]; then - $swiftlint_executable lint --config ${PWD}/.swiftlint.yml --path $path + $swiftlint_executable lint --config "${PWD}/.swiftlint.yml" "$path" else - echo "warning: SwiftLint not installed, run pod install" -fi \ No newline at end of file + echo "warning: SwiftLint not installed, run pod install" +fi