diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 17cad49..0000000 Binary files a/.DS_Store and /dev/null differ diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bd1cdd0..926b8a3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -3,23 +3,22 @@ name: Test on: pull_request jobs: test: - runs-on: macOS-latest + runs-on: macos-10.15 strategy: matrix: - destination: ['platform=iOS Simulator,OS=13.7,name=iPhone 11'] + destination: ["platform=iOS Simulator,OS=13.7,name=iPhone 11"] steps: - - name: Checkout - uses: actions/checkout@master - - name: Force XCode 11.7 - run: sudo xcode-select -switch /Applications/Xcode_11.7.app - - name: Install Dependences - run: | - cd Example - pod repo update - pod install - shell: bash - - name: Build and Test - run: | - set -o pipefail && xcodebuild clean test -enableCodeCoverage YES -workspace Example/CotterIOS.xcworkspace -scheme Cotter -destination "${destination}" CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO ONLY_ACTIVE_ARCH=NO | xcpretty --color - env: - destination: ${{ matrix.destination }} \ No newline at end of file + - name: Checkout + uses: actions/checkout@master + - name: Force XCode 11.7 + run: sudo xcode-select -switch /Applications/Xcode_11.7.app + - name: Install Dependences + run: | + pod repo update + pod install + shell: bash + - name: Build and Test + run: | + set -o pipefail && xcodebuild clean test -enableCodeCoverage YES -workspace Cotter.xcworkspace -scheme Cotter -destination "${destination}" CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO ONLY_ACTIVE_ARCH=NO | xcpretty --color + env: + destination: ${{ matrix.destination }} diff --git a/Assets/Assets.swift b/Assets/Assets.swift new file mode 100644 index 0000000..1222731 --- /dev/null +++ b/Assets/Assets.swift @@ -0,0 +1,10 @@ +// +// Assets.swift +// Assets +// +// Created by Albert Purnama on 12/17/20. +// + +class Assets { + +} diff --git a/Cotter.podspec b/Cotter.podspec index 6a84aa8..f522ac9 100644 --- a/Cotter.podspec +++ b/Cotter.podspec @@ -8,44 +8,37 @@ Pod::Spec.new do |s| s.name = 'Cotter' - s.version = '1.5.20' + s.version = '1.5.21-alpha.1' s.summary = 'Cotter is the client SDK for Cotter authentication services' s.swift_versions = '5.0' -# This description is used to generate tags and improve search results. -# * Think: What does it do? Why did you write it? What is the focus? -# * Try to keep it short, snappy and to the point. -# * Write the description between the DESC delimiters below. -# * Finally, don't worry about the indent, CocoaPods strips it! - s.description = <<-DESC CotterIOS simplifies client's integration with Cotter. It is an SDK that provides necessary pages and API services that connects your application to Cotter authentication services. DESC s.homepage = 'https://github.com/cotterapp/ios-sdk.git' - # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' s.license = { :type => 'BSD', :file => 'LICENSE' } s.author = { 'Cotter Team' => 'team@cotter.app' } s.source = { :git => 'https://github.com/cotterapp/ios-sdk.git', :tag => s.version.to_s } - # s.social_media_url = 'https://twitter.com/' s.platform = :ios s.ios.deployment_target = '10.0' - s.source_files = 'Source/**/*.swift' + s.source_files = 'Cotter/**/*.swift' s.resource_bundles = { - 'Cotter' => ['Source/**/*.{png,storyboard,lproj,xib,xcassets}'] + 'Assets' => ['Cotter/**/*.{png,storyboard,lproj,xib,xcassets}'] } - # s.public_header_files = 'Pod/Classes/**/*.h' s.static_framework = true s.frameworks = 'UIKit' s.dependency 'TTGSnackbar', '1.10.3' - s.dependency 'OneSignal', '2.15.3' + s.dependency 'OneSignal', '~> 3.0' s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' } s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' } -# s.test_spec 'Tests' do |test_spec| -# test_spec.source_files = 'Example/Tests/**/*.{swift}' -# end + s.test_spec 'Tests' do |test_spec| + test_spec.requires_app_host = true + test_spec.source_files = 'Tests/Cases/{Services,Models}/*.{swift}' + test_spec.dependency 'Nimble', '~> 8.0' + end end diff --git a/Cotter.xcodeproj/project.pbxproj b/Cotter.xcodeproj/project.pbxproj new file mode 100644 index 0000000..e3847e2 --- /dev/null +++ b/Cotter.xcodeproj/project.pbxproj @@ -0,0 +1,1509 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 51; + objects = { + +/* Begin PBXBuildFile section */ + 857B635D258B5292001C5AC2 /* Cotter.h in Headers */ = {isa = PBXBuildFile; fileRef = 857B635B258B5292001C5AC2 /* Cotter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 857B6379258B5394001C5AC2 /* AlertService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6375258B5394001C5AC2 /* AlertService.swift */; }; + 857B637A258B5394001C5AC2 /* BiometricRegistrationFailPopup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6376258B5394001C5AC2 /* BiometricRegistrationFailPopup.swift */; }; + 857B637B258B5394001C5AC2 /* BiometricFailPopup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6377258B5394001C5AC2 /* BiometricFailPopup.swift */; }; + 857B637C258B5394001C5AC2 /* BiometricSuccessPopup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6378258B5394001C5AC2 /* BiometricSuccessPopup.swift */; }; + 857B637F258B53BA001C5AC2 /* PINBaseController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B637E258B53BA001C5AC2 /* PINBaseController.swift */; }; + 857B6393258B54B6001C5AC2 /* Cotter.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 857B6385258B54B6001C5AC2 /* Cotter.storyboard */; }; + 857B6394258B54B6001C5AC2 /* KeyboardView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 857B6386258B54B6001C5AC2 /* KeyboardView.xib */; }; + 857B6395258B54B6001C5AC2 /* warning.png in Resources */ = {isa = PBXBuildFile; fileRef = 857B6388258B54B6001C5AC2 /* warning.png */; }; + 857B6396258B54B6001C5AC2 /* cotter_logo.png in Resources */ = {isa = PBXBuildFile; fileRef = 857B6389258B54B6001C5AC2 /* cotter_logo.png */; }; + 857B6397258B54B6001C5AC2 /* tap_device.png in Resources */ = {isa = PBXBuildFile; fileRef = 857B638A258B54B6001C5AC2 /* tap_device.png */; }; + 857B6398258B54B6001C5AC2 /* cotter-fingerprint.png in Resources */ = {isa = PBXBuildFile; fileRef = 857B638B258B54B6001C5AC2 /* cotter-fingerprint.png */; }; + 857B6399258B54B6001C5AC2 /* cotter-failure-x.png in Resources */ = {isa = PBXBuildFile; fileRef = 857B638C258B54B6001C5AC2 /* cotter-failure-x.png */; }; + 857B639A258B54B6001C5AC2 /* cotter-fingerprint-failed.png in Resources */ = {isa = PBXBuildFile; fileRef = 857B638D258B54B6001C5AC2 /* cotter-fingerprint-failed.png */; }; + 857B639B258B54B6001C5AC2 /* cotter-lapis-logo.png in Resources */ = {isa = PBXBuildFile; fileRef = 857B638E258B54B6001C5AC2 /* cotter-lapis-logo.png */; }; + 857B639C258B54B6001C5AC2 /* cotter-success-check.png in Resources */ = {isa = PBXBuildFile; fileRef = 857B638F258B54B6001C5AC2 /* cotter-success-check.png */; }; + 857B639D258B54B6001C5AC2 /* cotter.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 857B6390258B54B6001C5AC2 /* cotter.xcassets */; }; + 857B639E258B54B6001C5AC2 /* Transaction.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 857B6391258B54B6001C5AC2 /* Transaction.storyboard */; }; + 857B639F258B54B6001C5AC2 /* UpdateProfile.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 857B6392258B54B6001C5AC2 /* UpdateProfile.storyboard */; }; + 857B643C258B5532001C5AC2 /* MockedCotterClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63A4258B552F001C5AC2 /* MockedCotterClient.swift */; }; + 857B643D258B5532001C5AC2 /* ResetPINViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63A5258B5530001C5AC2 /* ResetPINViewController.swift */; }; + 857B643E258B5532001C5AC2 /* PINFinalViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63A6258B5530001C5AC2 /* PINFinalViewController.swift */; }; + 857B643F258B5532001C5AC2 /* PINViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63A7258B5530001C5AC2 /* PINViewController.swift */; }; + 857B6440258B5532001C5AC2 /* PINConfirmViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63A8258B5530001C5AC2 /* PINConfirmViewController.swift */; }; + 857B6441258B5532001C5AC2 /* TrustedDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63AA258B5530001C5AC2 /* TrustedDevice.swift */; }; + 857B6442258B5532001C5AC2 /* PINBaseController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63AC258B5530001C5AC2 /* PINBaseController.swift */; }; + 857B6443258B5532001C5AC2 /* Cotter.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 857B63AE258B5530001C5AC2 /* Cotter.storyboard */; }; + 857B6444258B5532001C5AC2 /* cotter.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 857B63AF258B5530001C5AC2 /* cotter.xcassets */; }; + 857B6445258B5532001C5AC2 /* UpdateProfile.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 857B63B0258B5530001C5AC2 /* UpdateProfile.storyboard */; }; + 857B6446258B5532001C5AC2 /* Transaction.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 857B63B1258B5530001C5AC2 /* Transaction.storyboard */; }; + 857B6447258B5532001C5AC2 /* KeyboardView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 857B63B2258B5530001C5AC2 /* KeyboardView.xib */; }; + 857B6448258B5532001C5AC2 /* warning.png in Resources */ = {isa = PBXBuildFile; fileRef = 857B63B4258B5530001C5AC2 /* warning.png */; }; + 857B6449258B5532001C5AC2 /* cotter_logo.png in Resources */ = {isa = PBXBuildFile; fileRef = 857B63B5258B5530001C5AC2 /* cotter_logo.png */; }; + 857B644A258B5532001C5AC2 /* tap_device.png in Resources */ = {isa = PBXBuildFile; fileRef = 857B63B6258B5530001C5AC2 /* tap_device.png */; }; + 857B644B258B5532001C5AC2 /* cotter-fingerprint.png in Resources */ = {isa = PBXBuildFile; fileRef = 857B63B7258B5530001C5AC2 /* cotter-fingerprint.png */; }; + 857B644C258B5532001C5AC2 /* cotter-failure-x.png in Resources */ = {isa = PBXBuildFile; fileRef = 857B63B8258B5530001C5AC2 /* cotter-failure-x.png */; }; + 857B644D258B5532001C5AC2 /* cotter-fingerprint-failed.png in Resources */ = {isa = PBXBuildFile; fileRef = 857B63B9258B5530001C5AC2 /* cotter-fingerprint-failed.png */; }; + 857B644E258B5532001C5AC2 /* cotter-lapis-logo.png in Resources */ = {isa = PBXBuildFile; fileRef = 857B63BA258B5530001C5AC2 /* cotter-lapis-logo.png */; }; + 857B644F258B5532001C5AC2 /* cotter-success-check.png in Resources */ = {isa = PBXBuildFile; fileRef = 857B63BB258B5530001C5AC2 /* cotter-success-check.png */; }; + 857B6450258B5532001C5AC2 /* UIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63BD258B5530001C5AC2 /* UIView.swift */; }; + 857B6451258B5532001C5AC2 /* Collection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63BE258B5530001C5AC2 /* Collection.swift */; }; + 857B6452258B5532001C5AC2 /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63BF258B5530001C5AC2 /* UIColor.swift */; }; + 857B6453258B5532001C5AC2 /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63C0258B5530001C5AC2 /* String.swift */; }; + 857B6454258B5532001C5AC2 /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63C1258B5530001C5AC2 /* UIImage.swift */; }; + 857B6455258B5532001C5AC2 /* UIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63C2258B5530001C5AC2 /* UIViewController.swift */; }; + 857B6456258B5532001C5AC2 /* UIWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63C3258B5530001C5AC2 /* UIWindow.swift */; }; + 857B6457258B5532001C5AC2 /* UIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63C4258B5530001C5AC2 /* UIImageView.swift */; }; + 857B6458258B5532001C5AC2 /* UINavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63C5258B5530001C5AC2 /* UINavigationController.swift */; }; + 857B6459258B5532001C5AC2 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63C7258B5530001C5AC2 /* Constants.swift */; }; + 857B645A258B5532001C5AC2 /* CotterJWT.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63C8258B5530001C5AC2 /* CotterJWT.swift */; }; + 857B645B258B5532001C5AC2 /* Callback.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63C9258B5530001C5AC2 /* Callback.swift */; }; + 857B645C258B5532001C5AC2 /* Cotter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63CA258B5530001C5AC2 /* Cotter.swift */; }; + 857B645D258B5532001C5AC2 /* CotterImages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63CC258B5530001C5AC2 /* CotterImages.swift */; }; + 857B645E258B5532001C5AC2 /* CotterStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63CD258B5530001C5AC2 /* CotterStrings.swift */; }; + 857B645F258B5532001C5AC2 /* Default.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63CF258B5530001C5AC2 /* Default.swift */; }; + 857B6460258B5532001C5AC2 /* FontObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63D0258B5530001C5AC2 /* FontObject.swift */; }; + 857B6461258B5532001C5AC2 /* ErrorMessages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63D1258B5530001C5AC2 /* ErrorMessages.swift */; }; + 857B6462258B5532001C5AC2 /* Config.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63D2258B5530001C5AC2 /* Config.swift */; }; + 857B6463258B5532001C5AC2 /* UserInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63D4258B5530001C5AC2 /* UserInfo.swift */; }; + 857B6464258B5532001C5AC2 /* ImageKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63D6258B5530001C5AC2 /* ImageKey.swift */; }; + 857B6465258B5532001C5AC2 /* ImageObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63D7258B5530001C5AC2 /* ImageObject.swift */; }; + 857B6466258B5532001C5AC2 /* CotterError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63D9258B5530001C5AC2 /* CotterError.swift */; }; + 857B6467258B5532001C5AC2 /* PinStepEnums.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63DA258B5530001C5AC2 /* PinStepEnums.swift */; }; + 857B6468258B5532001C5AC2 /* LanguageObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63DC258B5530001C5AC2 /* LanguageObject.swift */; }; + 857B6469258B5532001C5AC2 /* English.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63DD258B5530001C5AC2 /* English.swift */; }; + 857B646A258B5532001C5AC2 /* Indonesian.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63DE258B5530001C5AC2 /* Indonesian.swift */; }; + 857B646B258B5532001C5AC2 /* ColorSchemeObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63E0258B5530001C5AC2 /* ColorSchemeObject.swift */; }; + 857B646C258B5532001C5AC2 /* TransactionPINViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63E1258B5531001C5AC2 /* TransactionPINViewController.swift */; }; + 857B646D258B5532001C5AC2 /* Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63E3258B5531001C5AC2 /* Protocols.swift */; }; + 857B646E258B5532001C5AC2 /* UserKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63E5258B5531001C5AC2 /* UserKey.swift */; }; + 857B646F258B5532001C5AC2 /* ViewControllerClassNames.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63E6258B5531001C5AC2 /* ViewControllerClassNames.swift */; }; + 857B6470258B5532001C5AC2 /* AuthMethod.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63E7258B5531001C5AC2 /* AuthMethod.swift */; }; + 857B6471258B5532001C5AC2 /* CotterTokens.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63E8258B5531001C5AC2 /* CotterTokens.swift */; }; + 857B6472258B5532001C5AC2 /* ResetNewPINViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63E9258B5531001C5AC2 /* ResetNewPINViewController.swift */; }; + 857B6473258B5532001C5AC2 /* CotterNavigationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63EB258B5531001C5AC2 /* CotterNavigationViewController.swift */; }; + 857B6474258B5532001C5AC2 /* BasicButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63EC258B5531001C5AC2 /* BasicButton.swift */; }; + 857B6475258B5532001C5AC2 /* BottomPopupModal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63ED258B5531001C5AC2 /* BottomPopupModal.swift */; }; + 857B6476258B5532001C5AC2 /* CrossButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63EE258B5531001C5AC2 /* CrossButton.swift */; }; + 857B6477258B5532001C5AC2 /* MockedAPIService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63EF258B5531001C5AC2 /* MockedAPIService.swift */; }; + 857B6478258B5532001C5AC2 /* AutoEquatable.generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63F1258B5531001C5AC2 /* AutoEquatable.generated.swift */; }; + 857B6479258B5532001C5AC2 /* MockedAPIClient.generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63F2258B5531001C5AC2 /* MockedAPIClient.generated.swift */; }; + 857B647A258B5532001C5AC2 /* HTTPCallback.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63F4258B5531001C5AC2 /* HTTPCallback.swift */; }; + 857B647B258B5532001C5AC2 /* CotterClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63F5258B5531001C5AC2 /* CotterClient.swift */; }; + 857B647C258B5532001C5AC2 /* CotterAPIService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63F6258B5531001C5AC2 /* CotterAPIService.swift */; }; + 857B647D258B5532001C5AC2 /* Identity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63F8258B5531001C5AC2 /* Identity.swift */; }; + 857B647E258B5532001C5AC2 /* Event.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63FA258B5531001C5AC2 /* Event.swift */; }; + 857B647F258B5532001C5AC2 /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63FB258B5531001C5AC2 /* User.swift */; }; + 857B6480258B5532001C5AC2 /* EnrolledMethods.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63FC258B5531001C5AC2 /* EnrolledMethods.swift */; }; + 857B6481258B5532001C5AC2 /* NotificationCredential.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63FD258B5531001C5AC2 /* NotificationCredential.swift */; }; + 857B6482258B5532001C5AC2 /* OAuthToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63FE258B5531001C5AC2 /* OAuthToken.swift */; }; + 857B6483258B5532001C5AC2 /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B63FF258B5531001C5AC2 /* Response.swift */; }; + 857B6484258B5532001C5AC2 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6400258B5531001C5AC2 /* Request.swift */; }; + 857B6485258B5533001C5AC2 /* RegisterBiometric.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6403258B5531001C5AC2 /* RegisterBiometric.swift */; }; + 857B6486258B5533001C5AC2 /* RequestToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6404258B5531001C5AC2 /* RequestToken.swift */; }; + 857B6487258B5533001C5AC2 /* CreateAuthenticationEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6405258B5531001C5AC2 /* CreateAuthenticationEvent.swift */; }; + 857B6488258B5533001C5AC2 /* RespondEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6406258B5531001C5AC2 /* RespondEvent.swift */; }; + 857B6489258B5533001C5AC2 /* GetBiometricStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6407258B5531001C5AC2 /* GetBiometricStatus.swift */; }; + 857B648A258B5533001C5AC2 /* UpdateUserPIN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6408258B5531001C5AC2 /* UpdateUserPIN.swift */; }; + 857B648B258B5533001C5AC2 /* UpdateBiometricStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6409258B5531001C5AC2 /* UpdateBiometricStatus.swift */; }; + 857B648C258B5533001C5AC2 /* GetUser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B640A258B5531001C5AC2 /* GetUser.swift */; }; + 857B648D258B5533001C5AC2 /* RequestPINReset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B640B258B5531001C5AC2 /* RequestPINReset.swift */; }; + 857B648E258B5533001C5AC2 /* GetEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B640C258B5531001C5AC2 /* GetEvent.swift */; }; + 857B648F258B5533001C5AC2 /* RemoveTrustedDeviceStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B640D258B5531001C5AC2 /* RemoveTrustedDeviceStatus.swift */; }; + 857B6490258B5533001C5AC2 /* GetTrustedDeviceEnrolledAny.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B640E258B5531001C5AC2 /* GetTrustedDeviceEnrolledAny.swift */; }; + 857B6491258B5533001C5AC2 /* RegisterUser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B640F258B5531001C5AC2 /* RegisterUser.swift */; }; + 857B6492258B5533001C5AC2 /* ResetPIN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6410258B5531001C5AC2 /* ResetPIN.swift */; }; + 857B6493258B5533001C5AC2 /* CreatePendingEventRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6411258B5531001C5AC2 /* CreatePendingEventRequest.swift */; }; + 857B6494258B5533001C5AC2 /* EnrollTrustedDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6412258B5531001C5AC2 /* EnrollTrustedDevice.swift */; }; + 857B6495258B5533001C5AC2 /* GetNewEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6413258B5531001C5AC2 /* GetNewEvent.swift */; }; + 857B6496258B5533001C5AC2 /* VerifyPINResetCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6414258B5531001C5AC2 /* VerifyPINResetCode.swift */; }; + 857B6497258B5533001C5AC2 /* RefreshToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6415258B5531001C5AC2 /* RefreshToken.swift */; }; + 857B6498258B5533001C5AC2 /* EnrollUserPIN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6416258B5531001C5AC2 /* EnrollUserPIN.swift */; }; + 857B6499258B5533001C5AC2 /* GetNotificationAppID.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6417258B5531001C5AC2 /* GetNotificationAppID.swift */; }; + 857B649A258B5533001C5AC2 /* GetTrustedDeviceStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6418258B5531001C5AC2 /* GetTrustedDeviceStatus.swift */; }; + 857B649B258B5533001C5AC2 /* APIServiceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6419258B5531001C5AC2 /* APIServiceProtocol.swift */; }; + 857B649C258B5533001C5AC2 /* AutoEquatable.stencil in Resources */ = {isa = PBXBuildFile; fileRef = 857B641B258B5531001C5AC2 /* AutoEquatable.stencil */; }; + 857B649D258B5533001C5AC2 /* MockedAPIClient.stencil in Resources */ = {isa = PBXBuildFile; fileRef = 857B641C258B5531001C5AC2 /* MockedAPIClient.stencil */; }; + 857B649E258B5533001C5AC2 /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B641E258B5531001C5AC2 /* Image.swift */; }; + 857B649F258B5533001C5AC2 /* Token.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B641F258B5531001C5AC2 /* Token.swift */; }; + 857B64A0258B5533001C5AC2 /* CrossApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6421258B5532001C5AC2 /* CrossApp.swift */; }; + 857B64A1258B5533001C5AC2 /* TrustedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6423258B5532001C5AC2 /* TrustedViewController.swift */; }; + 857B64A2258B5533001C5AC2 /* RegisterTrustedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6424258B5532001C5AC2 /* RegisterTrustedViewController.swift */; }; + 857B64A3258B5533001C5AC2 /* QRScannerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6425258B5532001C5AC2 /* QRScannerViewController.swift */; }; + 857B64A4258B5533001C5AC2 /* NonTrusted.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6426258B5532001C5AC2 /* NonTrusted.swift */; }; + 857B64A5258B5533001C5AC2 /* Passwordless.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6427258B5532001C5AC2 /* Passwordless.swift */; }; + 857B64A6258B5533001C5AC2 /* ResetConfirmPINViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6428258B5532001C5AC2 /* ResetConfirmPINViewController.swift */; }; + 857B64A7258B5533001C5AC2 /* UpdateConfirmNewPINViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6429258B5532001C5AC2 /* UpdateConfirmNewPINViewController.swift */; }; + 857B64A8258B5533001C5AC2 /* UpdateCreateNewPINViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B642A258B5532001C5AC2 /* UpdateCreateNewPINViewController.swift */; }; + 857B64A9258B5533001C5AC2 /* LoadingScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B642B258B5532001C5AC2 /* LoadingScreen.swift */; }; + 857B64AA258B5533001C5AC2 /* ResetCodeTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B642D258B5532001C5AC2 /* ResetCodeTextField.swift */; }; + 857B64AB258B5533001C5AC2 /* OneTimeCodeTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B642E258B5532001C5AC2 /* OneTimeCodeTextField.swift */; }; + 857B64AC258B5533001C5AC2 /* KeyboardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6430258B5532001C5AC2 /* KeyboardView.swift */; }; + 857B64AD258B5533001C5AC2 /* UIExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6431258B5532001C5AC2 /* UIExtensions.swift */; }; + 857B64AE258B5533001C5AC2 /* BiometricAuthenticationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6433258B5532001C5AC2 /* BiometricAuthenticationService.swift */; }; + 857B64AF258B5533001C5AC2 /* AuthAlertMessages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6434258B5532001C5AC2 /* AuthAlertMessages.swift */; }; + 857B64B0258B5533001C5AC2 /* LocalAuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6435258B5532001C5AC2 /* LocalAuthService.swift */; }; + 857B64B1258B5533001C5AC2 /* BiometricRegistrationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6436258B5532001C5AC2 /* BiometricRegistrationService.swift */; }; + 857B64B2258B5533001C5AC2 /* UpdatePINViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6437258B5532001C5AC2 /* UpdatePINViewController.swift */; }; + 857B64B3258B5533001C5AC2 /* KeyStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6439258B5532001C5AC2 /* KeyStore.swift */; }; + 857B64B4258B5533001C5AC2 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B643A258B5532001C5AC2 /* Utils.swift */; }; + 857B64B5258B5533001C5AC2 /* PKCE.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B643B258B5532001C5AC2 /* PKCE.swift */; }; + 857B64D9258B5E44001C5AC2 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 857B64C6258B5CC5001C5AC2 /* UIKit.framework */; }; + 857B64DF258B6071001C5AC2 /* Cotter.podspec in Resources */ = {isa = PBXBuildFile; fileRef = 857B64DC258B6071001C5AC2 /* Cotter.podspec */; }; + 857B64E0258B6071001C5AC2 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 857B64DD258B6071001C5AC2 /* LICENSE */; }; + 857B64E1258B6071001C5AC2 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 857B64DE258B6071001C5AC2 /* README.md */; }; + 859D2F3E258C66E6001C24BF /* CotterImagesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 859D2F2C258C66E6001C24BF /* CotterImagesTests.swift */; }; + 859D2F3F258C66E6001C24BF /* ImageObjectTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 859D2F2D258C66E6001C24BF /* ImageObjectTests.swift */; }; + 859D2F40258C66E6001C24BF /* UserInfoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 859D2F2E258C66E6001C24BF /* UserInfoTests.swift */; }; + 859D2F41258C66E6001C24BF /* CotterStringsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 859D2F2F258C66E6001C24BF /* CotterStringsTests.swift */; }; + 859D2F42258C66E6001C24BF /* LanguageObjectTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 859D2F30258C66E6001C24BF /* LanguageObjectTests.swift */; }; + 859D2F43258C66E6001C24BF /* APIClientTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 859D2F32258C66E6001C24BF /* APIClientTests.swift */; }; + 859D2F44258C66E6001C24BF /* APIServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 859D2F33258C66E6001C24BF /* APIServiceTests.swift */; }; + E822E0CC681374BB1DA7CD11 /* Pods_Cotter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90EA875A33DABC96E6AA6398 /* Pods_Cotter.framework */; }; + F7F3D077D032341EF002D746 /* Pods_CotterTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 335E4184CE258890CB46EF5A /* Pods_CotterTests.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 859D2FFB258C7900001C24BF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 857B634F258B5292001C5AC2 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 857B6357258B5292001C5AC2; + remoteInfo = Cotter; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 335E4184CE258890CB46EF5A /* Pods_CotterTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CotterTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 857B6358258B5292001C5AC2 /* Cotter.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Cotter.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 857B635B258B5292001C5AC2 /* Cotter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Cotter.h; sourceTree = ""; }; + 857B635C258B5292001C5AC2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 857B6375258B5394001C5AC2 /* AlertService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AlertService.swift; sourceTree = ""; }; + 857B6376258B5394001C5AC2 /* BiometricRegistrationFailPopup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BiometricRegistrationFailPopup.swift; sourceTree = ""; }; + 857B6377258B5394001C5AC2 /* BiometricFailPopup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BiometricFailPopup.swift; sourceTree = ""; }; + 857B6378258B5394001C5AC2 /* BiometricSuccessPopup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BiometricSuccessPopup.swift; sourceTree = ""; }; + 857B637E258B53BA001C5AC2 /* PINBaseController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PINBaseController.swift; path = Base/PINBaseController.swift; sourceTree = ""; }; + 857B6385258B54B6001C5AC2 /* Cotter.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Cotter.storyboard; sourceTree = ""; }; + 857B6386258B54B6001C5AC2 /* KeyboardView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KeyboardView.xib; sourceTree = ""; }; + 857B6388258B54B6001C5AC2 /* warning.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = warning.png; sourceTree = ""; }; + 857B6389258B54B6001C5AC2 /* cotter_logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cotter_logo.png; sourceTree = ""; }; + 857B638A258B54B6001C5AC2 /* tap_device.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tap_device.png; sourceTree = ""; }; + 857B638B258B54B6001C5AC2 /* cotter-fingerprint.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cotter-fingerprint.png"; sourceTree = ""; }; + 857B638C258B54B6001C5AC2 /* cotter-failure-x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cotter-failure-x.png"; sourceTree = ""; }; + 857B638D258B54B6001C5AC2 /* cotter-fingerprint-failed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cotter-fingerprint-failed.png"; sourceTree = ""; }; + 857B638E258B54B6001C5AC2 /* cotter-lapis-logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cotter-lapis-logo.png"; sourceTree = ""; }; + 857B638F258B54B6001C5AC2 /* cotter-success-check.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cotter-success-check.png"; sourceTree = ""; }; + 857B6390258B54B6001C5AC2 /* cotter.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = cotter.xcassets; sourceTree = ""; }; + 857B6391258B54B6001C5AC2 /* Transaction.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Transaction.storyboard; sourceTree = ""; }; + 857B6392258B54B6001C5AC2 /* UpdateProfile.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = UpdateProfile.storyboard; sourceTree = ""; }; + 857B63A4258B552F001C5AC2 /* MockedCotterClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockedCotterClient.swift; sourceTree = ""; }; + 857B63A5258B5530001C5AC2 /* ResetPINViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResetPINViewController.swift; sourceTree = ""; }; + 857B63A6258B5530001C5AC2 /* PINFinalViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PINFinalViewController.swift; sourceTree = ""; }; + 857B63A7258B5530001C5AC2 /* PINViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PINViewController.swift; sourceTree = ""; }; + 857B63A8258B5530001C5AC2 /* PINConfirmViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PINConfirmViewController.swift; sourceTree = ""; }; + 857B63AA258B5530001C5AC2 /* TrustedDevice.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TrustedDevice.swift; sourceTree = ""; }; + 857B63AC258B5530001C5AC2 /* PINBaseController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PINBaseController.swift; sourceTree = ""; }; + 857B63AE258B5530001C5AC2 /* Cotter.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Cotter.storyboard; sourceTree = ""; }; + 857B63AF258B5530001C5AC2 /* cotter.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = cotter.xcassets; sourceTree = ""; }; + 857B63B0258B5530001C5AC2 /* UpdateProfile.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = UpdateProfile.storyboard; sourceTree = ""; }; + 857B63B1258B5530001C5AC2 /* Transaction.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Transaction.storyboard; sourceTree = ""; }; + 857B63B2258B5530001C5AC2 /* KeyboardView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KeyboardView.xib; sourceTree = ""; }; + 857B63B4258B5530001C5AC2 /* warning.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = warning.png; sourceTree = ""; }; + 857B63B5258B5530001C5AC2 /* cotter_logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cotter_logo.png; sourceTree = ""; }; + 857B63B6258B5530001C5AC2 /* tap_device.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tap_device.png; sourceTree = ""; }; + 857B63B7258B5530001C5AC2 /* cotter-fingerprint.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cotter-fingerprint.png"; sourceTree = ""; }; + 857B63B8258B5530001C5AC2 /* cotter-failure-x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cotter-failure-x.png"; sourceTree = ""; }; + 857B63B9258B5530001C5AC2 /* cotter-fingerprint-failed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cotter-fingerprint-failed.png"; sourceTree = ""; }; + 857B63BA258B5530001C5AC2 /* cotter-lapis-logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cotter-lapis-logo.png"; sourceTree = ""; }; + 857B63BB258B5530001C5AC2 /* cotter-success-check.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cotter-success-check.png"; sourceTree = ""; }; + 857B63BD258B5530001C5AC2 /* UIView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIView.swift; sourceTree = ""; }; + 857B63BE258B5530001C5AC2 /* Collection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Collection.swift; sourceTree = ""; }; + 857B63BF258B5530001C5AC2 /* UIColor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIColor.swift; sourceTree = ""; }; + 857B63C0258B5530001C5AC2 /* String.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = String.swift; sourceTree = ""; }; + 857B63C1258B5530001C5AC2 /* UIImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIImage.swift; sourceTree = ""; }; + 857B63C2258B5530001C5AC2 /* UIViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIViewController.swift; sourceTree = ""; }; + 857B63C3258B5530001C5AC2 /* UIWindow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIWindow.swift; sourceTree = ""; }; + 857B63C4258B5530001C5AC2 /* UIImageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIImageView.swift; sourceTree = ""; }; + 857B63C5258B5530001C5AC2 /* UINavigationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UINavigationController.swift; sourceTree = ""; }; + 857B63C7258B5530001C5AC2 /* Constants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; + 857B63C8258B5530001C5AC2 /* CotterJWT.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CotterJWT.swift; sourceTree = ""; }; + 857B63C9258B5530001C5AC2 /* Callback.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Callback.swift; sourceTree = ""; }; + 857B63CA258B5530001C5AC2 /* Cotter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Cotter.swift; sourceTree = ""; }; + 857B63CC258B5530001C5AC2 /* CotterImages.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CotterImages.swift; sourceTree = ""; }; + 857B63CD258B5530001C5AC2 /* CotterStrings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CotterStrings.swift; sourceTree = ""; }; + 857B63CF258B5530001C5AC2 /* Default.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Default.swift; sourceTree = ""; }; + 857B63D0258B5530001C5AC2 /* FontObject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FontObject.swift; sourceTree = ""; }; + 857B63D1258B5530001C5AC2 /* ErrorMessages.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ErrorMessages.swift; sourceTree = ""; }; + 857B63D2258B5530001C5AC2 /* Config.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Config.swift; sourceTree = ""; }; + 857B63D4258B5530001C5AC2 /* UserInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserInfo.swift; sourceTree = ""; }; + 857B63D6258B5530001C5AC2 /* ImageKey.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageKey.swift; sourceTree = ""; }; + 857B63D7258B5530001C5AC2 /* ImageObject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageObject.swift; sourceTree = ""; }; + 857B63D9258B5530001C5AC2 /* CotterError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CotterError.swift; sourceTree = ""; }; + 857B63DA258B5530001C5AC2 /* PinStepEnums.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PinStepEnums.swift; sourceTree = ""; }; + 857B63DC258B5530001C5AC2 /* LanguageObject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LanguageObject.swift; sourceTree = ""; }; + 857B63DD258B5530001C5AC2 /* English.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = English.swift; sourceTree = ""; }; + 857B63DE258B5530001C5AC2 /* Indonesian.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Indonesian.swift; sourceTree = ""; }; + 857B63E0258B5530001C5AC2 /* ColorSchemeObject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ColorSchemeObject.swift; sourceTree = ""; }; + 857B63E1258B5531001C5AC2 /* TransactionPINViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransactionPINViewController.swift; sourceTree = ""; }; + 857B63E3258B5531001C5AC2 /* Protocols.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Protocols.swift; sourceTree = ""; }; + 857B63E5258B5531001C5AC2 /* UserKey.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserKey.swift; sourceTree = ""; }; + 857B63E6258B5531001C5AC2 /* ViewControllerClassNames.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewControllerClassNames.swift; sourceTree = ""; }; + 857B63E7258B5531001C5AC2 /* AuthMethod.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthMethod.swift; sourceTree = ""; }; + 857B63E8258B5531001C5AC2 /* CotterTokens.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CotterTokens.swift; sourceTree = ""; }; + 857B63E9258B5531001C5AC2 /* ResetNewPINViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResetNewPINViewController.swift; sourceTree = ""; }; + 857B63EB258B5531001C5AC2 /* CotterNavigationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CotterNavigationViewController.swift; sourceTree = ""; }; + 857B63EC258B5531001C5AC2 /* BasicButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BasicButton.swift; sourceTree = ""; }; + 857B63ED258B5531001C5AC2 /* BottomPopupModal.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BottomPopupModal.swift; sourceTree = ""; }; + 857B63EE258B5531001C5AC2 /* CrossButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CrossButton.swift; sourceTree = ""; }; + 857B63EF258B5531001C5AC2 /* MockedAPIService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockedAPIService.swift; sourceTree = ""; }; + 857B63F1258B5531001C5AC2 /* AutoEquatable.generated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoEquatable.generated.swift; sourceTree = ""; }; + 857B63F2258B5531001C5AC2 /* MockedAPIClient.generated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockedAPIClient.generated.swift; sourceTree = ""; }; + 857B63F4258B5531001C5AC2 /* HTTPCallback.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPCallback.swift; sourceTree = ""; }; + 857B63F5258B5531001C5AC2 /* CotterClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CotterClient.swift; sourceTree = ""; }; + 857B63F6258B5531001C5AC2 /* CotterAPIService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CotterAPIService.swift; sourceTree = ""; }; + 857B63F8258B5531001C5AC2 /* Identity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Identity.swift; sourceTree = ""; }; + 857B63FA258B5531001C5AC2 /* Event.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Event.swift; sourceTree = ""; }; + 857B63FB258B5531001C5AC2 /* User.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = ""; }; + 857B63FC258B5531001C5AC2 /* EnrolledMethods.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnrolledMethods.swift; sourceTree = ""; }; + 857B63FD258B5531001C5AC2 /* NotificationCredential.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationCredential.swift; sourceTree = ""; }; + 857B63FE258B5531001C5AC2 /* OAuthToken.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OAuthToken.swift; sourceTree = ""; }; + 857B63FF258B5531001C5AC2 /* Response.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Response.swift; sourceTree = ""; }; + 857B6400258B5531001C5AC2 /* Request.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Request.swift; sourceTree = ""; }; + 857B6403258B5531001C5AC2 /* RegisterBiometric.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RegisterBiometric.swift; sourceTree = ""; }; + 857B6404258B5531001C5AC2 /* RequestToken.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestToken.swift; sourceTree = ""; }; + 857B6405258B5531001C5AC2 /* CreateAuthenticationEvent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreateAuthenticationEvent.swift; sourceTree = ""; }; + 857B6406258B5531001C5AC2 /* RespondEvent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RespondEvent.swift; sourceTree = ""; }; + 857B6407258B5531001C5AC2 /* GetBiometricStatus.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GetBiometricStatus.swift; sourceTree = ""; }; + 857B6408258B5531001C5AC2 /* UpdateUserPIN.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdateUserPIN.swift; sourceTree = ""; }; + 857B6409258B5531001C5AC2 /* UpdateBiometricStatus.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdateBiometricStatus.swift; sourceTree = ""; }; + 857B640A258B5531001C5AC2 /* GetUser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GetUser.swift; sourceTree = ""; }; + 857B640B258B5531001C5AC2 /* RequestPINReset.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestPINReset.swift; sourceTree = ""; }; + 857B640C258B5531001C5AC2 /* GetEvent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GetEvent.swift; sourceTree = ""; }; + 857B640D258B5531001C5AC2 /* RemoveTrustedDeviceStatus.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RemoveTrustedDeviceStatus.swift; sourceTree = ""; }; + 857B640E258B5531001C5AC2 /* GetTrustedDeviceEnrolledAny.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GetTrustedDeviceEnrolledAny.swift; sourceTree = ""; }; + 857B640F258B5531001C5AC2 /* RegisterUser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RegisterUser.swift; sourceTree = ""; }; + 857B6410258B5531001C5AC2 /* ResetPIN.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResetPIN.swift; sourceTree = ""; }; + 857B6411258B5531001C5AC2 /* CreatePendingEventRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreatePendingEventRequest.swift; sourceTree = ""; }; + 857B6412258B5531001C5AC2 /* EnrollTrustedDevice.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnrollTrustedDevice.swift; sourceTree = ""; }; + 857B6413258B5531001C5AC2 /* GetNewEvent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GetNewEvent.swift; sourceTree = ""; }; + 857B6414258B5531001C5AC2 /* VerifyPINResetCode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VerifyPINResetCode.swift; sourceTree = ""; }; + 857B6415258B5531001C5AC2 /* RefreshToken.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RefreshToken.swift; sourceTree = ""; }; + 857B6416258B5531001C5AC2 /* EnrollUserPIN.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnrollUserPIN.swift; sourceTree = ""; }; + 857B6417258B5531001C5AC2 /* GetNotificationAppID.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GetNotificationAppID.swift; sourceTree = ""; }; + 857B6418258B5531001C5AC2 /* GetTrustedDeviceStatus.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GetTrustedDeviceStatus.swift; sourceTree = ""; }; + 857B6419258B5531001C5AC2 /* APIServiceProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = APIServiceProtocol.swift; sourceTree = ""; }; + 857B641B258B5531001C5AC2 /* AutoEquatable.stencil */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AutoEquatable.stencil; sourceTree = ""; }; + 857B641C258B5531001C5AC2 /* MockedAPIClient.stencil */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MockedAPIClient.stencil; sourceTree = ""; }; + 857B641E258B5531001C5AC2 /* Image.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Image.swift; sourceTree = ""; }; + 857B641F258B5531001C5AC2 /* Token.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Token.swift; sourceTree = ""; }; + 857B6421258B5532001C5AC2 /* CrossApp.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CrossApp.swift; sourceTree = ""; }; + 857B6423258B5532001C5AC2 /* TrustedViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TrustedViewController.swift; sourceTree = ""; }; + 857B6424258B5532001C5AC2 /* RegisterTrustedViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RegisterTrustedViewController.swift; sourceTree = ""; }; + 857B6425258B5532001C5AC2 /* QRScannerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QRScannerViewController.swift; sourceTree = ""; }; + 857B6426258B5532001C5AC2 /* NonTrusted.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NonTrusted.swift; sourceTree = ""; }; + 857B6427258B5532001C5AC2 /* Passwordless.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Passwordless.swift; sourceTree = ""; }; + 857B6428258B5532001C5AC2 /* ResetConfirmPINViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResetConfirmPINViewController.swift; sourceTree = ""; }; + 857B6429258B5532001C5AC2 /* UpdateConfirmNewPINViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdateConfirmNewPINViewController.swift; sourceTree = ""; }; + 857B642A258B5532001C5AC2 /* UpdateCreateNewPINViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdateCreateNewPINViewController.swift; sourceTree = ""; }; + 857B642B258B5532001C5AC2 /* LoadingScreen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoadingScreen.swift; sourceTree = ""; }; + 857B642D258B5532001C5AC2 /* ResetCodeTextField.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResetCodeTextField.swift; sourceTree = ""; }; + 857B642E258B5532001C5AC2 /* OneTimeCodeTextField.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OneTimeCodeTextField.swift; sourceTree = ""; }; + 857B6430258B5532001C5AC2 /* KeyboardView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyboardView.swift; sourceTree = ""; }; + 857B6431258B5532001C5AC2 /* UIExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIExtensions.swift; sourceTree = ""; }; + 857B6433258B5532001C5AC2 /* BiometricAuthenticationService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BiometricAuthenticationService.swift; sourceTree = ""; }; + 857B6434258B5532001C5AC2 /* AuthAlertMessages.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthAlertMessages.swift; sourceTree = ""; }; + 857B6435258B5532001C5AC2 /* LocalAuthService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalAuthService.swift; sourceTree = ""; }; + 857B6436258B5532001C5AC2 /* BiometricRegistrationService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BiometricRegistrationService.swift; sourceTree = ""; }; + 857B6437258B5532001C5AC2 /* UpdatePINViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdatePINViewController.swift; sourceTree = ""; }; + 857B6439258B5532001C5AC2 /* KeyStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyStore.swift; sourceTree = ""; }; + 857B643A258B5532001C5AC2 /* Utils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Utils.swift; sourceTree = ""; }; + 857B643B258B5532001C5AC2 /* PKCE.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PKCE.swift; sourceTree = ""; }; + 857B64C6258B5CC5001C5AC2 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/iOSSupport/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + 857B64DC258B6071001C5AC2 /* Cotter.podspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Cotter.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 857B64DD258B6071001C5AC2 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + 857B64DE258B6071001C5AC2 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + 859D2F0B258C6641001C24BF /* CotterTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CotterTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 859D2F0F258C6641001C24BF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 859D2F21258C66E6001C24BF /* PINFinalViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PINFinalViewControllerTests.swift; sourceTree = ""; }; + 859D2F22258C66E6001C24BF /* UpdateConfirmNewPINViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdateConfirmNewPINViewControllerTests.swift; sourceTree = ""; }; + 859D2F23258C66E6001C24BF /* PINConfirmViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PINConfirmViewControllerTests.swift; sourceTree = ""; }; + 859D2F24258C66E6001C24BF /* PINViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PINViewControllerTests.swift; sourceTree = ""; }; + 859D2F25258C66E6001C24BF /* UpdateCreateNewPINViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdateCreateNewPINViewControllerTests.swift; sourceTree = ""; }; + 859D2F26258C66E6001C24BF /* TransactionPINViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransactionPINViewControllerTests.swift; sourceTree = ""; }; + 859D2F27258C66E6001C24BF /* ResetNewPINViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResetNewPINViewControllerTests.swift; sourceTree = ""; }; + 859D2F28258C66E6001C24BF /* UpdatePINViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdatePINViewControllerTests.swift; sourceTree = ""; }; + 859D2F29258C66E6001C24BF /* ResetConfirmPINViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResetConfirmPINViewControllerTests.swift; sourceTree = ""; }; + 859D2F2A258C66E6001C24BF /* ResetPINViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResetPINViewControllerTests.swift; sourceTree = ""; }; + 859D2F2C258C66E6001C24BF /* CotterImagesTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CotterImagesTests.swift; sourceTree = ""; }; + 859D2F2D258C66E6001C24BF /* ImageObjectTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageObjectTests.swift; sourceTree = ""; }; + 859D2F2E258C66E6001C24BF /* UserInfoTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserInfoTests.swift; sourceTree = ""; }; + 859D2F2F258C66E6001C24BF /* CotterStringsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CotterStringsTests.swift; sourceTree = ""; }; + 859D2F30258C66E6001C24BF /* LanguageObjectTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LanguageObjectTests.swift; sourceTree = ""; }; + 859D2F32258C66E6001C24BF /* APIClientTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = APIClientTests.swift; sourceTree = ""; }; + 859D2F33258C66E6001C24BF /* APIServiceTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = APIServiceTests.swift; sourceTree = ""; }; + 90EA875A33DABC96E6AA6398 /* Pods_Cotter.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Cotter.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 917EEB8EE683793AF25F7313 /* Pods-CotterTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CotterTests.release.xcconfig"; path = "Target Support Files/Pods-CotterTests/Pods-CotterTests.release.xcconfig"; sourceTree = ""; }; + A9437F6F032C87E0300FA152 /* Pods-CotterTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CotterTests.debug.xcconfig"; path = "Target Support Files/Pods-CotterTests/Pods-CotterTests.debug.xcconfig"; sourceTree = ""; }; + E29BBF9DA830218601A75017 /* Pods-Cotter.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Cotter.release.xcconfig"; path = "Target Support Files/Pods-Cotter/Pods-Cotter.release.xcconfig"; sourceTree = ""; }; + FBB8B94448020C6BA8A4918E /* Pods-Cotter.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Cotter.debug.xcconfig"; path = "Target Support Files/Pods-Cotter/Pods-Cotter.debug.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 857B6355258B5292001C5AC2 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 857B64D9258B5E44001C5AC2 /* UIKit.framework in Frameworks */, + E822E0CC681374BB1DA7CD11 /* Pods_Cotter.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 859D2F08258C6641001C24BF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F7F3D077D032341EF002D746 /* Pods_CotterTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 15A072FCC5803888F4EFCEE6 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 857B64C6258B5CC5001C5AC2 /* UIKit.framework */, + 90EA875A33DABC96E6AA6398 /* Pods_Cotter.framework */, + 335E4184CE258890CB46EF5A /* Pods_CotterTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 7E0386B77E6BEA047D5DB29D /* Pods */ = { + isa = PBXGroup; + children = ( + FBB8B94448020C6BA8A4918E /* Pods-Cotter.debug.xcconfig */, + E29BBF9DA830218601A75017 /* Pods-Cotter.release.xcconfig */, + A9437F6F032C87E0300FA152 /* Pods-CotterTests.debug.xcconfig */, + 917EEB8EE683793AF25F7313 /* Pods-CotterTests.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + 857B634E258B5292001C5AC2 = { + isa = PBXGroup; + children = ( + 857B64DB258B6044001C5AC2 /* Podspec Metadata */, + 857B635A258B5292001C5AC2 /* Cotter */, + 859D2F0C258C6641001C24BF /* CotterTests */, + 857B6359258B5292001C5AC2 /* Products */, + 7E0386B77E6BEA047D5DB29D /* Pods */, + 15A072FCC5803888F4EFCEE6 /* Frameworks */, + ); + sourceTree = ""; + }; + 857B6359258B5292001C5AC2 /* Products */ = { + isa = PBXGroup; + children = ( + 857B6358258B5292001C5AC2 /* Cotter.framework */, + 859D2F0B258C6641001C24BF /* CotterTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 857B635A258B5292001C5AC2 /* Cotter */ = { + isa = PBXGroup; + children = ( + 857B63A3258B54F8001C5AC2 /* Supporting Files */, + 857B6383258B53F8001C5AC2 /* Resources */, + 857B6365258B531B001C5AC2 /* Source */, + 857B635B258B5292001C5AC2 /* Cotter.h */, + ); + path = Cotter; + sourceTree = ""; + }; + 857B6365258B531B001C5AC2 /* Source */ = { + isa = PBXGroup; + children = ( + 857B63CA258B5530001C5AC2 /* Cotter.swift */, + 857B642B258B5532001C5AC2 /* LoadingScreen.swift */, + 857B63EF258B5531001C5AC2 /* MockedAPIService.swift */, + 857B63A4258B552F001C5AC2 /* MockedCotterClient.swift */, + 857B637E258B53BA001C5AC2 /* PINBaseController.swift */, + 857B63A8258B5530001C5AC2 /* PINConfirmViewController.swift */, + 857B63A6258B5530001C5AC2 /* PINFinalViewController.swift */, + 857B63A7258B5530001C5AC2 /* PINViewController.swift */, + 857B6428258B5532001C5AC2 /* ResetConfirmPINViewController.swift */, + 857B63E9258B5531001C5AC2 /* ResetNewPINViewController.swift */, + 857B63A5258B5530001C5AC2 /* ResetPINViewController.swift */, + 857B63E1258B5531001C5AC2 /* TransactionPINViewController.swift */, + 857B6429258B5532001C5AC2 /* UpdateConfirmNewPINViewController.swift */, + 857B642A258B5532001C5AC2 /* UpdateCreateNewPINViewController.swift */, + 857B6437258B5532001C5AC2 /* UpdatePINViewController.swift */, + 857B6374258B5394001C5AC2 /* Alert */, + 857B63AB258B5530001C5AC2 /* Base */, + 857B63EA258B5531001C5AC2 /* Components */, + 857B63CB258B5530001C5AC2 /* Config */, + 857B6438258B5532001C5AC2 /* Crypto */, + 857B642C258B5532001C5AC2 /* Custom UI Fields */, + 857B63E4258B5531001C5AC2 /* Enum */, + 857B63BC258B5530001C5AC2 /* Extensions */, + 857B63F0258B5531001C5AC2 /* GeneratedCode */, + 857B6432258B5532001C5AC2 /* Local Auth */, + 857B63E2258B5531001C5AC2 /* Mocks */, + 857B63C6258B5530001C5AC2 /* Models */, + 857B6420258B5532001C5AC2 /* Passwordless */, + 857B63AD258B5530001C5AC2 /* Resources */, + 857B63F3258B5531001C5AC2 /* Service */, + 857B641A258B5531001C5AC2 /* SourceryTemplates */, + 857B63A9258B5530001C5AC2 /* TrustedDevice */, + 857B641D258B5531001C5AC2 /* Util */, + ); + name = Source; + sourceTree = ""; + }; + 857B6374258B5394001C5AC2 /* Alert */ = { + isa = PBXGroup; + children = ( + 857B6375258B5394001C5AC2 /* AlertService.swift */, + 857B6376258B5394001C5AC2 /* BiometricRegistrationFailPopup.swift */, + 857B6377258B5394001C5AC2 /* BiometricFailPopup.swift */, + 857B6378258B5394001C5AC2 /* BiometricSuccessPopup.swift */, + ); + path = Alert; + sourceTree = ""; + }; + 857B6383258B53F8001C5AC2 /* Resources */ = { + isa = PBXGroup; + children = ( + 857B6387258B54B6001C5AC2 /* Assets */, + 857B6385258B54B6001C5AC2 /* Cotter.storyboard */, + 857B6390258B54B6001C5AC2 /* cotter.xcassets */, + 857B6386258B54B6001C5AC2 /* KeyboardView.xib */, + 857B6391258B54B6001C5AC2 /* Transaction.storyboard */, + 857B6392258B54B6001C5AC2 /* UpdateProfile.storyboard */, + ); + path = Resources; + sourceTree = ""; + }; + 857B6387258B54B6001C5AC2 /* Assets */ = { + isa = PBXGroup; + children = ( + 857B6388258B54B6001C5AC2 /* warning.png */, + 857B6389258B54B6001C5AC2 /* cotter_logo.png */, + 857B638A258B54B6001C5AC2 /* tap_device.png */, + 857B638B258B54B6001C5AC2 /* cotter-fingerprint.png */, + 857B638C258B54B6001C5AC2 /* cotter-failure-x.png */, + 857B638D258B54B6001C5AC2 /* cotter-fingerprint-failed.png */, + 857B638E258B54B6001C5AC2 /* cotter-lapis-logo.png */, + 857B638F258B54B6001C5AC2 /* cotter-success-check.png */, + ); + path = Assets; + sourceTree = ""; + }; + 857B63A3258B54F8001C5AC2 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 857B635C258B5292001C5AC2 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 857B63A9258B5530001C5AC2 /* TrustedDevice */ = { + isa = PBXGroup; + children = ( + 857B63AA258B5530001C5AC2 /* TrustedDevice.swift */, + ); + path = TrustedDevice; + sourceTree = ""; + }; + 857B63AB258B5530001C5AC2 /* Base */ = { + isa = PBXGroup; + children = ( + 857B63AC258B5530001C5AC2 /* PINBaseController.swift */, + ); + path = Base; + sourceTree = ""; + }; + 857B63AD258B5530001C5AC2 /* Resources */ = { + isa = PBXGroup; + children = ( + 857B63AE258B5530001C5AC2 /* Cotter.storyboard */, + 857B63AF258B5530001C5AC2 /* cotter.xcassets */, + 857B63B0258B5530001C5AC2 /* UpdateProfile.storyboard */, + 857B63B1258B5530001C5AC2 /* Transaction.storyboard */, + 857B63B2258B5530001C5AC2 /* KeyboardView.xib */, + 857B63B3258B5530001C5AC2 /* Assets */, + ); + path = Resources; + sourceTree = ""; + }; + 857B63B3258B5530001C5AC2 /* Assets */ = { + isa = PBXGroup; + children = ( + 857B63B4258B5530001C5AC2 /* warning.png */, + 857B63B5258B5530001C5AC2 /* cotter_logo.png */, + 857B63B6258B5530001C5AC2 /* tap_device.png */, + 857B63B7258B5530001C5AC2 /* cotter-fingerprint.png */, + 857B63B8258B5530001C5AC2 /* cotter-failure-x.png */, + 857B63B9258B5530001C5AC2 /* cotter-fingerprint-failed.png */, + 857B63BA258B5530001C5AC2 /* cotter-lapis-logo.png */, + 857B63BB258B5530001C5AC2 /* cotter-success-check.png */, + ); + path = Assets; + sourceTree = ""; + }; + 857B63BC258B5530001C5AC2 /* Extensions */ = { + isa = PBXGroup; + children = ( + 857B63BD258B5530001C5AC2 /* UIView.swift */, + 857B63BE258B5530001C5AC2 /* Collection.swift */, + 857B63BF258B5530001C5AC2 /* UIColor.swift */, + 857B63C0258B5530001C5AC2 /* String.swift */, + 857B63C1258B5530001C5AC2 /* UIImage.swift */, + 857B63C2258B5530001C5AC2 /* UIViewController.swift */, + 857B63C3258B5530001C5AC2 /* UIWindow.swift */, + 857B63C4258B5530001C5AC2 /* UIImageView.swift */, + 857B63C5258B5530001C5AC2 /* UINavigationController.swift */, + ); + path = Extensions; + sourceTree = ""; + }; + 857B63C6258B5530001C5AC2 /* Models */ = { + isa = PBXGroup; + children = ( + 857B63C7258B5530001C5AC2 /* Constants.swift */, + 857B63C8258B5530001C5AC2 /* CotterJWT.swift */, + 857B63C9258B5530001C5AC2 /* Callback.swift */, + ); + path = Models; + sourceTree = ""; + }; + 857B63CB258B5530001C5AC2 /* Config */ = { + isa = PBXGroup; + children = ( + 857B63CC258B5530001C5AC2 /* CotterImages.swift */, + 857B63CD258B5530001C5AC2 /* CotterStrings.swift */, + 857B63CE258B5530001C5AC2 /* FontObject */, + 857B63D1258B5530001C5AC2 /* ErrorMessages.swift */, + 857B63D2258B5530001C5AC2 /* Config.swift */, + 857B63D3258B5530001C5AC2 /* Models */, + 857B63D5258B5530001C5AC2 /* ImageObject */, + 857B63D8258B5530001C5AC2 /* PasswordlessConfig */, + 857B63D9258B5530001C5AC2 /* CotterError.swift */, + 857B63DA258B5530001C5AC2 /* PinStepEnums.swift */, + 857B63DB258B5530001C5AC2 /* LanguageObject */, + 857B63DF258B5530001C5AC2 /* ColorSchemeObject */, + ); + path = Config; + sourceTree = ""; + }; + 857B63CE258B5530001C5AC2 /* FontObject */ = { + isa = PBXGroup; + children = ( + 857B63CF258B5530001C5AC2 /* Default.swift */, + 857B63D0258B5530001C5AC2 /* FontObject.swift */, + ); + path = FontObject; + sourceTree = ""; + }; + 857B63D3258B5530001C5AC2 /* Models */ = { + isa = PBXGroup; + children = ( + 857B63D4258B5530001C5AC2 /* UserInfo.swift */, + ); + path = Models; + sourceTree = ""; + }; + 857B63D5258B5530001C5AC2 /* ImageObject */ = { + isa = PBXGroup; + children = ( + 857B63D6258B5530001C5AC2 /* ImageKey.swift */, + 857B63D7258B5530001C5AC2 /* ImageObject.swift */, + ); + path = ImageObject; + sourceTree = ""; + }; + 857B63D8258B5530001C5AC2 /* PasswordlessConfig */ = { + isa = PBXGroup; + children = ( + ); + path = PasswordlessConfig; + sourceTree = ""; + }; + 857B63DB258B5530001C5AC2 /* LanguageObject */ = { + isa = PBXGroup; + children = ( + 857B63DC258B5530001C5AC2 /* LanguageObject.swift */, + 857B63DD258B5530001C5AC2 /* English.swift */, + 857B63DE258B5530001C5AC2 /* Indonesian.swift */, + ); + path = LanguageObject; + sourceTree = ""; + }; + 857B63DF258B5530001C5AC2 /* ColorSchemeObject */ = { + isa = PBXGroup; + children = ( + 857B63E0258B5530001C5AC2 /* ColorSchemeObject.swift */, + ); + path = ColorSchemeObject; + sourceTree = ""; + }; + 857B63E2258B5531001C5AC2 /* Mocks */ = { + isa = PBXGroup; + children = ( + 857B63E3258B5531001C5AC2 /* Protocols.swift */, + ); + path = Mocks; + sourceTree = ""; + }; + 857B63E4258B5531001C5AC2 /* Enum */ = { + isa = PBXGroup; + children = ( + 857B63E5258B5531001C5AC2 /* UserKey.swift */, + 857B63E6258B5531001C5AC2 /* ViewControllerClassNames.swift */, + 857B63E7258B5531001C5AC2 /* AuthMethod.swift */, + 857B63E8258B5531001C5AC2 /* CotterTokens.swift */, + ); + path = Enum; + sourceTree = ""; + }; + 857B63EA258B5531001C5AC2 /* Components */ = { + isa = PBXGroup; + children = ( + 857B63EB258B5531001C5AC2 /* CotterNavigationViewController.swift */, + 857B63EC258B5531001C5AC2 /* BasicButton.swift */, + 857B63ED258B5531001C5AC2 /* BottomPopupModal.swift */, + 857B63EE258B5531001C5AC2 /* CrossButton.swift */, + ); + path = Components; + sourceTree = ""; + }; + 857B63F0258B5531001C5AC2 /* GeneratedCode */ = { + isa = PBXGroup; + children = ( + 857B63F1258B5531001C5AC2 /* AutoEquatable.generated.swift */, + 857B63F2258B5531001C5AC2 /* MockedAPIClient.generated.swift */, + ); + path = GeneratedCode; + sourceTree = ""; + }; + 857B63F3258B5531001C5AC2 /* Service */ = { + isa = PBXGroup; + children = ( + 857B63F4258B5531001C5AC2 /* HTTPCallback.swift */, + 857B63F5258B5531001C5AC2 /* CotterClient.swift */, + 857B63F6258B5531001C5AC2 /* CotterAPIService.swift */, + 857B63F7258B5531001C5AC2 /* Models */, + 857B6402258B5531001C5AC2 /* Requests */, + 857B6419258B5531001C5AC2 /* APIServiceProtocol.swift */, + ); + path = Service; + sourceTree = ""; + }; + 857B63F7258B5531001C5AC2 /* Models */ = { + isa = PBXGroup; + children = ( + 857B63F8258B5531001C5AC2 /* Identity.swift */, + 857B63F9258B5531001C5AC2 /* Response */, + 857B63FA258B5531001C5AC2 /* Event.swift */, + 857B63FB258B5531001C5AC2 /* User.swift */, + 857B63FC258B5531001C5AC2 /* EnrolledMethods.swift */, + 857B63FD258B5531001C5AC2 /* NotificationCredential.swift */, + 857B63FE258B5531001C5AC2 /* OAuthToken.swift */, + 857B63FF258B5531001C5AC2 /* Response.swift */, + 857B6400258B5531001C5AC2 /* Request.swift */, + 857B6401258B5531001C5AC2 /* Request */, + ); + path = Models; + sourceTree = ""; + }; + 857B63F9258B5531001C5AC2 /* Response */ = { + isa = PBXGroup; + children = ( + ); + path = Response; + sourceTree = ""; + }; + 857B6401258B5531001C5AC2 /* Request */ = { + isa = PBXGroup; + children = ( + ); + path = Request; + sourceTree = ""; + }; + 857B6402258B5531001C5AC2 /* Requests */ = { + isa = PBXGroup; + children = ( + 857B6403258B5531001C5AC2 /* RegisterBiometric.swift */, + 857B6404258B5531001C5AC2 /* RequestToken.swift */, + 857B6405258B5531001C5AC2 /* CreateAuthenticationEvent.swift */, + 857B6406258B5531001C5AC2 /* RespondEvent.swift */, + 857B6407258B5531001C5AC2 /* GetBiometricStatus.swift */, + 857B6408258B5531001C5AC2 /* UpdateUserPIN.swift */, + 857B6409258B5531001C5AC2 /* UpdateBiometricStatus.swift */, + 857B640A258B5531001C5AC2 /* GetUser.swift */, + 857B640B258B5531001C5AC2 /* RequestPINReset.swift */, + 857B640C258B5531001C5AC2 /* GetEvent.swift */, + 857B640D258B5531001C5AC2 /* RemoveTrustedDeviceStatus.swift */, + 857B640E258B5531001C5AC2 /* GetTrustedDeviceEnrolledAny.swift */, + 857B640F258B5531001C5AC2 /* RegisterUser.swift */, + 857B6410258B5531001C5AC2 /* ResetPIN.swift */, + 857B6411258B5531001C5AC2 /* CreatePendingEventRequest.swift */, + 857B6412258B5531001C5AC2 /* EnrollTrustedDevice.swift */, + 857B6413258B5531001C5AC2 /* GetNewEvent.swift */, + 857B6414258B5531001C5AC2 /* VerifyPINResetCode.swift */, + 857B6415258B5531001C5AC2 /* RefreshToken.swift */, + 857B6416258B5531001C5AC2 /* EnrollUserPIN.swift */, + 857B6417258B5531001C5AC2 /* GetNotificationAppID.swift */, + 857B6418258B5531001C5AC2 /* GetTrustedDeviceStatus.swift */, + ); + path = Requests; + sourceTree = ""; + }; + 857B641A258B5531001C5AC2 /* SourceryTemplates */ = { + isa = PBXGroup; + children = ( + 857B641B258B5531001C5AC2 /* AutoEquatable.stencil */, + 857B641C258B5531001C5AC2 /* MockedAPIClient.stencil */, + ); + path = SourceryTemplates; + sourceTree = ""; + }; + 857B641D258B5531001C5AC2 /* Util */ = { + isa = PBXGroup; + children = ( + 857B641E258B5531001C5AC2 /* Image.swift */, + 857B641F258B5531001C5AC2 /* Token.swift */, + ); + path = Util; + sourceTree = ""; + }; + 857B6420258B5532001C5AC2 /* Passwordless */ = { + isa = PBXGroup; + children = ( + 857B6421258B5532001C5AC2 /* CrossApp.swift */, + 857B6422258B5532001C5AC2 /* View */, + 857B6427258B5532001C5AC2 /* Passwordless.swift */, + ); + path = Passwordless; + sourceTree = ""; + }; + 857B6422258B5532001C5AC2 /* View */ = { + isa = PBXGroup; + children = ( + 857B6423258B5532001C5AC2 /* TrustedViewController.swift */, + 857B6424258B5532001C5AC2 /* RegisterTrustedViewController.swift */, + 857B6425258B5532001C5AC2 /* QRScannerViewController.swift */, + 857B6426258B5532001C5AC2 /* NonTrusted.swift */, + ); + path = View; + sourceTree = ""; + }; + 857B642C258B5532001C5AC2 /* Custom UI Fields */ = { + isa = PBXGroup; + children = ( + 857B642D258B5532001C5AC2 /* ResetCodeTextField.swift */, + 857B642E258B5532001C5AC2 /* OneTimeCodeTextField.swift */, + 857B642F258B5532001C5AC2 /* Keyboard */, + 857B6431258B5532001C5AC2 /* UIExtensions.swift */, + ); + path = "Custom UI Fields"; + sourceTree = ""; + }; + 857B642F258B5532001C5AC2 /* Keyboard */ = { + isa = PBXGroup; + children = ( + 857B6430258B5532001C5AC2 /* KeyboardView.swift */, + ); + path = Keyboard; + sourceTree = ""; + }; + 857B6432258B5532001C5AC2 /* Local Auth */ = { + isa = PBXGroup; + children = ( + 857B6433258B5532001C5AC2 /* BiometricAuthenticationService.swift */, + 857B6434258B5532001C5AC2 /* AuthAlertMessages.swift */, + 857B6435258B5532001C5AC2 /* LocalAuthService.swift */, + 857B6436258B5532001C5AC2 /* BiometricRegistrationService.swift */, + ); + path = "Local Auth"; + sourceTree = ""; + }; + 857B6438258B5532001C5AC2 /* Crypto */ = { + isa = PBXGroup; + children = ( + 857B6439258B5532001C5AC2 /* KeyStore.swift */, + 857B643A258B5532001C5AC2 /* Utils.swift */, + 857B643B258B5532001C5AC2 /* PKCE.swift */, + ); + path = Crypto; + sourceTree = ""; + }; + 857B64DB258B6044001C5AC2 /* Podspec Metadata */ = { + isa = PBXGroup; + children = ( + 857B64DC258B6071001C5AC2 /* Cotter.podspec */, + 857B64DD258B6071001C5AC2 /* LICENSE */, + 857B64DE258B6071001C5AC2 /* README.md */, + ); + name = "Podspec Metadata"; + sourceTree = ""; + }; + 859D2F0C258C6641001C24BF /* CotterTests */ = { + isa = PBXGroup; + children = ( + 859D2F1F258C66E6001C24BF /* Cases */, + 859D2F0F258C6641001C24BF /* Info.plist */, + ); + path = CotterTests; + sourceTree = ""; + }; + 859D2F1F258C66E6001C24BF /* Cases */ = { + isa = PBXGroup; + children = ( + 859D2F20258C66E6001C24BF /* View Controllers */, + 859D2F2B258C66E6001C24BF /* Models */, + 859D2F31258C66E6001C24BF /* Services */, + ); + path = Cases; + sourceTree = ""; + }; + 859D2F20258C66E6001C24BF /* View Controllers */ = { + isa = PBXGroup; + children = ( + 859D2F21258C66E6001C24BF /* PINFinalViewControllerTests.swift */, + 859D2F22258C66E6001C24BF /* UpdateConfirmNewPINViewControllerTests.swift */, + 859D2F23258C66E6001C24BF /* PINConfirmViewControllerTests.swift */, + 859D2F24258C66E6001C24BF /* PINViewControllerTests.swift */, + 859D2F25258C66E6001C24BF /* UpdateCreateNewPINViewControllerTests.swift */, + 859D2F26258C66E6001C24BF /* TransactionPINViewControllerTests.swift */, + 859D2F27258C66E6001C24BF /* ResetNewPINViewControllerTests.swift */, + 859D2F28258C66E6001C24BF /* UpdatePINViewControllerTests.swift */, + 859D2F29258C66E6001C24BF /* ResetConfirmPINViewControllerTests.swift */, + 859D2F2A258C66E6001C24BF /* ResetPINViewControllerTests.swift */, + ); + path = "View Controllers"; + sourceTree = ""; + }; + 859D2F2B258C66E6001C24BF /* Models */ = { + isa = PBXGroup; + children = ( + 859D2F2C258C66E6001C24BF /* CotterImagesTests.swift */, + 859D2F2D258C66E6001C24BF /* ImageObjectTests.swift */, + 859D2F2E258C66E6001C24BF /* UserInfoTests.swift */, + 859D2F2F258C66E6001C24BF /* CotterStringsTests.swift */, + 859D2F30258C66E6001C24BF /* LanguageObjectTests.swift */, + ); + path = Models; + sourceTree = ""; + }; + 859D2F31258C66E6001C24BF /* Services */ = { + isa = PBXGroup; + children = ( + 859D2F32258C66E6001C24BF /* APIClientTests.swift */, + 859D2F33258C66E6001C24BF /* APIServiceTests.swift */, + ); + path = Services; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 857B6353258B5292001C5AC2 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 857B635D258B5292001C5AC2 /* Cotter.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 857B6357258B5292001C5AC2 /* Cotter */ = { + isa = PBXNativeTarget; + buildConfigurationList = 857B6360258B5292001C5AC2 /* Build configuration list for PBXNativeTarget "Cotter" */; + buildPhases = ( + 19A4B89795CFDB0CDC73F64B /* [CP] Check Pods Manifest.lock */, + 857B6353258B5292001C5AC2 /* Headers */, + 857B6354258B5292001C5AC2 /* Sources */, + 857B6355258B5292001C5AC2 /* Frameworks */, + 857B6356258B5292001C5AC2 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Cotter; + productName = Cotter; + productReference = 857B6358258B5292001C5AC2 /* Cotter.framework */; + productType = "com.apple.product-type.framework"; + }; + 859D2F0A258C6641001C24BF /* CotterTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 859D2F12258C6641001C24BF /* Build configuration list for PBXNativeTarget "CotterTests" */; + buildPhases = ( + CB8A83FA68952CBA4D73C1D9 /* [CP] Check Pods Manifest.lock */, + 859D2F07258C6641001C24BF /* Sources */, + 859D2F08258C6641001C24BF /* Frameworks */, + 859D2F09258C6641001C24BF /* Resources */, + 39A125A88279DE12C437853C /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 859D2FFC258C7900001C24BF /* PBXTargetDependency */, + ); + name = CotterTests; + productName = CotterTests; + productReference = 859D2F0B258C6641001C24BF /* CotterTests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 857B634F258B5292001C5AC2 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1230; + LastUpgradeCheck = 1230; + TargetAttributes = { + 857B6357258B5292001C5AC2 = { + CreatedOnToolsVersion = 12.3; + }; + 859D2F0A258C6641001C24BF = { + CreatedOnToolsVersion = 12.3; + }; + }; + }; + buildConfigurationList = 857B6352258B5292001C5AC2 /* Build configuration list for PBXProject "Cotter" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 857B634E258B5292001C5AC2; + productRefGroup = 857B6359258B5292001C5AC2 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 857B6357258B5292001C5AC2 /* Cotter */, + 859D2F0A258C6641001C24BF /* CotterTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 857B6356258B5292001C5AC2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 857B639A258B54B6001C5AC2 /* cotter-fingerprint-failed.png in Resources */, + 857B639C258B54B6001C5AC2 /* cotter-success-check.png in Resources */, + 857B6446258B5532001C5AC2 /* Transaction.storyboard in Resources */, + 857B644E258B5532001C5AC2 /* cotter-lapis-logo.png in Resources */, + 857B64E1258B6071001C5AC2 /* README.md in Resources */, + 857B639F258B54B6001C5AC2 /* UpdateProfile.storyboard in Resources */, + 857B6445258B5532001C5AC2 /* UpdateProfile.storyboard in Resources */, + 857B6397258B54B6001C5AC2 /* tap_device.png in Resources */, + 857B6395258B54B6001C5AC2 /* warning.png in Resources */, + 857B644B258B5532001C5AC2 /* cotter-fingerprint.png in Resources */, + 857B644D258B5532001C5AC2 /* cotter-fingerprint-failed.png in Resources */, + 857B644C258B5532001C5AC2 /* cotter-failure-x.png in Resources */, + 857B6393258B54B6001C5AC2 /* Cotter.storyboard in Resources */, + 857B6448258B5532001C5AC2 /* warning.png in Resources */, + 857B64DF258B6071001C5AC2 /* Cotter.podspec in Resources */, + 857B6399258B54B6001C5AC2 /* cotter-failure-x.png in Resources */, + 857B6398258B54B6001C5AC2 /* cotter-fingerprint.png in Resources */, + 857B6394258B54B6001C5AC2 /* KeyboardView.xib in Resources */, + 857B6447258B5532001C5AC2 /* KeyboardView.xib in Resources */, + 857B644F258B5532001C5AC2 /* cotter-success-check.png in Resources */, + 857B6444258B5532001C5AC2 /* cotter.xcassets in Resources */, + 857B649D258B5533001C5AC2 /* MockedAPIClient.stencil in Resources */, + 857B639D258B54B6001C5AC2 /* cotter.xcassets in Resources */, + 857B644A258B5532001C5AC2 /* tap_device.png in Resources */, + 857B6449258B5532001C5AC2 /* cotter_logo.png in Resources */, + 857B64E0258B6071001C5AC2 /* LICENSE in Resources */, + 857B6396258B54B6001C5AC2 /* cotter_logo.png in Resources */, + 857B639B258B54B6001C5AC2 /* cotter-lapis-logo.png in Resources */, + 857B649C258B5533001C5AC2 /* AutoEquatable.stencil in Resources */, + 857B639E258B54B6001C5AC2 /* Transaction.storyboard in Resources */, + 857B6443258B5532001C5AC2 /* Cotter.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 859D2F09258C6641001C24BF /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 19A4B89795CFDB0CDC73F64B /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Cotter-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 39A125A88279DE12C437853C /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-CotterTests/Pods-CotterTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-CotterTests/Pods-CotterTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-CotterTests/Pods-CotterTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + CB8A83FA68952CBA4D73C1D9 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-CotterTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 857B6354258B5292001C5AC2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 857B64A9258B5533001C5AC2 /* LoadingScreen.swift in Sources */, + 857B6450258B5532001C5AC2 /* UIView.swift in Sources */, + 857B6459258B5532001C5AC2 /* Constants.swift in Sources */, + 857B6472258B5532001C5AC2 /* ResetNewPINViewController.swift in Sources */, + 857B6485258B5533001C5AC2 /* RegisterBiometric.swift in Sources */, + 857B6466258B5532001C5AC2 /* CotterError.swift in Sources */, + 857B6497258B5533001C5AC2 /* RefreshToken.swift in Sources */, + 857B6462258B5532001C5AC2 /* Config.swift in Sources */, + 857B647A258B5532001C5AC2 /* HTTPCallback.swift in Sources */, + 857B649A258B5533001C5AC2 /* GetTrustedDeviceStatus.swift in Sources */, + 857B6460258B5532001C5AC2 /* FontObject.swift in Sources */, + 857B637A258B5394001C5AC2 /* BiometricRegistrationFailPopup.swift in Sources */, + 857B647F258B5532001C5AC2 /* User.swift in Sources */, + 857B6455258B5532001C5AC2 /* UIViewController.swift in Sources */, + 857B64A7258B5533001C5AC2 /* UpdateConfirmNewPINViewController.swift in Sources */, + 857B648D258B5533001C5AC2 /* RequestPINReset.swift in Sources */, + 857B64A8258B5533001C5AC2 /* UpdateCreateNewPINViewController.swift in Sources */, + 857B6465258B5532001C5AC2 /* ImageObject.swift in Sources */, + 857B647E258B5532001C5AC2 /* Event.swift in Sources */, + 857B6478258B5532001C5AC2 /* AutoEquatable.generated.swift in Sources */, + 857B6456258B5532001C5AC2 /* UIWindow.swift in Sources */, + 857B646D258B5532001C5AC2 /* Protocols.swift in Sources */, + 857B647B258B5532001C5AC2 /* CotterClient.swift in Sources */, + 857B637F258B53BA001C5AC2 /* PINBaseController.swift in Sources */, + 857B6499258B5533001C5AC2 /* GetNotificationAppID.swift in Sources */, + 857B6488258B5533001C5AC2 /* RespondEvent.swift in Sources */, + 857B64B2258B5533001C5AC2 /* UpdatePINViewController.swift in Sources */, + 857B645A258B5532001C5AC2 /* CotterJWT.swift in Sources */, + 857B648A258B5533001C5AC2 /* UpdateUserPIN.swift in Sources */, + 857B6461258B5532001C5AC2 /* ErrorMessages.swift in Sources */, + 857B6441258B5532001C5AC2 /* TrustedDevice.swift in Sources */, + 857B646B258B5532001C5AC2 /* ColorSchemeObject.swift in Sources */, + 857B646C258B5532001C5AC2 /* TransactionPINViewController.swift in Sources */, + 857B6458258B5532001C5AC2 /* UINavigationController.swift in Sources */, + 857B645F258B5532001C5AC2 /* Default.swift in Sources */, + 857B647C258B5532001C5AC2 /* CotterAPIService.swift in Sources */, + 857B64AC258B5533001C5AC2 /* KeyboardView.swift in Sources */, + 857B649E258B5533001C5AC2 /* Image.swift in Sources */, + 857B6464258B5532001C5AC2 /* ImageKey.swift in Sources */, + 857B6493258B5533001C5AC2 /* CreatePendingEventRequest.swift in Sources */, + 857B64AE258B5533001C5AC2 /* BiometricAuthenticationService.swift in Sources */, + 857B6452258B5532001C5AC2 /* UIColor.swift in Sources */, + 857B64A1258B5533001C5AC2 /* TrustedViewController.swift in Sources */, + 857B6484258B5532001C5AC2 /* Request.swift in Sources */, + 857B6471258B5532001C5AC2 /* CotterTokens.swift in Sources */, + 857B6480258B5532001C5AC2 /* EnrolledMethods.swift in Sources */, + 857B6479258B5532001C5AC2 /* MockedAPIClient.generated.swift in Sources */, + 857B6492258B5533001C5AC2 /* ResetPIN.swift in Sources */, + 857B649B258B5533001C5AC2 /* APIServiceProtocol.swift in Sources */, + 857B64B3258B5533001C5AC2 /* KeyStore.swift in Sources */, + 857B64B4258B5533001C5AC2 /* Utils.swift in Sources */, + 857B637C258B5394001C5AC2 /* BiometricSuccessPopup.swift in Sources */, + 857B6454258B5532001C5AC2 /* UIImage.swift in Sources */, + 857B6494258B5533001C5AC2 /* EnrollTrustedDevice.swift in Sources */, + 857B6451258B5532001C5AC2 /* Collection.swift in Sources */, + 857B6467258B5532001C5AC2 /* PinStepEnums.swift in Sources */, + 857B6496258B5533001C5AC2 /* VerifyPINResetCode.swift in Sources */, + 857B64AB258B5533001C5AC2 /* OneTimeCodeTextField.swift in Sources */, + 857B648F258B5533001C5AC2 /* RemoveTrustedDeviceStatus.swift in Sources */, + 857B6487258B5533001C5AC2 /* CreateAuthenticationEvent.swift in Sources */, + 857B648C258B5533001C5AC2 /* GetUser.swift in Sources */, + 857B643F258B5532001C5AC2 /* PINViewController.swift in Sources */, + 857B6486258B5533001C5AC2 /* RequestToken.swift in Sources */, + 857B645D258B5532001C5AC2 /* CotterImages.swift in Sources */, + 857B64A5258B5533001C5AC2 /* Passwordless.swift in Sources */, + 857B637B258B5394001C5AC2 /* BiometricFailPopup.swift in Sources */, + 857B6463258B5532001C5AC2 /* UserInfo.swift in Sources */, + 857B6470258B5532001C5AC2 /* AuthMethod.swift in Sources */, + 857B6477258B5532001C5AC2 /* MockedAPIService.swift in Sources */, + 857B647D258B5532001C5AC2 /* Identity.swift in Sources */, + 857B6473258B5532001C5AC2 /* CotterNavigationViewController.swift in Sources */, + 857B64AD258B5533001C5AC2 /* UIExtensions.swift in Sources */, + 857B646A258B5532001C5AC2 /* Indonesian.swift in Sources */, + 857B64A6258B5533001C5AC2 /* ResetConfirmPINViewController.swift in Sources */, + 857B6498258B5533001C5AC2 /* EnrollUserPIN.swift in Sources */, + 857B643C258B5532001C5AC2 /* MockedCotterClient.swift in Sources */, + 857B64A3258B5533001C5AC2 /* QRScannerViewController.swift in Sources */, + 857B643D258B5532001C5AC2 /* ResetPINViewController.swift in Sources */, + 857B64A0258B5533001C5AC2 /* CrossApp.swift in Sources */, + 857B64A2258B5533001C5AC2 /* RegisterTrustedViewController.swift in Sources */, + 857B648B258B5533001C5AC2 /* UpdateBiometricStatus.swift in Sources */, + 857B645E258B5532001C5AC2 /* CotterStrings.swift in Sources */, + 857B6442258B5532001C5AC2 /* PINBaseController.swift in Sources */, + 857B6475258B5532001C5AC2 /* BottomPopupModal.swift in Sources */, + 857B6490258B5533001C5AC2 /* GetTrustedDeviceEnrolledAny.swift in Sources */, + 857B64B0258B5533001C5AC2 /* LocalAuthService.swift in Sources */, + 857B6495258B5533001C5AC2 /* GetNewEvent.swift in Sources */, + 857B6440258B5532001C5AC2 /* PINConfirmViewController.swift in Sources */, + 857B64B5258B5533001C5AC2 /* PKCE.swift in Sources */, + 857B646F258B5532001C5AC2 /* ViewControllerClassNames.swift in Sources */, + 857B6491258B5533001C5AC2 /* RegisterUser.swift in Sources */, + 857B6457258B5532001C5AC2 /* UIImageView.swift in Sources */, + 857B646E258B5532001C5AC2 /* UserKey.swift in Sources */, + 857B6379258B5394001C5AC2 /* AlertService.swift in Sources */, + 857B6474258B5532001C5AC2 /* BasicButton.swift in Sources */, + 857B64AA258B5533001C5AC2 /* ResetCodeTextField.swift in Sources */, + 857B6453258B5532001C5AC2 /* String.swift in Sources */, + 857B64AF258B5533001C5AC2 /* AuthAlertMessages.swift in Sources */, + 857B645B258B5532001C5AC2 /* Callback.swift in Sources */, + 857B64B1258B5533001C5AC2 /* BiometricRegistrationService.swift in Sources */, + 857B6483258B5532001C5AC2 /* Response.swift in Sources */, + 857B6482258B5532001C5AC2 /* OAuthToken.swift in Sources */, + 857B649F258B5533001C5AC2 /* Token.swift in Sources */, + 857B64A4258B5533001C5AC2 /* NonTrusted.swift in Sources */, + 857B6469258B5532001C5AC2 /* English.swift in Sources */, + 857B6481258B5532001C5AC2 /* NotificationCredential.swift in Sources */, + 857B6489258B5533001C5AC2 /* GetBiometricStatus.swift in Sources */, + 857B648E258B5533001C5AC2 /* GetEvent.swift in Sources */, + 857B6468258B5532001C5AC2 /* LanguageObject.swift in Sources */, + 857B645C258B5532001C5AC2 /* Cotter.swift in Sources */, + 857B6476258B5532001C5AC2 /* CrossButton.swift in Sources */, + 857B643E258B5532001C5AC2 /* PINFinalViewController.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 859D2F07258C6641001C24BF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 859D2F3E258C66E6001C24BF /* CotterImagesTests.swift in Sources */, + 859D2F42258C66E6001C24BF /* LanguageObjectTests.swift in Sources */, + 859D2F40258C66E6001C24BF /* UserInfoTests.swift in Sources */, + 859D2F43258C66E6001C24BF /* APIClientTests.swift in Sources */, + 859D2F44258C66E6001C24BF /* APIServiceTests.swift in Sources */, + 859D2F41258C66E6001C24BF /* CotterStringsTests.swift in Sources */, + 859D2F3F258C66E6001C24BF /* ImageObjectTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 859D2FFC258C7900001C24BF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 857B6357258B5292001C5AC2 /* Cotter */; + targetProxy = 859D2FFB258C7900001C24BF /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 857B635E258B5292001C5AC2 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 857B635F258B5292001C5AC2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 857B6361258B5292001C5AC2 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FBB8B94448020C6BA8A4918E /* Pods-Cotter.debug.xcconfig */; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = S82KLNTT2U; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + "EXCLUDED_ARCHS[sdk=*]" = arm64; + INFOPLIST_FILE = Cotter/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "app.cotter.cotter-ios"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SUPPORTS_MACCATALYST = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 857B6362258B5292001C5AC2 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E29BBF9DA830218601A75017 /* Pods-Cotter.release.xcconfig */; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = S82KLNTT2U; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + "EXCLUDED_ARCHS[sdk=*]" = arm64; + INFOPLIST_FILE = Cotter/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "app.cotter.cotter-ios"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SUPPORTS_MACCATALYST = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 859D2F10258C6641001C24BF /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A9437F6F032C87E0300FA152 /* Pods-CotterTests.debug.xcconfig */; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = S82KLNTT2U; + "EXCLUDED_ARCHS[sdk=*]" = arm64; + INFOPLIST_FILE = CotterTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = app.cotter.CotterTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 859D2F11258C6641001C24BF /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 917EEB8EE683793AF25F7313 /* Pods-CotterTests.release.xcconfig */; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = S82KLNTT2U; + "EXCLUDED_ARCHS[sdk=*]" = arm64; + INFOPLIST_FILE = CotterTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = app.cotter.CotterTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 857B6352258B5292001C5AC2 /* Build configuration list for PBXProject "Cotter" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 857B635E258B5292001C5AC2 /* Debug */, + 857B635F258B5292001C5AC2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 857B6360258B5292001C5AC2 /* Build configuration list for PBXNativeTarget "Cotter" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 857B6361258B5292001C5AC2 /* Debug */, + 857B6362258B5292001C5AC2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 859D2F12258C6641001C24BF /* Build configuration list for PBXNativeTarget "CotterTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 859D2F10258C6641001C24BF /* Debug */, + 859D2F11258C6641001C24BF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 857B634F258B5292001C5AC2 /* Project object */; +} diff --git a/Example/CotterIOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cotter.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 70% rename from Example/CotterIOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to Cotter.xcodeproj/project.xcworkspace/contents.xcworkspacedata index e784633..919434a 100644 --- a/Example/CotterIOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/Cotter.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:"> diff --git a/Example/CotterIOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cotter.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from Example/CotterIOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to Cotter.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Cotter.xcodeproj/xcshareddata/xcschemes/Cotter.xcscheme b/Cotter.xcodeproj/xcshareddata/xcschemes/Cotter.xcscheme new file mode 100644 index 0000000..437c1f0 --- /dev/null +++ b/Cotter.xcodeproj/xcshareddata/xcschemes/Cotter.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/CotterIOS.xcworkspace/contents.xcworkspacedata b/Cotter.xcworkspace/contents.xcworkspacedata similarity index 79% rename from Example/CotterIOS.xcworkspace/contents.xcworkspacedata rename to Cotter.xcworkspace/contents.xcworkspacedata index 6b2879d..fb5ed06 100644 --- a/Example/CotterIOS.xcworkspace/contents.xcworkspacedata +++ b/Cotter.xcworkspace/contents.xcworkspacedata @@ -2,7 +2,7 @@ + location = "group:Cotter.xcodeproj"> diff --git a/Example/CotterIOS.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cotter.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from Example/CotterIOS.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to Cotter.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Cotter/0.0.1/CotterIOS.podspec b/Cotter/0.0.1/CotterIOS.podspec deleted file mode 100644 index ddd4d0e..0000000 --- a/Cotter/0.0.1/CotterIOS.podspec +++ /dev/null @@ -1,43 +0,0 @@ -# -# Be sure to run `pod lib lint CotterIOS.podspec' to ensure this is a -# valid spec before submitting. -# -# Any lines starting with a # are optional, but their use is encouraged -# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html -# - -Pod::Spec.new do |s| - s.name = 'CotterIOS' - s.version = '0.0.1' - s.summary = 'CotterIOS is the client SDK for Cotter authentication services' - s.swift_versions = '5.0' - -# This description is used to generate tags and improve search results. -# * Think: What does it do? Why did you write it? What is the focus? -# * Try to keep it short, snappy and to the point. -# * Write the description between the DESC delimiters below. -# * Finally, don't worry about the indent, CocoaPods strips it! - - s.description = <<-DESC -CotterIOS simplifies client's integration with Cotter. It is an SDK that provides necessary pages and API services that connects your application to Cotter authentication services. - DESC - - s.homepage = 'https://gitlab.com/govest/cotter/ios' - # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' - s.license = { :type => 'MIT', :file => 'LICENSE' } - s.author = { 'Cotter Team' => 'team@cotter.app' } - s.source = { :git => 'https://gitlab.com/govest/cotter/ios.git', :tag => s.version.to_s } - # s.social_media_url = 'https://twitter.com/' - - s.ios.deployment_target = '13.0' - - s.source_files = 'CotterIOS/Classes/**/*' - - s.resource_bundles = { - 'CotterIOS' => ['Source/**/*.{png,storyboard,lproj}'] - } - - # s.public_header_files = 'Pod/Classes/**/*.h' - s.frameworks = 'UIKit' -# s.dependency 'Alamofire', '~> 5.0.0-rc.3' -end diff --git a/Cotter/0.0.2/CotterIOS.podspec b/Cotter/0.0.2/CotterIOS.podspec deleted file mode 100644 index 556a20b..0000000 --- a/Cotter/0.0.2/CotterIOS.podspec +++ /dev/null @@ -1,43 +0,0 @@ -# -# Be sure to run `pod lib lint CotterIOS.podspec' to ensure this is a -# valid spec before submitting. -# -# Any lines starting with a # are optional, but their use is encouraged -# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html -# - -Pod::Spec.new do |s| - s.name = 'CotterIOS' - s.version = '0.0.2' - s.summary = 'CotterIOS is the client SDK for Cotter authentication services' - s.swift_versions = '5.0' - -# This description is used to generate tags and improve search results. -# * Think: What does it do? Why did you write it? What is the focus? -# * Try to keep it short, snappy and to the point. -# * Write the description between the DESC delimiters below. -# * Finally, don't worry about the indent, CocoaPods strips it! - - s.description = <<-DESC -CotterIOS simplifies client's integration with Cotter. It is an SDK that provides necessary pages and API services that connects your application to Cotter authentication services. - DESC - - s.homepage = 'https://gitlab.com/govest/cotter/ios' - # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' - s.license = { :type => 'MIT', :file => 'LICENSE' } - s.author = { 'Cotter Team' => 'team@cotter.app' } - s.source = { :git => 'https://gitlab.com/govest/cotter/ios.git', :tag => s.version.to_s } - # s.social_media_url = 'https://twitter.com/' - - s.ios.deployment_target = '13.0' - - s.source_files = 'Source/**/*' - - s.resource_bundles = { - 'CotterIOS' => ['Source/**/*.{png,storyboard,lproj}'] - } - - # s.public_header_files = 'Pod/Classes/**/*.h' - s.frameworks = 'UIKit' -# s.dependency 'Alamofire', '~> 5.0.0-rc.3' -end diff --git a/Source/Alert/AlertService.swift b/Cotter/Alert/AlertService.swift similarity index 100% rename from Source/Alert/AlertService.swift rename to Cotter/Alert/AlertService.swift diff --git a/Source/Alert/BiometricFailPopup.swift b/Cotter/Alert/BiometricFailPopup.swift similarity index 100% rename from Source/Alert/BiometricFailPopup.swift rename to Cotter/Alert/BiometricFailPopup.swift diff --git a/Source/Alert/BiometricRegistrationFailPopup.swift b/Cotter/Alert/BiometricRegistrationFailPopup.swift similarity index 100% rename from Source/Alert/BiometricRegistrationFailPopup.swift rename to Cotter/Alert/BiometricRegistrationFailPopup.swift diff --git a/Source/Alert/BiometricSuccessPopup.swift b/Cotter/Alert/BiometricSuccessPopup.swift similarity index 100% rename from Source/Alert/BiometricSuccessPopup.swift rename to Cotter/Alert/BiometricSuccessPopup.swift diff --git a/Cotter/Assets/.gitkeep b/Cotter/Assets/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/Source/Base/PINBaseController.swift b/Cotter/Base/PINBaseController.swift similarity index 100% rename from Source/Base/PINBaseController.swift rename to Cotter/Base/PINBaseController.swift diff --git a/Cotter/Classes/.gitkeep b/Cotter/Classes/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/Cotter/Classes/ReplaceMe.swift b/Cotter/Classes/ReplaceMe.swift deleted file mode 100644 index e69de29..0000000 diff --git a/Source/Components/BasicButton.swift b/Cotter/Components/BasicButton.swift similarity index 100% rename from Source/Components/BasicButton.swift rename to Cotter/Components/BasicButton.swift diff --git a/Source/Components/BottomPopupModal.swift b/Cotter/Components/BottomPopupModal.swift similarity index 100% rename from Source/Components/BottomPopupModal.swift rename to Cotter/Components/BottomPopupModal.swift diff --git a/Source/Components/CotterNavigationViewController.swift b/Cotter/Components/CotterNavigationViewController.swift similarity index 100% rename from Source/Components/CotterNavigationViewController.swift rename to Cotter/Components/CotterNavigationViewController.swift diff --git a/Source/Components/CrossButton.swift b/Cotter/Components/CrossButton.swift similarity index 100% rename from Source/Components/CrossButton.swift rename to Cotter/Components/CrossButton.swift diff --git a/Source/Config/ColorSchemeObject/ColorSchemeObject.swift b/Cotter/Config/ColorSchemeObject/ColorSchemeObject.swift similarity index 99% rename from Source/Config/ColorSchemeObject/ColorSchemeObject.swift rename to Cotter/Config/ColorSchemeObject/ColorSchemeObject.swift index 43dcf99..7a81504 100644 --- a/Source/Config/ColorSchemeObject/ColorSchemeObject.swift +++ b/Cotter/Config/ColorSchemeObject/ColorSchemeObject.swift @@ -5,7 +5,7 @@ // Created by Calvin Tjoeng on 2/21/20. // -import Foundation +import UIKit public class ColorSchemeObject: NSObject { private let DEFAULT_PRIMARY = "#21CE99" diff --git a/Source/Config/Config.swift b/Cotter/Config/Config.swift similarity index 100% rename from Source/Config/Config.swift rename to Cotter/Config/Config.swift diff --git a/Source/Config/CotterError.swift b/Cotter/Config/CotterError.swift similarity index 100% rename from Source/Config/CotterError.swift rename to Cotter/Config/CotterError.swift diff --git a/Source/Config/CotterImages.swift b/Cotter/Config/CotterImages.swift similarity index 100% rename from Source/Config/CotterImages.swift rename to Cotter/Config/CotterImages.swift diff --git a/Source/Config/CotterStrings.swift b/Cotter/Config/CotterStrings.swift similarity index 100% rename from Source/Config/CotterStrings.swift rename to Cotter/Config/CotterStrings.swift diff --git a/Source/Config/ErrorMessages.swift b/Cotter/Config/ErrorMessages.swift similarity index 100% rename from Source/Config/ErrorMessages.swift rename to Cotter/Config/ErrorMessages.swift diff --git a/Source/Config/FontObject/Default.swift b/Cotter/Config/FontObject/Default.swift similarity index 97% rename from Source/Config/FontObject/Default.swift rename to Cotter/Config/FontObject/Default.swift index ed836d9..e57d97f 100644 --- a/Source/Config/FontObject/Default.swift +++ b/Cotter/Config/FontObject/Default.swift @@ -5,7 +5,7 @@ // Created by Albert Purnama on 7/1/20. // -import Foundation +import UIKit public let DEFAULT_COTTER_HEADING_FONT: UIFont = UIFont.boldSystemFont(ofSize: 20.0) public let DEFAULT_COTTER_TITLE_FONT: UIFont = UIFont.boldSystemFont(ofSize: 18.0) diff --git a/Source/Config/FontObject/FontObject.swift b/Cotter/Config/FontObject/FontObject.swift similarity index 100% rename from Source/Config/FontObject/FontObject.swift rename to Cotter/Config/FontObject/FontObject.swift diff --git a/Source/Config/ImageObject/ImageKey.swift b/Cotter/Config/ImageObject/ImageKey.swift similarity index 100% rename from Source/Config/ImageObject/ImageKey.swift rename to Cotter/Config/ImageObject/ImageKey.swift diff --git a/Source/Config/ImageObject/ImageObject.swift b/Cotter/Config/ImageObject/ImageObject.swift similarity index 100% rename from Source/Config/ImageObject/ImageObject.swift rename to Cotter/Config/ImageObject/ImageObject.swift diff --git a/Source/Config/LanguageObject/English.swift b/Cotter/Config/LanguageObject/English.swift similarity index 100% rename from Source/Config/LanguageObject/English.swift rename to Cotter/Config/LanguageObject/English.swift diff --git a/Source/Config/LanguageObject/Indonesian.swift b/Cotter/Config/LanguageObject/Indonesian.swift similarity index 100% rename from Source/Config/LanguageObject/Indonesian.swift rename to Cotter/Config/LanguageObject/Indonesian.swift diff --git a/Source/Config/LanguageObject/LanguageObject.swift b/Cotter/Config/LanguageObject/LanguageObject.swift similarity index 100% rename from Source/Config/LanguageObject/LanguageObject.swift rename to Cotter/Config/LanguageObject/LanguageObject.swift diff --git a/Source/Config/Models/UserInfo.swift b/Cotter/Config/Models/UserInfo.swift similarity index 100% rename from Source/Config/Models/UserInfo.swift rename to Cotter/Config/Models/UserInfo.swift diff --git a/Source/Config/PinStepEnums.swift b/Cotter/Config/PinStepEnums.swift similarity index 100% rename from Source/Config/PinStepEnums.swift rename to Cotter/Config/PinStepEnums.swift diff --git a/Cotter/Cotter.h b/Cotter/Cotter.h new file mode 100644 index 0000000..e0cee76 --- /dev/null +++ b/Cotter/Cotter.h @@ -0,0 +1,18 @@ +// +// Cotter.h +// Cotter +// +// Created by Albert Purnama on 12/17/20. +// + +#import + +//! Project version number for Cotter. +FOUNDATION_EXPORT double CotterVersionNumber; + +//! Project version string for Cotter. +FOUNDATION_EXPORT const unsigned char CotterVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/Source/Cotter.swift b/Cotter/Cotter.swift similarity index 94% rename from Source/Cotter.swift rename to Cotter/Cotter.swift index ce9b148..d04dc4d 100644 --- a/Source/Cotter.swift +++ b/Cotter/Cotter.swift @@ -5,7 +5,6 @@ // Created by Albert Purnama on 2/11/20. // -import Foundation import os import UIKit import OneSignal @@ -42,14 +41,14 @@ public class Cotter { static var resourceBundle: Bundle = { // Set the resource bundle let frameworkBundle = Bundle(for: Cotter.self) - guard let bundleURL = frameworkBundle.url(forResource: "Cotter", withExtension: "bundle") else { - os_log("Cotter.bundle not found!", log: Config.instance.log, type: .fault) - fatalError("Cotter.bundle not found!") + guard let bundleURL = frameworkBundle.url(forResource: "Assets", withExtension: "bundle") else { + os_log("Assets.bundle not found!", log: Config.instance.log, type: .fault) + fatalError("Assets.bundle not found!") } guard let resBundle = Bundle(url: bundleURL) else { - os_log("cannot access Cotter.bundle!", log: Config.instance.log, type: .fault) - fatalError("cannot access Cotter.bundle!") + os_log("cannot access Assets.bundle!", log: Config.instance.log, type: .fault) + fatalError("cannot access Assets.bundle!") } return resBundle @@ -360,21 +359,14 @@ public class Cotter { // configureOneSignal configure cotter's onesignal SDK with launchOptions provided private static func configureOneSignal(launchOptions: [UIApplication.LaunchOptionsKey: Any]?) { - let onesignalInitSettings = [kOSSettingsKeyAutoPrompt: false, - kOSSettingsKeyInAppLaunchURL: true] - func notifCb(res: CotterResult) { switch res { case .success(let cred): - // if appID is not setup don't use initiate OneSignal if cred.appID == "" { return } + OneSignal.setAppId(cred.appID) OneSignal.setLocationShared(false) - OneSignal.initWithLaunchOptions(launchOptions, - appId: cred.appID, - handleNotificationReceived: nil, - handleNotificationAction: notificationOpenedHandler, - settings: onesignalInitSettings) - OneSignal.inFocusDisplayType = .notification + OneSignal.initWithLaunchOptions(launchOptions) + OneSignal.setNotificationOpenedHandler(notificationOpenedHandler) if let userID = Cotter.getLoggedInUserID() { guard let pubKey = KeyStore.trusted(userID: userID).pubKey else { @@ -479,9 +471,9 @@ func transformCb(parent: UIViewController, cb: @escaping FinalAuthCallback) -> F } } -func notificationOpenedHandler( result: OSNotificationOpenedResult? ) { +func notificationOpenedHandler( result: OSNotificationOpenedResult ) { // This block gets called when the user reacts to a notification received - let payload: OSNotificationPayload = result!.notification.payload + let payload: OSNotification = result.notification if payload.additionalData != nil { let customData = payload.additionalData @@ -489,7 +481,7 @@ func notificationOpenedHandler( result: OSNotificationOpenedResult? ) { guard let userID = Cotter.getLoggedInUserID() else { return } - Passwordless.shared.checkEvent(identifier: userID) + Passwordless.shared.checkEvent(clientUserID: userID) } } } diff --git a/Source/Crypto/KeyStore.swift b/Cotter/Crypto/KeyStore.swift similarity index 100% rename from Source/Crypto/KeyStore.swift rename to Cotter/Crypto/KeyStore.swift diff --git a/Source/Crypto/PKCE.swift b/Cotter/Crypto/PKCE.swift similarity index 100% rename from Source/Crypto/PKCE.swift rename to Cotter/Crypto/PKCE.swift diff --git a/Source/Crypto/Utils.swift b/Cotter/Crypto/Utils.swift similarity index 100% rename from Source/Crypto/Utils.swift rename to Cotter/Crypto/Utils.swift diff --git a/Source/Custom UI Fields/Keyboard/KeyboardView.swift b/Cotter/Custom UI Fields/Keyboard/KeyboardView.swift similarity index 100% rename from Source/Custom UI Fields/Keyboard/KeyboardView.swift rename to Cotter/Custom UI Fields/Keyboard/KeyboardView.swift diff --git a/Source/Custom UI Fields/OneTimeCodeTextField.swift b/Cotter/Custom UI Fields/OneTimeCodeTextField.swift similarity index 99% rename from Source/Custom UI Fields/OneTimeCodeTextField.swift rename to Cotter/Custom UI Fields/OneTimeCodeTextField.swift index 605f90b..466154a 100644 --- a/Source/Custom UI Fields/OneTimeCodeTextField.swift +++ b/Cotter/Custom UI Fields/OneTimeCodeTextField.swift @@ -5,7 +5,7 @@ // Created by Raymond Andrie on 2/1/20. // -import Foundation +import UIKit class OneTimeCodeTextField : UITextField { private var isConfigured = false diff --git a/Source/Custom UI Fields/ResetCodeTextField.swift b/Cotter/Custom UI Fields/ResetCodeTextField.swift similarity index 100% rename from Source/Custom UI Fields/ResetCodeTextField.swift rename to Cotter/Custom UI Fields/ResetCodeTextField.swift diff --git a/Source/Custom UI Fields/UIExtensions.swift b/Cotter/Custom UI Fields/UIExtensions.swift similarity index 99% rename from Source/Custom UI Fields/UIExtensions.swift rename to Cotter/Custom UI Fields/UIExtensions.swift index 691d307..7c15d9a 100644 --- a/Source/Custom UI Fields/UIExtensions.swift +++ b/Cotter/Custom UI Fields/UIExtensions.swift @@ -5,7 +5,7 @@ // Created by Raymond Andrie on 2/7/20. // -import Foundation +import UIKit // Finding a code sequence that is invalid extension UIViewController { diff --git a/Source/Enum/AuthMethod.swift b/Cotter/Enum/AuthMethod.swift similarity index 100% rename from Source/Enum/AuthMethod.swift rename to Cotter/Enum/AuthMethod.swift diff --git a/Source/Enum/CotterTokens.swift b/Cotter/Enum/CotterTokens.swift similarity index 100% rename from Source/Enum/CotterTokens.swift rename to Cotter/Enum/CotterTokens.swift diff --git a/Source/Enum/UserKey.swift b/Cotter/Enum/UserKey.swift similarity index 100% rename from Source/Enum/UserKey.swift rename to Cotter/Enum/UserKey.swift diff --git a/Source/Enum/ViewControllerClassNames.swift b/Cotter/Enum/ViewControllerClassNames.swift similarity index 100% rename from Source/Enum/ViewControllerClassNames.swift rename to Cotter/Enum/ViewControllerClassNames.swift diff --git a/Source/Extensions/Collection.swift b/Cotter/Extensions/Collection.swift similarity index 100% rename from Source/Extensions/Collection.swift rename to Cotter/Extensions/Collection.swift diff --git a/Source/Extensions/String.swift b/Cotter/Extensions/String.swift similarity index 99% rename from Source/Extensions/String.swift rename to Cotter/Extensions/String.swift index ac13869..38711c5 100644 --- a/Source/Extensions/String.swift +++ b/Cotter/Extensions/String.swift @@ -5,7 +5,7 @@ // Created by Raymond Andrie on 3/26/20. // -import Foundation +import UIKit extension String { func maskContactInfo(method: String) -> String { diff --git a/Source/Extensions/UIColor.swift b/Cotter/Extensions/UIColor.swift similarity index 98% rename from Source/Extensions/UIColor.swift rename to Cotter/Extensions/UIColor.swift index 1e3361c..3fe8409 100644 --- a/Source/Extensions/UIColor.swift +++ b/Cotter/Extensions/UIColor.swift @@ -5,7 +5,7 @@ // Created by Calvin Tjoeng on 2/21/20. // -import Foundation +import UIKit extension UIColor { // Code from https://stackoverflow.com/questions/24263007/how-to-use-hex-color-values diff --git a/Source/Extensions/UIImage.swift b/Cotter/Extensions/UIImage.swift similarity index 98% rename from Source/Extensions/UIImage.swift rename to Cotter/Extensions/UIImage.swift index 9fa9b92..c3e4c56 100644 --- a/Source/Extensions/UIImage.swift +++ b/Cotter/Extensions/UIImage.swift @@ -5,7 +5,7 @@ // Created by Albert Purnama on 10/12/20. // -import Foundation +import UIKit extension UIImage { diff --git a/Source/Extensions/UIImageView.swift b/Cotter/Extensions/UIImageView.swift similarity index 98% rename from Source/Extensions/UIImageView.swift rename to Cotter/Extensions/UIImageView.swift index 8460215..3c6a6cd 100644 --- a/Source/Extensions/UIImageView.swift +++ b/Cotter/Extensions/UIImageView.swift @@ -5,7 +5,7 @@ // Created by Calvin Tjoeng on 2/16/20. // -import Foundation +import UIKit let defaultImagePath = "https://cdn.arstechnica.net/wp-content/uploads/2018/06/macOS-Mojave-Dynamic-Wallpaper-transition.jpg" diff --git a/Source/Extensions/UINavigationController.swift b/Cotter/Extensions/UINavigationController.swift similarity index 100% rename from Source/Extensions/UINavigationController.swift rename to Cotter/Extensions/UINavigationController.swift diff --git a/Source/Extensions/UIView.swift b/Cotter/Extensions/UIView.swift similarity index 80% rename from Source/Extensions/UIView.swift rename to Cotter/Extensions/UIView.swift index 74769fd..7611337 100644 --- a/Source/Extensions/UIView.swift +++ b/Cotter/Extensions/UIView.swift @@ -5,10 +5,10 @@ // Created by Albert Purnama on 9/24/20. // -import Foundation +import UIKit extension UIView { - func roundCorners(corners: UIRectCorner, radius: CGFloat) { + func roundCorners(corners: UIRectCorner, radius: CGFloat) { let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)) let mask = CAShapeLayer() mask.path = path.cgPath diff --git a/Source/Extensions/UIViewController.swift b/Cotter/Extensions/UIViewController.swift similarity index 99% rename from Source/Extensions/UIViewController.swift rename to Cotter/Extensions/UIViewController.swift index a07b45b..3fb5068 100644 --- a/Source/Extensions/UIViewController.swift +++ b/Cotter/Extensions/UIViewController.swift @@ -5,7 +5,7 @@ // Created by Raymond Andrie on 3/5/20. // -import Foundation +import UIKit extension UIViewController { // This function is called at the start of each Cotter Flow diff --git a/Source/Extensions/UIWindow.swift b/Cotter/Extensions/UIWindow.swift similarity index 100% rename from Source/Extensions/UIWindow.swift rename to Cotter/Extensions/UIWindow.swift diff --git a/Source/GeneratedCode/AutoEquatable.generated.swift b/Cotter/GeneratedCode/AutoEquatable.generated.swift similarity index 100% rename from Source/GeneratedCode/AutoEquatable.generated.swift rename to Cotter/GeneratedCode/AutoEquatable.generated.swift diff --git a/Source/GeneratedCode/MockedAPIClient.generated.swift b/Cotter/GeneratedCode/MockedAPIClient.generated.swift similarity index 100% rename from Source/GeneratedCode/MockedAPIClient.generated.swift rename to Cotter/GeneratedCode/MockedAPIClient.generated.swift diff --git a/Cotter/Info.plist b/Cotter/Info.plist new file mode 100644 index 0000000..9bcb244 --- /dev/null +++ b/Cotter/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/Source/LoadingScreen.swift b/Cotter/LoadingScreen.swift similarity index 100% rename from Source/LoadingScreen.swift rename to Cotter/LoadingScreen.swift diff --git a/Source/Local Auth/AuthAlertMessages.swift b/Cotter/Local Auth/AuthAlertMessages.swift similarity index 100% rename from Source/Local Auth/AuthAlertMessages.swift rename to Cotter/Local Auth/AuthAlertMessages.swift diff --git a/Source/Local Auth/BiometricAuthenticationService.swift b/Cotter/Local Auth/BiometricAuthenticationService.swift similarity index 100% rename from Source/Local Auth/BiometricAuthenticationService.swift rename to Cotter/Local Auth/BiometricAuthenticationService.swift diff --git a/Source/Local Auth/BiometricRegistrationService.swift b/Cotter/Local Auth/BiometricRegistrationService.swift similarity index 100% rename from Source/Local Auth/BiometricRegistrationService.swift rename to Cotter/Local Auth/BiometricRegistrationService.swift diff --git a/Source/Local Auth/LocalAuthService.swift b/Cotter/Local Auth/LocalAuthService.swift similarity index 100% rename from Source/Local Auth/LocalAuthService.swift rename to Cotter/Local Auth/LocalAuthService.swift diff --git a/Source/MockedAPIService.swift b/Cotter/MockedAPIService.swift similarity index 100% rename from Source/MockedAPIService.swift rename to Cotter/MockedAPIService.swift diff --git a/Source/MockedCotterClient.swift b/Cotter/MockedCotterClient.swift similarity index 100% rename from Source/MockedCotterClient.swift rename to Cotter/MockedCotterClient.swift diff --git a/Source/Mocks/Protocols.swift b/Cotter/Mocks/Protocols.swift similarity index 100% rename from Source/Mocks/Protocols.swift rename to Cotter/Mocks/Protocols.swift diff --git a/Source/Models/Callback.swift b/Cotter/Models/Callback.swift similarity index 100% rename from Source/Models/Callback.swift rename to Cotter/Models/Callback.swift diff --git a/Source/Models/Constants.swift b/Cotter/Models/Constants.swift similarity index 100% rename from Source/Models/Constants.swift rename to Cotter/Models/Constants.swift diff --git a/Source/Models/CotterJWT.swift b/Cotter/Models/CotterJWT.swift similarity index 100% rename from Source/Models/CotterJWT.swift rename to Cotter/Models/CotterJWT.swift diff --git a/Source/PINConfirmViewController.swift b/Cotter/PINConfirmViewController.swift similarity index 100% rename from Source/PINConfirmViewController.swift rename to Cotter/PINConfirmViewController.swift diff --git a/Source/PINFinalViewController.swift b/Cotter/PINFinalViewController.swift similarity index 99% rename from Source/PINFinalViewController.swift rename to Cotter/PINFinalViewController.swift index ce79e73..fc3e4da 100644 --- a/Source/PINFinalViewController.swift +++ b/Cotter/PINFinalViewController.swift @@ -6,7 +6,7 @@ // import LocalAuthentication -import Foundation +import UIKit // MARK: - Keys for Strings public class PINFinalViewControllerKey { diff --git a/Source/PINViewController.swift b/Cotter/PINViewController.swift similarity index 100% rename from Source/PINViewController.swift rename to Cotter/PINViewController.swift diff --git a/Source/Passwordless/CrossApp.swift b/Cotter/Passwordless/CrossApp.swift similarity index 100% rename from Source/Passwordless/CrossApp.swift rename to Cotter/Passwordless/CrossApp.swift diff --git a/Source/Passwordless/Passwordless.swift b/Cotter/Passwordless/Passwordless.swift similarity index 99% rename from Source/Passwordless/Passwordless.swift rename to Cotter/Passwordless/Passwordless.swift index 04c6824..004c101 100644 --- a/Source/Passwordless/Passwordless.swift +++ b/Cotter/Passwordless/Passwordless.swift @@ -6,7 +6,7 @@ // Starting April 29, 2020 Passwordlesss is the new name for trusted device // -import Foundation +import UIKit import os.log import OneSignal diff --git a/Source/Passwordless/View/NonTrusted.swift b/Cotter/Passwordless/View/NonTrusted.swift similarity index 100% rename from Source/Passwordless/View/NonTrusted.swift rename to Cotter/Passwordless/View/NonTrusted.swift diff --git a/Source/Passwordless/View/QRScannerViewController.swift b/Cotter/Passwordless/View/QRScannerViewController.swift similarity index 100% rename from Source/Passwordless/View/QRScannerViewController.swift rename to Cotter/Passwordless/View/QRScannerViewController.swift diff --git a/Source/Passwordless/View/RegisterTrustedViewController.swift b/Cotter/Passwordless/View/RegisterTrustedViewController.swift similarity index 100% rename from Source/Passwordless/View/RegisterTrustedViewController.swift rename to Cotter/Passwordless/View/RegisterTrustedViewController.swift diff --git a/Source/Passwordless/View/TrustedViewController.swift b/Cotter/Passwordless/View/TrustedViewController.swift similarity index 100% rename from Source/Passwordless/View/TrustedViewController.swift rename to Cotter/Passwordless/View/TrustedViewController.swift diff --git a/Source/ResetConfirmPINViewController.swift b/Cotter/ResetConfirmPINViewController.swift similarity index 100% rename from Source/ResetConfirmPINViewController.swift rename to Cotter/ResetConfirmPINViewController.swift diff --git a/Source/ResetNewPINViewController.swift b/Cotter/ResetNewPINViewController.swift similarity index 100% rename from Source/ResetNewPINViewController.swift rename to Cotter/ResetNewPINViewController.swift diff --git a/Source/ResetPINViewController.swift b/Cotter/ResetPINViewController.swift similarity index 100% rename from Source/ResetPINViewController.swift rename to Cotter/ResetPINViewController.swift diff --git a/Source/Base/Assets/cotter-failure-x.png b/Cotter/Resources/Assets/cotter-failure-x.png similarity index 100% rename from Source/Base/Assets/cotter-failure-x.png rename to Cotter/Resources/Assets/cotter-failure-x.png diff --git a/Source/Base/Assets/cotter-fingerprint-failed.png b/Cotter/Resources/Assets/cotter-fingerprint-failed.png similarity index 100% rename from Source/Base/Assets/cotter-fingerprint-failed.png rename to Cotter/Resources/Assets/cotter-fingerprint-failed.png diff --git a/Source/Base/Assets/cotter-fingerprint.png b/Cotter/Resources/Assets/cotter-fingerprint.png similarity index 100% rename from Source/Base/Assets/cotter-fingerprint.png rename to Cotter/Resources/Assets/cotter-fingerprint.png diff --git a/Source/Base/Assets/cotter-lapis-logo.png b/Cotter/Resources/Assets/cotter-lapis-logo.png similarity index 100% rename from Source/Base/Assets/cotter-lapis-logo.png rename to Cotter/Resources/Assets/cotter-lapis-logo.png diff --git a/Source/Base/Assets/cotter-success-check.png b/Cotter/Resources/Assets/cotter-success-check.png similarity index 100% rename from Source/Base/Assets/cotter-success-check.png rename to Cotter/Resources/Assets/cotter-success-check.png diff --git a/Source/Base/Assets/cotter_logo.png b/Cotter/Resources/Assets/cotter_logo.png similarity index 100% rename from Source/Base/Assets/cotter_logo.png rename to Cotter/Resources/Assets/cotter_logo.png diff --git a/Source/Base/Assets/tap_device.png b/Cotter/Resources/Assets/tap_device.png similarity index 100% rename from Source/Base/Assets/tap_device.png rename to Cotter/Resources/Assets/tap_device.png diff --git a/Source/Base/Assets/warning.png b/Cotter/Resources/Assets/warning.png similarity index 100% rename from Source/Base/Assets/warning.png rename to Cotter/Resources/Assets/warning.png diff --git a/Source/Cotter.storyboard b/Cotter/Resources/Cotter.storyboard similarity index 100% rename from Source/Cotter.storyboard rename to Cotter/Resources/Cotter.storyboard diff --git a/Source/Custom UI Fields/Keyboard/KeyboardView.xib b/Cotter/Resources/KeyboardView.xib similarity index 100% rename from Source/Custom UI Fields/Keyboard/KeyboardView.xib rename to Cotter/Resources/KeyboardView.xib diff --git a/Source/Transaction.storyboard b/Cotter/Resources/Transaction.storyboard similarity index 97% rename from Source/Transaction.storyboard rename to Cotter/Resources/Transaction.storyboard index 149666a..0a28372 100644 --- a/Source/Transaction.storyboard +++ b/Cotter/Resources/Transaction.storyboard @@ -1,9 +1,9 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -41,7 +41,7 @@ - + @@ -125,7 +125,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -152,7 +152,7 @@ - + @@ -171,7 +171,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -254,7 +254,7 @@ - + @@ -263,7 +263,7 @@ - + @@ -328,7 +328,7 @@ - + @@ -339,7 +339,7 @@ - + @@ -348,7 +348,7 @@ - + @@ -417,7 +417,7 @@ - + diff --git a/Source/UpdateProfile.storyboard b/Cotter/Resources/UpdateProfile.storyboard similarity index 97% rename from Source/UpdateProfile.storyboard rename to Cotter/Resources/UpdateProfile.storyboard index 4c6c13a..c859018 100644 --- a/Source/UpdateProfile.storyboard +++ b/Cotter/Resources/UpdateProfile.storyboard @@ -1,9 +1,9 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -42,7 +42,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -127,7 +127,7 @@ - + @@ -182,7 +182,7 @@ - + @@ -193,7 +193,7 @@ - + @@ -212,7 +212,7 @@ - + diff --git a/Example/CotterIOS/Images.xcassets/Contents.json b/Cotter/Resources/cotter.xcassets/Contents.json similarity index 100% rename from Example/CotterIOS/Images.xcassets/Contents.json rename to Cotter/Resources/cotter.xcassets/Contents.json diff --git a/Source/Base/cotter.xcassets/baseline_close_black_24pt.imageset/Contents.json b/Cotter/Resources/cotter.xcassets/baseline_close_black_24pt.imageset/Contents.json similarity index 100% rename from Source/Base/cotter.xcassets/baseline_close_black_24pt.imageset/Contents.json rename to Cotter/Resources/cotter.xcassets/baseline_close_black_24pt.imageset/Contents.json diff --git a/Source/Base/cotter.xcassets/baseline_close_black_24pt.imageset/baseline_close_black_24pt_1x.png b/Cotter/Resources/cotter.xcassets/baseline_close_black_24pt.imageset/baseline_close_black_24pt_1x.png similarity index 100% rename from Source/Base/cotter.xcassets/baseline_close_black_24pt.imageset/baseline_close_black_24pt_1x.png rename to Cotter/Resources/cotter.xcassets/baseline_close_black_24pt.imageset/baseline_close_black_24pt_1x.png diff --git a/Source/Base/cotter.xcassets/baseline_close_black_24pt.imageset/baseline_close_black_24pt_2x.png b/Cotter/Resources/cotter.xcassets/baseline_close_black_24pt.imageset/baseline_close_black_24pt_2x.png similarity index 100% rename from Source/Base/cotter.xcassets/baseline_close_black_24pt.imageset/baseline_close_black_24pt_2x.png rename to Cotter/Resources/cotter.xcassets/baseline_close_black_24pt.imageset/baseline_close_black_24pt_2x.png diff --git a/Source/Base/cotter.xcassets/baseline_close_black_24pt.imageset/baseline_close_black_24pt_3x.png b/Cotter/Resources/cotter.xcassets/baseline_close_black_24pt.imageset/baseline_close_black_24pt_3x.png similarity index 100% rename from Source/Base/cotter.xcassets/baseline_close_black_24pt.imageset/baseline_close_black_24pt_3x.png rename to Cotter/Resources/cotter.xcassets/baseline_close_black_24pt.imageset/baseline_close_black_24pt_3x.png diff --git a/Source/Base/cotter.xcassets/lock_24px.imageset/Contents.json b/Cotter/Resources/cotter.xcassets/lock_24px.imageset/Contents.json similarity index 100% rename from Source/Base/cotter.xcassets/lock_24px.imageset/Contents.json rename to Cotter/Resources/cotter.xcassets/lock_24px.imageset/Contents.json diff --git a/Source/Base/cotter.xcassets/lock_24px.imageset/lock_24px.png b/Cotter/Resources/cotter.xcassets/lock_24px.imageset/lock_24px.png similarity index 100% rename from Source/Base/cotter.xcassets/lock_24px.imageset/lock_24px.png rename to Cotter/Resources/cotter.xcassets/lock_24px.imageset/lock_24px.png diff --git a/Source/Base/cotter.xcassets/lock_24px.imageset/lock_24px@2x.png b/Cotter/Resources/cotter.xcassets/lock_24px.imageset/lock_24px@2x.png similarity index 100% rename from Source/Base/cotter.xcassets/lock_24px.imageset/lock_24px@2x.png rename to Cotter/Resources/cotter.xcassets/lock_24px.imageset/lock_24px@2x.png diff --git a/Source/Base/cotter.xcassets/lock_24px.imageset/lock_24px@3x.png b/Cotter/Resources/cotter.xcassets/lock_24px.imageset/lock_24px@3x.png similarity index 100% rename from Source/Base/cotter.xcassets/lock_24px.imageset/lock_24px@3x.png rename to Cotter/Resources/cotter.xcassets/lock_24px.imageset/lock_24px@3x.png diff --git a/Example/CotterIOS/Images.xcassets/success_illustration.imageset/Contents.json b/Cotter/Resources/cotter.xcassets/success_illustration.imageset/Contents.json similarity index 100% rename from Example/CotterIOS/Images.xcassets/success_illustration.imageset/Contents.json rename to Cotter/Resources/cotter.xcassets/success_illustration.imageset/Contents.json diff --git a/Example/CotterIOS/Images.xcassets/success_illustration.imageset/Illustration_Success_2x.png b/Cotter/Resources/cotter.xcassets/success_illustration.imageset/Illustration_Success_2x.png similarity index 100% rename from Example/CotterIOS/Images.xcassets/success_illustration.imageset/Illustration_Success_2x.png rename to Cotter/Resources/cotter.xcassets/success_illustration.imageset/Illustration_Success_2x.png diff --git a/Example/CotterIOS/Images.xcassets/success_illustration.imageset/Illustration_Success_3x.png b/Cotter/Resources/cotter.xcassets/success_illustration.imageset/Illustration_Success_3x.png similarity index 100% rename from Example/CotterIOS/Images.xcassets/success_illustration.imageset/Illustration_Success_3x.png rename to Cotter/Resources/cotter.xcassets/success_illustration.imageset/Illustration_Success_3x.png diff --git a/Source/Service/APIServiceProtocol.swift b/Cotter/Service/APIServiceProtocol.swift similarity index 100% rename from Source/Service/APIServiceProtocol.swift rename to Cotter/Service/APIServiceProtocol.swift diff --git a/Source/Service/CotterAPIService.swift b/Cotter/Service/CotterAPIService.swift similarity index 100% rename from Source/Service/CotterAPIService.swift rename to Cotter/Service/CotterAPIService.swift diff --git a/Source/Service/CotterClient.swift b/Cotter/Service/CotterClient.swift similarity index 100% rename from Source/Service/CotterClient.swift rename to Cotter/Service/CotterClient.swift diff --git a/Source/Service/HTTPCallback.swift b/Cotter/Service/HTTPCallback.swift similarity index 100% rename from Source/Service/HTTPCallback.swift rename to Cotter/Service/HTTPCallback.swift diff --git a/Source/Service/Models/EnrolledMethods.swift b/Cotter/Service/Models/EnrolledMethods.swift similarity index 100% rename from Source/Service/Models/EnrolledMethods.swift rename to Cotter/Service/Models/EnrolledMethods.swift diff --git a/Source/Service/Models/Event.swift b/Cotter/Service/Models/Event.swift similarity index 100% rename from Source/Service/Models/Event.swift rename to Cotter/Service/Models/Event.swift diff --git a/Source/Service/Models/Identity.swift b/Cotter/Service/Models/Identity.swift similarity index 100% rename from Source/Service/Models/Identity.swift rename to Cotter/Service/Models/Identity.swift diff --git a/Source/Service/Models/NotificationCredential.swift b/Cotter/Service/Models/NotificationCredential.swift similarity index 100% rename from Source/Service/Models/NotificationCredential.swift rename to Cotter/Service/Models/NotificationCredential.swift diff --git a/Source/Service/Models/OAuthToken.swift b/Cotter/Service/Models/OAuthToken.swift similarity index 100% rename from Source/Service/Models/OAuthToken.swift rename to Cotter/Service/Models/OAuthToken.swift diff --git a/Source/Service/Models/Request.swift b/Cotter/Service/Models/Request.swift similarity index 100% rename from Source/Service/Models/Request.swift rename to Cotter/Service/Models/Request.swift diff --git a/Source/Service/Models/Response.swift b/Cotter/Service/Models/Response.swift similarity index 100% rename from Source/Service/Models/Response.swift rename to Cotter/Service/Models/Response.swift diff --git a/Source/Service/Models/User.swift b/Cotter/Service/Models/User.swift similarity index 100% rename from Source/Service/Models/User.swift rename to Cotter/Service/Models/User.swift diff --git a/Source/Service/Requests/CreateAuthenticationEvent.swift b/Cotter/Service/Requests/CreateAuthenticationEvent.swift similarity index 100% rename from Source/Service/Requests/CreateAuthenticationEvent.swift rename to Cotter/Service/Requests/CreateAuthenticationEvent.swift diff --git a/Source/Service/Requests/CreatePendingEventRequest.swift b/Cotter/Service/Requests/CreatePendingEventRequest.swift similarity index 100% rename from Source/Service/Requests/CreatePendingEventRequest.swift rename to Cotter/Service/Requests/CreatePendingEventRequest.swift diff --git a/Source/Service/Requests/EnrollTrustedDevice.swift b/Cotter/Service/Requests/EnrollTrustedDevice.swift similarity index 100% rename from Source/Service/Requests/EnrollTrustedDevice.swift rename to Cotter/Service/Requests/EnrollTrustedDevice.swift diff --git a/Source/Service/Requests/EnrollUserPIN.swift b/Cotter/Service/Requests/EnrollUserPIN.swift similarity index 100% rename from Source/Service/Requests/EnrollUserPIN.swift rename to Cotter/Service/Requests/EnrollUserPIN.swift diff --git a/Source/Service/Requests/GetBiometricStatus.swift b/Cotter/Service/Requests/GetBiometricStatus.swift similarity index 100% rename from Source/Service/Requests/GetBiometricStatus.swift rename to Cotter/Service/Requests/GetBiometricStatus.swift diff --git a/Source/Service/Requests/GetEvent.swift b/Cotter/Service/Requests/GetEvent.swift similarity index 100% rename from Source/Service/Requests/GetEvent.swift rename to Cotter/Service/Requests/GetEvent.swift diff --git a/Source/Service/Requests/GetNewEvent.swift b/Cotter/Service/Requests/GetNewEvent.swift similarity index 100% rename from Source/Service/Requests/GetNewEvent.swift rename to Cotter/Service/Requests/GetNewEvent.swift diff --git a/Source/Service/Requests/GetNotificationAppID.swift b/Cotter/Service/Requests/GetNotificationAppID.swift similarity index 100% rename from Source/Service/Requests/GetNotificationAppID.swift rename to Cotter/Service/Requests/GetNotificationAppID.swift diff --git a/Source/Service/Requests/GetTrustedDeviceEnrolledAny.swift b/Cotter/Service/Requests/GetTrustedDeviceEnrolledAny.swift similarity index 100% rename from Source/Service/Requests/GetTrustedDeviceEnrolledAny.swift rename to Cotter/Service/Requests/GetTrustedDeviceEnrolledAny.swift diff --git a/Source/Service/Requests/GetTrustedDeviceStatus.swift b/Cotter/Service/Requests/GetTrustedDeviceStatus.swift similarity index 100% rename from Source/Service/Requests/GetTrustedDeviceStatus.swift rename to Cotter/Service/Requests/GetTrustedDeviceStatus.swift diff --git a/Source/Service/Requests/GetUser.swift b/Cotter/Service/Requests/GetUser.swift similarity index 100% rename from Source/Service/Requests/GetUser.swift rename to Cotter/Service/Requests/GetUser.swift diff --git a/Source/Service/Requests/RefreshToken.swift b/Cotter/Service/Requests/RefreshToken.swift similarity index 100% rename from Source/Service/Requests/RefreshToken.swift rename to Cotter/Service/Requests/RefreshToken.swift diff --git a/Source/Service/Requests/RegisterBiometric.swift b/Cotter/Service/Requests/RegisterBiometric.swift similarity index 100% rename from Source/Service/Requests/RegisterBiometric.swift rename to Cotter/Service/Requests/RegisterBiometric.swift diff --git a/Source/Service/Requests/RegisterUser.swift b/Cotter/Service/Requests/RegisterUser.swift similarity index 100% rename from Source/Service/Requests/RegisterUser.swift rename to Cotter/Service/Requests/RegisterUser.swift diff --git a/Source/Service/Requests/RemoveTrustedDeviceStatus.swift b/Cotter/Service/Requests/RemoveTrustedDeviceStatus.swift similarity index 100% rename from Source/Service/Requests/RemoveTrustedDeviceStatus.swift rename to Cotter/Service/Requests/RemoveTrustedDeviceStatus.swift diff --git a/Source/Service/Requests/RequestPINReset.swift b/Cotter/Service/Requests/RequestPINReset.swift similarity index 100% rename from Source/Service/Requests/RequestPINReset.swift rename to Cotter/Service/Requests/RequestPINReset.swift diff --git a/Source/Service/Requests/RequestToken.swift b/Cotter/Service/Requests/RequestToken.swift similarity index 100% rename from Source/Service/Requests/RequestToken.swift rename to Cotter/Service/Requests/RequestToken.swift diff --git a/Source/Service/Requests/ResetPIN.swift b/Cotter/Service/Requests/ResetPIN.swift similarity index 100% rename from Source/Service/Requests/ResetPIN.swift rename to Cotter/Service/Requests/ResetPIN.swift diff --git a/Source/Service/Requests/RespondEvent.swift b/Cotter/Service/Requests/RespondEvent.swift similarity index 100% rename from Source/Service/Requests/RespondEvent.swift rename to Cotter/Service/Requests/RespondEvent.swift diff --git a/Source/Service/Requests/UpdateBiometricStatus.swift b/Cotter/Service/Requests/UpdateBiometricStatus.swift similarity index 100% rename from Source/Service/Requests/UpdateBiometricStatus.swift rename to Cotter/Service/Requests/UpdateBiometricStatus.swift diff --git a/Source/Service/Requests/UpdateUserPIN.swift b/Cotter/Service/Requests/UpdateUserPIN.swift similarity index 100% rename from Source/Service/Requests/UpdateUserPIN.swift rename to Cotter/Service/Requests/UpdateUserPIN.swift diff --git a/Source/Service/Requests/VerifyPINResetCode.swift b/Cotter/Service/Requests/VerifyPINResetCode.swift similarity index 100% rename from Source/Service/Requests/VerifyPINResetCode.swift rename to Cotter/Service/Requests/VerifyPINResetCode.swift diff --git a/Source/SourceryTemplates/AutoEquatable.stencil b/Cotter/SourceryTemplates/AutoEquatable.stencil similarity index 100% rename from Source/SourceryTemplates/AutoEquatable.stencil rename to Cotter/SourceryTemplates/AutoEquatable.stencil diff --git a/Source/SourceryTemplates/MockedAPIClient.stencil b/Cotter/SourceryTemplates/MockedAPIClient.stencil similarity index 100% rename from Source/SourceryTemplates/MockedAPIClient.stencil rename to Cotter/SourceryTemplates/MockedAPIClient.stencil diff --git a/Source/TransactionPINViewController.swift b/Cotter/TransactionPINViewController.swift similarity index 97% rename from Source/TransactionPINViewController.swift rename to Cotter/TransactionPINViewController.swift index 5aa21cd..0f4816d 100644 --- a/Source/TransactionPINViewController.swift +++ b/Cotter/TransactionPINViewController.swift @@ -22,7 +22,6 @@ public class TransactionPINViewControllerKey { protocol TransactionPINViewPresenter { func onViewAppeared() func onViewLoaded() - func onClickPinVis(button: UIButton) } // MARK: - Properties of TransactionPINViewController @@ -83,10 +82,6 @@ class TransactionPINViewPresenterImpl: TransactionPINViewPresenter { viewController.setupDelegates() viewController.render(props) } - - func onClickPinVis(button: UIButton) { - viewController.togglePinVisibility(button: button, showPinText: props.showPinText, hidePinText: props.hidePinText) - } } class TransactionPINViewController: UIViewController { diff --git a/Source/TrustedDevice/TrustedDevice.swift b/Cotter/TrustedDevice/TrustedDevice.swift similarity index 99% rename from Source/TrustedDevice/TrustedDevice.swift rename to Cotter/TrustedDevice/TrustedDevice.swift index fc08b25..94dcf5e 100644 --- a/Source/TrustedDevice/TrustedDevice.swift +++ b/Cotter/TrustedDevice/TrustedDevice.swift @@ -4,7 +4,7 @@ // // Created by Albert Purnama on 3/24/20. // -import Foundation +import UIKit import os.log class TrustedDevice { diff --git a/Source/UpdateConfirmNewPINViewController.swift b/Cotter/UpdateConfirmNewPINViewController.swift similarity index 100% rename from Source/UpdateConfirmNewPINViewController.swift rename to Cotter/UpdateConfirmNewPINViewController.swift diff --git a/Source/UpdateCreateNewPINViewController.swift b/Cotter/UpdateCreateNewPINViewController.swift similarity index 100% rename from Source/UpdateCreateNewPINViewController.swift rename to Cotter/UpdateCreateNewPINViewController.swift diff --git a/Source/UpdatePINViewController.swift b/Cotter/UpdatePINViewController.swift similarity index 100% rename from Source/UpdatePINViewController.swift rename to Cotter/UpdatePINViewController.swift diff --git a/Source/Util/Image.swift b/Cotter/Util/Image.swift similarity index 100% rename from Source/Util/Image.swift rename to Cotter/Util/Image.swift diff --git a/Source/Util/Token.swift b/Cotter/Util/Token.swift similarity index 100% rename from Source/Util/Token.swift rename to Cotter/Util/Token.swift diff --git a/Example/Tests/Cases/Models/CotterImagesTests.swift b/CotterTests/Cases/Models/CotterImagesTests.swift similarity index 100% rename from Example/Tests/Cases/Models/CotterImagesTests.swift rename to CotterTests/Cases/Models/CotterImagesTests.swift diff --git a/Example/Tests/Cases/Models/CotterStringsTests.swift b/CotterTests/Cases/Models/CotterStringsTests.swift similarity index 100% rename from Example/Tests/Cases/Models/CotterStringsTests.swift rename to CotterTests/Cases/Models/CotterStringsTests.swift diff --git a/Example/Tests/Cases/Models/ImageObjectTests.swift b/CotterTests/Cases/Models/ImageObjectTests.swift similarity index 100% rename from Example/Tests/Cases/Models/ImageObjectTests.swift rename to CotterTests/Cases/Models/ImageObjectTests.swift diff --git a/Example/Tests/Cases/Models/LanguageObjectTests.swift b/CotterTests/Cases/Models/LanguageObjectTests.swift similarity index 100% rename from Example/Tests/Cases/Models/LanguageObjectTests.swift rename to CotterTests/Cases/Models/LanguageObjectTests.swift diff --git a/Example/Tests/Cases/Models/UserInfoTests.swift b/CotterTests/Cases/Models/UserInfoTests.swift similarity index 100% rename from Example/Tests/Cases/Models/UserInfoTests.swift rename to CotterTests/Cases/Models/UserInfoTests.swift diff --git a/Example/Tests/Cases/Services/APIClientTests.swift b/CotterTests/Cases/Services/APIClientTests.swift similarity index 100% rename from Example/Tests/Cases/Services/APIClientTests.swift rename to CotterTests/Cases/Services/APIClientTests.swift diff --git a/Example/Tests/Cases/Services/APIServiceTests.swift b/CotterTests/Cases/Services/APIServiceTests.swift similarity index 96% rename from Example/Tests/Cases/Services/APIServiceTests.swift rename to CotterTests/Cases/Services/APIServiceTests.swift index a0be2d6..7d59207 100644 --- a/Example/Tests/Cases/Services/APIServiceTests.swift +++ b/CotterTests/Cases/Services/APIServiceTests.swift @@ -56,26 +56,26 @@ class APIServiceTests: XCTestCase { expect(err).to(beNil()) } - func testRegisterUser() { - var resp: Codable? - var err: Error? = nil - - mockAPIService.registerUser(userID: mock.userID) { response in - switch response { - case .success(let response): - resp = response - case .failure(let error): - err = error - } - } - - let req = RegisterUser(userID: mock.userID) - - expect(self.mockAPIService.registerUserCalled).to(beTrue()) - expect(self.mockAPIService.registerUserInputRequest).to(equal(req)) - expect(resp).to(beAKindOf(CotterUser.self)) - expect(err).to(beNil()) - } + // func testRegisterUser() { + // var resp: Codable? + // var err: Error? = nil + // + // mockAPIService.registerUser(userID: mock.userID, identifier: mock.identifier) { response in + // switch response { + // case .success(let response): + // resp = response + // case .failure(let error): + // err = error + // } + // } + // + // let req = RegisterUser(userID: mock.userID) + // + // expect(self.mockAPIService.registerUserCalled).to(beTrue()) + // expect(self.mockAPIService.registerUserInputRequest).to(equal(req)) + // expect(resp).to(beAKindOf(CotterUser.self)) + // expect(err).to(beNil()) + // } func testEnrollUserPin() { var resp: Codable? diff --git a/Example/Tests/Cases/View Controllers/PINConfirmViewControllerTests.swift b/CotterTests/Cases/View Controllers/PINConfirmViewControllerTests.swift similarity index 70% rename from Example/Tests/Cases/View Controllers/PINConfirmViewControllerTests.swift rename to CotterTests/Cases/View Controllers/PINConfirmViewControllerTests.swift index 6a09dcc..ab12cb6 100644 --- a/Example/Tests/Cases/View Controllers/PINConfirmViewControllerTests.swift +++ b/CotterTests/Cases/View Controllers/PINConfirmViewControllerTests.swift @@ -47,23 +47,7 @@ class PINConfirmViewControllerTests: XCTestCase { dangerColor: dangerColor ) } - - func testViewDidLoadCallsPresenter() { - let sut = makeSUT() - - sut.viewDidLoad() - - expect(self.presenter.onViewLoadCalled).to(beTrue()) - } - func testOnClickPinVisCallsPresenter() { - let sut = makeSUT() - - sut.onClickPinVis(.init()) - - expect(self.presenter.onClickPinVisCalled).to(beTrue()) - } - func testRender() { let props = setupProps() @@ -73,22 +57,9 @@ class PINConfirmViewControllerTests: XCTestCase { // expect(sut.navigationItem.title).to(match(navTitle)) expect(sut.titleLabel.text).to(match(title)) - expect(sut.pinVisibilityButton.title(for: .normal)).to(match(showPinText)) - expect(sut.pinVisibilityButton.titleColor(for: .normal)).to(equal(primaryColor)) expect(sut.errorLabel.textColor).to(equal(dangerColor)) } - func testOnClickPinVis() { - let props = setupProps() - - let sut = makeSUT(actualPresenter: true) - sut.render(props) // Sets pinVisibilityButton title to be showPinText initially - - sut.onClickPinVis(sut.pinVisibilityButton) - - expect(sut.pinVisibilityButton.title(for: .normal)).to(match(hidePinText)) - } - func testToggleErrorMsg() { let sut = makeSUT(actualPresenter: true) // errorLabel is hidden initially let msg = "Test Error" @@ -108,9 +79,4 @@ class PINConfirmViewPresenterMock: PINConfirmViewPresenter { onViewLoadCalled = true } - private(set) var onClickPinVisCalled = false - - func onClickPinVis(button: UIButton) { - onClickPinVisCalled = true - } } diff --git a/Example/Tests/Cases/View Controllers/PINFinalViewControllerTests.swift b/CotterTests/Cases/View Controllers/PINFinalViewControllerTests.swift similarity index 86% rename from Example/Tests/Cases/View Controllers/PINFinalViewControllerTests.swift rename to CotterTests/Cases/View Controllers/PINFinalViewControllerTests.swift index 4b98356..ab4a32b 100644 --- a/Example/Tests/Cases/View Controllers/PINFinalViewControllerTests.swift +++ b/CotterTests/Cases/View Controllers/PINFinalViewControllerTests.swift @@ -17,6 +17,9 @@ class PINFinalViewControllerTests: XCTestCase { let successTitle = CotterStrings.instance.getText(for: PINFinalViewControllerKey.title) let successSubtitle = CotterStrings.instance.getText(for: PINFinalViewControllerKey.subtitle) let successButtonTitle = CotterStrings.instance.getText(for: PINFinalViewControllerKey.buttonText) + let titleUpdate = CotterStrings.instance.getText(for: PINFinalViewControllerKey.titleUpdate) + let subtitleUpdate = CotterStrings.instance.getText(for: PINFinalViewControllerKey.subtitleUpdate) + let buttonTitleUpdate = CotterStrings.instance.getText(for: PINFinalViewControllerKey.buttonTextUpdate) // MARK: - VC Image Definitions let successImage = CotterImages.instance.getImage(for: VCImageKey.pinSuccessImg) @@ -43,6 +46,9 @@ class PINFinalViewControllerTests: XCTestCase { title: successTitle, subtitle: successSubtitle, buttonTitle: successButtonTitle, + titleUpdate: titleUpdate, + subtitleUpdate: subtitleUpdate, + buttonTitleUpdate: buttonTitleUpdate, successImage: successImage, primaryColor: primaryColor, accentColor: accentColor, diff --git a/Example/Tests/Cases/View Controllers/PINViewControllerTests.swift b/CotterTests/Cases/View Controllers/PINViewControllerTests.swift similarity index 75% rename from Example/Tests/Cases/View Controllers/PINViewControllerTests.swift rename to CotterTests/Cases/View Controllers/PINViewControllerTests.swift index 7558bba..57a5968 100644 --- a/Example/Tests/Cases/View Controllers/PINViewControllerTests.swift +++ b/CotterTests/Cases/View Controllers/PINViewControllerTests.swift @@ -57,14 +57,6 @@ class PINViewControllerTests: XCTestCase { expect(self.presenter.onViewLoadCalled).to(beTrue()) } - func testOnClickPinVisCallsPresenter() { - let sut = makeSUT() - - sut.onClickPinVis(.init()) - - expect(self.presenter.onClickPinVisCalled).to(beTrue()) - } - func testRender() { let props = setupProps() @@ -74,21 +66,9 @@ class PINViewControllerTests: XCTestCase { // expect(sut.navigationItem.title).to(match(navTitle)) expect(sut.titleLabel.text).to(match(title)) - expect(sut.pinVisibilityButton.title(for: .normal)).to(match(showPinText)) - expect(sut.pinVisibilityButton.titleColor(for: .normal)).to(equal(primaryColor)) expect(sut.errorLabel.textColor).to(equal(dangerColor)) } - func testOnClickPinVis() { - let props = setupProps() - - let sut = makeSUT(actualPresenter: true) - sut.render(props) // Sets pinVisibilityButton title to be showPinText initially - - sut.onClickPinVis(sut.pinVisibilityButton) - - expect(sut.pinVisibilityButton.title(for: .normal)).to(match(hidePinText)) - } func testToggleErrorMsg() { let sut = makeSUT(actualPresenter: true) // errorLabel is hidden initially @@ -108,11 +88,5 @@ class PINViewPresenterMock: PINViewPresenter { func onViewLoaded() { onViewLoadCalled = true } - - private(set) var onClickPinVisCalled = false - - func onClickPinVis(button: UIButton) { - onClickPinVisCalled = true - } } diff --git a/Example/Tests/Cases/View Controllers/ResetConfirmPINViewControllerTests.swift b/CotterTests/Cases/View Controllers/ResetConfirmPINViewControllerTests.swift similarity index 75% rename from Example/Tests/Cases/View Controllers/ResetConfirmPINViewControllerTests.swift rename to CotterTests/Cases/View Controllers/ResetConfirmPINViewControllerTests.swift index 41f7e56..711122b 100644 --- a/Example/Tests/Cases/View Controllers/ResetConfirmPINViewControllerTests.swift +++ b/CotterTests/Cases/View Controllers/ResetConfirmPINViewControllerTests.swift @@ -55,14 +55,6 @@ class ResetConfirmPINViewControllerTests: XCTestCase { expect(self.presenter.onViewLoadCalled).to(beTrue()) } - - func testOnClickPinVisCallsPresenter() { - let sut = makeSUT() - - sut.onClickPinVis(.init()) - - expect(self.presenter.onClickPinVisCalled).to(beTrue()) - } func testRender() { let props = setupProps() @@ -73,22 +65,9 @@ class ResetConfirmPINViewControllerTests: XCTestCase { // expect(sut.navigationItem.title).to(match(navTitle)) expect(sut.titleLabel.text).to(match(titleText)) - expect(sut.pinVisibilityButton.title(for: .normal)).to(match(showPinText)) - expect(sut.pinVisibilityButton.titleColor(for: .normal)).to(equal(primaryColor)) expect(sut.errorLabel.textColor).to(equal(dangerColor)) } - func testOnClickPinVis() { - let props = setupProps() - - let sut = makeSUT(actualPresenter: true) - sut.render(props) // Sets pinVisibilityButton title to be showPinText initially - - sut.onClickPinVis(sut.pinVisibilityButton) - - expect(sut.pinVisibilityButton.title(for: .normal)).to(match(hidePinText)) - } - func testToggleErrorMsg() { let sut = makeSUT(actualPresenter: true) // errorLabel is hidden initially let msg = "Test Error" @@ -107,11 +86,4 @@ class ResetConfirmPINViewPresenterMock: ResetConfirmPINViewPresenter { func onViewLoaded() { onViewLoadCalled = true } - - private(set) var onClickPinVisCalled = false - - func onClickPinVis(button: UIButton) { - onClickPinVisCalled = true - } - } diff --git a/Example/Tests/Cases/View Controllers/ResetNewPINViewControllerTests.swift b/CotterTests/Cases/View Controllers/ResetNewPINViewControllerTests.swift similarity index 79% rename from Example/Tests/Cases/View Controllers/ResetNewPINViewControllerTests.swift rename to CotterTests/Cases/View Controllers/ResetNewPINViewControllerTests.swift index a2577f2..01b5bb1 100644 --- a/Example/Tests/Cases/View Controllers/ResetNewPINViewControllerTests.swift +++ b/CotterTests/Cases/View Controllers/ResetNewPINViewControllerTests.swift @@ -55,15 +55,7 @@ class ResetNewPINViewControllerTests: XCTestCase { expect(self.presenter.onViewLoadCalled).to(beTrue()) } - - func testOnClickPinVisCallsPresenter() { - let sut = makeSUT() - - sut.onClickPinVis(.init()) - - expect(self.presenter.onClickPinVisCalled).to(beTrue()) - } - + func testRender() { let props = setupProps() @@ -73,22 +65,9 @@ class ResetNewPINViewControllerTests: XCTestCase { // expect(sut.navigationItem.title).to(match(navTitle)) expect(sut.titleLabel.text).to(match(titleText)) - expect(sut.pinVisibilityButton.title(for: .normal)).to(match(showPinText)) - expect(sut.pinVisibilityButton.titleColor(for: .normal)).to(equal(primaryColor)) expect(sut.errorLabel.textColor).to(equal(dangerColor)) } - func testOnClickPinVis() { - let props = setupProps() - - let sut = makeSUT(actualPresenter: true) - sut.render(props) // Sets pinVisibilityButton title to be showPinText initially - - sut.onClickPinVis(sut.pinVisibilityButton) - - expect(sut.pinVisibilityButton.title(for: .normal)).to(match(hidePinText)) - } - func testToggleErrorMsg() { let sut = makeSUT(actualPresenter: true) // errorLabel is hidden initially let msg = "Test Error" diff --git a/Example/Tests/Cases/View Controllers/ResetPINViewControllerTests.swift b/CotterTests/Cases/View Controllers/ResetPINViewControllerTests.swift similarity index 80% rename from Example/Tests/Cases/View Controllers/ResetPINViewControllerTests.swift rename to CotterTests/Cases/View Controllers/ResetPINViewControllerTests.swift index b874667..6d2e7bb 100644 --- a/Example/Tests/Cases/View Controllers/ResetPINViewControllerTests.swift +++ b/CotterTests/Cases/View Controllers/ResetPINViewControllerTests.swift @@ -19,6 +19,9 @@ class ResetPINViewControllerTests: XCTestCase { let resetOpeningSub = CotterStrings.instance.getText(for: ResetPINViewControllerKey.subtitle) let resetFailSub = CotterStrings.instance.getText(for: ResetPINViewControllerKey.resetFailSub) let resendEmailText = CotterStrings.instance.getText(for: ResetPINViewControllerKey.resendEmail) + let resendEmailSnackbarText = CotterStrings.instance.getText(for: ResetPINViewControllerKey.resendEmailSnackbarText) + + let resendEmailSnackbarIcon = CotterImages.instance.getImage(for: VCImageKey.resendSnackbarIcon) // MARK: - VC Color Definitions let primaryColor = Config.instance.colors.primary @@ -44,19 +47,13 @@ class ResetPINViewControllerTests: XCTestCase { resetOpeningSub: resetOpeningSub, resetFailSub: resetFailSub, resendEmail: resendEmailText, + resendEmailSnackbarText: resendEmailSnackbarText, primaryColor: primaryColor, accentColor: accentColor, - dangerColor: dangerColor + dangerColor: dangerColor, + resendEmailSnackbarIcon: resendEmailSnackbarIcon ) } - - func testViewDidAppearCallsPresenter() { - let sut = makeSUT() - - sut.viewDidAppear(true) - - expect(self.presenter.onViewAppearCalled).to(beTrue()) - } func testViewDidLoadCallsPresenter() { let sut = makeSUT() @@ -91,21 +88,21 @@ class ResetPINViewControllerTests: XCTestCase { expect(sut.resendEmailButton.title(for: .normal)).to(match(resendEmailText)) expect(sut.resendEmailButton.titleColor(for: .normal)).to(equal(primaryColor)) } - - func testRenderWithNoUserInfo() { - Config.instance.userInfo = nil - let props = setupProps() - - let sut = makeSUT() - - sut.render(props) - - // expect(sut.navigationItem.title).to(match(navTitle)) - expect(sut.resetPinTitle.text).to(match(resetTitle)) - expect(sut.resetPinError.textColor).to(equal(dangerColor)) - expect(sut.resetPinSubtitle.text).to(match(resetFailSub)) - expect(sut.resendEmailButton.isEnabled).to(beFalse()) - } + + // func testRenderWithNoUserInfo() { + // Config.instance.userInfo = nil + // let props = setupProps() + // + // let sut = makeSUT() + // + // sut.render(props) + // + // // expect(sut.navigationItem.title).to(match(navTitle)) + // expect(sut.resetPinTitle.text).to(match(resetTitle)) + // expect(sut.resetPinError.textColor).to(equal(dangerColor)) + // expect(sut.resetPinSubtitle.text).to(match(resetFailSub)) + // expect(sut.resendEmailButton.isEnabled).to(beFalse()) + // } func testToggleErrorMsg() { let sut = makeSUT(actualPresenter: true) // errorLabel is hidden initially diff --git a/Example/Tests/Cases/View Controllers/TransactionPINViewControllerTests.swift b/CotterTests/Cases/View Controllers/TransactionPINViewControllerTests.swift similarity index 78% rename from Example/Tests/Cases/View Controllers/TransactionPINViewControllerTests.swift rename to CotterTests/Cases/View Controllers/TransactionPINViewControllerTests.swift index 26bad70..72b74b9 100644 --- a/Example/Tests/Cases/View Controllers/TransactionPINViewControllerTests.swift +++ b/CotterTests/Cases/View Controllers/TransactionPINViewControllerTests.swift @@ -66,14 +66,6 @@ class TransactionPINViewControllerTests: XCTestCase { expect(self.presenter.onViewLoadCalled).to(beTrue()) } - func testOnClickPinVisCallsPresenter() { - let sut = makeSUT() - - sut.onClickPinVis(.init()) - - expect(self.presenter.onClickPinVisCalled).to(beTrue()) - } - func testRender() { let props = setupProps() @@ -84,21 +76,8 @@ class TransactionPINViewControllerTests: XCTestCase { // expect(sut.navigationItem.title).to(match(navTitle)) expect(sut.titleLabel.text).to(match(titleText)) expect(sut.errorLabel.textColor).to(equal(dangerColor)) - expect(sut.pinVisibilityButton.title(for: .normal)).to(match(showPinText)) - expect(sut.pinVisibilityButton.titleColor(for: .normal)).to(equal(primaryColor)) expect(sut.forgetPinButton.title(for: .normal)).to(match(forgetPinText)) - expect(sut.forgetPinButton.titleColor(for: .normal)).to(equal(accentColor)) - } - - func testOnClickPinVis() { - let props = setupProps() - - let sut = makeSUT(actualPresenter: true) - sut.render(props) // Sets pinVisibilityButton title to be showPinText initially - - sut.onClickPinVis(sut.pinVisibilityButton) - - expect(sut.pinVisibilityButton.title(for: .normal)).to(match(hidePinText)) + expect(sut.forgetPinButton.titleColor(for: .normal)).to(equal(primaryColor)) } func testToggleErrorMsg() { @@ -113,7 +92,6 @@ class TransactionPINViewControllerTests: XCTestCase { } class TransactionPINViewPresenterMock: TransactionPINViewPresenter { - private(set) var onViewAppearCalled = false func onViewAppeared() { @@ -125,11 +103,4 @@ class TransactionPINViewPresenterMock: TransactionPINViewPresenter { func onViewLoaded() { onViewLoadCalled = true } - - private(set) var onClickPinVisCalled = false - - func onClickPinVis(button: UIButton) { - onClickPinVisCalled = true - } - } diff --git a/Example/Tests/Cases/View Controllers/UpdateConfirmNewPINViewControllerTests.swift b/CotterTests/Cases/View Controllers/UpdateConfirmNewPINViewControllerTests.swift similarity index 76% rename from Example/Tests/Cases/View Controllers/UpdateConfirmNewPINViewControllerTests.swift rename to CotterTests/Cases/View Controllers/UpdateConfirmNewPINViewControllerTests.swift index 2f96f51..8093850 100644 --- a/Example/Tests/Cases/View Controllers/UpdateConfirmNewPINViewControllerTests.swift +++ b/CotterTests/Cases/View Controllers/UpdateConfirmNewPINViewControllerTests.swift @@ -56,14 +56,6 @@ class UpdateConfirmNewPINViewControllerTests: XCTestCase { expect(self.presenter.onViewLoadCalled).to(beTrue()) } - func testOnClickPinVisCallsPresenter() { - let sut = makeSUT() - - sut.onClickPinVis(.init()) - - expect(self.presenter.onClickPinVisCalled).to(beTrue()) - } - func testRender() { let props = setupProps() @@ -73,22 +65,9 @@ class UpdateConfirmNewPINViewControllerTests: XCTestCase { // expect(sut.navigationItem.title).to(match(navTitle)) expect(sut.titleLabel.text).to(match(titleText)) - expect(sut.pinVisibilityButton.title(for: .normal)).to(match(showPinText)) - expect(sut.pinVisibilityButton.titleColor(for: .normal)).to(equal(primaryColor)) expect(sut.errorLabel.textColor).to(equal(dangerColor)) } - func testOnClickPinVis() { - let props = setupProps() - - let sut = makeSUT(actualPresenter: true) - sut.render(props) // Sets pinVisibilityButton title to be showPinText initially - - sut.onClickPinVis(sut.pinVisibilityButton) - - expect(sut.pinVisibilityButton.title(for: .normal)).to(match(hidePinText)) - } - func testToggleErrorMsg() { let sut = makeSUT(actualPresenter: true) // errorLabel is hidden initially let msg = "Test Error" @@ -108,12 +87,4 @@ class UpdateConfirmNewPINViewPresenterMock: UpdateConfirmNewPINViewPresenter { func onViewLoaded() { onViewLoadCalled = true } - - private(set) var onClickPinVisCalled = false - - func onClickPinVis(button: UIButton) { - onClickPinVisCalled = true - } - - } diff --git a/Example/Tests/Cases/View Controllers/UpdateCreateNewPINViewControllerTests.swift b/CotterTests/Cases/View Controllers/UpdateCreateNewPINViewControllerTests.swift similarity index 76% rename from Example/Tests/Cases/View Controllers/UpdateCreateNewPINViewControllerTests.swift rename to CotterTests/Cases/View Controllers/UpdateCreateNewPINViewControllerTests.swift index f57fc46..4a49401 100644 --- a/Example/Tests/Cases/View Controllers/UpdateCreateNewPINViewControllerTests.swift +++ b/CotterTests/Cases/View Controllers/UpdateCreateNewPINViewControllerTests.swift @@ -56,14 +56,6 @@ class UpdateCreateNewPINViewControllerTests: XCTestCase { expect(self.presenter.onViewLoadCalled).to(beTrue()) } - func testOnClickPinVisCallsPresenter() { - let sut = makeSUT() - - sut.onClickPinVis(.init()) - - expect(self.presenter.onClickPinVisCalled).to(beTrue()) - } - func testRender() { let props = setupProps() @@ -73,21 +65,8 @@ class UpdateCreateNewPINViewControllerTests: XCTestCase { // expect(sut.navigationItem.title).to(match(navTitle)) expect(sut.titleLabel.text).to(match(titleText)) - expect(sut.pinVisibilityButton.title(for: .normal)).to(match(showPinText)) - expect(sut.pinVisibilityButton.titleColor(for: .normal)).to(equal(primaryColor)) expect(sut.errorLabel.textColor).to(equal(dangerColor)) } - - func testOnClickPinVis() { - let props = setupProps() - - let sut = makeSUT(actualPresenter: true) - sut.render(props) // Sets pinVisibilityButton title to be showPinText initially - - sut.onClickPinVis(sut.pinVisibilityButton) - - expect(sut.pinVisibilityButton.title(for: .normal)).to(match(hidePinText)) - } func testToggleErrorMsg() { let sut = makeSUT(actualPresenter: true) // errorLabel is hidden initially @@ -108,11 +87,4 @@ class UpdateCreateNewPINViewPresenterMock: UpdateCreateNewPINViewPresenter { func onViewLoaded() { onViewLoadCalled = true } - - private(set) var onClickPinVisCalled = false - - func onClickPinVis(button: UIButton) { - onClickPinVisCalled = true - } - } diff --git a/Example/Tests/Cases/View Controllers/UpdatePINViewControllerTests.swift b/CotterTests/Cases/View Controllers/UpdatePINViewControllerTests.swift similarity index 75% rename from Example/Tests/Cases/View Controllers/UpdatePINViewControllerTests.swift rename to CotterTests/Cases/View Controllers/UpdatePINViewControllerTests.swift index dfdf27a..31ec7cc 100644 --- a/Example/Tests/Cases/View Controllers/UpdatePINViewControllerTests.swift +++ b/CotterTests/Cases/View Controllers/UpdatePINViewControllerTests.swift @@ -56,14 +56,6 @@ class UpdatePINViewControllerTests: XCTestCase { expect(self.presenter.onViewLoadCalled).to(beTrue()) } - func testOnClickPinVisCallsPresenter() { - let sut = makeSUT() - - sut.onClickPinVis(.init()) - - expect(self.presenter.onClickPinVisCalled).to(beTrue()) - } - func testRender() { let props = setupProps() @@ -73,21 +65,8 @@ class UpdatePINViewControllerTests: XCTestCase { // expect(sut.navigationItem.title).to(match(navTitle)) expect(sut.titleLabel.text).to(match(titleText)) - expect(sut.pinVisibilityButton.title(for: .normal)).to(match(showPinText)) - expect(sut.pinVisibilityButton.titleColor(for: .normal)).to(equal(primaryColor)) expect(sut.errorLabel.textColor).to(equal(dangerColor)) } - - func testOnClickPinVis() { - let props = setupProps() - - let sut = makeSUT(actualPresenter: true) - sut.render(props) // Sets pinVisibilityButton title to be showPinText initially - - sut.onClickPinVis(sut.pinVisibilityButton) - - expect(sut.pinVisibilityButton.title(for: .normal)).to(match(hidePinText)) - } func testToggleErrorMsg() { let sut = makeSUT(actualPresenter: true) // errorLabel is hidden initially @@ -107,11 +86,4 @@ class UpdatePINViewPresenterMock: UpdatePINViewPresenter { func onViewLoaded() { onViewLoadCalled = true } - - private(set) var onClickPinVisCalled = false - - func onClickPinVis(button: UIButton) { - onClickPinVisCalled = true - } - } diff --git a/CotterTests/Info.plist b/CotterTests/Info.plist new file mode 100644 index 0000000..64d65ca --- /dev/null +++ b/CotterTests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/DevelopmentApp/DevelopmentApp.xcodeproj/project.pbxproj b/DevelopmentApp/DevelopmentApp.xcodeproj/project.pbxproj new file mode 100644 index 0000000..8726149 --- /dev/null +++ b/DevelopmentApp/DevelopmentApp.xcodeproj/project.pbxproj @@ -0,0 +1,546 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 51; + objects = { + +/* Begin PBXBuildFile section */ + 857B633A258B4D08001C5AC2 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6339258B4D08001C5AC2 /* AppDelegate.swift */; }; + 857B633E258B4D08001C5AC2 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B633D258B4D08001C5AC2 /* ViewController.swift */; }; + 857B6341258B4D08001C5AC2 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 857B633F258B4D08001C5AC2 /* Main.storyboard */; }; + 857B6343258B4D09001C5AC2 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 857B6342258B4D09001C5AC2 /* Assets.xcassets */; }; + 857B6522258B6422001C5AC2 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 857B6521258B6422001C5AC2 /* UIKit.framework */; }; + 857B653C258B6475001C5AC2 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 857B6524258B6474001C5AC2 /* LaunchScreen.xib */; }; + 857B653D258B6475001C5AC2 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 857B6526258B6474001C5AC2 /* Main.storyboard */; }; + 857B653E258B6475001C5AC2 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 857B6528258B6474001C5AC2 /* Assets.xcassets */; }; + 857B653F258B6475001C5AC2 /* ColorThemeLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6529258B6474001C5AC2 /* ColorThemeLabel.swift */; }; + 857B6540258B6475001C5AC2 /* Dashboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 857B652A258B6474001C5AC2 /* Dashboard.storyboard */; }; + 857B6541258B6475001C5AC2 /* Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B652B258B6474001C5AC2 /* Color.swift */; }; + 857B6542258B6475001C5AC2 /* DashboardViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B652C258B6474001C5AC2 /* DashboardViewController.swift */; }; + 857B6543258B6475001C5AC2 /* CryptoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B652D258B6474001C5AC2 /* CryptoViewController.swift */; }; + 857B6544258B6475001C5AC2 /* RegisterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B652E258B6474001C5AC2 /* RegisterViewController.swift */; }; + 857B6545258B6475001C5AC2 /* EntryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B652F258B6474001C5AC2 /* EntryViewController.swift */; }; + 857B6546258B6475001C5AC2 /* UIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6530258B6474001C5AC2 /* UIViewController.swift */; }; + 857B6547258B6475001C5AC2 /* InvertedBasicButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6531258B6474001C5AC2 /* InvertedBasicButton.swift */; }; + 857B6548258B6475001C5AC2 /* TweeTextFields.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6532258B6475001C5AC2 /* TweeTextFields.swift */; }; + 857B6549258B6475001C5AC2 /* LoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6533258B6475001C5AC2 /* LoginViewController.swift */; }; + 857B654A258B6475001C5AC2 /* Callback.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6534258B6475001C5AC2 /* Callback.swift */; }; + 857B654B258B6475001C5AC2 /* CotterWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6535258B6475001C5AC2 /* CotterWrapper.swift */; }; + 857B654C258B6475001C5AC2 /* CustomNavigationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6536258B6475001C5AC2 /* CustomNavigationViewController.swift */; }; + 857B654D258B6475001C5AC2 /* UserCheckViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6537258B6475001C5AC2 /* UserCheckViewController.swift */; }; + 857B654E258B6475001C5AC2 /* BasicButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B6538258B6475001C5AC2 /* BasicButton.swift */; }; + 857B654F258B6475001C5AC2 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 857B6539258B6475001C5AC2 /* Images.xcassets */; }; + 857B6550258B6475001C5AC2 /* Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B653A258B6475001C5AC2 /* Environment.swift */; }; + 857B6551258B6475001C5AC2 /* IPAddressViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857B653B258B6475001C5AC2 /* IPAddressViewController.swift */; }; + C4693787CB180EBC43B7C664 /* Pods_DevelopmentApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8EB6ACA8245028840E07A4F1 /* Pods_DevelopmentApp.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 5120C41DEB5E1CD6F794C4FD /* Pods-DevelopmentApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DevelopmentApp.debug.xcconfig"; path = "Target Support Files/Pods-DevelopmentApp/Pods-DevelopmentApp.debug.xcconfig"; sourceTree = ""; }; + 66DF1BC8CD601D4E96DCDA4A /* Pods-LocalizationTester.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LocalizationTester.debug.xcconfig"; path = "Target Support Files/Pods-LocalizationTester/Pods-LocalizationTester.debug.xcconfig"; sourceTree = ""; }; + 77728D7617BB8FDC052E79D5 /* Pods-DevelopmentApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DevelopmentApp.release.xcconfig"; path = "Target Support Files/Pods-DevelopmentApp/Pods-DevelopmentApp.release.xcconfig"; sourceTree = ""; }; + 857B6336258B4D08001C5AC2 /* DevelopmentApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DevelopmentApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 857B6339258B4D08001C5AC2 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 857B633D258B4D08001C5AC2 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 857B6340258B4D08001C5AC2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 857B6342258B4D09001C5AC2 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 857B6347258B4D09001C5AC2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 857B6521258B6422001C5AC2 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 857B6525258B6474001C5AC2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = LaunchScreen.xib; sourceTree = ""; }; + 857B6527258B6474001C5AC2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Main.storyboard; sourceTree = ""; }; + 857B6528258B6474001C5AC2 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 857B6529258B6474001C5AC2 /* ColorThemeLabel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ColorThemeLabel.swift; sourceTree = ""; }; + 857B652A258B6474001C5AC2 /* Dashboard.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Dashboard.storyboard; sourceTree = ""; }; + 857B652B258B6474001C5AC2 /* Color.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Color.swift; sourceTree = ""; }; + 857B652C258B6474001C5AC2 /* DashboardViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DashboardViewController.swift; sourceTree = ""; }; + 857B652D258B6474001C5AC2 /* CryptoViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CryptoViewController.swift; sourceTree = ""; }; + 857B652E258B6474001C5AC2 /* RegisterViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RegisterViewController.swift; sourceTree = ""; }; + 857B652F258B6474001C5AC2 /* EntryViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EntryViewController.swift; sourceTree = ""; }; + 857B6530258B6474001C5AC2 /* UIViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIViewController.swift; sourceTree = ""; }; + 857B6531258B6474001C5AC2 /* InvertedBasicButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InvertedBasicButton.swift; sourceTree = ""; }; + 857B6532258B6475001C5AC2 /* TweeTextFields.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TweeTextFields.swift; sourceTree = ""; }; + 857B6533258B6475001C5AC2 /* LoginViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginViewController.swift; sourceTree = ""; }; + 857B6534258B6475001C5AC2 /* Callback.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Callback.swift; sourceTree = ""; }; + 857B6535258B6475001C5AC2 /* CotterWrapper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CotterWrapper.swift; sourceTree = ""; }; + 857B6536258B6475001C5AC2 /* CustomNavigationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CustomNavigationViewController.swift; sourceTree = ""; }; + 857B6537258B6475001C5AC2 /* UserCheckViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserCheckViewController.swift; sourceTree = ""; }; + 857B6538258B6475001C5AC2 /* BasicButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BasicButton.swift; sourceTree = ""; }; + 857B6539258B6475001C5AC2 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + 857B653A258B6475001C5AC2 /* Environment.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Environment.swift; sourceTree = ""; }; + 857B653B258B6475001C5AC2 /* IPAddressViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IPAddressViewController.swift; sourceTree = ""; }; + 857B658E258B6760001C5AC2 /* Cotter.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Cotter.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 857B65D2258C0BB0001C5AC2 /* DevelopmentApp.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DevelopmentApp.entitlements; sourceTree = ""; }; + 8A7B178AC01FFCC02E2B2EA1 /* Pods-LocalizationTester.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LocalizationTester.release.xcconfig"; path = "Target Support Files/Pods-LocalizationTester/Pods-LocalizationTester.release.xcconfig"; sourceTree = ""; }; + 8EB6ACA8245028840E07A4F1 /* Pods_DevelopmentApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DevelopmentApp.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 857B6333258B4D08001C5AC2 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 857B6522258B6422001C5AC2 /* UIKit.framework in Frameworks */, + C4693787CB180EBC43B7C664 /* Pods_DevelopmentApp.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 857B632D258B4D08001C5AC2 = { + isa = PBXGroup; + children = ( + 857B6338258B4D08001C5AC2 /* DevelopmentApp */, + 857B6337258B4D08001C5AC2 /* Products */, + 857B651C258B6416001C5AC2 /* Frameworks */, + 8CFDBBD25E726658352F95B5 /* Pods */, + ); + sourceTree = ""; + }; + 857B6337258B4D08001C5AC2 /* Products */ = { + isa = PBXGroup; + children = ( + 857B6336258B4D08001C5AC2 /* DevelopmentApp.app */, + ); + name = Products; + sourceTree = ""; + }; + 857B6338258B4D08001C5AC2 /* DevelopmentApp */ = { + isa = PBXGroup; + children = ( + 857B65D2258C0BB0001C5AC2 /* DevelopmentApp.entitlements */, + 857B6528258B6474001C5AC2 /* Assets.xcassets */, + 857B6523258B6474001C5AC2 /* Base.lproj */, + 857B6538258B6475001C5AC2 /* BasicButton.swift */, + 857B6534258B6475001C5AC2 /* Callback.swift */, + 857B652B258B6474001C5AC2 /* Color.swift */, + 857B6529258B6474001C5AC2 /* ColorThemeLabel.swift */, + 857B6535258B6475001C5AC2 /* CotterWrapper.swift */, + 857B652D258B6474001C5AC2 /* CryptoViewController.swift */, + 857B6536258B6475001C5AC2 /* CustomNavigationViewController.swift */, + 857B652A258B6474001C5AC2 /* Dashboard.storyboard */, + 857B652C258B6474001C5AC2 /* DashboardViewController.swift */, + 857B652F258B6474001C5AC2 /* EntryViewController.swift */, + 857B653A258B6475001C5AC2 /* Environment.swift */, + 857B6539258B6475001C5AC2 /* Images.xcassets */, + 857B6531258B6474001C5AC2 /* InvertedBasicButton.swift */, + 857B653B258B6475001C5AC2 /* IPAddressViewController.swift */, + 857B6533258B6475001C5AC2 /* LoginViewController.swift */, + 857B652E258B6474001C5AC2 /* RegisterViewController.swift */, + 857B6532258B6475001C5AC2 /* TweeTextFields.swift */, + 857B6530258B6474001C5AC2 /* UIViewController.swift */, + 857B6537258B6475001C5AC2 /* UserCheckViewController.swift */, + 857B6339258B4D08001C5AC2 /* AppDelegate.swift */, + 857B633D258B4D08001C5AC2 /* ViewController.swift */, + 857B633F258B4D08001C5AC2 /* Main.storyboard */, + 857B6342258B4D09001C5AC2 /* Assets.xcassets */, + 857B6347258B4D09001C5AC2 /* Info.plist */, + ); + path = DevelopmentApp; + sourceTree = ""; + }; + 857B651C258B6416001C5AC2 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 857B658E258B6760001C5AC2 /* Cotter.framework */, + 857B6521258B6422001C5AC2 /* UIKit.framework */, + 8EB6ACA8245028840E07A4F1 /* Pods_DevelopmentApp.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 857B6523258B6474001C5AC2 /* Base.lproj */ = { + isa = PBXGroup; + children = ( + 857B6524258B6474001C5AC2 /* LaunchScreen.xib */, + 857B6526258B6474001C5AC2 /* Main.storyboard */, + ); + path = Base.lproj; + sourceTree = ""; + }; + 8CFDBBD25E726658352F95B5 /* Pods */ = { + isa = PBXGroup; + children = ( + 66DF1BC8CD601D4E96DCDA4A /* Pods-LocalizationTester.debug.xcconfig */, + 8A7B178AC01FFCC02E2B2EA1 /* Pods-LocalizationTester.release.xcconfig */, + 5120C41DEB5E1CD6F794C4FD /* Pods-DevelopmentApp.debug.xcconfig */, + 77728D7617BB8FDC052E79D5 /* Pods-DevelopmentApp.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 857B6335258B4D08001C5AC2 /* DevelopmentApp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 857B634A258B4D09001C5AC2 /* Build configuration list for PBXNativeTarget "DevelopmentApp" */; + buildPhases = ( + A2414E2A64F9E8FB63411E30 /* [CP] Check Pods Manifest.lock */, + 857B6332258B4D08001C5AC2 /* Sources */, + 857B6333258B4D08001C5AC2 /* Frameworks */, + 857B6334258B4D08001C5AC2 /* Resources */, + FA2C67EE80A1D07F6D3AAB33 /* [CP] Embed Pods Frameworks */, + 439364AAD8BB3A114C0349C9 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DevelopmentApp; + productName = LocalizationTester; + productReference = 857B6336258B4D08001C5AC2 /* DevelopmentApp.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 857B632E258B4D08001C5AC2 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1230; + LastUpgradeCheck = 1230; + TargetAttributes = { + 857B6335258B4D08001C5AC2 = { + CreatedOnToolsVersion = 12.3; + }; + }; + }; + buildConfigurationList = 857B6331258B4D08001C5AC2 /* Build configuration list for PBXProject "DevelopmentApp" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 857B632D258B4D08001C5AC2; + productRefGroup = 857B6337258B4D08001C5AC2 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 857B6335258B4D08001C5AC2 /* DevelopmentApp */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 857B6334258B4D08001C5AC2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 857B653C258B6475001C5AC2 /* LaunchScreen.xib in Resources */, + 857B654F258B6475001C5AC2 /* Images.xcassets in Resources */, + 857B653D258B6475001C5AC2 /* Main.storyboard in Resources */, + 857B6343258B4D09001C5AC2 /* Assets.xcassets in Resources */, + 857B653E258B6475001C5AC2 /* Assets.xcassets in Resources */, + 857B6540258B6475001C5AC2 /* Dashboard.storyboard in Resources */, + 857B6341258B4D08001C5AC2 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 439364AAD8BB3A114C0349C9 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-DevelopmentApp/Pods-DevelopmentApp-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-DevelopmentApp/Pods-DevelopmentApp-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DevelopmentApp/Pods-DevelopmentApp-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + A2414E2A64F9E8FB63411E30 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-DevelopmentApp-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + FA2C67EE80A1D07F6D3AAB33 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-DevelopmentApp/Pods-DevelopmentApp-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-DevelopmentApp/Pods-DevelopmentApp-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DevelopmentApp/Pods-DevelopmentApp-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 857B6332258B4D08001C5AC2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 857B654A258B6475001C5AC2 /* Callback.swift in Sources */, + 857B6548258B6475001C5AC2 /* TweeTextFields.swift in Sources */, + 857B633E258B4D08001C5AC2 /* ViewController.swift in Sources */, + 857B6542258B6475001C5AC2 /* DashboardViewController.swift in Sources */, + 857B633A258B4D08001C5AC2 /* AppDelegate.swift in Sources */, + 857B6544258B6475001C5AC2 /* RegisterViewController.swift in Sources */, + 857B6546258B6475001C5AC2 /* UIViewController.swift in Sources */, + 857B6543258B6475001C5AC2 /* CryptoViewController.swift in Sources */, + 857B6545258B6475001C5AC2 /* EntryViewController.swift in Sources */, + 857B654C258B6475001C5AC2 /* CustomNavigationViewController.swift in Sources */, + 857B653F258B6475001C5AC2 /* ColorThemeLabel.swift in Sources */, + 857B6541258B6475001C5AC2 /* Color.swift in Sources */, + 857B654E258B6475001C5AC2 /* BasicButton.swift in Sources */, + 857B6551258B6475001C5AC2 /* IPAddressViewController.swift in Sources */, + 857B654B258B6475001C5AC2 /* CotterWrapper.swift in Sources */, + 857B6550258B6475001C5AC2 /* Environment.swift in Sources */, + 857B654D258B6475001C5AC2 /* UserCheckViewController.swift in Sources */, + 857B6549258B6475001C5AC2 /* LoginViewController.swift in Sources */, + 857B6547258B6475001C5AC2 /* InvertedBasicButton.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 857B633F258B4D08001C5AC2 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 857B6340258B4D08001C5AC2 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 857B6524258B6474001C5AC2 /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + 857B6525258B6474001C5AC2 /* Base */, + ); + name = LaunchScreen.xib; + sourceTree = ""; + }; + 857B6526258B6474001C5AC2 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 857B6527258B6474001C5AC2 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 857B6348258B4D09001C5AC2 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 857B6349258B4D09001C5AC2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 857B634B258B4D09001C5AC2 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5120C41DEB5E1CD6F794C4FD /* Pods-DevelopmentApp.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = DevelopmentApp/DevelopmentApp.entitlements; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = S82KLNTT2U; + INFOPLIST_FILE = "$(SRCROOT)/DevelopmentApp/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = app.cotter.DevelopmentApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 857B634C258B4D09001C5AC2 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 77728D7617BB8FDC052E79D5 /* Pods-DevelopmentApp.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = DevelopmentApp/DevelopmentApp.entitlements; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = S82KLNTT2U; + INFOPLIST_FILE = "$(SRCROOT)/DevelopmentApp/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = app.cotter.DevelopmentApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 857B6331258B4D08001C5AC2 /* Build configuration list for PBXProject "DevelopmentApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 857B6348258B4D09001C5AC2 /* Debug */, + 857B6349258B4D09001C5AC2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 857B634A258B4D09001C5AC2 /* Build configuration list for PBXNativeTarget "DevelopmentApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 857B634B258B4D09001C5AC2 /* Debug */, + 857B634C258B4D09001C5AC2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 857B632E258B4D08001C5AC2 /* Project object */; +} diff --git a/DevelopmentApp/DevelopmentApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/DevelopmentApp/DevelopmentApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/DevelopmentApp/DevelopmentApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/DevelopmentApp/DevelopmentApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/DevelopmentApp/DevelopmentApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/DevelopmentApp/DevelopmentApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Example/CotterIOS.xcodeproj/xcshareddata/xcschemes/Cotter-Release.xcscheme b/DevelopmentApp/DevelopmentApp.xcodeproj/xcshareddata/xcschemes/DevelopmentApp.xcscheme similarity index 68% rename from Example/CotterIOS.xcodeproj/xcshareddata/xcschemes/Cotter-Release.xcscheme rename to DevelopmentApp/DevelopmentApp.xcodeproj/xcshareddata/xcschemes/DevelopmentApp.xcscheme index f706b86..7ece319 100644 --- a/Example/CotterIOS.xcodeproj/xcshareddata/xcschemes/Cotter-Release.xcscheme +++ b/DevelopmentApp/DevelopmentApp.xcodeproj/xcshareddata/xcschemes/DevelopmentApp.xcscheme @@ -1,6 +1,6 @@ + BlueprintIdentifier = "857B6335258B4D08001C5AC2" + BuildableName = "DevelopmentApp.app" + BlueprintName = "DevelopmentApp" + ReferencedContainer = "container:DevelopmentApp.xcodeproj"> @@ -31,7 +31,7 @@ + BlueprintIdentifier = "857B6335258B4D08001C5AC2" + BuildableName = "DevelopmentApp.app" + BlueprintName = "DevelopmentApp" + ReferencedContainer = "container:DevelopmentApp.xcodeproj"> + + + + + BlueprintIdentifier = "857B6335258B4D08001C5AC2" + BuildableName = "DevelopmentApp.app" + BlueprintName = "DevelopmentApp" + ReferencedContainer = "container:DevelopmentApp.xcodeproj"> diff --git a/DevelopmentApp/DevelopmentApp.xcworkspace/contents.xcworkspacedata b/DevelopmentApp/DevelopmentApp.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..793deec --- /dev/null +++ b/DevelopmentApp/DevelopmentApp.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/DevelopmentApp/DevelopmentApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/DevelopmentApp/DevelopmentApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/DevelopmentApp/DevelopmentApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Example/CotterIOS/AppDelegate.swift b/DevelopmentApp/DevelopmentApp/AppDelegate.swift similarity index 99% rename from Example/CotterIOS/AppDelegate.swift rename to DevelopmentApp/DevelopmentApp/AppDelegate.swift index 220643b..f5b8c7b 100644 --- a/Example/CotterIOS/AppDelegate.swift +++ b/DevelopmentApp/DevelopmentApp/AppDelegate.swift @@ -72,7 +72,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD // custom coloring let color = ColorSchemeObject(primary: CotterColor.purple, accent: CotterColor.orange) - + Cotter.configureWithLaunchOptions( launchOptions: launchOptions, apiSecretKey: apiSecretKey, @@ -80,7 +80,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD configuration: [ "colors": color, "images": img, - + // Other configuration // "base_url": "http://192.168.86.33:1234/api/v0", // "passwordless_base_url": "https://s.js.cotter.app/app", @@ -88,7 +88,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD // "fonts": customFont, ] ) - + // Granting user permission using notification center UNUserNotificationCenter.current() // 1 .requestAuthorization(options: [.alert, .sound, .badge]) { // 2 diff --git a/DevelopmentApp/DevelopmentApp/Assets.xcassets/AccentColor.colorset/Contents.json b/DevelopmentApp/DevelopmentApp/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/DevelopmentApp/DevelopmentApp/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DevelopmentApp/DevelopmentApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/DevelopmentApp/DevelopmentApp/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..9221b9b --- /dev/null +++ b/DevelopmentApp/DevelopmentApp/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Source/Base/cotter.xcassets/Contents.json b/DevelopmentApp/DevelopmentApp/Assets.xcassets/Contents.json similarity index 100% rename from Source/Base/cotter.xcassets/Contents.json rename to DevelopmentApp/DevelopmentApp/Assets.xcassets/Contents.json diff --git a/Example/CotterIOS/Base.lproj/LaunchScreen.xib b/DevelopmentApp/DevelopmentApp/Base.lproj/LaunchScreen.xib similarity index 100% rename from Example/CotterIOS/Base.lproj/LaunchScreen.xib rename to DevelopmentApp/DevelopmentApp/Base.lproj/LaunchScreen.xib diff --git a/Example/CotterIOS/Base.lproj/Main.storyboard b/DevelopmentApp/DevelopmentApp/Base.lproj/Main.storyboard similarity index 95% rename from Example/CotterIOS/Base.lproj/Main.storyboard rename to DevelopmentApp/DevelopmentApp/Base.lproj/Main.storyboard index 53e734a..8ec3e9a 100644 --- a/Example/CotterIOS/Base.lproj/Main.storyboard +++ b/DevelopmentApp/DevelopmentApp/Base.lproj/Main.storyboard @@ -1,9 +1,9 @@ - + - + @@ -12,7 +12,7 @@ - + @@ -33,14 +33,14 @@ - - - - - - - - - - - - - -