diff --git a/.circleci/config.yml b/.circleci/config.yml
index 62c970cce..ead3440e7 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -3,20 +3,34 @@
version: 2.1
jobs:
+ ### Swift lint job
+ swiftlint:
+ docker:
+ - image: dantoml/swiftlint:latest
+ steps:
+ - checkout
+ - run: swiftlint lint --reporter junit | tee swiftlintResults.xml
+ - store_artifacts:
+ path: swiftlintResults.xml
+ - store_test_results:
+ path: swiftlintResults.xml
+
+ ### Build & test job
build-and-test:
macos:
xcode: 12.0.0
working_directory: /Users/distiller/project/KarhooUISDK.xcworkspace
environment:
- FL_OUTPUT_DIR: output
- FASTLANE_LANE: UISDK_unit_tests
+ FASTLANE_LANE_TEST: UISDK_unit_tests
shell: /bin/bash --login -eo pipefail
resource_class: xlarge
steps:
- checkout
- run:
name: Set Ruby Version
- command: echo 'chruby ruby-2.7.2' >> ~/.bash_profile
+ command: |
+ echo 'chruby ruby-2.7.2' >> ~/.bash_profile
+ gem install bundler:2.2.7
- restore_cache:
name: Restore cache - Load installed gems from cache if possible -
keys:
@@ -38,36 +52,21 @@ jobs:
name: Fetch CocoaPods Specs
command: |
curl https://cocoapods-specs.circleci.com/fetch-cocoapods-repo-from-s3.sh | bash -s cf
+ - run:
+ name: Decode Keys.swift
+ command:
+ echo "$CLIENT_KEYS" | base64 --decode > Client/Keys.swift
- run:
name: Install CocoaPods
command: |
bundle check || bundle install
bundle exec pod install --repo-update --verbose
- run:
- name: Create Keys.swift
- command: |
- echo "import KarhooSDK" > Client/Keys.swift
- echo "import KarhooUISDK" >> Client/Keys.swift
- echo "struct Keys {" >> Client/Keys.swift
- echo "static let identifier = \"\"" >> Client/Keys.swift
- echo "static let referer = \"\"" >> Client/Keys.swift
- echo "static let organisationId = \"\"" >> Client/Keys.swift
- echo "static let userServiceEmail = \"$ADYEN_TEST_USER\"" >> Client/Keys.swift
- echo "static let userServicePassword = \"$USER_SERVICE_PASSWORD\"" >> Client/Keys.swift
- echo "static func staging() -> KarhooEnvironment {" >> Client/Keys.swift
- echo "return .custom(environment: KarhooEnvironmentDetails(host: \"$ADYEN_STG_HOST\", authHost: \"$ADYEN_STG_AUTHHOST\", guestHost: \"$ADYEN_STG_GUESTHOST\")) }}" >> Client/Keys.swift
- echo "let guestSettings = GuestSettings(identifier: Keys.identifier, referer: Keys.referer, organisationId: Keys.organisationId)" >> Client/Keys.swift
- echo "class KarhooConfig: KarhooUISDKConfiguration {" >> Client/Keys.swift
- echo "func environment() -> KarhooEnvironment {" >> Client/Keys.swift
- echo "return Keys.staging() }" >> Client/Keys.swift
- echo "func authenticationMethod() -> AuthenticationMethod {" >> Client/Keys.swift
- echo "return .karhooUser }}" >> Client/Keys.swift
- - run:
- name: fastlane
- command: bundle exec fastlane UISDK_unit_tests
+ name: Run unit test
+ command: bundle exec fastlane $FASTLANE_LANE_TEST
- run:
name: Fastlane Xcov report
- command: fastlane ios XcovReport
+ command: bundle exec fastlane ios XcovReport
# Collect XML test results data to show in the UI, and save the same XML
# files under test-results folder in the Artifacts tab
@@ -82,19 +81,20 @@ jobs:
xcode: 12.0.0
environment:
FL_OUTPUT_DIR: output
- FASTLANE_LANE: adhoc
+ FASTLANE_LANE_TEST: UISDK_unit_tests
steps:
- checkout
- run: bundle install
- run:
name: Fastlane
- command: bundle exec fastlane UISDK_unit_tests
+ command: bundle exec fastlane $FASTLANE_LANE_TEST
- store_artifacts:
- path: output
+ path: $FL_OUTPUT_DIR
workflows:
build-test-adhoc:
jobs:
+ - swiftlint
- build-and-test
- adhoc:
filters:
diff --git a/.swiftlint.yml b/.swiftlint.yml
index 0e0f1277b..d445f5e0b 100644
--- a/.swiftlint.yml
+++ b/.swiftlint.yml
@@ -3,6 +3,8 @@ disabled_rules:
trailing_whitespace:
ignores_empty_lines: true
ignores_comments: true
+included:
+ - KarhooUISDK
excluded:
- Pods
line_length: 200
diff --git a/Client/AppDelegate.swift b/Client/AppDelegate.swift
index 359d1a684..f4d48281f 100644
--- a/Client/AppDelegate.swift
+++ b/Client/AppDelegate.swift
@@ -8,6 +8,7 @@
import KarhooUISDK
import KarhooSDK
import Braintree
+import Adyen
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
@@ -32,6 +33,10 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
if url.scheme?.localizedCaseInsensitiveCompare(urlScheme) == .orderedSame {
return BTAppSwitch.handleOpen(url, options: options)
}
+ let adyenThreeDSecureUtils = AdyenThreeDSecureUtils()
+ if url.scheme?.localizedCaseInsensitiveCompare(adyenThreeDSecureUtils.current3DSReturnUrlScheme) == .orderedSame {
+ return RedirectComponent.applicationDidOpen(from: url)
+ }
return false
}
}
diff --git a/Client/Info.plist b/Client/Info.plist
index 753988287..f22b6271f 100644
--- a/Client/Info.plist
+++ b/Client/Info.plist
@@ -28,6 +28,16 @@
com.karhooUISDK.Client.Payments
+
+ CFBundleTypeRole
+ Editor
+ CFBundleURLName
+ com.karhooUISDK.Client.Adyen
+ CFBundleURLSchemes
+
+ com.karhooUISDK.Client.Adyen
+
+
CFBundleVersion
1
diff --git a/Client/KarhooConfig.swift b/Client/KarhooConfig.swift
new file mode 100644
index 000000000..84e82c32c
--- /dev/null
+++ b/Client/KarhooConfig.swift
@@ -0,0 +1,23 @@
+//
+// KarhooConfig.swift
+// Client
+//
+// Created by Jo Santamaria on 27/01/2021.
+// Copyright © 2021 Flit Technologies Ltd. All rights reserved.
+//
+
+import KarhooSDK
+import KarhooUISDK
+
+final class KarhooConfig: KarhooUISDKConfiguration {
+
+ static var auth: AuthenticationMethod = .karhooUser
+
+ func environment() -> KarhooEnvironment {
+ return Keys.staging()
+ }
+
+ func authenticationMethod() -> AuthenticationMethod {
+ return KarhooConfig.auth
+ }
+}
diff --git a/Client/ViewController.swift b/Client/ViewController.swift
index ef9341c1a..9dc30cea7 100644
--- a/Client/ViewController.swift
+++ b/Client/ViewController.swift
@@ -68,6 +68,9 @@ class ViewController: UIViewController {
}
@objc func guestBookingTapped(sender: UIButton) {
+ let guestSettings = GuestSettings(identifier: Keys.braintreeGuestIdentifier,
+ referer: Keys.referer,
+ organisationId: Keys.braintreeGuestOrganisationId)
KarhooConfig.auth = .guest(settings: guestSettings)
showKarhoo()
}
@@ -78,15 +81,19 @@ class ViewController: UIViewController {
}
@objc func tokenExchangeBookingTapped(sender: UIButton) {
+ let tokenExchangeSettings = TokenExchangeSettings(clientId: Keys.braintreeTokenClientId, scope: Keys.braintreeTokenScope)
KarhooConfig.auth = .tokenExchange(settings: tokenExchangeSettings)
tokenLoginAndShowKarhoo()
}
private func usernamePasswordLoginAndShowKarhoo() {
+ KarhooConfig.auth = .karhooUser
let userService = Karhoo.getUserService()
userService.logout().execute(callback: { _ in})
- userService.login(userLogin: Keys.userLogin).execute(callback: { result in
+ let userLogin = UserLogin(username: Keys.userServiceEmailBraintree,
+ password: Keys.userServicePasswordBraintree)
+ userService.login(userLogin: userLogin).execute(callback: { result in
print("login: \(result)")
if result.isSuccess() {
self.showKarhoo()
@@ -97,7 +104,7 @@ class ViewController: UIViewController {
private func tokenLoginAndShowKarhoo() {
let authService = Karhoo.getAuthService()
- authService.login(token: Keys.authToken).execute { result in
+ authService.login(token: Keys.braintreeAuthToken).execute { result in
print("token login: \(result)")
if result.isSuccess() {
self.showKarhoo()
@@ -109,7 +116,6 @@ class ViewController: UIViewController {
booking = KarhooUI().screens().booking().buildBookingScreen(journeyInfo: nil,
passengerDetails: nil,
callback: { [weak self] result in
- self?.logout()
switch result {
case .completed(let result):
switch result {
diff --git a/Gemfile.lock b/Gemfile.lock
index f99cab68b..c8f15f780 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,8 +1,8 @@
GEM
remote: https://rubygems.org/
specs:
- CFPropertyList (3.0.2)
- activesupport (5.2.4.4)
+ CFPropertyList (3.0.3)
+ activesupport (5.2.5)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
@@ -12,22 +12,23 @@ GEM
algoliasearch (1.27.5)
httpclient (~> 2.8, >= 2.8.3)
json (>= 1.5.1)
+ artifactory (3.0.15)
atomos (0.1.3)
- aws-eventstream (1.1.0)
- aws-partitions (1.399.0)
- aws-sdk-core (3.109.3)
+ aws-eventstream (1.1.1)
+ aws-partitions (1.445.0)
+ aws-sdk-core (3.114.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.239.0)
aws-sigv4 (~> 1.1)
jmespath (~> 1.0)
- aws-sdk-kms (1.39.0)
- aws-sdk-core (~> 3, >= 3.109.0)
+ aws-sdk-kms (1.43.0)
+ aws-sdk-core (~> 3, >= 3.112.0)
aws-sigv4 (~> 1.1)
- aws-sdk-s3 (1.85.0)
- aws-sdk-core (~> 3, >= 3.109.0)
+ aws-sdk-s3 (1.93.1)
+ aws-sdk-core (~> 3, >= 3.112.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.1)
- aws-sigv4 (1.2.2)
+ aws-sigv4 (1.2.3)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
claide (1.0.3)
@@ -36,10 +37,10 @@ GEM
nap
open4 (~> 1.3)
clamp (1.3.2)
- cocoapods (1.10.0)
+ cocoapods (1.10.1)
addressable (~> 2.6)
claide (>= 1.0.2, < 2.0)
- cocoapods-core (= 1.10.0)
+ cocoapods-core (= 1.10.1)
cocoapods-deintegrate (>= 1.0.3, < 2.0)
cocoapods-downloader (>= 1.4.0, < 2.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
@@ -54,7 +55,7 @@ GEM
nap (~> 1.0)
ruby-macho (~> 1.4)
xcodeproj (>= 1.19.0, < 2.0)
- cocoapods-core (1.10.0)
+ cocoapods-core (1.10.1)
activesupport (> 5.0, < 6)
addressable (~> 2.6)
algoliasearch (~> 1.0)
@@ -77,10 +78,10 @@ GEM
colored2 (3.1.2)
commander-fastlane (4.4.6)
highline (~> 1.7.2)
- concurrent-ruby (1.1.7)
+ concurrent-ruby (1.1.8)
cork (0.3.0)
colored2 (~> 3.1)
- danger (8.2.1)
+ danger (8.2.3)
claide (~> 1.0)
claide-plugins (>= 0.9.2)
colored2 (~> 3.1)
@@ -92,13 +93,13 @@ GEM
kramdown-parser-gfm (~> 1.0)
no_proxy_fix
octokit (~> 4.7)
- terminal-table (~> 1)
+ terminal-table (>= 1, < 4)
danger-junit (1.0.2)
danger (> 2.0)
ox (~> 2.0)
danger-plugin-api (1.0.0)
danger (> 2.0)
- danger-swiftlint (0.24.5)
+ danger-swiftlint (0.26.0)
danger
rake (> 10)
thor (~> 0.19)
@@ -108,31 +109,37 @@ GEM
danger (>= 2.1)
xcov (>= 1.7.3)
declarative (0.0.20)
- declarative-option (0.1.0)
- digest-crc (0.6.1)
- rake (~> 13.0)
+ digest-crc (0.6.3)
+ rake (>= 12.0.0, < 14.0.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
dotenv (2.7.6)
- emoji_regex (3.2.1)
+ emoji_regex (3.2.2)
escape (0.0.4)
- ethon (0.12.0)
- ffi (>= 1.3.0)
- excon (0.78.0)
- faraday (1.1.0)
+ ethon (0.13.0)
+ ffi (>= 1.15.0)
+ excon (0.80.1)
+ faraday (1.4.1)
+ faraday-excon (~> 1.1)
+ faraday-net_http (~> 1.0)
+ faraday-net_http_persistent (~> 1.1)
multipart-post (>= 1.2, < 3)
- ruby2_keywords
+ ruby2_keywords (>= 0.0.4)
faraday-cookie_jar (0.0.7)
faraday (>= 0.8.0)
http-cookie (~> 1.0.0)
+ faraday-excon (1.1.0)
faraday-http-cache (2.2.0)
faraday (>= 0.8)
+ faraday-net_http (1.0.1)
+ faraday-net_http_persistent (1.1.0)
faraday_middleware (1.0.0)
faraday (~> 1.0)
- fastimage (2.2.0)
- fastlane (2.168.0)
+ fastimage (2.2.3)
+ fastlane (2.180.1)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.3, < 3.0.0)
+ artifactory (~> 3.0)
aws-sdk-s3 (~> 1.0)
babosa (>= 1.0.3, < 2.0.0)
bundler (>= 1.12.0, < 3.0.0)
@@ -153,6 +160,7 @@ GEM
jwt (>= 2.1.0, < 3)
mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (~> 2.0.0)
+ naturally (~> 2.2)
plist (>= 3.1.0, < 4.0.0)
rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.3)
@@ -166,11 +174,11 @@ GEM
xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3)
- ffi (1.13.1)
+ ffi (1.15.0)
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3)
- git (1.7.0)
+ git (1.8.1)
rchardet (~> 1.8)
google-api-client (0.38.0)
addressable (~> 2.5, >= 2.5.1)
@@ -180,20 +188,35 @@ GEM
representable (~> 3.0)
retriable (>= 2.0, < 4.0)
signet (~> 0.12)
+ google-apis-core (0.2.1)
+ addressable (~> 2.5, >= 2.5.1)
+ googleauth (~> 0.14)
+ httpclient (>= 2.8.1, < 3.0)
+ mini_mime (~> 1.0)
+ representable (~> 3.0)
+ retriable (>= 2.0, < 4.0)
+ rexml
+ signet (~> 0.14)
+ webrick
+ google-apis-iamcredentials_v1 (0.1.0)
+ google-apis-core (~> 0.1)
+ google-apis-storage_v1 (0.2.0)
+ google-apis-core (~> 0.1)
google-cloud-core (1.5.0)
google-cloud-env (~> 1.0)
google-cloud-errors (~> 1.0)
google-cloud-env (1.4.0)
faraday (>= 0.17.3, < 2.0)
google-cloud-errors (1.0.1)
- google-cloud-storage (1.29.1)
+ google-cloud-storage (1.30.0)
addressable (~> 2.5)
digest-crc (~> 0.4)
- google-api-client (~> 0.33)
+ google-apis-iamcredentials_v1 (~> 0.1)
+ google-apis-storage_v1 (~> 0.1)
google-cloud-core (~> 1.2)
googleauth (~> 0.9)
mini_mime (~> 1.0)
- googleauth (0.14.0)
+ googleauth (0.15.1)
faraday (>= 0.17.3, < 2.0)
jwt (>= 1.4, < 3.0)
memoist (~> 0.16)
@@ -204,55 +227,57 @@ GEM
http-cookie (1.0.3)
domain_name (~> 0.5)
httpclient (2.8.3)
- i18n (1.8.5)
+ i18n (1.8.10)
concurrent-ruby (~> 1.0)
jmespath (1.4.0)
- json (2.3.1)
+ json (2.5.1)
jwt (2.2.2)
- kramdown (2.3.0)
+ kramdown (2.3.1)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
memoist (0.16.2)
mini_magick (4.11.0)
- mini_mime (1.0.2)
- mini_portile2 (2.4.0)
- minitest (5.14.2)
+ mini_mime (1.1.0)
+ mini_portile2 (2.5.0)
+ minitest (5.14.4)
molinillo (0.6.6)
multi_json (1.15.0)
multipart-post (2.0.0)
nanaimo (0.3.0)
nap (1.1.0)
- naturally (2.2.0)
+ naturally (2.2.1)
netrc (0.11.0)
no_proxy_fix (0.1.2)
- nokogiri (1.10.10)
- mini_portile2 (~> 2.4.0)
- octokit (4.19.0)
+ nokogiri (1.11.3)
+ mini_portile2 (~> 2.5.0)
+ racc (~> 1.4)
+ octokit (4.20.0)
faraday (>= 0.9)
sawyer (~> 0.8.0, >= 0.5.3)
open4 (1.3.4)
os (1.1.1)
- ox (2.13.4)
- plist (3.5.0)
+ ox (2.14.4)
+ plist (3.6.0)
public_suffix (4.0.6)
- rake (13.0.1)
+ racc (1.5.2)
+ rake (13.0.3)
rchardet (1.8.0)
- representable (3.0.4)
+ representable (3.1.1)
declarative (< 0.1.0)
- declarative-option (< 0.2.0)
+ trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
- rexml (3.2.4)
+ rexml (3.2.5)
rouge (2.0.7)
ruby-macho (1.4.0)
- ruby2_keywords (0.0.2)
+ ruby2_keywords (0.0.4)
rubyzip (2.3.0)
sawyer (0.8.2)
addressable (>= 2.3.5)
faraday (> 0.8, < 2.0)
security (0.1.3)
- signet (0.14.0)
+ signet (0.14.1)
addressable (~> 2.3)
faraday (>= 0.17.3, < 2.0)
jwt (>= 1.5, < 3.0)
@@ -261,7 +286,7 @@ GEM
CFPropertyList
naturally
slack-notifier (2.3.2)
- slather (2.5.0)
+ slather (2.6.0)
CFPropertyList (>= 2.2, < 4)
activesupport
clamp (~> 1.3)
@@ -272,19 +297,21 @@ GEM
unicode-display_width (~> 1.1, >= 1.1.1)
thor (0.20.3)
thread_safe (0.3.6)
+ trailblazer-option (0.1.1)
tty-cursor (0.7.1)
tty-screen (0.8.1)
tty-spinner (0.9.3)
tty-cursor (~> 0.7)
typhoeus (1.4.0)
ethon (>= 0.9.0)
- tzinfo (1.2.8)
+ tzinfo (1.2.9)
thread_safe (~> 0.1)
uber (0.1.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.7)
unicode-display_width (1.7.0)
+ webrick (1.7.0)
word_wrap (1.0.0)
xcodeproj (1.19.0)
CFPropertyList (>= 2.3.3, < 4.0)
@@ -301,7 +328,7 @@ GEM
xcresult (~> 0.2.0)
xcpretty (0.3.0)
rouge (~> 2.0.7)
- xcpretty-travis-formatter (1.0.0)
+ xcpretty-travis-formatter (1.0.1)
xcpretty (~> 0.2, >= 0.0.7)
xcresult (0.2.1)
@@ -320,4 +347,4 @@ DEPENDENCIES
xcov
BUNDLED WITH
- 2.1.4
+ 2.2.7
diff --git a/KarhooUISDK.podspec b/KarhooUISDK.podspec
index b6f5a5343..67c37e9fd 100644
--- a/KarhooUISDK.podspec
+++ b/KarhooUISDK.podspec
@@ -1,7 +1,7 @@
Pod::Spec.new do |s|
s.name = "KarhooUISDK"
- s.version = "1.4.0"
+ s.version = "1.5.0"
s.summary = "UI SDK for the Karhoo platform"
s.homepage = "https://github.com/karhoo/Karhoo-iOS-UI-SDK.git"
@@ -13,7 +13,7 @@ Pod::Spec.new do |s|
s.resource_bundles = {
'KarhooUISDK' => [
- 'KarhooUISDK/**/*{xib,storyboard,xcassets,strings,bundle,lproj}'
+ 'KarhooUISDK/**/*{xib,storyboard,xcassets,strings,stringsdict,bundle,lproj}'
]
}
@@ -24,8 +24,8 @@ Pod::Spec.new do |s|
s.dependency 'KarhooSDK'
s.dependency 'FloatingPanel', '2.0.1'
- s.dependency 'BraintreeDropIn'
- s.dependency 'Braintree/PaymentFlow'
+ s.dependency 'BraintreeDropIn', '~> 8.1'
+ s.dependency 'Braintree/PaymentFlow', '~> 4.37'
s.dependency 'PhoneNumberKit', '3.3.1'
s.dependency 'Adyen', '3.6.0'
diff --git a/KarhooUISDK.xcodeproj/project.pbxproj b/KarhooUISDK.xcodeproj/project.pbxproj
index fca819dc4..1463d2af0 100644
--- a/KarhooUISDK.xcodeproj/project.pbxproj
+++ b/KarhooUISDK.xcodeproj/project.pbxproj
@@ -7,10 +7,6 @@
objects = {
/* Begin PBXBuildFile section */
- 09022B242239133700C4A7EE /* MockViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09022B232239133700C4A7EE /* MockViewController.swift */; };
- 090F08E021C934EB000C7E50 /* MockDatePickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 090F08DD21C934EB000C7E50 /* MockDatePickerView.swift */; };
- 090F08E121C934EB000C7E50 /* MockTimeSinceNowProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 090F08DF21C934EB000C7E50 /* MockTimeSinceNowProvider.swift */; };
- 090F08E421C93591000C7E50 /* DatePickerPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 090F08E321C93591000C7E50 /* DatePickerPresenterSpec.swift */; };
0916BB6A235F01170064A5D6 /* KarhooUISDKConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0916BB69235F01170064A5D6 /* KarhooUISDKConfiguration.swift */; };
0916BB72236CA2300064A5D6 /* KarhooAddressMapMVP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0916BB71236CA2300064A5D6 /* KarhooAddressMapMVP.swift */; };
091EA9D421AC4AA700849112 /* AccessibilityIdentifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091EA9D321AC4AA700849112 /* AccessibilityIdentifier.swift */; };
@@ -28,60 +24,23 @@
092F281C22B25B0700AF8E0E /* ThreeDSecureProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 092F281722B25B0700AF8E0E /* ThreeDSecureProvider.swift */; };
092F281D22B25B0700AF8E0E /* BraintreeThreeDSecureProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 092F281822B25B0700AF8E0E /* BraintreeThreeDSecureProvider.swift */; };
092F281F22B25B3700AF8E0E /* OperationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 092F281E22B25B3700AF8E0E /* OperationResult.swift */; };
- 092F282122B25C7800AF8E0E /* MockPaymentNonceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 092F282022B25C7800AF8E0E /* MockPaymentNonceProvider.swift */; };
- 092F282322B2607D00AF8E0E /* PrimitiveUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 092F282222B2607D00AF8E0E /* PrimitiveUtil.swift */; };
- 093D2E6E2224346C00D5F031 /* PopupDialogView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 093D2E6D2224346C00D5F031 /* PopupDialogView.swift */; };
094551A321B9818200F029D1 /* AddressViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0991067221B8291900BD7E6F /* AddressViewController.swift */; };
0946CB5D21CBDF0400DBDD42 /* BookingRequestScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0946CB5C21CBDF0400DBDD42 /* BookingRequestScreenBuilder.swift */; };
- 0949543F21FF5A8800D930C0 /* MockBookingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0949543E21FF5A8800D930C0 /* MockBookingView.swift */; };
- 0949544B21FF5F0900D930C0 /* MockQuoteService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0949544221FF5F0800D930C0 /* MockQuoteService.swift */; };
- 0949545321FF6FC800D930C0 /* MockAddressBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0949545221FF6FC800D930C0 /* MockAddressBarView.swift */; };
- 0949545521FF7CDB00D930C0 /* MockKarhooMapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0949545421FF7CDB00D930C0 /* MockKarhooMapView.swift */; };
- 094954572201C13E00D930C0 /* MockPhoneNumberCaller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094954562201C13E00D930C0 /* MockPhoneNumberCaller.swift */; };
- 0949545A2201C1ED00D930C0 /* CLLocationCoordinate2D+Equatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094954592201C1ED00D930C0 /* CLLocationCoordinate2D+Equatable.swift */; };
- 0949545C2201C2BA00D930C0 /* MockDataFormatterType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0949545B2201C2BA00D930C0 /* MockDataFormatterType.swift */; };
- 0949545E2201C3E900D930C0 /* MockUserLocationProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0949545D2201C3E900D930C0 /* MockUserLocationProvider.swift */; };
094AE85421C913020046EC3C /* DatePickerScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094AE85321C913020046EC3C /* DatePickerScreenBuilder.swift */; };
094AE85D21C9145D0046EC3C /* DatePickerMVP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094AE85621C9145D0046EC3C /* DatePickerMVP.swift */; };
094AE85E21C9145D0046EC3C /* DatePickerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094AE85821C9145D0046EC3C /* DatePickerViewController.swift */; };
094AE85F21C9145D0046EC3C /* DatePickerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 094AE85921C9145D0046EC3C /* DatePickerViewController.xib */; };
094AE86021C9145D0046EC3C /* TimeSinceNowProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094AE85B21C9145D0046EC3C /* TimeSinceNowProvider.swift */; };
094AE86121C9145D0046EC3C /* KarhooDatePickerPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094AE85C21C9145D0046EC3C /* KarhooDatePickerPresenter.swift */; };
- 094B764022CE729400326CE1 /* BraintreePaymentNonceProviderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094B763D22CE729300326CE1 /* BraintreePaymentNonceProviderSpec.swift */; };
- 094B764222CE729400326CE1 /* BraintreeThreeDSecureProviderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094B763F22CE729400326CE1 /* BraintreeThreeDSecureProviderSpec.swift */; };
- 094B764422CE731200326CE1 /* TripStatesGetterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094B764322CE731200326CE1 /* TripStatesGetterSpec.swift */; };
- 094B764622CE734D00326CE1 /* MockThreeDSecureProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094B764522CE734D00326CE1 /* MockThreeDSecureProvider.swift */; };
095A03D92333D17E007D805E /* BaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095A03D82333D17E007D805E /* BaseViewController.swift */; };
095B20D622649CEC00119D11 /* ScreenResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095B20D522649CEC00119D11 /* ScreenResult.swift */; };
095D7451231822C5002253C0 /* KarhooTripRatingCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095D7450231822C5002253C0 /* KarhooTripRatingCache.swift */; };
095D745323182313002253C0 /* TripRatingCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095D745223182313002253C0 /* TripRatingCache.swift */; };
- 095D7456231825C7002253C0 /* MockTripRatingCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095D7455231825C7002253C0 /* MockTripRatingCache.swift */; };
- 095D7458231827B4002253C0 /* KarhooTripRatingCacheSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095D7457231827B4002253C0 /* KarhooTripRatingCacheSpec.swift */; };
- 096192F621BEAB9C0052B71C /* UnitTestSetup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 096192F521BEAB9C0052B71C /* UnitTestSetup.swift */; };
- 0966BDBA225CF8A90032C76C /* KarhooBookingViewController+BuilderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0966BDB9225CF8A90032C76C /* KarhooBookingViewController+BuilderSpec.swift */; };
- 0966BDBC225DFFE60032C76C /* TripExtSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0966BDBB225DFFE60032C76C /* TripExtSpec.swift */; };
0968D82122F82B8300047FCF /* TripFeedbackMVP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968D82022F82B8300047FCF /* TripFeedbackMVP.swift */; };
- 0968D82522F82F8C00047FCF /* TripFeedbackPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968D82422F82F8C00047FCF /* TripFeedbackPresenterSpec.swift */; };
- 0968D82822F8649900047FCF /* MockTripFeedbackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968D82722F8649900047FCF /* MockTripFeedbackView.swift */; };
- 0968F0EA21BE7FF100745370 /* MockAddressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0E521BE7FF100745370 /* MockAddressView.swift */; };
- 0968F0EB21BE7FF100745370 /* MockAddressSearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0E621BE7FF100745370 /* MockAddressSearchBar.swift */; };
- 0968F0EC21BE7FF100745370 /* MockAddressSearchProviderDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0E821BE7FF100745370 /* MockAddressSearchProviderDelegate.swift */; };
- 0968F0ED21BE7FF100745370 /* MockAddressSearchProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0E921BE7FF100745370 /* MockAddressSearchProvider.swift */; };
- 0968F0EF21BE816F00745370 /* TestUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0EE21BE816F00745370 /* TestUtil.swift */; };
- 0968F0FD21BE850F00745370 /* MockCall.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0F621BE850F00745370 /* MockCall.swift */; };
- 0968F0FE21BE850F00745370 /* MockKarhooPollExecutor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0F721BE850F00745370 /* MockKarhooPollExecutor.swift */; };
- 0968F0FF21BE850F00745370 /* MockKarhooExecutable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0F821BE850F00745370 /* MockKarhooExecutable.swift */; };
- 0968F10021BE850F00745370 /* MockPollCall.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0F921BE850F00745370 /* MockPollCall.swift */; };
- 0968F10221BE850F00745370 /* MockObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0FC21BE850F00745370 /* MockObservable.swift */; };
- 0968F10521BE859400745370 /* MockAlertHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F10421BE859400745370 /* MockAlertHandler.swift */; };
- 0968F10721BE885100745370 /* MockError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F10621BE885100745370 /* MockError.swift */; };
- 097050A521FF0AF300E53AD2 /* MockBookingStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 097050A421FF0AF300E53AD2 /* MockBookingStatus.swift */; };
097050CF21FF27FF00E53AD2 /* KarhooUISDKConfigurationProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 097050CE21FF27FF00E53AD2 /* KarhooUISDKConfigurationProvider.swift */; };
0973872221DE77B3004BD5F9 /* NSAttributedString+Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0973872121DE77B3004BD5F9 /* NSAttributedString+Utils.swift */; };
- 097800A4226F1FE6008772E4 /* MockSideMenuHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 097800A3226F1FE5008772E4 /* MockSideMenuHandler.swift */; };
097800A6226F427D008772E4 /* LocationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 097800A5226F427D008772E4 /* LocationService.swift */; };
097800A8226F4434008772E4 /* KarhooLocationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 097800A7226F4434008772E4 /* KarhooLocationService.swift */; };
- 097800AA226F4886008772E4 /* MockLocationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 097800A9226F4886008772E4 /* MockLocationService.swift */; };
097BF283234F2A3E00BBE418 /* VehicleCapacityView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 097BF282234F2A3E00BBE418 /* VehicleCapacityView.swift */; };
0989E631220313740062474A /* BookingStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0989E630220313740062474A /* BookingStatus.swift */; };
0991067621B8291A00BD7E6F /* KarhooAddressSearchBarPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0991066321B8291900BD7E6F /* KarhooAddressSearchBarPresenter.swift */; };
@@ -108,21 +67,12 @@
0991530221BFDC3000B46D9F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0991530021BFDB6400B46D9F /* Assets.xcassets */; };
0999CBB0220DDA0300A93AF9 /* KarhooUIScreenRouting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0999CBAF220DDA0300A93AF9 /* KarhooUIScreenRouting.swift */; };
09A1F88F225CBCFF00B3DBE2 /* MenuContentMVP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09A1F88E225CBCFF00B3DBE2 /* MenuContentMVP.swift */; };
- 09AAEF9621C4270900A04EEC /* FlightNumberValidatorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09AAEF9521C4270800A04EEC /* FlightNumberValidatorSpec.swift */; };
- 09AAEF9821C4283200A04EEC /* MockValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09AAEF9721C4283200A04EEC /* MockValidator.swift */; };
- 09B30F5C224CE8BF007768CF /* CancelRideBehaviourSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09B30F5A224CE8BF007768CF /* CancelRideBehaviourSpec.swift */; };
- 09B30F5D224CE8BF007768CF /* TripsListSorterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09B30F5B224CE8BF007768CF /* TripsListSorterSpec.swift */; };
09B30F692253986B007768CF /* mockImage.png in Resources */ = {isa = PBXBuildFile; fileRef = 09B30F682253986B007768CF /* mockImage.png */; };
- 09BDD18821C2C20A0074421C /* MockUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09BDD18721C2C20A0074421C /* MockUserDefaults.swift */; };
09BDD19121C2CAD00074421C /* FlightDetailsMVP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09BDD18A21C2CAD00074421C /* FlightDetailsMVP.swift */; };
09BDD19221C2CAD00074421C /* KarhooFlightDetailsPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09BDD18C21C2CAD00074421C /* KarhooFlightDetailsPresenter.swift */; };
09BDD19421C2CAD00074421C /* FlightDetailsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09BDD18F21C2CAD00074421C /* FlightDetailsViewController.swift */; };
09BDD19521C2CAD00074421C /* FlightDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09BDD19021C2CAD00074421C /* FlightDetails.swift */; };
- 09BDD19821C2CBD00074421C /* FlightDetailsPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09BDD19721C2CBCF0074421C /* FlightDetailsPresenterSpec.swift */; };
09C169B8227C8EFF00CF7E66 /* AddressType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C169B7227C8EFF00CF7E66 /* AddressType.swift */; };
- 09C169BA22819BBF00CF7E66 /* MockBookingMapStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C169B922819BBF00CF7E66 /* MockBookingMapStrategy.swift */; };
- 09C169BC22819C1A00CF7E66 /* MockPickupOnlyStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C169BB22819C1A00CF7E66 /* MockPickupOnlyStrategy.swift */; };
- 09C169C02281B7C700CF7E66 /* BaseViewControllerSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C169BF2281B7C700CF7E66 /* BaseViewControllerSpec.swift */; };
09C7649321DE665000CD81AB /* BookingScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C7649221DE665000CD81AB /* BookingScreenBuilder.swift */; };
09C7659B21DE688100CD81AB /* QuoteListPanelLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C7656121DE688000CD81AB /* QuoteListPanelLayout.swift */; };
09C7659C21DE688100CD81AB /* KarhooQuoteSortView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C7656321DE688000CD81AB /* KarhooQuoteSortView.swift */; };
@@ -155,51 +105,184 @@
09C765C321DE688100CD81AB /* TripAllocationMVP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C7659721DE688000CD81AB /* TripAllocationMVP.swift */; };
09C765C421DE688100CD81AB /* KarhooQuoteSorter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C7659921DE688000CD81AB /* KarhooQuoteSorter.swift */; };
09C765C521DE688100CD81AB /* BookingMVP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C7659A21DE688000CD81AB /* BookingMVP.swift */; };
- 09D293C622C651C20051C455 /* QtaStringFormatterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D293C322C651C10051C455 /* QtaStringFormatterSpec.swift */; };
- 09D293C722C651C20051C455 /* KarhooDateFormatterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D293C422C651C10051C455 /* KarhooDateFormatterSpec.swift */; };
- 09D293C822C651C20051C455 /* CurrencyCodeConverterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D293C522C651C10051C455 /* CurrencyCodeConverterSpec.swift */; };
09D8B29422F3491F00569C55 /* TripFeedbackScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D8B29322F3491F00569C55 /* TripFeedbackScreenBuilder.swift */; };
- 09D8B29622F444AA00569C55 /* MockFeedbackScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D8B29522F444AA00569C55 /* MockFeedbackScreenBuilder.swift */; };
09DA1A3122F1A866004C6B20 /* FeedbackButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DA1A3022F1A866004C6B20 /* FeedbackButtonView.swift */; };
09DA1A3322F1A8F4004C6B20 /* FeedbackButtonMVP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DA1A3222F1A8F4004C6B20 /* FeedbackButtonMVP.swift */; };
- 09DCC7F421BE7CE000DF02B9 /* KarhooAddressSearchBarPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DCC7F021BE7CE000DF02B9 /* KarhooAddressSearchBarPresenterSpec.swift */; };
- 09DCC7F521BE7CE000DF02B9 /* KarhooAddressPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DCC7F121BE7CE000DF02B9 /* KarhooAddressPresenterSpec.swift */; };
- 09DCC7F621BE7CE000DF02B9 /* KarhooAddressSearchProviderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DCC7F321BE7CE000DF02B9 /* KarhooAddressSearchProviderSpec.swift */; };
09DE8D46221C658B00451B3C /* BraintreePaymentScreensBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DE8D45221C658B00451B3C /* BraintreePaymentScreensBuilder.swift */; };
09E0249B21C2D7D40071E367 /* FlightDetailsScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E0249A21C2D7D40071E367 /* FlightDetailsScreenBuilder.swift */; };
09E024A021C2D9FD0071E367 /* FlightNumberValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E0249F21C2D9FD0071E367 /* FlightNumberValidator.swift */; };
- 09E1475521C7ED06003BB30B /* MockFlightDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E1475421C7ED06003BB30B /* MockFlightDetailsView.swift */; };
- 09E35D5721E5117C003E840C /* MockBookingAllocationSpinnerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D4921E5117C003E840C /* MockBookingAllocationSpinnerView.swift */; };
- 09E35D5821E5117C003E840C /* MockTripAllocationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D4A21E5117C003E840C /* MockTripAllocationView.swift */; };
- 09E35D5921E5117C003E840C /* MockQuoteListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D4C21E5117C003E840C /* MockQuoteListView.swift */; };
- 09E35D5A21E5117C003E840C /* MockQuoteCategoryBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D4E21E5117C003E840C /* MockQuoteCategoryBarView.swift */; };
- 09E35D5C21E5117C003E840C /* MockPickupOnlyStrategyDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D5221E5117C003E840C /* MockPickupOnlyStrategyDelegate.swift */; };
- 09E35D5D21E5117C003E840C /* MockQuoteSorter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D5421E5117C003E840C /* MockQuoteSorter.swift */; };
- 09E35D5E21E5117C003E840C /* MockQuoteSortView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D5621E5117C003E840C /* MockQuoteSortView.swift */; };
- 09E35D7021E5118A003E840C /* KarhooBookingPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D6021E5118A003E840C /* KarhooBookingPresenterSpec.swift */; };
- 09E35D7121E5118A003E840C /* BookingAllocationSpinnerPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D6221E5118A003E840C /* BookingAllocationSpinnerPresenterSpec.swift */; };
- 09E35D7221E5118A003E840C /* KarhooTripAllocationPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D6321E5118A003E840C /* KarhooTripAllocationPresenterSpec.swift */; };
- 09E35D7321E5118A003E840C /* KarhooQuoteListPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D6521E5118A003E840C /* KarhooQuoteListPresenterSpec.swift */; };
- 09E35D7421E5118A003E840C /* KarhooQuoteCategoryBarPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D6721E5118A003E840C /* KarhooQuoteCategoryBarPresenterSpec.swift */; };
- 09E35D7521E5118A003E840C /* BookingMapPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D6921E5118A003E840C /* BookingMapPresenterSpec.swift */; };
- 09E35D7621E5118A003E840C /* DestinationSetStrategySpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D6A21E5118A003E840C /* DestinationSetStrategySpec.swift */; };
- 09E35D7721E5118A003E840C /* PickupOnlyStrategySpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D6B21E5118A003E840C /* PickupOnlyStrategySpec.swift */; };
- 09E35D7821E5118A003E840C /* BookingAddressBarPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D6D21E5118A003E840C /* BookingAddressBarPresenterSpec.swift */; };
- 09E35D7921E5118A003E840C /* KarhooQuoteSorterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D6F21E5118A003E840C /* KarhooQuoteSorterSpec.swift */; };
09E683212374236100BFF5B9 /* KarhooAddressMapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E683202374236100BFF5B9 /* KarhooAddressMapView.swift */; };
09E683232374522900BFF5B9 /* KarhooAddressMapPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E683222374522900BFF5B9 /* KarhooAddressMapPresenter.swift */; };
- 09E68326237972C000BFF5B9 /* KarhooAddressMapPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E68325237972C000BFF5B9 /* KarhooAddressMapPresenterSpec.swift */; };
- 09E683292379735B00BFF5B9 /* MockAddressMapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E683282379735B00BFF5B9 /* MockAddressMapView.swift */; };
- 09ED7B1C21C2A7E000CF6D73 /* KarhooRecentAddressProviderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09ED7B1B21C2A7E000CF6D73 /* KarhooRecentAddressProviderSpec.swift */; };
- 09ED7B1E21C2A81200CF6D73 /* MockRecentAddressProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09ED7B1D21C2A81200CF6D73 /* MockRecentAddressProvider.swift */; };
- 09F12DC722313E300024D6E9 /* MockBaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F12DC622313E300024D6E9 /* MockBaseViewController.swift */; };
- 09F12DC92232ABD30024D6E9 /* MockPopupDialogScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F12DC82232ABD30024D6E9 /* MockPopupDialogScreenBuilder.swift */; };
09F60CDF226623A200023C74 /* SideMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F60CDE226623A200023C74 /* SideMenu.swift */; };
09F60CE9226756AF00023C74 /* SideMenuHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F60CE8226756AF00023C74 /* SideMenuHandler.swift */; };
- 09F86F81222D60AC008C86DE /* TestBroadcaster.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F86F7F222D60AB008C86DE /* TestBroadcaster.swift */; };
- 09F86F84222D84A8008C86DE /* MockAppStateNotifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F86F83222D84A8008C86DE /* MockAppStateNotifier.swift */; };
- 09F86F86222D8553008C86DE /* MockBookingDetailsObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F86F85222D8553008C86DE /* MockBookingDetailsObserver.swift */; };
11835BEF4BCC4A95D6F37450 /* Pods_KarhooUISDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9F928AAF8C70E5FFDE416BC /* Pods_KarhooUISDK.framework */; };
+ 1413303225DBDC3100EDAD3B /* Keys.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1413303125DBDC3100EDAD3B /* Keys.swift */; };
+ 14707C3925D54C2100CAD083 /* MockRidesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F542211D38E00FB6BB5 /* MockRidesView.swift */; };
+ 14707C3A25D54C2100CAD083 /* DestinationSetStrategySpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D6A21E5118A003E840C /* DestinationSetStrategySpec.swift */; };
+ 14707C3B25D54C2100CAD083 /* UINavigationSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F7F221726C8006C48F2 /* UINavigationSpec.swift */; };
+ 14707C3C25D54C2100CAD083 /* BookingAllocationSpinnerPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D6221E5118A003E840C /* BookingAllocationSpinnerPresenterSpec.swift */; };
+ 14707C3D25D54C2100CAD083 /* MockAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C9D9917242CEBC3004F1DBD /* MockAnalytics.swift */; };
+ 14707C3E25D54C2100CAD083 /* MockNavigationItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F562216D4FC006C48F2 /* MockNavigationItem.swift */; };
+ 14707C3F25D54C2100CAD083 /* MockAddressSearchProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0E921BE7FF100745370 /* MockAddressSearchProvider.swift */; };
+ 14707C4025D54C2100CAD083 /* TripExtSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0966BDBB225DFFE60032C76C /* TripExtSpec.swift */; };
+ 14707C4125D54C2100CAD083 /* KarhooRecentAddressProviderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09ED7B1B21C2A7E000CF6D73 /* KarhooRecentAddressProviderSpec.swift */; };
+ 14707C4225D54C2100CAD083 /* MockCardRegistrationFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F5C2216D5AE006C48F2 /* MockCardRegistrationFlow.swift */; };
+ 14707C4325D54C2100CAD083 /* MockStackButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F6F2211D7AF00FB6BB5 /* MockStackButtonView.swift */; };
+ 14707C4425D54C2100CAD083 /* MockUserService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14A5B97A25C1AD4600986616 /* MockUserService.swift */; };
+ 14707C4525D54C2100CAD083 /* MockLocationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 097800A9226F4886008772E4 /* MockLocationService.swift */; };
+ 14707C4625D54C2100CAD083 /* MockValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09AAEF9721C4283200A04EEC /* MockValidator.swift */; };
+ 14707C4725D54C2100CAD083 /* KarhooRidesPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F462211D34000FB6BB5 /* KarhooRidesPresenterSpec.swift */; };
+ 14707C4825D54C2100CAD083 /* KarhooTripDetailsPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2D5221EEC9E008FE26D /* KarhooTripDetailsPresenterSpec.swift */; };
+ 14707C4925D54C2100CAD083 /* MockTripScreenDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2FC221EEE8A008FE26D /* MockTripScreenDetailsView.swift */; };
+ 14707C4A25D54C2100CAD083 /* MockTripSummaryInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2ED221EEDDE008FE26D /* MockTripSummaryInfoView.swift */; };
+ 14707C4B25D54C2100CAD083 /* PopupDialogView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 093D2E6D2224346C00D5F031 /* PopupDialogView.swift */; };
+ 14707C4C25D54C2100CAD083 /* MockPollCall.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0F921BE850F00745370 /* MockPollCall.swift */; };
+ 14707C4D25D54C2100CAD083 /* MockBaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F12DC622313E300024D6E9 /* MockBaseViewController.swift */; };
+ 14707C4E25D54C2100CAD083 /* MockAddressBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14A5B99B25C1BB3500986616 /* MockAddressBarView.swift */; };
+ 14707C4F25D54C2100CAD083 /* MockPrebookConfirmationScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F452216D0BB006C48F2 /* MockPrebookConfirmationScreenBuilder.swift */; };
+ 14707C5025D54C2100CAD083 /* DefaultConstraintSwitcherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC13584221D64E8C005054AE /* DefaultConstraintSwitcherTests.swift */; };
+ 14707C5125D54C2100CAD083 /* KarhooTripPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2D6221EEC9E008FE26D /* KarhooTripPresenterSpec.swift */; };
+ 14707C5225D54C2100CAD083 /* TripScreenDetailsViewModelSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2D4221EEC9E008FE26D /* TripScreenDetailsViewModelSpec.swift */; };
+ 14707C5325D54C2100CAD083 /* MockPickupOnlyStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C169BB22819C1A00CF7E66 /* MockPickupOnlyStrategy.swift */; };
+ 14707C5425D54C2100CAD083 /* MockKarhooExecutable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0F821BE850F00745370 /* MockKarhooExecutable.swift */; };
+ 14707C5525D54C2100CAD083 /* KarhooOriginEtaPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2DA221EECA8008FE26D /* KarhooOriginEtaPresenterSpec.swift */; };
+ 14707C5625D54C2100CAD083 /* MockTimeScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F8D2211E3FA00FB6BB5 /* MockTimeScheduler.swift */; };
+ 14707C5725D54C2100CAD083 /* MockDatePickerScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F422216D0BB006C48F2 /* MockDatePickerScreenBuilder.swift */; };
+ 14707C5825D54C2100CAD083 /* MockBookingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0949543E21FF5A8800D930C0 /* MockBookingView.swift */; };
+ 14707C5925D54C2100CAD083 /* QuoteCellViewModelSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40A2852022B253870020D78F /* QuoteCellViewModelSpec.swift */; };
+ 14707C5A25D54C2100CAD083 /* TripStatesGetterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094B764322CE731200326CE1 /* TripStatesGetterSpec.swift */; };
+ 14707C5B25D54C2100CAD083 /* BookingStatusViewModelSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F872211E2C100FB6BB5 /* BookingStatusViewModelSpec.swift */; };
+ 14707C5C25D54C2100CAD083 /* KarhooAddressSearchProviderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DCC7F321BE7CE000DF02B9 /* KarhooAddressSearchProviderSpec.swift */; };
+ 14707C5D25D54C2100CAD083 /* DatePickerPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 090F08E321C93591000C7E50 /* DatePickerPresenterSpec.swift */; };
+ 14707C5E25D54C2100CAD083 /* MockUserLocationProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0949545D2201C3E900D930C0 /* MockUserLocationProvider.swift */; };
+ 14707C5F25D54C2100CAD083 /* KarhooTripsProviderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F852211E26400FB6BB5 /* KarhooTripsProviderSpec.swift */; };
+ 14707C6025D54C2100CAD083 /* BookingAddressBarPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D6D21E5118A003E840C /* BookingAddressBarPresenterSpec.swift */; };
+ 14707C6125D54C2100CAD083 /* MockAddressMapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14A5B9AE25C1C61000986616 /* MockAddressMapView.swift */; };
+ 14707C6225D54C2100CAD083 /* KarhooPrebookConfirmationPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCAD1BFF22087CA600C3AD1D /* KarhooPrebookConfirmationPresenterSpec.swift */; };
+ 14707C6325D54C2100CAD083 /* MockBookingRequestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC13584A21D6752F005054AE /* MockBookingRequestView.swift */; };
+ 14707C6425D54C2100CAD083 /* MockTripScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E30A221F1839008FE26D /* MockTripScreenBuilder.swift */; };
+ 14707C6525D54C2100CAD083 /* MockFareService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 408AB682234F418B00B351B2 /* MockFareService.swift */; };
+ 14707C6625D54C2100CAD083 /* MockAddressService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C9D9919242CED15004F1DBD /* MockAddressService.swift */; };
+ 14707C6725D54C2100CAD083 /* MockPaymentService.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F612216D9C1006C48F2 /* MockPaymentService.swift */; };
+ 14707C6825D54C2100CAD083 /* MockCall.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0F621BE850F00745370 /* MockCall.swift */; };
+ 14707C6925D54C2100CAD083 /* ResizingSwitcherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC13584121D64E8C005054AE /* ResizingSwitcherTests.swift */; };
+ 14707C6A25D54C2100CAD083 /* MockBookingRequestScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F462216D0BB006C48F2 /* MockBookingRequestScreenBuilder.swift */; };
+ 14707C6B25D54C2100CAD083 /* MockTripService.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC13585121D67971005054AE /* MockTripService.swift */; };
+ 14707C6C25D54C2100CAD083 /* KarhooAddressPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DCC7F121BE7CE000DF02B9 /* KarhooAddressPresenterSpec.swift */; };
+ 14707C6D25D54C2100CAD083 /* TripMapPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2DD221EECB0008FE26D /* TripMapPresenterSpec.swift */; };
+ 14707C6E25D54C2100CAD083 /* MockAddressSearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0E621BE7FF100745370 /* MockAddressSearchBar.swift */; };
+ 14707C6F25D54C2100CAD083 /* TripDetailsViewModelSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F892211E30400FB6BB5 /* TripDetailsViewModelSpec.swift */; };
+ 14707C7025D54C2100CAD083 /* MockRidesListActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F662211D3DD00FB6BB5 /* MockRidesListActions.swift */; };
+ 14707C7125D54C2100CAD083 /* MockDataFormatterType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0949545B2201C2BA00D930C0 /* MockDataFormatterType.swift */; };
+ 14707C7225D54C2100CAD083 /* MockTripRatingCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095D7455231825C7002253C0 /* MockTripRatingCache.swift */; };
+ 14707C7325D54C2100CAD083 /* MockFlightDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E1475421C7ED06003BB30B /* MockFlightDetailsView.swift */; };
+ 14707C7425D54C2100CAD083 /* MockBookingMapStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C169B922819BBF00CF7E66 /* MockBookingMapStrategy.swift */; };
+ 14707C7525D54C2100CAD083 /* KarhooTripSummaryPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2EA221EED94008FE26D /* KarhooTripSummaryPresenterSpec.swift */; };
+ 14707C7625D54C2100CAD083 /* MockUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09BDD18721C2C20A0074421C /* MockUserDefaults.swift */; };
+ 14707C7725D54C2100CAD083 /* BookingDetailsSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC13583E21D64E18005054AE /* BookingDetailsSpec.swift */; };
+ 14707C7825D54C2100CAD083 /* MockAlertHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14A5B97225C1AC7C00986616 /* MockAlertHandler.swift */; };
+ 14707C7925D54C2100CAD083 /* MockTripsSorter.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F6B2211D76100FB6BB5 /* MockTripsSorter.swift */; };
+ 14707C7A25D54C2100CAD083 /* MockAddressScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F472216D0BB006C48F2 /* MockAddressScreenBuilder.swift */; };
+ 14707C7B25D54C2100CAD083 /* MockPaymentNonceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 092F282022B25C7800AF8E0E /* MockPaymentNonceProvider.swift */; };
+ 14707C7C25D54C2100CAD083 /* KarhooBookingRequestPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC13584621D64F66005054AE /* KarhooBookingRequestPresenterSpec.swift */; };
+ 14707C7D25D54C2100CAD083 /* MockQuoteSortView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D5621E5117C003E840C /* MockQuoteSortView.swift */; };
+ 14707C7E25D54C2100CAD083 /* KarhooDateFormatterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D293C422C651C10051C455 /* KarhooDateFormatterSpec.swift */; };
+ 14707C7F25D54C2100CAD083 /* BookingMapPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D6921E5118A003E840C /* BookingMapPresenterSpec.swift */; };
+ 14707C8025D54C2100CAD083 /* KarhooQuoteSorterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D6F21E5118A003E840C /* KarhooQuoteSorterSpec.swift */; };
+ 14707C8125D54C2100CAD083 /* KarhooBookingStatusSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCF7E68E2226A76B00EEBF98 /* KarhooBookingStatusSpec.swift */; };
+ 14707C8225D54C2100CAD083 /* MockViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09022B232239133700C4A7EE /* MockViewController.swift */; };
+ 14707C8325D54C2200CAD083 /* MockCancelRideBehaviour.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F692211D67200FB6BB5 /* MockCancelRideBehaviour.swift */; };
+ 14707C8425D54C2200CAD083 /* MockDatePickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 090F08DD21C934EB000C7E50 /* MockDatePickerView.swift */; };
+ 14707C8525D54C2200CAD083 /* KarhooRideDetailsPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14A5B9C625C1CFCB00986616 /* KarhooRideDetailsPresenterSpec.swift */; };
+ 14707C8625D54C2200CAD083 /* MockPaymentScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F702216F8B7006C48F2 /* MockPaymentScreenBuilder.swift */; };
+ 14707C8725D54C2200CAD083 /* MockObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0FC21BE850F00745370 /* MockObservable.swift */; };
+ 14707C8825D54C2200CAD083 /* MockDriverTrackingService.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E300221EF042008FE26D /* MockDriverTrackingService.swift */; };
+ 14707C8925D54C2200CAD083 /* MockDestinationEtaView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2FA221EEE82008FE26D /* MockDestinationEtaView.swift */; };
+ 14707C8A25D54C2200CAD083 /* MockKarhooMapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0949545421FF7CDB00D930C0 /* MockKarhooMapView.swift */; };
+ 14707C8B25D54C2200CAD083 /* MockRideCellStackButtonActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F5E2211D3D700FB6BB5 /* MockRideCellStackButtonActions.swift */; };
+ 14707C8C25D54C2200CAD083 /* KarhooQuoteCategoryBarPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D6721E5118A003E840C /* KarhooQuoteCategoryBarPresenterSpec.swift */; };
+ 14707C8D25D54C2200CAD083 /* MockOriginEtaView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2FE221EEE94008FE26D /* MockOriginEtaView.swift */; };
+ 14707C8E25D54C2200CAD083 /* BaseViewControllerSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C169BF2281B7C700CF7E66 /* BaseViewControllerSpec.swift */; };
+ 14707C8F25D54C2200CAD083 /* RideDetailsStackButtonPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F4B2211D34100FB6BB5 /* RideDetailsStackButtonPresenterSpec.swift */; };
+ 14707C9025D54C2200CAD083 /* KarhooBookingViewController+BuilderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0966BDB9225CF8A90032C76C /* KarhooBookingViewController+BuilderSpec.swift */; };
+ 14707C9125D54C2200CAD083 /* PrimitiveUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 092F282222B2607D00AF8E0E /* PrimitiveUtil.swift */; };
+ 14707C9225D54C2200CAD083 /* KarhooAddressSearchBarPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14A5B95F25C1982200986616 /* KarhooAddressSearchBarPresenterSpec.swift */; };
+ 14707C9325D54C2200CAD083 /* MockPickupOnlyStrategyDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D5221E5117C003E840C /* MockPickupOnlyStrategyDelegate.swift */; };
+ 14707C9425D54C2200CAD083 /* RideCellStackButtonPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F472211D34000FB6BB5 /* RideCellStackButtonPresenterSpec.swift */; };
+ 14707C9525D54C2200CAD083 /* MockTripsProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F6C2211D76100FB6BB5 /* MockTripsProvider.swift */; };
+ 14707C9625D54C2200CAD083 /* CLLocationCoordinate2D+Equatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094954592201C1ED00D930C0 /* CLLocationCoordinate2D+Equatable.swift */; };
+ 14707C9725D54C2200CAD083 /* MockThreeDSecureProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094B764522CE734D00326CE1 /* MockThreeDSecureProvider.swift */; };
+ 14707C9825D54C2200CAD083 /* MockTripAllocationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14A5B95625C1941C00986616 /* MockTripAllocationView.swift */; };
+ 14707C9925D54C2200CAD083 /* MockFeedbackScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D8B29522F444AA00569C55 /* MockFeedbackScreenBuilder.swift */; };
+ 14707C9A25D54C2200CAD083 /* EmptyBookingMapStrategySpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C8316BE246AE84900BAA926 /* EmptyBookingMapStrategySpec.swift */; };
+ 14707C9B25D54C2200CAD083 /* PickupOnlyStrategySpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D6B21E5118A003E840C /* PickupOnlyStrategySpec.swift */; };
+ 14707C9C25D54C2200CAD083 /* MockQuoteService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0949544221FF5F0800D930C0 /* MockQuoteService.swift */; };
+ 14707C9D25D54C2200CAD083 /* MockMapViewActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2F2221EEDF6008FE26D /* MockMapViewActions.swift */; };
+ 14707C9E25D54C2200CAD083 /* MockTimeSinceNowProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 090F08DF21C934EB000C7E50 /* MockTimeSinceNowProvider.swift */; };
+ 14707C9F25D54C2200CAD083 /* MockRecentAddressProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09ED7B1D21C2A81200CF6D73 /* MockRecentAddressProvider.swift */; };
+ 14707CA025D54C2200CAD083 /* KarhooTripRatingCacheSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 095D7457231827B4002253C0 /* KarhooTripRatingCacheSpec.swift */; };
+ 14707CA125D54C2200CAD083 /* AdyenCardRegistrationFlowSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14A5B98725C1B3A300986616 /* AdyenCardRegistrationFlowSpec.swift */; };
+ 14707CA325D54C2200CAD083 /* KarhooTripMetaDataPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F482211D34000FB6BB5 /* KarhooTripMetaDataPresenterSpec.swift */; };
+ 14707CA425D54C2200CAD083 /* MockKarhooPaymentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C20976F244475660097BA3A /* MockKarhooPaymentView.swift */; };
+ 14707CA525D54C2200CAD083 /* TripSummaryInfoViewModelSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2E8221EED8F008FE26D /* TripSummaryInfoViewModelSpec.swift */; };
+ 14707CA625D54C2200CAD083 /* FlightNumberValidatorSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09AAEF9521C4270800A04EEC /* FlightNumberValidatorSpec.swift */; };
+ 14707CA725D54C2200CAD083 /* CancelRideBehaviourSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09B30F5A224CE8BF007768CF /* CancelRideBehaviourSpec.swift */; };
+ 14707CA825D54C2200CAD083 /* MockRideDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F5A2211D3D700FB6BB5 /* MockRideDetailsView.swift */; };
+ 14707CA925D54C2200CAD083 /* MockTripMetaDataView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F592211D3D700FB6BB5 /* MockTripMetaDataView.swift */; };
+ 14707CAA25D54C2200CAD083 /* MockTripFeedbackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968D82722F8649900047FCF /* MockTripFeedbackView.swift */; };
+ 14707CAB25D54C2200CAD083 /* KarhooCardRegistrationFlowSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F532216D307006C48F2 /* KarhooCardRegistrationFlowSpec.swift */; };
+ 14707CAC25D54C2200CAD083 /* KarhooAddressMapPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E68325237972C000BFF5B9 /* KarhooAddressMapPresenterSpec.swift */; };
+ 14707CAD25D54C2200CAD083 /* MockRidesListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F652211D3DD00FB6BB5 /* MockRidesListView.swift */; };
+ 14707CAE25D54C2200CAD083 /* MockTimeFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E302221EF0B9008FE26D /* MockTimeFetcher.swift */; };
+ 14707CAF25D54C2200CAD083 /* TripInfoUtilitySpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC13583B21D64D52005054AE /* TripInfoUtilitySpec.swift */; };
+ 14707CB025D54C2200CAD083 /* KarhooPaymentPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40D741AC22C676C20003B09B /* KarhooPaymentPresenterSpec.swift */; };
+ 14707CB125D54C2200CAD083 /* TripMetaDataViewModelSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F772211DC5600FB6BB5 /* TripMetaDataViewModelSpec.swift */; };
+ 14707CB225D54C2200CAD083 /* KarhooBookingPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D6021E5118A003E840C /* KarhooBookingPresenterSpec.swift */; };
+ 14707CB325D54C2200CAD083 /* MockAnalyticsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 407EC7EF22CF93DC00F24CFC /* MockAnalyticsService.swift */; };
+ 14707CB425D54C2200CAD083 /* MockRidesScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C4397CF22615F37006BC6C4 /* MockRidesScreenBuilder.swift */; };
+ 14707CB525D54C2200CAD083 /* MockRideDetailsStackButtonActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F5B2211D3D700FB6BB5 /* MockRideDetailsStackButtonActions.swift */; };
+ 14707CB725D54C2200CAD083 /* TripFeedbackPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968D82422F82F8C00047FCF /* TripFeedbackPresenterSpec.swift */; };
+ 14707CB825D54C2200CAD083 /* MockAddressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0E521BE7FF100745370 /* MockAddressView.swift */; };
+ 14707CB925D54C2200CAD083 /* MockPrebookConfirmationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCAD1C0D220884CC00C3AD1D /* MockPrebookConfirmationView.swift */; };
+ 14707CBA25D54C2200CAD083 /* TestBroadcaster.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F86F7F222D60AB008C86DE /* TestBroadcaster.swift */; };
+ 14707CBB25D54C2200CAD083 /* MockAddressSearchProviderDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0E821BE7FF100745370 /* MockAddressSearchProviderDelegate.swift */; };
+ 14707CBC25D54C2200CAD083 /* MockFlightDetailsScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F432216D0BB006C48F2 /* MockFlightDetailsScreenBuilder.swift */; };
+ 14707CBD25D54C2200CAD083 /* PrebookConfirmationViewModelSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCAD1C0122087CA600C3AD1D /* PrebookConfirmationViewModelSpec.swift */; };
+ 14707CBE25D54C2200CAD083 /* MockBookingDetailsObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F86F85222D8553008C86DE /* MockBookingDetailsObserver.swift */; };
+ 14707CBF25D54C2200CAD083 /* UnitTestSetup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 096192F521BEAB9C0052B71C /* UnitTestSetup.swift */; };
+ 14707CC025D54C2200CAD083 /* MockFeedbackMailComposter.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F712211D7F500FB6BB5 /* MockFeedbackMailComposter.swift */; };
+ 14707CC125D54C2200CAD083 /* KarhooGuestBookingRequestPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4038DF43244617960014539B /* KarhooGuestBookingRequestPresenterSpec.swift */; };
+ 14707CC225D54C2200CAD083 /* CurrencyCodeConverterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14A5B96A25C19BEE00986616 /* CurrencyCodeConverterSpec.swift */; };
+ 14707CC325D54C2200CAD083 /* MockQuoteCategoryBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D4E21E5117C003E840C /* MockQuoteCategoryBarView.swift */; };
+ 14707CC425D54C2200CAD083 /* QtaStringFormatterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D293C322C651C10051C455 /* QtaStringFormatterSpec.swift */; };
+ 14707CC525D54C2200CAD083 /* PopupDialogPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC04659722148912004E76FE /* PopupDialogPresenterSpec.swift */; };
+ 14707CC625D54C2200CAD083 /* TripAddressBarPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2DC221EECAF008FE26D /* TripAddressBarPresenterSpec.swift */; };
+ 14707CC725D54C2200CAD083 /* KarhooTripAllocationPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D6321E5118A003E840C /* KarhooTripAllocationPresenterSpec.swift */; };
+ 14707CC825D54C2200CAD083 /* MockError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F10621BE885100745370 /* MockError.swift */; };
+ 14707CC925D54C2200CAD083 /* MockTripSummaryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2EE221EEDDE008FE26D /* MockTripSummaryView.swift */; };
+ 14707CCA25D54C2200CAD083 /* MockURLOpener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C3C671024603B5700C736E9 /* MockURLOpener.swift */; };
+ 14707CCB25D54C2200CAD083 /* MockAppStateNotifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F86F83222D84A8008C86DE /* MockAppStateNotifier.swift */; };
+ 14707CCC25D54C2200CAD083 /* MockBookingStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 097050A421FF0AF300E53AD2 /* MockBookingStatus.swift */; };
+ 14707CCD25D54C2200CAD083 /* MockTripView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2F1221EEDF6008FE26D /* MockTripView.swift */; };
+ 14707CCE25D54C2200CAD083 /* TripsListSorterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09B30F5B224CE8BF007768CF /* TripsListSorterSpec.swift */; };
+ 14707CCF25D54C2200CAD083 /* KarhooDestinationEtaPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2D2221EEC93008FE26D /* KarhooDestinationEtaPresenterSpec.swift */; };
+ 14707CD025D54C2200CAD083 /* MockQuoteListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D4C21E5117C003E840C /* MockQuoteListView.swift */; };
+ 14707CD125D54C2200CAD083 /* MockTripMetaDataActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F5D2211D3D700FB6BB5 /* MockTripMetaDataActions.swift */; };
+ 14707CD225D54C2200CAD083 /* MockQuoteSorter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 145EC6F225C98CC800F1FC94 /* MockQuoteSorter.swift */; };
+ 14707CD325D54C2200CAD083 /* MockBookingAllocationSpinnerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E35D4921E5117C003E840C /* MockBookingAllocationSpinnerView.swift */; };
+ 14707CD425D54C2200CAD083 /* BraintreeThreeDSecureProviderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094B763F22CE729400326CE1 /* BraintreeThreeDSecureProviderSpec.swift */; };
+ 14707CD525D54C2200CAD083 /* MockKarhooPollExecutor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0F721BE850F00745370 /* MockKarhooPollExecutor.swift */; };
+ 14707CD625D54C2200CAD083 /* BraintreePaymentNonceProviderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094B763D22CE729300326CE1 /* BraintreePaymentNonceProviderSpec.swift */; };
+ 14707CD725D54C2200CAD083 /* MockSideMenuHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 097800A3226F1FE5008772E4 /* MockSideMenuHandler.swift */; };
+ 14707CD825D54C2200CAD083 /* TestUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0968F0EE21BE816F00745370 /* TestUtil.swift */; };
+ 14707CD925D54C2200CAD083 /* MockPhoneNumberCaller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094954562201C13E00D930C0 /* MockPhoneNumberCaller.swift */; };
+ 14707CDA25D54C2200CAD083 /* MockRideDetailsScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC4B92EC222E982400FE33B4 /* MockRideDetailsScreenBuilder.swift */; };
+ 14707CDB25D54C2200CAD083 /* KarhooRidesListPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F4A2211D34000FB6BB5 /* KarhooRidesListPresenterSpec.swift */; };
+ 14707CDC25D54C2200CAD083 /* MockPopupDialogScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F12DC82232ABD30024D6E9 /* MockPopupDialogScreenBuilder.swift */; };
+ 14707CDD25D54C2200CAD083 /* FlightDetailsPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09BDD19721C2CBCF0074421C /* FlightDetailsPresenterSpec.swift */; };
+ 14707CDE25D54C2200CAD083 /* PrebookConfirmationFormatterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCAD1C0022087CA600C3AD1D /* PrebookConfirmationFormatterSpec.swift */; };
+ 14707CDF25D54C2200CAD083 /* MockTripSummaryScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E30C221F18F3008FE26D /* MockTripSummaryScreenBuilder.swift */; };
+ 14A5B93325C1823C00986616 /* KarhooConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14A5B93225C1823C00986616 /* KarhooConfig.swift */; };
23391EAC22C65525007D704E /* AddressCellViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23391EAB22C65525007D704E /* AddressCellViewModel.swift */; };
2396A2AB255566DC007BD9E1 /* JourneyInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2396A2AA255566DC007BD9E1 /* JourneyInfo.swift */; };
2A9BC10FB50E39DBB73C43FF /* Pods_Client.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9FF975DAE636DFA8CA47C6F2 /* Pods_Client.framework */; };
@@ -217,7 +300,6 @@
4038DF3D2444C6E00014539B /* KarhooPhoneInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4038DF3C2444C6E00014539B /* KarhooPhoneInputView.swift */; };
4038DF3F2444D6810014539B /* KarhooInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4038DF3E2444D6810014539B /* KarhooInputView.swift */; };
4038DF422445D5340014539B /* KarhooPhoneInputViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4038DF412445D5340014539B /* KarhooPhoneInputViewDataSource.swift */; };
- 4038DF44244617960014539B /* KarhooGuestBookingRequestPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4038DF43244617960014539B /* KarhooGuestBookingRequestPresenterSpec.swift */; };
403E907922C5287F00F39B91 /* KarhooPaymentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 403E907822C5287F00F39B91 /* KarhooPaymentView.swift */; };
403F448222F19A38008147FC /* BaseStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 403F448122F19A38008147FC /* BaseStackView.swift */; };
403F448422F1EC92008147FC /* KarhooTripFeedbackViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 403F448322F1EC92008147FC /* KarhooTripFeedbackViewController.swift */; };
@@ -292,15 +374,11 @@
407EC7EA22CF564E00F24CFC /* TableDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 407EC79122CF564E00F24CFC /* TableDataSource.swift */; };
407EC7EB22CF564E00F24CFC /* TableDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 407EC79222CF564E00F24CFC /* TableDelegate.swift */; };
407EC7EC22CF564E00F24CFC /* TableData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 407EC79322CF564E00F24CFC /* TableData.swift */; };
- 407EC7F022CF93DC00F24CFC /* MockAnalyticsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 407EC7EF22CF93DC00F24CFC /* MockAnalyticsService.swift */; };
407FC5F622F0A46800F74D0A /* HintTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 407FC5F522F0A46800F74D0A /* HintTextView.swift */; };
- 408AB683234F418B00B351B2 /* MockFareService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 408AB682234F418B00B351B2 /* MockFareService.swift */; };
408AB68523507DF600B351B2 /* FareExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 408AB68423507DF600B351B2 /* FareExt.swift */; };
40A2851F22B2476F0020D78F /* QuoteViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40A2851E22B2476F0020D78F /* QuoteViewModel.swift */; };
- 40A2852122B253870020D78F /* QuoteCellViewModelSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40A2852022B253870020D78F /* QuoteCellViewModelSpec.swift */; };
40C1CD7223C9EC7900EDEA84 /* TripStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40C1CD7123C9EC7900EDEA84 /* TripStatusView.swift */; };
40C7DC5B23D0A13500975AD3 /* MetaDataView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40C7DC5A23D0A13500975AD3 /* MetaDataView.swift */; };
- 40D741AD22C676C20003B09B /* KarhooPaymentPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40D741AC22C676C20003B09B /* KarhooPaymentPresenterSpec.swift */; };
40E54AC42460DF9D00D13E10 /* KarhooAddCardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40E54AC32460DF9D00D13E10 /* KarhooAddCardView.swift */; };
40E6693523D5B99E00DE63BA /* RideDetailsViewContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40E6693423D5B99E00DE63BA /* RideDetailsViewContainer.swift */; };
40FE0CEA22D7D28B003F65B5 /* RateButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40FE0CE922D7D28B003F65B5 /* RateButton.swift */; };
@@ -308,12 +386,10 @@
40FE0CF022D7D31A003F65B5 /* KarhooRatingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40FE0CEF22D7D31A003F65B5 /* KarhooRatingView.swift */; };
40FE0CF222D7D333003F65B5 /* KarhooRatingPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40FE0CF122D7D333003F65B5 /* KarhooRatingPresenter.swift */; };
5C089DF82507A2E100B3D4CA /* AdyenCardRegistrationFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C089DF72507A2E100B3D4CA /* AdyenCardRegistrationFlow.swift */; };
- 5C089DFA2507C9F000B3D4CA /* AdyenCardRegistrationFlowSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C089DF92507C9F000B3D4CA /* AdyenCardRegistrationFlowSpec.swift */; };
5C1B298725247E4F00E3CEEF /* AdyenPaymentNonceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1B298625247E4E00E3CEEF /* AdyenPaymentNonceProvider.swift */; };
5C1CD0B0241A5D88004AFF7D /* TripOptionsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1CD0A1241A5D88004AFF7D /* TripOptionsViewModel.swift */; };
5C1CD0B1241A5D88004AFF7D /* KarhooTripOptionsPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1CD0A3241A5D88004AFF7D /* KarhooTripOptionsPresenter.swift */; };
5C1CD0B2241A5D88004AFF7D /* TripOptionsMVP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1CD0A4241A5D88004AFF7D /* TripOptionsMVP.swift */; };
- 5C1CD0B3241A5D88004AFF7D /* TripActionsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1CD0A5241A5D88004AFF7D /* TripActionsView.swift */; };
5C1CD0B4241A5D88004AFF7D /* KarhooDriverDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1CD0A7241A5D88004AFF7D /* KarhooDriverDetailsView.swift */; };
5C1CD0B5241A5D88004AFF7D /* DriverDetailsMVP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1CD0A8241A5D88004AFF7D /* DriverDetailsMVP.swift */; };
5C1CD0B6241A5D88004AFF7D /* KarhooDriverDetailsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5C1CD0A9241A5D88004AFF7D /* KarhooDriverDetailsView.xib */; };
@@ -322,16 +398,13 @@
5C1CD0BA241A5D88004AFF7D /* KarhooTripDetailsPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1CD0AE241A5D88004AFF7D /* KarhooTripDetailsPresenter.swift */; };
5C1CD0BB241A5D88004AFF7D /* TripScreenDetailsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1CD0AF241A5D88004AFF7D /* TripScreenDetailsViewModel.swift */; };
5C1CD0BF241A8DB8004AFF7D /* KarhooTripDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1CD0BE241A8DB8004AFF7D /* KarhooTripDetailsView.swift */; };
- 5C209770244475660097BA3A /* MockKarhooPaymentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C20976F244475660097BA3A /* MockKarhooPaymentView.swift */; };
5C2E26102420F8AC00B1FF0C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260F2420F8AC00B1FF0C /* AppDelegate.swift */; };
5C2E26122420F8AC00B1FF0C /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E26112420F8AC00B1FF0C /* SceneDelegate.swift */; };
5C2E26142420F8AC00B1FF0C /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E26132420F8AC00B1FF0C /* ViewController.swift */; };
5C2E26192420F8AD00B1FF0C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5C2E26182420F8AD00B1FF0C /* Assets.xcassets */; };
5C2E261C2420F8AD00B1FF0C /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5C2E261A2420F8AD00B1FF0C /* LaunchScreen.storyboard */; };
5C3C66B724468B7800C736E9 /* KarhooPaymentMVP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C3C66B624468B7800C736E9 /* KarhooPaymentMVP.swift */; };
- 5C3C671124603B5700C736E9 /* MockURLOpener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C3C671024603B5700C736E9 /* MockURLOpener.swift */; };
5C4252592518D06000CCCB5D /* CardRegistrationFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C4252582518D06000CCCB5D /* CardRegistrationFlow.swift */; };
- 5C4397D022615F37006BC6C4 /* MockRidesScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C4397CF22615F37006BC6C4 /* MockRidesScreenBuilder.swift */; };
5C6267EA252CC24500AB6CD2 /* PaymentFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C6267E9252CC24500AB6CD2 /* PaymentFactory.swift */; };
5C626861252DFC0A00AB6CD2 /* AdyenResponseHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C626860252DFC0A00AB6CD2 /* AdyenResponseHandler.swift */; };
5C7233C0226510B9001078B6 /* KarhooUISDKError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C7233BF226510B9001078B6 /* KarhooUISDKError.swift */; };
@@ -340,10 +413,7 @@
5C7F6EF1233A375F0039F3E2 /* BaseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C7F6EF0233A375F0039F3E2 /* BaseView.swift */; };
5C831686246218E700BAA926 /* KarhooComponents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C831685246218E700BAA926 /* KarhooComponents.swift */; };
5C8316BB246A0B6200BAA926 /* EmptyMapBookingStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C8316BA246A0B6200BAA926 /* EmptyMapBookingStrategy.swift */; };
- 5C8316BF246AE84900BAA926 /* EmptyBookingMapStrategySpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C8316BE246AE84900BAA926 /* EmptyBookingMapStrategySpec.swift */; };
5C8316C1246B6D0700BAA926 /* SharedPassengerDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C8316C0246B6D0700BAA926 /* SharedPassengerDetails.swift */; };
- 5C9D9918242CEBC4004F1DBD /* MockAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C9D9917242CEBC3004F1DBD /* MockAnalytics.swift */; };
- 5C9D991A242CED15004F1DBD /* MockAddressService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C9D9919242CED15004F1DBD /* MockAddressService.swift */; };
5CBA2A7424F5D8CC0091D783 /* BookingRequestMVP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CBA2A6024F5D8CC0091D783 /* BookingRequestMVP.swift */; };
5CBA2A7524F5D8CC0091D783 /* FormBookingRequestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CBA2A6224F5D8CC0091D783 /* FormBookingRequestViewController.swift */; };
5CBA2A7624F5D8CC0091D783 /* FormBookingRequestPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CBA2A6324F5D8CC0091D783 /* FormBookingRequestPresenter.swift */; };
@@ -358,7 +428,6 @@
5CBA2A7F24F5D8CC0091D783 /* KarhooTimePriceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CBA2A7124F5D8CC0091D783 /* KarhooTimePriceView.swift */; };
5CBA2A8024F5D8CC0091D783 /* TimePriceMVP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CBA2A7224F5D8CC0091D783 /* TimePriceMVP.swift */; };
5CBA2A8124F5D8CC0091D783 /* KarhooTimePriceView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5CBA2A7324F5D8CC0091D783 /* KarhooTimePriceView.xib */; };
- 5CBE369524EAB99500C7B204 /* Keys.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CBE369424EAB99400C7B204 /* Keys.swift */; };
5CC253712441FD4000603D84 /* PaymentMethod.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CC253702441FD4000603D84 /* PaymentMethod.swift */; };
5CD9CFAA22DCAB580086E7A0 /* RatingViewMVP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CD9CFA922DCAB580086E7A0 /* RatingViewMVP.swift */; };
5CDACF2E23CCAC8700FD4F56 /* KarhooMKMapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CDACF2D23CCAC8700FD4F56 /* KarhooMKMapView.swift */; };
@@ -367,19 +436,16 @@
6F4235BF2391800C00233C02 /* AddressGoogleLogoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F4235BE2391800C00233C02 /* AddressGoogleLogoView.swift */; };
6F89EA0D248E5CA300F47C1B /* KarhooAddressDisplayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F89EA0C248E5CA300F47C1B /* KarhooAddressDisplayView.swift */; };
986578A0F928780978136BC5 /* RidesViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 986573E003E549DB4C06EA7A /* RidesViewController.xib */; };
+ A1A0312626171A4E00B01E1F /* KarhooQuoteListPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1A0312526171A4E00B01E1F /* KarhooQuoteListPresenterSpec.swift */; };
+ AE4AC8A425F12C28000F9E57 /* AdyenThreeDSecureUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE4AC8A325F12C28000F9E57 /* AdyenThreeDSecureUtils.swift */; };
+ D8263F4E262096C30042F259 /* TimeFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8263F4D262096C30042F259 /* TimeFormatter.swift */; };
+ D88BC2862620C51C00F1EA60 /* TimeFormatterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = D88BC2852620C51C00F1EA60 /* TimeFormatterSpec.swift */; };
+ D8D8ED2A261F1FDA0061066D /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = D8D8ED2D261F1FDA0061066D /* Localizable.stringsdict */; };
+ D8D8ED2B261F1FDA0061066D /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = D8D8ED2D261F1FDA0061066D /* Localizable.stringsdict */; };
FC046595221484E2004E76FE /* RideDetailsScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC046594221484E2004E76FE /* RideDetailsScreenBuilder.swift */; };
- FC04659822148912004E76FE /* PopupDialogPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC04659722148912004E76FE /* PopupDialogPresenterSpec.swift */; };
FC04659F2215A6AD004E76FE /* Navigation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC04659E2215A6AD004E76FE /* Navigation.swift */; };
FC0465A12215A962004E76FE /* UINavigation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC0465A02215A962004E76FE /* UINavigation.swift */; };
FC0465A52215AA05004E76FE /* NavigationControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC0465A42215AA05004E76FE /* NavigationControllerDelegate.swift */; };
- FC13583C21D64D52005054AE /* TripInfoUtilitySpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC13583B21D64D52005054AE /* TripInfoUtilitySpec.swift */; };
- FC13583F21D64E18005054AE /* BookingDetailsSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC13583E21D64E18005054AE /* BookingDetailsSpec.swift */; };
- FC13584321D64E8C005054AE /* ResizingSwitcherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC13584121D64E8C005054AE /* ResizingSwitcherTests.swift */; };
- FC13584421D64E8C005054AE /* DefaultConstraintSwitcherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC13584221D64E8C005054AE /* DefaultConstraintSwitcherTests.swift */; };
- FC13584721D64F66005054AE /* KarhooBookingRequestPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC13584621D64F66005054AE /* KarhooBookingRequestPresenterSpec.swift */; };
- FC13584B21D6752F005054AE /* MockBookingRequestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC13584A21D6752F005054AE /* MockBookingRequestView.swift */; };
- FC13584E21D6785C005054AE /* MockUserService.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC13584D21D6785C005054AE /* MockUserService.swift */; };
- FC13585221D67971005054AE /* MockTripService.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC13585121D67971005054AE /* MockTripService.swift */; };
FC435EEA2211B33B00FB6BB5 /* KarhooRidesPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435EE52211B33B00FB6BB5 /* KarhooRidesPresenter.swift */; };
FC435EEC2211B33B00FB6BB5 /* RidesMVP.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435EE72211B33B00FB6BB5 /* RidesMVP.swift */; };
FC435EED2211B33B00FB6BB5 /* RidesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435EE82211B33B00FB6BB5 /* RidesViewController.swift */; };
@@ -406,44 +472,8 @@
FC435F3E2211BA1700FB6BB5 /* KarhooTripsSorter.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F3C2211BA1700FB6BB5 /* KarhooTripsSorter.swift */; };
FC435F422211BB5900FB6BB5 /* TimeScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F412211BB5900FB6BB5 /* TimeScheduler.swift */; };
FC435F442211BB8B00FB6BB5 /* KarhooTimeScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F432211BB8B00FB6BB5 /* KarhooTimeScheduler.swift */; };
- FC435F4C2211D34100FB6BB5 /* KarhooRidesPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F462211D34000FB6BB5 /* KarhooRidesPresenterSpec.swift */; };
- FC435F4D2211D34100FB6BB5 /* RideCellStackButtonPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F472211D34000FB6BB5 /* RideCellStackButtonPresenterSpec.swift */; };
- FC435F4E2211D34100FB6BB5 /* KarhooTripMetaDataPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F482211D34000FB6BB5 /* KarhooTripMetaDataPresenterSpec.swift */; };
- FC435F4F2211D34100FB6BB5 /* KarhooRideDetailsPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F492211D34000FB6BB5 /* KarhooRideDetailsPresenterSpec.swift */; };
- FC435F502211D34100FB6BB5 /* KarhooRidesListPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F4A2211D34000FB6BB5 /* KarhooRidesListPresenterSpec.swift */; };
- FC435F512211D34100FB6BB5 /* RideDetailsStackButtonPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F4B2211D34100FB6BB5 /* RideDetailsStackButtonPresenterSpec.swift */; };
- FC435F562211D38F00FB6BB5 /* MockRidesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F542211D38E00FB6BB5 /* MockRidesView.swift */; };
- FC435F5F2211D3D700FB6BB5 /* MockTripMetaDataView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F592211D3D700FB6BB5 /* MockTripMetaDataView.swift */; };
- FC435F602211D3D700FB6BB5 /* MockRideDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F5A2211D3D700FB6BB5 /* MockRideDetailsView.swift */; };
- FC435F612211D3D700FB6BB5 /* MockRideDetailsStackButtonActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F5B2211D3D700FB6BB5 /* MockRideDetailsStackButtonActions.swift */; };
- FC435F632211D3D700FB6BB5 /* MockTripMetaDataActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F5D2211D3D700FB6BB5 /* MockTripMetaDataActions.swift */; };
- FC435F642211D3D700FB6BB5 /* MockRideCellStackButtonActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F5E2211D3D700FB6BB5 /* MockRideCellStackButtonActions.swift */; };
- FC435F672211D3DD00FB6BB5 /* MockRidesListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F652211D3DD00FB6BB5 /* MockRidesListView.swift */; };
- FC435F682211D3DD00FB6BB5 /* MockRidesListActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F662211D3DD00FB6BB5 /* MockRidesListActions.swift */; };
- FC435F6A2211D67200FB6BB5 /* MockCancelRideBehaviour.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F692211D67200FB6BB5 /* MockCancelRideBehaviour.swift */; };
- FC435F6D2211D76100FB6BB5 /* MockTripsSorter.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F6B2211D76100FB6BB5 /* MockTripsSorter.swift */; };
- FC435F6E2211D76100FB6BB5 /* MockTripsProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F6C2211D76100FB6BB5 /* MockTripsProvider.swift */; };
- FC435F702211D7AF00FB6BB5 /* MockStackButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F6F2211D7AF00FB6BB5 /* MockStackButtonView.swift */; };
- FC435F722211D7F500FB6BB5 /* MockFeedbackMailComposter.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F712211D7F500FB6BB5 /* MockFeedbackMailComposter.swift */; };
- FC435F782211DC5600FB6BB5 /* TripMetaDataViewModelSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F772211DC5600FB6BB5 /* TripMetaDataViewModelSpec.swift */; };
FC435F7A2211DDB400FB6BB5 /* RideCellViewModelSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F792211DDB400FB6BB5 /* RideCellViewModelSpec.swift */; };
- FC435F862211E26400FB6BB5 /* KarhooTripsProviderSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F852211E26400FB6BB5 /* KarhooTripsProviderSpec.swift */; };
- FC435F882211E2C100FB6BB5 /* BookingStatusViewModelSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F872211E2C100FB6BB5 /* BookingStatusViewModelSpec.swift */; };
- FC435F8A2211E30400FB6BB5 /* TripDetailsViewModelSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F892211E30400FB6BB5 /* TripDetailsViewModelSpec.swift */; };
- FC435F8E2211E3FB00FB6BB5 /* MockTimeScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC435F8D2211E3FA00FB6BB5 /* MockTimeScheduler.swift */; };
FC45D6D817F54C9C62E8B7A0 /* Pods_KarhooUISDKTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA979AB3B77F9708C97C2E84 /* Pods_KarhooUISDKTests.framework */; };
- FC4B92ED222E982400FE33B4 /* MockRideDetailsScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC4B92EC222E982400FE33B4 /* MockRideDetailsScreenBuilder.swift */; };
- FC658F482216D0BB006C48F2 /* MockDatePickerScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F422216D0BB006C48F2 /* MockDatePickerScreenBuilder.swift */; };
- FC658F492216D0BB006C48F2 /* MockFlightDetailsScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F432216D0BB006C48F2 /* MockFlightDetailsScreenBuilder.swift */; };
- FC658F4B2216D0BB006C48F2 /* MockPrebookConfirmationScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F452216D0BB006C48F2 /* MockPrebookConfirmationScreenBuilder.swift */; };
- FC658F4C2216D0BB006C48F2 /* MockBookingRequestScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F462216D0BB006C48F2 /* MockBookingRequestScreenBuilder.swift */; };
- FC658F4D2216D0BB006C48F2 /* MockAddressScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F472216D0BB006C48F2 /* MockAddressScreenBuilder.swift */; };
- FC658F552216D308006C48F2 /* KarhooCardRegistrationFlowSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F532216D307006C48F2 /* KarhooCardRegistrationFlowSpec.swift */; };
- FC658F572216D4FC006C48F2 /* MockNavigationItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F562216D4FC006C48F2 /* MockNavigationItem.swift */; };
- FC658F5D2216D5AE006C48F2 /* MockCardRegistrationFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F5C2216D5AE006C48F2 /* MockCardRegistrationFlow.swift */; };
- FC658F622216D9C1006C48F2 /* MockPaymentService.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F612216D9C1006C48F2 /* MockPaymentService.swift */; };
- FC658F712216F8B7006C48F2 /* MockPaymentScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F702216F8B7006C48F2 /* MockPaymentScreenBuilder.swift */; };
- FC658F80221726C8006C48F2 /* UINavigationSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC658F7F221726C8006C48F2 /* UINavigationSpec.swift */; };
FC705B0D2212DE6E0001036E /* RidesScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC705B0C2212DE6E0001036E /* RidesScreenBuilder.swift */; };
FC705B0F22130B990001036E /* RidesListScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC705B0E22130B990001036E /* RidesListScreenBuilder.swift */; };
FC705B15221321650001036E /* PopupDialogScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC705B14221321650001036E /* PopupDialogScreenBuilder.swift */; };
@@ -478,26 +508,6 @@
FC83E2AD221EE890008FE26D /* TimeFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2AC221EE890008FE26D /* TimeFetcher.swift */; };
FC83E2B1221EE920008FE26D /* DebugLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2AE221EE909008FE26D /* DebugLogger.swift */; };
FC83E2B2221EE920008FE26D /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2AF221EE909008FE26D /* Logger.swift */; };
- FC83E2D3221EEC93008FE26D /* KarhooDestinationEtaPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2D2221EEC93008FE26D /* KarhooDestinationEtaPresenterSpec.swift */; };
- FC83E2D7221EEC9E008FE26D /* TripScreenDetailsViewModelSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2D4221EEC9E008FE26D /* TripScreenDetailsViewModelSpec.swift */; };
- FC83E2D8221EEC9E008FE26D /* KarhooTripDetailsPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2D5221EEC9E008FE26D /* KarhooTripDetailsPresenterSpec.swift */; };
- FC83E2D9221EEC9E008FE26D /* KarhooTripPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2D6221EEC9E008FE26D /* KarhooTripPresenterSpec.swift */; };
- FC83E2DB221EECA9008FE26D /* KarhooOriginEtaPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2DA221EECA8008FE26D /* KarhooOriginEtaPresenterSpec.swift */; };
- FC83E2DE221EECB0008FE26D /* TripAddressBarPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2DC221EECAF008FE26D /* TripAddressBarPresenterSpec.swift */; };
- FC83E2DF221EECB0008FE26D /* TripMapPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2DD221EECB0008FE26D /* TripMapPresenterSpec.swift */; };
- FC83E2E9221EED8F008FE26D /* TripSummaryInfoViewModelSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2E8221EED8F008FE26D /* TripSummaryInfoViewModelSpec.swift */; };
- FC83E2EB221EED94008FE26D /* KarhooTripSummaryPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2EA221EED94008FE26D /* KarhooTripSummaryPresenterSpec.swift */; };
- FC83E2EF221EEDDE008FE26D /* MockTripSummaryInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2ED221EEDDE008FE26D /* MockTripSummaryInfoView.swift */; };
- FC83E2F0221EEDDE008FE26D /* MockTripSummaryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2EE221EEDDE008FE26D /* MockTripSummaryView.swift */; };
- FC83E2F4221EEDF6008FE26D /* MockTripView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2F1221EEDF6008FE26D /* MockTripView.swift */; };
- FC83E2F5221EEDF6008FE26D /* MockMapViewActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2F2221EEDF6008FE26D /* MockMapViewActions.swift */; };
- FC83E2FB221EEE82008FE26D /* MockDestinationEtaView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2FA221EEE82008FE26D /* MockDestinationEtaView.swift */; };
- FC83E2FD221EEE8A008FE26D /* MockTripScreenDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2FC221EEE8A008FE26D /* MockTripScreenDetailsView.swift */; };
- FC83E2FF221EEE94008FE26D /* MockOriginEtaView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E2FE221EEE94008FE26D /* MockOriginEtaView.swift */; };
- FC83E301221EF042008FE26D /* MockDriverTrackingService.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E300221EF042008FE26D /* MockDriverTrackingService.swift */; };
- FC83E303221EF0B9008FE26D /* MockTimeFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E302221EF0B9008FE26D /* MockTimeFetcher.swift */; };
- FC83E30B221F1839008FE26D /* MockTripScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E30A221F1839008FE26D /* MockTripScreenBuilder.swift */; };
- FC83E30D221F18F3008FE26D /* MockTripSummaryScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC83E30C221F18F3008FE26D /* MockTripSummaryScreenBuilder.swift */; };
FC8CDD3D2208956E001F201B /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 090F08E821C94BB6000C7E50 /* Localizable.strings */; };
FC8F472521539E24007841FB /* KarhooUISDK.h in Headers */ = {isa = PBXBuildFile; fileRef = FC8F471721539E24007841FB /* KarhooUISDK.h */; settings = {ATTRIBUTES = (Public, ); }; };
FC8F47392153DBDE007841FB /* KarhooUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC8F47382153DBDE007841FB /* KarhooUI.swift */; };
@@ -508,22 +518,17 @@
FCAD1BFB22087BD800C3AD1D /* PrebookConfirmationMVP.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCAD1BF622087BD700C3AD1D /* PrebookConfirmationMVP.swift */; };
FCAD1BFC22087BD800C3AD1D /* KarhooPrebookConfirmationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCAD1BF722087BD700C3AD1D /* KarhooPrebookConfirmationViewController.swift */; };
FCAD1BFD22087BD800C3AD1D /* KarhooPrebookConfirmationPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCAD1BF822087BD700C3AD1D /* KarhooPrebookConfirmationPresenter.swift */; };
- FCAD1C0222087CA700C3AD1D /* KarhooPrebookConfirmationPresenterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCAD1BFF22087CA600C3AD1D /* KarhooPrebookConfirmationPresenterSpec.swift */; };
- FCAD1C0322087CA700C3AD1D /* PrebookConfirmationFormatterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCAD1C0022087CA600C3AD1D /* PrebookConfirmationFormatterSpec.swift */; };
- FCAD1C0422087CA700C3AD1D /* PrebookConfirmationViewModelSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCAD1C0122087CA600C3AD1D /* PrebookConfirmationViewModelSpec.swift */; };
FCAD1C0B2208816000C3AD1D /* PrebookConfirmationScreenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCAD1C0A2208816000C3AD1D /* PrebookConfirmationScreenBuilder.swift */; };
- FCAD1C0E220884CC00C3AD1D /* MockPrebookConfirmationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCAD1C0D220884CC00C3AD1D /* MockPrebookConfirmationView.swift */; };
FCAD1C1422088A5300C3AD1D /* PrebookConfirmationFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCAD1C1322088A5200C3AD1D /* PrebookConfirmationFormatter.swift */; };
- FCF7E68F2226A76B00EEBF98 /* KarhooBookingStatusSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCF7E68E2226A76B00EEBF98 /* KarhooBookingStatusSpec.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
- 5C2E26212420F8B500B1FF0C /* PBXContainerItemProxy */ = {
+ 14707ADD25D54B5B00CAD083 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = FC8F470B21539E24007841FB /* Project object */;
proxyType = 1;
- remoteGlobalIDString = 5C2E260C2420F8AC00B1FF0C;
- remoteInfo = Client;
+ remoteGlobalIDString = FC8F471321539E24007841FB;
+ remoteInfo = KarhooUISDK;
};
/* End PBXContainerItemProxy section */
@@ -558,7 +563,6 @@
0946CB5C21CBDF0400DBDD42 /* BookingRequestScreenBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookingRequestScreenBuilder.swift; sourceTree = ""; };
0949543E21FF5A8800D930C0 /* MockBookingView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockBookingView.swift; sourceTree = ""; };
0949544221FF5F0800D930C0 /* MockQuoteService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockQuoteService.swift; sourceTree = ""; };
- 0949545221FF6FC800D930C0 /* MockAddressBarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAddressBarView.swift; sourceTree = ""; };
0949545421FF7CDB00D930C0 /* MockKarhooMapView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockKarhooMapView.swift; sourceTree = ""; };
094954562201C13E00D930C0 /* MockPhoneNumberCaller.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockPhoneNumberCaller.swift; sourceTree = ""; };
094954592201C1ED00D930C0 /* CLLocationCoordinate2D+Equatable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CLLocationCoordinate2D+Equatable.swift"; sourceTree = ""; };
@@ -599,7 +603,6 @@
0968F0F821BE850F00745370 /* MockKarhooExecutable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockKarhooExecutable.swift; sourceTree = ""; };
0968F0F921BE850F00745370 /* MockPollCall.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockPollCall.swift; sourceTree = ""; };
0968F0FC21BE850F00745370 /* MockObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockObservable.swift; sourceTree = ""; };
- 0968F10421BE859400745370 /* MockAlertHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockAlertHandler.swift; sourceTree = ""; };
0968F10621BE885100745370 /* MockError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockError.swift; sourceTree = ""; };
0968F11121BEA6B700745370 /* MockAnalytics.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockAnalytics.swift; sourceTree = ""; };
097050A421FF0AF300E53AD2 /* MockBookingStatus.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockBookingStatus.swift; sourceTree = ""; };
@@ -687,12 +690,10 @@
09C7659A21DE688000CD81AB /* BookingMVP.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookingMVP.swift; sourceTree = ""; };
09D293C322C651C10051C455 /* QtaStringFormatterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QtaStringFormatterSpec.swift; sourceTree = ""; };
09D293C422C651C10051C455 /* KarhooDateFormatterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooDateFormatterSpec.swift; sourceTree = ""; };
- 09D293C522C651C10051C455 /* CurrencyCodeConverterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CurrencyCodeConverterSpec.swift; sourceTree = ""; };
09D8B29322F3491F00569C55 /* TripFeedbackScreenBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TripFeedbackScreenBuilder.swift; sourceTree = ""; };
09D8B29522F444AA00569C55 /* MockFeedbackScreenBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockFeedbackScreenBuilder.swift; sourceTree = ""; };
09DA1A3022F1A866004C6B20 /* FeedbackButtonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbackButtonView.swift; sourceTree = ""; };
09DA1A3222F1A8F4004C6B20 /* FeedbackButtonMVP.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbackButtonMVP.swift; sourceTree = ""; };
- 09DCC7F021BE7CE000DF02B9 /* KarhooAddressSearchBarPresenterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooAddressSearchBarPresenterSpec.swift; sourceTree = ""; };
09DCC7F121BE7CE000DF02B9 /* KarhooAddressPresenterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooAddressPresenterSpec.swift; sourceTree = ""; };
09DCC7F321BE7CE000DF02B9 /* KarhooAddressSearchProviderSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooAddressSearchProviderSpec.swift; sourceTree = ""; };
09DE8D45221C658B00451B3C /* BraintreePaymentScreensBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BraintreePaymentScreensBuilder.swift; sourceTree = ""; };
@@ -700,16 +701,13 @@
09E0249F21C2D9FD0071E367 /* FlightNumberValidator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FlightNumberValidator.swift; sourceTree = ""; };
09E1475421C7ED06003BB30B /* MockFlightDetailsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockFlightDetailsView.swift; sourceTree = ""; };
09E35D4921E5117C003E840C /* MockBookingAllocationSpinnerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockBookingAllocationSpinnerView.swift; sourceTree = ""; };
- 09E35D4A21E5117C003E840C /* MockTripAllocationView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockTripAllocationView.swift; sourceTree = ""; };
09E35D4C21E5117C003E840C /* MockQuoteListView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockQuoteListView.swift; sourceTree = ""; };
09E35D4E21E5117C003E840C /* MockQuoteCategoryBarView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockQuoteCategoryBarView.swift; sourceTree = ""; };
09E35D5221E5117C003E840C /* MockPickupOnlyStrategyDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockPickupOnlyStrategyDelegate.swift; sourceTree = ""; };
- 09E35D5421E5117C003E840C /* MockQuoteSorter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockQuoteSorter.swift; sourceTree = ""; };
09E35D5621E5117C003E840C /* MockQuoteSortView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockQuoteSortView.swift; sourceTree = ""; };
09E35D6021E5118A003E840C /* KarhooBookingPresenterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooBookingPresenterSpec.swift; sourceTree = ""; };
09E35D6221E5118A003E840C /* BookingAllocationSpinnerPresenterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookingAllocationSpinnerPresenterSpec.swift; sourceTree = ""; };
09E35D6321E5118A003E840C /* KarhooTripAllocationPresenterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooTripAllocationPresenterSpec.swift; sourceTree = ""; };
- 09E35D6521E5118A003E840C /* KarhooQuoteListPresenterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooQuoteListPresenterSpec.swift; sourceTree = ""; };
09E35D6721E5118A003E840C /* KarhooQuoteCategoryBarPresenterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooQuoteCategoryBarPresenterSpec.swift; sourceTree = ""; };
09E35D6921E5118A003E840C /* BookingMapPresenterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookingMapPresenterSpec.swift; sourceTree = ""; };
09E35D6A21E5118A003E840C /* DestinationSetStrategySpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DestinationSetStrategySpec.swift; sourceTree = ""; };
@@ -719,7 +717,6 @@
09E683202374236100BFF5B9 /* KarhooAddressMapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooAddressMapView.swift; sourceTree = ""; };
09E683222374522900BFF5B9 /* KarhooAddressMapPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooAddressMapPresenter.swift; sourceTree = ""; };
09E68325237972C000BFF5B9 /* KarhooAddressMapPresenterSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooAddressMapPresenterSpec.swift; sourceTree = ""; };
- 09E683282379735B00BFF5B9 /* MockAddressMapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAddressMapView.swift; sourceTree = ""; };
09EBC66922D612C600F1177E /* KarhooSDK.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = KarhooSDK.framework; sourceTree = BUILT_PRODUCTS_DIR; };
09ED7B1B21C2A7E000CF6D73 /* KarhooRecentAddressProviderSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooRecentAddressProviderSpec.swift; sourceTree = ""; };
09ED7B1D21C2A81200CF6D73 /* MockRecentAddressProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockRecentAddressProvider.swift; sourceTree = ""; };
@@ -731,6 +728,18 @@
09F86F83222D84A8008C86DE /* MockAppStateNotifier.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockAppStateNotifier.swift; sourceTree = ""; };
09F86F85222D8553008C86DE /* MockBookingDetailsObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockBookingDetailsObserver.swift; sourceTree = ""; };
1061B90ED3BAE79634610DAC /* Pods-KarhooUISDKTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KarhooUISDKTests.release.xcconfig"; path = "Target Support Files/Pods-KarhooUISDKTests/Pods-KarhooUISDKTests.release.xcconfig"; sourceTree = ""; };
+ 1413303125DBDC3100EDAD3B /* Keys.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Keys.swift; sourceTree = ""; };
+ 145EC6F225C98CC800F1FC94 /* MockQuoteSorter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockQuoteSorter.swift; sourceTree = ""; };
+ 14A5B93225C1823C00986616 /* KarhooConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooConfig.swift; sourceTree = ""; };
+ 14A5B95625C1941C00986616 /* MockTripAllocationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockTripAllocationView.swift; sourceTree = ""; };
+ 14A5B95F25C1982200986616 /* KarhooAddressSearchBarPresenterSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooAddressSearchBarPresenterSpec.swift; sourceTree = ""; };
+ 14A5B96A25C19BEE00986616 /* CurrencyCodeConverterSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencyCodeConverterSpec.swift; sourceTree = ""; };
+ 14A5B97225C1AC7C00986616 /* MockAlertHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAlertHandler.swift; sourceTree = ""; };
+ 14A5B97A25C1AD4600986616 /* MockUserService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockUserService.swift; sourceTree = ""; };
+ 14A5B98725C1B3A300986616 /* AdyenCardRegistrationFlowSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdyenCardRegistrationFlowSpec.swift; sourceTree = ""; };
+ 14A5B99B25C1BB3500986616 /* MockAddressBarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAddressBarView.swift; sourceTree = ""; };
+ 14A5B9AE25C1C61000986616 /* MockAddressMapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAddressMapView.swift; sourceTree = ""; };
+ 14A5B9C625C1CFCB00986616 /* KarhooRideDetailsPresenterSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooRideDetailsPresenterSpec.swift; sourceTree = ""; };
23391EAB22C65525007D704E /* AddressCellViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddressCellViewModel.swift; sourceTree = ""; };
2372675E70509D3779F8061D /* Pods-KarhooUISDKTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KarhooUISDKTests.debug.xcconfig"; path = "Target Support Files/Pods-KarhooUISDKTests/Pods-KarhooUISDKTests.debug.xcconfig"; sourceTree = ""; };
2396A2AA255566DC007BD9E1 /* JourneyInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JourneyInfo.swift; sourceTree = ""; };
@@ -841,12 +850,10 @@
424F848C513A1D30E2DC8308 /* Pods-KarhooUISDK.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KarhooUISDK.release.xcconfig"; path = "Target Support Files/Pods-KarhooUISDK/Pods-KarhooUISDK.release.xcconfig"; sourceTree = ""; };
5A6218A52CFEDECA5CD3884E /* Pods-Client.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Client.release.xcconfig"; path = "Target Support Files/Pods-Client/Pods-Client.release.xcconfig"; sourceTree = ""; };
5C089DF72507A2E100B3D4CA /* AdyenCardRegistrationFlow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdyenCardRegistrationFlow.swift; sourceTree = ""; };
- 5C089DF92507C9F000B3D4CA /* AdyenCardRegistrationFlowSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdyenCardRegistrationFlowSpec.swift; sourceTree = ""; };
5C1B298625247E4E00E3CEEF /* AdyenPaymentNonceProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdyenPaymentNonceProvider.swift; sourceTree = ""; };
5C1CD0A1241A5D88004AFF7D /* TripOptionsViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TripOptionsViewModel.swift; sourceTree = ""; };
5C1CD0A3241A5D88004AFF7D /* KarhooTripOptionsPresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooTripOptionsPresenter.swift; sourceTree = ""; };
5C1CD0A4241A5D88004AFF7D /* TripOptionsMVP.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TripOptionsMVP.swift; sourceTree = ""; };
- 5C1CD0A5241A5D88004AFF7D /* TripActionsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TripActionsView.swift; sourceTree = ""; };
5C1CD0A7241A5D88004AFF7D /* KarhooDriverDetailsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooDriverDetailsView.swift; sourceTree = ""; };
5C1CD0A8241A5D88004AFF7D /* DriverDetailsMVP.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DriverDetailsMVP.swift; sourceTree = ""; };
5C1CD0A9241A5D88004AFF7D /* KarhooDriverDetailsView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KarhooDriverDetailsView.xib; sourceTree = ""; };
@@ -892,7 +899,6 @@
5CBA2A7124F5D8CC0091D783 /* KarhooTimePriceView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooTimePriceView.swift; sourceTree = ""; };
5CBA2A7224F5D8CC0091D783 /* TimePriceMVP.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TimePriceMVP.swift; sourceTree = ""; };
5CBA2A7324F5D8CC0091D783 /* KarhooTimePriceView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KarhooTimePriceView.xib; sourceTree = ""; };
- 5CBE369424EAB99400C7B204 /* Keys.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Keys.swift; sourceTree = ""; };
5CC253702441FD4000603D84 /* PaymentMethod.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentMethod.swift; sourceTree = ""; };
5CD9CFA922DCAB580086E7A0 /* RatingViewMVP.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RatingViewMVP.swift; sourceTree = ""; };
5CDACF2D23CCAC8700FD4F56 /* KarhooMKMapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooMKMapView.swift; sourceTree = ""; };
@@ -903,9 +909,16 @@
986573E003E549DB4C06EA7A /* RidesViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RidesViewController.xib; sourceTree = ""; };
9BA7A827B91FEFCA386D1C4A /* Pods-KarhooUISDK.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KarhooUISDK.debug.xcconfig"; path = "Target Support Files/Pods-KarhooUISDK/Pods-KarhooUISDK.debug.xcconfig"; sourceTree = ""; };
9FF975DAE636DFA8CA47C6F2 /* Pods_Client.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Client.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ A1A0312526171A4E00B01E1F /* KarhooQuoteListPresenterSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KarhooQuoteListPresenterSpec.swift; sourceTree = ""; };
A9F928AAF8C70E5FFDE416BC /* Pods_KarhooUISDK.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_KarhooUISDK.framework; sourceTree = BUILT_PRODUCTS_DIR; };
AA979AB3B77F9708C97C2E84 /* Pods_KarhooUISDKTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_KarhooUISDKTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ AE4AC8A325F12C28000F9E57 /* AdyenThreeDSecureUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdyenThreeDSecureUtils.swift; sourceTree = ""; };
D58D9119291DD6B42DC25E25 /* Pods-Client.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Client.debug.xcconfig"; path = "Target Support Files/Pods-Client/Pods-Client.debug.xcconfig"; sourceTree = ""; };
+ D8263F4D262096C30042F259 /* TimeFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimeFormatter.swift; sourceTree = ""; };
+ D88BC2852620C51C00F1EA60 /* TimeFormatterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TimeFormatterSpec.swift; sourceTree = ""; };
+ D8D8ED2C261F1FDA0061066D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = en.lproj/Localizable.stringsdict; sourceTree = ""; };
+ D8D8ED31261F1FE00061066D /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = fr; path = fr.lproj/Localizable.stringsdict; sourceTree = ""; };
+ D8D8ED32261F1FE10061066D /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = es; path = es.lproj/Localizable.stringsdict; sourceTree = ""; };
FC046594221484E2004E76FE /* RideDetailsScreenBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RideDetailsScreenBuilder.swift; sourceTree = ""; };
FC04659722148912004E76FE /* PopupDialogPresenterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PopupDialogPresenterSpec.swift; sourceTree = ""; };
FC04659E2215A6AD004E76FE /* Navigation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Navigation.swift; sourceTree = ""; };
@@ -917,7 +930,6 @@
FC13584221D64E8C005054AE /* DefaultConstraintSwitcherTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultConstraintSwitcherTests.swift; sourceTree = ""; };
FC13584621D64F66005054AE /* KarhooBookingRequestPresenterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooBookingRequestPresenterSpec.swift; sourceTree = ""; };
FC13584A21D6752F005054AE /* MockBookingRequestView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockBookingRequestView.swift; sourceTree = ""; };
- FC13584D21D6785C005054AE /* MockUserService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockUserService.swift; sourceTree = ""; };
FC13585121D67971005054AE /* MockTripService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockTripService.swift; sourceTree = ""; };
FC435EE52211B33B00FB6BB5 /* KarhooRidesPresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooRidesPresenter.swift; sourceTree = ""; };
FC435EE72211B33B00FB6BB5 /* RidesMVP.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RidesMVP.swift; sourceTree = ""; };
@@ -948,7 +960,6 @@
FC435F462211D34000FB6BB5 /* KarhooRidesPresenterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooRidesPresenterSpec.swift; sourceTree = ""; };
FC435F472211D34000FB6BB5 /* RideCellStackButtonPresenterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RideCellStackButtonPresenterSpec.swift; sourceTree = ""; };
FC435F482211D34000FB6BB5 /* KarhooTripMetaDataPresenterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooTripMetaDataPresenterSpec.swift; sourceTree = ""; };
- FC435F492211D34000FB6BB5 /* KarhooRideDetailsPresenterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooRideDetailsPresenterSpec.swift; sourceTree = ""; };
FC435F4A2211D34000FB6BB5 /* KarhooRidesListPresenterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KarhooRidesListPresenterSpec.swift; sourceTree = ""; };
FC435F4B2211D34100FB6BB5 /* RideDetailsStackButtonPresenterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RideDetailsStackButtonPresenterSpec.swift; sourceTree = ""; };
FC435F542211D38E00FB6BB5 /* MockRidesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockRidesView.swift; sourceTree = ""; };
@@ -1124,6 +1135,7 @@
isa = PBXGroup;
children = (
090F08E821C94BB6000C7E50 /* Localizable.strings */,
+ D8D8ED2D261F1FDA0061066D /* Localizable.stringsdict */,
);
path = Translations;
sourceTree = "";
@@ -1197,6 +1209,7 @@
092F281622B25B0700AF8E0E /* ThreeDSecure */ = {
isa = PBXGroup;
children = (
+ AE4AC8A325F12C28000F9E57 /* AdyenThreeDSecureUtils.swift */,
092F281722B25B0700AF8E0E /* ThreeDSecureProvider.swift */,
092F281822B25B0700AF8E0E /* BraintreeThreeDSecureProvider.swift */,
);
@@ -1238,11 +1251,11 @@
FC435F6F2211D7AF00FB6BB5 /* MockStackButtonView.swift */,
09022B232239133700C4A7EE /* MockViewController.swift */,
09F12DC622313E300024D6E9 /* MockBaseViewController.swift */,
- 0949545221FF6FC800D930C0 /* MockAddressBarView.swift */,
0949545D2201C3E900D930C0 /* MockUserLocationProvider.swift */,
0949545421FF7CDB00D930C0 /* MockKarhooMapView.swift */,
094954562201C13E00D930C0 /* MockPhoneNumberCaller.swift */,
0949545B2201C2BA00D930C0 /* MockDataFormatterType.swift */,
+ 14A5B99B25C1BB3500986616 /* MockAddressBarView.swift */,
);
path = Common;
sourceTree = "";
@@ -1398,8 +1411,8 @@
FC435F692211D67200FB6BB5 /* MockCancelRideBehaviour.swift */,
097050A421FF0AF300E53AD2 /* MockBookingStatus.swift */,
09BDD18721C2C20A0074421C /* MockUserDefaults.swift */,
- 0968F10421BE859400745370 /* MockAlertHandler.swift */,
09AAEF9721C4283200A04EEC /* MockValidator.swift */,
+ 14A5B97225C1AC7C00986616 /* MockAlertHandler.swift */,
);
path = Classes;
sourceTree = "";
@@ -1791,7 +1804,7 @@
09DCC7EF21BE7CE000DF02B9 /* AddressSearchBar */ = {
isa = PBXGroup;
children = (
- 09DCC7F021BE7CE000DF02B9 /* KarhooAddressSearchBarPresenterSpec.swift */,
+ 14A5B95F25C1982200986616 /* KarhooAddressSearchBarPresenterSpec.swift */,
);
path = AddressSearchBar;
sourceTree = "";
@@ -1834,12 +1847,12 @@
09E35D4721E5117C003E840C /* BookingScreen */ = {
isa = PBXGroup;
children = (
+ 145EC6F125C98CBB00F1FC94 /* Domain */,
0949543E21FF5A8800D930C0 /* MockBookingView.swift */,
09E35D4821E5117C003E840C /* TripAllocation */,
09E35D4B21E5117C003E840C /* QuoteList */,
09E35D4D21E5117C003E840C /* QuoteCategoryBar */,
09E35D5121E5117C003E840C /* Map */,
- 09E35D5321E5117C003E840C /* Domain */,
09E35D5521E5117C003E840C /* QuoteSortView */,
);
path = BookingScreen;
@@ -1849,7 +1862,7 @@
isa = PBXGroup;
children = (
09E35D4921E5117C003E840C /* MockBookingAllocationSpinnerView.swift */,
- 09E35D4A21E5117C003E840C /* MockTripAllocationView.swift */,
+ 14A5B95625C1941C00986616 /* MockTripAllocationView.swift */,
);
path = TripAllocation;
sourceTree = "";
@@ -1880,14 +1893,6 @@
path = Map;
sourceTree = "";
};
- 09E35D5321E5117C003E840C /* Domain */ = {
- isa = PBXGroup;
- children = (
- 09E35D5421E5117C003E840C /* MockQuoteSorter.swift */,
- );
- path = Domain;
- sourceTree = "";
- };
09E35D5521E5117C003E840C /* QuoteSortView */ = {
isa = PBXGroup;
children = (
@@ -1923,7 +1928,7 @@
09E35D6421E5118A003E840C /* QuoteList */ = {
isa = PBXGroup;
children = (
- 09E35D6521E5118A003E840C /* KarhooQuoteListPresenterSpec.swift */,
+ A1A0312526171A4E00B01E1F /* KarhooQuoteListPresenterSpec.swift */,
);
path = QuoteList;
sourceTree = "";
@@ -1974,11 +1979,19 @@
09E683272379734F00BFF5B9 /* AddressMapView */ = {
isa = PBXGroup;
children = (
- 09E683282379735B00BFF5B9 /* MockAddressMapView.swift */,
+ 14A5B9AE25C1C61000986616 /* MockAddressMapView.swift */,
);
path = AddressMapView;
sourceTree = "";
};
+ 145EC6F125C98CBB00F1FC94 /* Domain */ = {
+ isa = PBXGroup;
+ children = (
+ 145EC6F225C98CC800F1FC94 /* MockQuoteSorter.swift */,
+ );
+ path = Domain;
+ sourceTree = "";
+ };
4038DF3B2444C6C30014539B /* KarhooTextInputView */ = {
isa = PBXGroup;
children = (
@@ -2089,6 +2102,7 @@
4017C46923CCB0230081834B /* EmptyStateView.swift */,
4010B0E1245C67F300E7B0F1 /* ErrorBannerView.swift */,
4038DF3B2444C6C30014539B /* KarhooTextInputView */,
+ D8263F4D262096C30042F259 /* TimeFormatter.swift */,
);
path = Common;
sourceTree = "";
@@ -2355,7 +2369,6 @@
children = (
5C1CD0A1241A5D88004AFF7D /* TripOptionsViewModel.swift */,
5C1CD0A2241A5D88004AFF7D /* Presenter */,
- 5C1CD0A5241A5D88004AFF7D /* TripActionsView.swift */,
);
path = TripActionsView;
sourceTree = "";
@@ -2390,13 +2403,14 @@
5C2E260E2420F8AC00B1FF0C /* Client */ = {
isa = PBXGroup;
children = (
- 5CBE369424EAB99400C7B204 /* Keys.swift */,
5C2E260F2420F8AC00B1FF0C /* AppDelegate.swift */,
5C2E26112420F8AC00B1FF0C /* SceneDelegate.swift */,
5C2E26132420F8AC00B1FF0C /* ViewController.swift */,
5C2E26182420F8AD00B1FF0C /* Assets.xcassets */,
5C2E261A2420F8AD00B1FF0C /* LaunchScreen.storyboard */,
5C2E261D2420F8AD00B1FF0C /* Info.plist */,
+ 14A5B93225C1823C00986616 /* KarhooConfig.swift */,
+ 1413303125DBDC3100EDAD3B /* Keys.swift */,
);
path = Client;
sourceTree = "";
@@ -2532,7 +2546,6 @@
094B763F22CE729400326CE1 /* BraintreeThreeDSecureProviderSpec.swift */,
095D7457231827B4002253C0 /* KarhooTripRatingCacheSpec.swift */,
094B763D22CE729300326CE1 /* BraintreePaymentNonceProviderSpec.swift */,
- 09D293C522C651C10051C455 /* CurrencyCodeConverterSpec.swift */,
09D293C422C651C10051C455 /* KarhooDateFormatterSpec.swift */,
09D293C322C651C10051C455 /* QtaStringFormatterSpec.swift */,
09B30F5A224CE8BF007768CF /* CancelRideBehaviourSpec.swift */,
@@ -2544,6 +2557,8 @@
FC13583B21D64D52005054AE /* TripInfoUtilitySpec.swift */,
FC435F762211DC3B00FB6BB5 /* ViewModel */,
FC13584021D64E63005054AE /* ConstraintSwitcher */,
+ 14A5B96A25C19BEE00986616 /* CurrencyCodeConverterSpec.swift */,
+ D88BC2852620C51C00F1EA60 /* TimeFormatterSpec.swift */,
);
path = Common;
sourceTree = "";
@@ -2581,9 +2596,9 @@
407EC7EF22CF93DC00F24CFC /* MockAnalyticsService.swift */,
FC658F612216D9C1006C48F2 /* MockPaymentService.swift */,
FC13585121D67971005054AE /* MockTripService.swift */,
- FC13584D21D6785C005054AE /* MockUserService.swift */,
FC83E300221EF042008FE26D /* MockDriverTrackingService.swift */,
408AB682234F418B00B351B2 /* MockFareService.swift */,
+ 14A5B97A25C1AD4600986616 /* MockUserService.swift */,
);
path = Service;
sourceTree = "";
@@ -2697,12 +2712,12 @@
FC435F452211D30700FB6BB5 /* Rides */ = {
isa = PBXGroup;
children = (
- FC435F492211D34000FB6BB5 /* KarhooRideDetailsPresenterSpec.swift */,
FC435F4A2211D34000FB6BB5 /* KarhooRidesListPresenterSpec.swift */,
FC435F462211D34000FB6BB5 /* KarhooRidesPresenterSpec.swift */,
FC435F482211D34000FB6BB5 /* KarhooTripMetaDataPresenterSpec.swift */,
FC435F472211D34000FB6BB5 /* RideCellStackButtonPresenterSpec.swift */,
FC435F4B2211D34100FB6BB5 /* RideDetailsStackButtonPresenterSpec.swift */,
+ 14A5B9C625C1CFCB00986616 /* KarhooRideDetailsPresenterSpec.swift */,
);
path = Rides;
sourceTree = "";
@@ -2786,7 +2801,7 @@
isa = PBXGroup;
children = (
FC658F532216D307006C48F2 /* KarhooCardRegistrationFlowSpec.swift */,
- 5C089DF92507C9F000B3D4CA /* AdyenCardRegistrationFlowSpec.swift */,
+ 14A5B98725C1B3A300986616 /* AdyenCardRegistrationFlowSpec.swift */,
);
path = Routing;
sourceTree = "";
@@ -3193,7 +3208,7 @@
FC8F471021539E24007841FB /* Frameworks */,
FC8F471121539E24007841FB /* Headers */,
FC8F471221539E24007841FB /* Resources */,
- 5C8316B92469FCB200BAA926 /* ShellScript */,
+ 5C8316B92469FCB200BAA926 /* SwiftLint Script */,
);
buildRules = (
);
@@ -3217,7 +3232,7 @@
buildRules = (
);
dependencies = (
- 5C2E26222420F8B500B1FF0C /* PBXTargetDependency */,
+ 14707ADE25D54B5B00CAD083 /* PBXTargetDependency */,
);
name = KarhooUISDKTests;
productName = KarhooUISDKTests;
@@ -3230,7 +3245,7 @@
FC8F470B21539E24007841FB /* Project object */ = {
isa = PBXProject;
attributes = {
- LastSwiftUpdateCheck = 1130;
+ LastSwiftUpdateCheck = 1220;
LastUpgradeCheck = 1100;
ORGANIZATIONNAME = "Flit Technologies Ltd";
TargetAttributes = {
@@ -3276,6 +3291,7 @@
files = (
5C2E261C2420F8AD00B1FF0C /* LaunchScreen.storyboard in Resources */,
5C2E26192420F8AD00B1FF0C /* Assets.xcassets in Resources */,
+ D8D8ED2B261F1FDA0061066D /* Localizable.stringsdict in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -3296,6 +3312,7 @@
094AE85F21C9145D0046EC3C /* DatePickerViewController.xib in Resources */,
FC83E2A6221ECC52008FE26D /* TripSummaryHeaderView.xib in Resources */,
092005E0225B91C1001038ED /* SideMenuViewController.xib in Resources */,
+ D8D8ED2A261F1FDA0061066D /* Localizable.stringsdict in Resources */,
407EC7DC22CF564E00F24CFC /* PinView.xib in Resources */,
FC83E2A5221ECC48008FE26D /* TripSummaryViewController.xib in Resources */,
407EC7C522CF564E00F24CFC /* FormButton.xib in Resources */,
@@ -3360,7 +3377,7 @@
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;
};
- 5C8316B92469FCB200BAA926 /* ShellScript */ = {
+ 5C8316B92469FCB200BAA926 /* SwiftLint Script */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -3369,13 +3386,14 @@
);
inputPaths = (
);
+ name = "SwiftLint Script";
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "# Type a script or drag a script file from your workspace to insert its path.\n\"${PODS_ROOT}/SwiftLint/swiftlint\"\n\n";
+ shellScript = "# Type a script or drag a script file from your workspace to insert its path.\n\"${PODS_ROOT}/SwiftLint/swiftlint\"\n";
};
7DB439AD72189E18EBA41011 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
@@ -3441,9 +3459,10 @@
buildActionMask = 2147483647;
files = (
5C2E26142420F8AC00B1FF0C /* ViewController.swift in Sources */,
- 5CBE369524EAB99500C7B204 /* Keys.swift in Sources */,
5C2E26102420F8AC00B1FF0C /* AppDelegate.swift in Sources */,
5C2E26122420F8AC00B1FF0C /* SceneDelegate.swift in Sources */,
+ 14A5B93325C1823C00986616 /* KarhooConfig.swift in Sources */,
+ 1413303225DBDC3100EDAD3B /* Keys.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -3619,7 +3638,6 @@
0946CB5D21CBDF0400DBDD42 /* BookingRequestScreenBuilder.swift in Sources */,
FC435F3D2211BA1700FB6BB5 /* KarhooTripsProvider.swift in Sources */,
407EC7D022CF564E00F24CFC /* AddressBarMVP.swift in Sources */,
- 5C1CD0B3241A5D88004AFF7D /* TripActionsView.swift in Sources */,
09BDD19121C2CAD00074421C /* FlightDetailsMVP.swift in Sources */,
091EA9D421AC4AA700849112 /* AccessibilityIdentifier.swift in Sources */,
09C7659F21DE688100CD81AB /* QuoteSortMVP.swift in Sources */,
@@ -3665,6 +3683,7 @@
09F60CE9226756AF00023C74 /* SideMenuHandler.swift in Sources */,
099106BD21B82D5200BD7E6F /* Address.swift in Sources */,
407EC7A122CF564E00F24CFC /* AlertHandler.swift in Sources */,
+ D8263F4E262096C30042F259 /* TimeFormatter.swift in Sources */,
407EC7CA22CF564E00F24CFC /* KarhooPrebookFieldView.swift in Sources */,
40E54AC42460DF9D00D13E10 /* KarhooAddCardView.swift in Sources */,
094AE85D21C9145D0046EC3C /* DatePickerMVP.swift in Sources */,
@@ -3712,6 +3731,7 @@
09C765C321DE688100CD81AB /* TripAllocationMVP.swift in Sources */,
5C7B185225310E170001CFE6 /* TouchAreaEdgeInsets.swift in Sources */,
FC705B1E221322550001036E /* PopupDialogViewController.swift in Sources */,
+ AE4AC8A425F12C28000F9E57 /* AdyenThreeDSecureUtils.swift in Sources */,
09C765BE21DE688100CD81AB /* KarhooTripAllocationPresenter.swift in Sources */,
404E9C4B23C8BB2B00289F43 /* LineView.swift in Sources */,
092F281D22B25B0700AF8E0E /* BraintreeThreeDSecureProvider.swift in Sources */,
@@ -3769,183 +3789,184 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 09022B242239133700C4A7EE /* MockViewController.swift in Sources */,
- 09E35D5821E5117C003E840C /* MockTripAllocationView.swift in Sources */,
- 09DCC7F421BE7CE000DF02B9 /* KarhooAddressSearchBarPresenterSpec.swift in Sources */,
- 09D293C822C651C20051C455 /* CurrencyCodeConverterSpec.swift in Sources */,
- 0968F10521BE859400745370 /* MockAlertHandler.swift in Sources */,
- 09E35D5D21E5117C003E840C /* MockQuoteSorter.swift in Sources */,
- 5C089DFA2507C9F000B3D4CA /* AdyenCardRegistrationFlowSpec.swift in Sources */,
- 0949545321FF6FC800D930C0 /* MockAddressBarView.swift in Sources */,
- 09E683292379735B00BFF5B9 /* MockAddressMapView.swift in Sources */,
- FC435F4F2211D34100FB6BB5 /* KarhooRideDetailsPresenterSpec.swift in Sources */,
- 0949545A2201C1ED00D930C0 /* CLLocationCoordinate2D+Equatable.swift in Sources */,
- 096192F621BEAB9C0052B71C /* UnitTestSetup.swift in Sources */,
- FC435F602211D3D700FB6BB5 /* MockRideDetailsView.swift in Sources */,
- 09E35D7021E5118A003E840C /* KarhooBookingPresenterSpec.swift in Sources */,
- FC658F4C2216D0BB006C48F2 /* MockBookingRequestScreenBuilder.swift in Sources */,
- 097050A521FF0AF300E53AD2 /* MockBookingStatus.swift in Sources */,
- FC13583C21D64D52005054AE /* TripInfoUtilitySpec.swift in Sources */,
- 0966BDBA225CF8A90032C76C /* KarhooBookingViewController+BuilderSpec.swift in Sources */,
- 090F08E421C93591000C7E50 /* DatePickerPresenterSpec.swift in Sources */,
- FC13584B21D6752F005054AE /* MockBookingRequestView.swift in Sources */,
- FCAD1C0E220884CC00C3AD1D /* MockPrebookConfirmationView.swift in Sources */,
- FC435F702211D7AF00FB6BB5 /* MockStackButtonView.swift in Sources */,
- 094B764222CE729400326CE1 /* BraintreeThreeDSecureProviderSpec.swift in Sources */,
- 5C8316BF246AE84900BAA926 /* EmptyBookingMapStrategySpec.swift in Sources */,
- FC435F6E2211D76100FB6BB5 /* MockTripsProvider.swift in Sources */,
- 0968F0EA21BE7FF100745370 /* MockAddressView.swift in Sources */,
- FC13584E21D6785C005054AE /* MockUserService.swift in Sources */,
- FC435F882211E2C100FB6BB5 /* BookingStatusViewModelSpec.swift in Sources */,
- FC83E2DE221EECB0008FE26D /* TripAddressBarPresenterSpec.swift in Sources */,
- 09E35D5E21E5117C003E840C /* MockQuoteSortView.swift in Sources */,
- 09E1475521C7ED06003BB30B /* MockFlightDetailsView.swift in Sources */,
- 09D293C622C651C20051C455 /* QtaStringFormatterSpec.swift in Sources */,
- 094954572201C13E00D930C0 /* MockPhoneNumberCaller.swift in Sources */,
- 09E35D7821E5118A003E840C /* BookingAddressBarPresenterSpec.swift in Sources */,
- 092F282322B2607D00AF8E0E /* PrimitiveUtil.swift in Sources */,
- 09ED7B1C21C2A7E000CF6D73 /* KarhooRecentAddressProviderSpec.swift in Sources */,
- FC13583F21D64E18005054AE /* BookingDetailsSpec.swift in Sources */,
- 0966BDBC225DFFE60032C76C /* TripExtSpec.swift in Sources */,
- FC83E2F4221EEDF6008FE26D /* MockTripView.swift in Sources */,
- FC658F492216D0BB006C48F2 /* MockFlightDetailsScreenBuilder.swift in Sources */,
- 09E68326237972C000BFF5B9 /* KarhooAddressMapPresenterSpec.swift in Sources */,
- 0968F10021BE850F00745370 /* MockPollCall.swift in Sources */,
- FC435F4E2211D34100FB6BB5 /* KarhooTripMetaDataPresenterSpec.swift in Sources */,
- FC83E2FB221EEE82008FE26D /* MockDestinationEtaView.swift in Sources */,
- FC435F8A2211E30400FB6BB5 /* TripDetailsViewModelSpec.swift in Sources */,
- 09C169BA22819BBF00CF7E66 /* MockBookingMapStrategy.swift in Sources */,
- 0968F0FD21BE850F00745370 /* MockCall.swift in Sources */,
- 092F282122B25C7800AF8E0E /* MockPaymentNonceProvider.swift in Sources */,
- FC83E2EB221EED94008FE26D /* KarhooTripSummaryPresenterSpec.swift in Sources */,
- 09E35D7621E5118A003E840C /* DestinationSetStrategySpec.swift in Sources */,
- FC435F862211E26400FB6BB5 /* KarhooTripsProviderSpec.swift in Sources */,
- 09AAEF9821C4283200A04EEC /* MockValidator.swift in Sources */,
- 0949544B21FF5F0900D930C0 /* MockQuoteService.swift in Sources */,
- 09C169C02281B7C700CF7E66 /* BaseViewControllerSpec.swift in Sources */,
- FC658F482216D0BB006C48F2 /* MockDatePickerScreenBuilder.swift in Sources */,
- 0968F0FF21BE850F00745370 /* MockKarhooExecutable.swift in Sources */,
- FC658F5D2216D5AE006C48F2 /* MockCardRegistrationFlow.swift in Sources */,
- 40D741AD22C676C20003B09B /* KarhooPaymentPresenterSpec.swift in Sources */,
- 093D2E6E2224346C00D5F031 /* PopupDialogView.swift in Sources */,
- 0968D82822F8649900047FCF /* MockTripFeedbackView.swift in Sources */,
- 09D8B29622F444AA00569C55 /* MockFeedbackScreenBuilder.swift in Sources */,
- 09E35D5921E5117C003E840C /* MockQuoteListView.swift in Sources */,
- FC83E301221EF042008FE26D /* MockDriverTrackingService.swift in Sources */,
- 5C3C671124603B5700C736E9 /* MockURLOpener.swift in Sources */,
- 095D7456231825C7002253C0 /* MockTripRatingCache.swift in Sources */,
- FC435F672211D3DD00FB6BB5 /* MockRidesListView.swift in Sources */,
- FC83E2E9221EED8F008FE26D /* TripSummaryInfoViewModelSpec.swift in Sources */,
- FC435F5F2211D3D700FB6BB5 /* MockTripMetaDataView.swift in Sources */,
- 0949543F21FF5A8800D930C0 /* MockBookingView.swift in Sources */,
- FC435F512211D34100FB6BB5 /* RideDetailsStackButtonPresenterSpec.swift in Sources */,
- FC435F632211D3D700FB6BB5 /* MockTripMetaDataActions.swift in Sources */,
- 0968F0EC21BE7FF100745370 /* MockAddressSearchProviderDelegate.swift in Sources */,
- 09F86F86222D8553008C86DE /* MockBookingDetailsObserver.swift in Sources */,
- 5C9D991A242CED15004F1DBD /* MockAddressService.swift in Sources */,
- FC83E2D8221EEC9E008FE26D /* KarhooTripDetailsPresenterSpec.swift in Sources */,
- 4038DF44244617960014539B /* KarhooGuestBookingRequestPresenterSpec.swift in Sources */,
- FCAD1C0322087CA700C3AD1D /* PrebookConfirmationFormatterSpec.swift in Sources */,
- 097800A4226F1FE6008772E4 /* MockSideMenuHandler.swift in Sources */,
- 09ED7B1E21C2A81200CF6D73 /* MockRecentAddressProvider.swift in Sources */,
- 408AB683234F418B00B351B2 /* MockFareService.swift in Sources */,
- 0968F0ED21BE7FF100745370 /* MockAddressSearchProvider.swift in Sources */,
- FC435F612211D3D700FB6BB5 /* MockRideDetailsStackButtonActions.swift in Sources */,
- FC435F4C2211D34100FB6BB5 /* KarhooRidesPresenterSpec.swift in Sources */,
- 09E35D5721E5117C003E840C /* MockBookingAllocationSpinnerView.swift in Sources */,
- 095D7458231827B4002253C0 /* KarhooTripRatingCacheSpec.swift in Sources */,
- FC83E2FF221EEE94008FE26D /* MockOriginEtaView.swift in Sources */,
- FC435F8E2211E3FB00FB6BB5 /* MockTimeScheduler.swift in Sources */,
- FC83E2D7221EEC9E008FE26D /* TripScreenDetailsViewModelSpec.swift in Sources */,
- 40A2852122B253870020D78F /* QuoteCellViewModelSpec.swift in Sources */,
- 094B764422CE731200326CE1 /* TripStatesGetterSpec.swift in Sources */,
- 09B30F5D224CE8BF007768CF /* TripsListSorterSpec.swift in Sources */,
- FC83E30B221F1839008FE26D /* MockTripScreenBuilder.swift in Sources */,
- 0949545C2201C2BA00D930C0 /* MockDataFormatterType.swift in Sources */,
- 0949545E2201C3E900D930C0 /* MockUserLocationProvider.swift in Sources */,
- FC658F572216D4FC006C48F2 /* MockNavigationItem.swift in Sources */,
- 0968F10721BE885100745370 /* MockError.swift in Sources */,
- 09E35D7421E5118A003E840C /* KarhooQuoteCategoryBarPresenterSpec.swift in Sources */,
- 09B30F5C224CE8BF007768CF /* CancelRideBehaviourSpec.swift in Sources */,
- FC435F502211D34100FB6BB5 /* KarhooRidesListPresenterSpec.swift in Sources */,
- 09E35D7121E5118A003E840C /* BookingAllocationSpinnerPresenterSpec.swift in Sources */,
- FC435F6A2211D67200FB6BB5 /* MockCancelRideBehaviour.swift in Sources */,
- FC13585221D67971005054AE /* MockTripService.swift in Sources */,
- 0968F0EF21BE816F00745370 /* TestUtil.swift in Sources */,
- 09DCC7F521BE7CE000DF02B9 /* KarhooAddressPresenterSpec.swift in Sources */,
- FCAD1C0422087CA700C3AD1D /* PrebookConfirmationViewModelSpec.swift in Sources */,
- 09BDD19821C2CBD00074421C /* FlightDetailsPresenterSpec.swift in Sources */,
- FC83E2EF221EEDDE008FE26D /* MockTripSummaryInfoView.swift in Sources */,
- FC435F642211D3D700FB6BB5 /* MockRideCellStackButtonActions.swift in Sources */,
- FC83E2F5221EEDF6008FE26D /* MockMapViewActions.swift in Sources */,
- 090F08E121C934EB000C7E50 /* MockTimeSinceNowProvider.swift in Sources */,
- FC435F722211D7F500FB6BB5 /* MockFeedbackMailComposter.swift in Sources */,
- 094B764022CE729400326CE1 /* BraintreePaymentNonceProviderSpec.swift in Sources */,
+ 14707C8225D54C2100CAD083 /* MockViewController.swift in Sources */,
+ 14707C4525D54C2100CAD083 /* MockLocationService.swift in Sources */,
+ 14707C7925D54C2100CAD083 /* MockTripsSorter.swift in Sources */,
+ 14707C8D25D54C2200CAD083 /* MockOriginEtaView.swift in Sources */,
+ 14707CDC25D54C2200CAD083 /* MockPopupDialogScreenBuilder.swift in Sources */,
+ 14707C9E25D54C2200CAD083 /* MockTimeSinceNowProvider.swift in Sources */,
+ 14707C7525D54C2100CAD083 /* KarhooTripSummaryPresenterSpec.swift in Sources */,
+ 14707CB225D54C2200CAD083 /* KarhooBookingPresenterSpec.swift in Sources */,
+ 14707C5D25D54C2100CAD083 /* DatePickerPresenterSpec.swift in Sources */,
+ 14707C6325D54C2100CAD083 /* MockBookingRequestView.swift in Sources */,
+ 14707C8A25D54C2200CAD083 /* MockKarhooMapView.swift in Sources */,
+ 14707C8925D54C2200CAD083 /* MockDestinationEtaView.swift in Sources */,
+ 14707C4F25D54C2100CAD083 /* MockPrebookConfirmationScreenBuilder.swift in Sources */,
+ 14707CD625D54C2200CAD083 /* BraintreePaymentNonceProviderSpec.swift in Sources */,
+ 14707C9025D54C2200CAD083 /* KarhooBookingViewController+BuilderSpec.swift in Sources */,
+ 14707CB025D54C2200CAD083 /* KarhooPaymentPresenterSpec.swift in Sources */,
+ 14707CC725D54C2200CAD083 /* KarhooTripAllocationPresenterSpec.swift in Sources */,
+ 14707C7625D54C2100CAD083 /* MockUserDefaults.swift in Sources */,
+ 14707CC825D54C2200CAD083 /* MockError.swift in Sources */,
+ 14707C7C25D54C2100CAD083 /* KarhooBookingRequestPresenterSpec.swift in Sources */,
+ 14707CAD25D54C2200CAD083 /* MockRidesListView.swift in Sources */,
+ 14707C3C25D54C2100CAD083 /* BookingAllocationSpinnerPresenterSpec.swift in Sources */,
+ 14707C6A25D54C2100CAD083 /* MockBookingRequestScreenBuilder.swift in Sources */,
+ 14707CD725D54C2200CAD083 /* MockSideMenuHandler.swift in Sources */,
+ 14707C7F25D54C2100CAD083 /* BookingMapPresenterSpec.swift in Sources */,
+ 14707C8E25D54C2200CAD083 /* BaseViewControllerSpec.swift in Sources */,
+ 14707C9725D54C2200CAD083 /* MockThreeDSecureProvider.swift in Sources */,
+ 14707C9225D54C2200CAD083 /* KarhooAddressSearchBarPresenterSpec.swift in Sources */,
+ 14707CDB25D54C2200CAD083 /* KarhooRidesListPresenterSpec.swift in Sources */,
+ 14707C7025D54C2100CAD083 /* MockRidesListActions.swift in Sources */,
+ 14707CD025D54C2200CAD083 /* MockQuoteListView.swift in Sources */,
+ 14707C9C25D54C2200CAD083 /* MockQuoteService.swift in Sources */,
+ 14707C5425D54C2100CAD083 /* MockKarhooExecutable.swift in Sources */,
+ 14707CB825D54C2200CAD083 /* MockAddressView.swift in Sources */,
+ 14707CA525D54C2200CAD083 /* TripSummaryInfoViewModelSpec.swift in Sources */,
+ 14707CA825D54C2200CAD083 /* MockRideDetailsView.swift in Sources */,
+ 14707C5A25D54C2100CAD083 /* TripStatesGetterSpec.swift in Sources */,
+ 14707C9925D54C2200CAD083 /* MockFeedbackScreenBuilder.swift in Sources */,
+ 14707C4925D54C2100CAD083 /* MockTripScreenDetailsView.swift in Sources */,
+ 14707C6D25D54C2100CAD083 /* TripMapPresenterSpec.swift in Sources */,
+ 14707CAA25D54C2200CAD083 /* MockTripFeedbackView.swift in Sources */,
+ 14707C7D25D54C2100CAD083 /* MockQuoteSortView.swift in Sources */,
+ 14707CC325D54C2200CAD083 /* MockQuoteCategoryBarView.swift in Sources */,
+ 14707CB125D54C2200CAD083 /* TripMetaDataViewModelSpec.swift in Sources */,
+ 14707C7725D54C2100CAD083 /* BookingDetailsSpec.swift in Sources */,
+ 14707C6225D54C2100CAD083 /* KarhooPrebookConfirmationPresenterSpec.swift in Sources */,
+ 14707CCD25D54C2200CAD083 /* MockTripView.swift in Sources */,
+ 14707CBC25D54C2200CAD083 /* MockFlightDetailsScreenBuilder.swift in Sources */,
+ 14707C9F25D54C2200CAD083 /* MockRecentAddressProvider.swift in Sources */,
+ 14707C9825D54C2200CAD083 /* MockTripAllocationView.swift in Sources */,
+ 14707C4B25D54C2100CAD083 /* PopupDialogView.swift in Sources */,
+ 14707CD225D54C2200CAD083 /* MockQuoteSorter.swift in Sources */,
+ 14707CC125D54C2200CAD083 /* KarhooGuestBookingRequestPresenterSpec.swift in Sources */,
+ 14707C5625D54C2100CAD083 /* MockTimeScheduler.swift in Sources */,
+ 14707C6025D54C2100CAD083 /* BookingAddressBarPresenterSpec.swift in Sources */,
+ 14707CC925D54C2200CAD083 /* MockTripSummaryView.swift in Sources */,
+ 14707C5E25D54C2100CAD083 /* MockUserLocationProvider.swift in Sources */,
+ 14707CAB25D54C2200CAD083 /* KarhooCardRegistrationFlowSpec.swift in Sources */,
+ 14707C6B25D54C2100CAD083 /* MockTripService.swift in Sources */,
+ 14707C8025D54C2100CAD083 /* KarhooQuoteSorterSpec.swift in Sources */,
+ 14707C8625D54C2200CAD083 /* MockPaymentScreenBuilder.swift in Sources */,
+ 14707C8525D54C2200CAD083 /* KarhooRideDetailsPresenterSpec.swift in Sources */,
+ 14707C8C25D54C2200CAD083 /* KarhooQuoteCategoryBarPresenterSpec.swift in Sources */,
+ 14707CD525D54C2200CAD083 /* MockKarhooPollExecutor.swift in Sources */,
+ 14707C4125D54C2100CAD083 /* KarhooRecentAddressProviderSpec.swift in Sources */,
+ 14707CD325D54C2200CAD083 /* MockBookingAllocationSpinnerView.swift in Sources */,
+ 14707C4025D54C2100CAD083 /* TripExtSpec.swift in Sources */,
+ 14707CB425D54C2200CAD083 /* MockRidesScreenBuilder.swift in Sources */,
+ 14707C9D25D54C2200CAD083 /* MockMapViewActions.swift in Sources */,
+ 14707C8F25D54C2200CAD083 /* RideDetailsStackButtonPresenterSpec.swift in Sources */,
+ 14707C5C25D54C2100CAD083 /* KarhooAddressSearchProviderSpec.swift in Sources */,
+ 14707CDF25D54C2200CAD083 /* MockTripSummaryScreenBuilder.swift in Sources */,
+ 14707CD825D54C2200CAD083 /* TestUtil.swift in Sources */,
+ 14707CB925D54C2200CAD083 /* MockPrebookConfirmationView.swift in Sources */,
+ 14707C8325D54C2200CAD083 /* MockCancelRideBehaviour.swift in Sources */,
+ 14707C7E25D54C2100CAD083 /* KarhooDateFormatterSpec.swift in Sources */,
+ 14707CCB25D54C2200CAD083 /* MockAppStateNotifier.swift in Sources */,
+ 14707C7125D54C2100CAD083 /* MockDataFormatterType.swift in Sources */,
+ 14707C3A25D54C2100CAD083 /* DestinationSetStrategySpec.swift in Sources */,
+ 14707CA025D54C2200CAD083 /* KarhooTripRatingCacheSpec.swift in Sources */,
+ 14707C6525D54C2100CAD083 /* MockFareService.swift in Sources */,
+ 14707C7A25D54C2100CAD083 /* MockAddressScreenBuilder.swift in Sources */,
+ 14707C9A25D54C2200CAD083 /* EmptyBookingMapStrategySpec.swift in Sources */,
+ 14707CAE25D54C2200CAD083 /* MockTimeFetcher.swift in Sources */,
+ 14707C6825D54C2100CAD083 /* MockCall.swift in Sources */,
+ 14707C4625D54C2100CAD083 /* MockValidator.swift in Sources */,
+ 14707C3E25D54C2100CAD083 /* MockNavigationItem.swift in Sources */,
+ 14707CDD25D54C2200CAD083 /* FlightDetailsPresenterSpec.swift in Sources */,
+ 14707C5925D54C2100CAD083 /* QuoteCellViewModelSpec.swift in Sources */,
+ 14707C4C25D54C2100CAD083 /* MockPollCall.swift in Sources */,
+ 14707C8125D54C2100CAD083 /* KarhooBookingStatusSpec.swift in Sources */,
+ 14707CBB25D54C2200CAD083 /* MockAddressSearchProviderDelegate.swift in Sources */,
+ 14707C4825D54C2100CAD083 /* KarhooTripDetailsPresenterSpec.swift in Sources */,
+ 14707C6625D54C2100CAD083 /* MockAddressService.swift in Sources */,
+ 14707CD425D54C2200CAD083 /* BraintreeThreeDSecureProviderSpec.swift in Sources */,
+ 14707CC425D54C2200CAD083 /* QtaStringFormatterSpec.swift in Sources */,
+ 14707C6925D54C2100CAD083 /* ResizingSwitcherTests.swift in Sources */,
+ 14707CBF25D54C2200CAD083 /* UnitTestSetup.swift in Sources */,
+ 14707C8725D54C2200CAD083 /* MockObservable.swift in Sources */,
+ 14707CA725D54C2200CAD083 /* CancelRideBehaviourSpec.swift in Sources */,
+ 14707CCA25D54C2200CAD083 /* MockURLOpener.swift in Sources */,
+ 14707CBD25D54C2200CAD083 /* PrebookConfirmationViewModelSpec.swift in Sources */,
+ 14707C4A25D54C2100CAD083 /* MockTripSummaryInfoView.swift in Sources */,
+ 14707C5525D54C2100CAD083 /* KarhooOriginEtaPresenterSpec.swift in Sources */,
+ 14707C4E25D54C2100CAD083 /* MockAddressBarView.swift in Sources */,
+ 14707C4725D54C2100CAD083 /* KarhooRidesPresenterSpec.swift in Sources */,
+ 14707C9525D54C2200CAD083 /* MockTripsProvider.swift in Sources */,
+ 14707C7225D54C2100CAD083 /* MockTripRatingCache.swift in Sources */,
+ 14707CD925D54C2200CAD083 /* MockPhoneNumberCaller.swift in Sources */,
+ 14707C6425D54C2100CAD083 /* MockTripScreenBuilder.swift in Sources */,
+ 14707C3F25D54C2100CAD083 /* MockAddressSearchProvider.swift in Sources */,
+ 14707C5225D54C2100CAD083 /* TripScreenDetailsViewModelSpec.swift in Sources */,
+ 14707CCE25D54C2200CAD083 /* TripsListSorterSpec.swift in Sources */,
+ 14707C3925D54C2100CAD083 /* MockRidesView.swift in Sources */,
+ 14707CDA25D54C2200CAD083 /* MockRideDetailsScreenBuilder.swift in Sources */,
+ 14707C6F25D54C2100CAD083 /* TripDetailsViewModelSpec.swift in Sources */,
+ 14707CCC25D54C2200CAD083 /* MockBookingStatus.swift in Sources */,
+ 14707CBA25D54C2200CAD083 /* TestBroadcaster.swift in Sources */,
+ 14707CDE25D54C2200CAD083 /* PrebookConfirmationFormatterSpec.swift in Sources */,
+ 14707C9325D54C2200CAD083 /* MockPickupOnlyStrategyDelegate.swift in Sources */,
+ 14707CA925D54C2200CAD083 /* MockTripMetaDataView.swift in Sources */,
+ 14707C5325D54C2100CAD083 /* MockPickupOnlyStrategy.swift in Sources */,
+ 14707CCF25D54C2200CAD083 /* KarhooDestinationEtaPresenterSpec.swift in Sources */,
+ 14707C9125D54C2200CAD083 /* PrimitiveUtil.swift in Sources */,
+ 14707CBE25D54C2200CAD083 /* MockBookingDetailsObserver.swift in Sources */,
+ 14707C6C25D54C2100CAD083 /* KarhooAddressPresenterSpec.swift in Sources */,
+ 14707C8825D54C2200CAD083 /* MockDriverTrackingService.swift in Sources */,
+ 14707C4D25D54C2100CAD083 /* MockBaseViewController.swift in Sources */,
+ 14707CA425D54C2200CAD083 /* MockKarhooPaymentView.swift in Sources */,
+ 14707C7425D54C2100CAD083 /* MockBookingMapStrategy.swift in Sources */,
+ 14707CB725D54C2200CAD083 /* TripFeedbackPresenterSpec.swift in Sources */,
+ 14707C3B25D54C2100CAD083 /* UINavigationSpec.swift in Sources */,
+ 14707CB525D54C2200CAD083 /* MockRideDetailsStackButtonActions.swift in Sources */,
+ 14707C4225D54C2100CAD083 /* MockCardRegistrationFlow.swift in Sources */,
+ 14707C5125D54C2100CAD083 /* KarhooTripPresenterSpec.swift in Sources */,
+ 14707C6125D54C2100CAD083 /* MockAddressMapView.swift in Sources */,
+ 14707CC225D54C2200CAD083 /* CurrencyCodeConverterSpec.swift in Sources */,
+ 14707CAC25D54C2200CAD083 /* KarhooAddressMapPresenterSpec.swift in Sources */,
+ 14707C9625D54C2200CAD083 /* CLLocationCoordinate2D+Equatable.swift in Sources */,
+ 14707CA125D54C2200CAD083 /* AdyenCardRegistrationFlowSpec.swift in Sources */,
+ 14707C3D25D54C2100CAD083 /* MockAnalytics.swift in Sources */,
+ 14707C7B25D54C2100CAD083 /* MockPaymentNonceProvider.swift in Sources */,
+ 14707CC525D54C2200CAD083 /* PopupDialogPresenterSpec.swift in Sources */,
+ D88BC2862620C51C00F1EA60 /* TimeFormatterSpec.swift in Sources */,
+ 14707C7825D54C2100CAD083 /* MockAlertHandler.swift in Sources */,
+ 14707C5725D54C2100CAD083 /* MockDatePickerScreenBuilder.swift in Sources */,
+ 14707C8B25D54C2200CAD083 /* MockRideCellStackButtonActions.swift in Sources */,
FC435F7A2211DDB400FB6BB5 /* RideCellViewModelSpec.swift in Sources */,
- 09E35D5C21E5117C003E840C /* MockPickupOnlyStrategyDelegate.swift in Sources */,
- FC658F4B2216D0BB006C48F2 /* MockPrebookConfirmationScreenBuilder.swift in Sources */,
- 09F86F81222D60AC008C86DE /* TestBroadcaster.swift in Sources */,
- FC83E30D221F18F3008FE26D /* MockTripSummaryScreenBuilder.swift in Sources */,
- 09AAEF9621C4270900A04EEC /* FlightNumberValidatorSpec.swift in Sources */,
- FC4B92ED222E982400FE33B4 /* MockRideDetailsScreenBuilder.swift in Sources */,
- FC83E2DB221EECA9008FE26D /* KarhooOriginEtaPresenterSpec.swift in Sources */,
- FCAD1C0222087CA700C3AD1D /* KarhooPrebookConfirmationPresenterSpec.swift in Sources */,
- 5C209770244475660097BA3A /* MockKarhooPaymentView.swift in Sources */,
- 09BDD18821C2C20A0074421C /* MockUserDefaults.swift in Sources */,
- FC658F622216D9C1006C48F2 /* MockPaymentService.swift in Sources */,
- FC658F80221726C8006C48F2 /* UINavigationSpec.swift in Sources */,
- 09F12DC92232ABD30024D6E9 /* MockPopupDialogScreenBuilder.swift in Sources */,
- FC435F562211D38F00FB6BB5 /* MockRidesView.swift in Sources */,
- 09E35D7321E5118A003E840C /* KarhooQuoteListPresenterSpec.swift in Sources */,
- 0968D82522F82F8C00047FCF /* TripFeedbackPresenterSpec.swift in Sources */,
- FC83E2F0221EEDDE008FE26D /* MockTripSummaryView.swift in Sources */,
- FC83E2D3221EEC93008FE26D /* KarhooDestinationEtaPresenterSpec.swift in Sources */,
- FC658F712216F8B7006C48F2 /* MockPaymentScreenBuilder.swift in Sources */,
- FC435F4D2211D34100FB6BB5 /* RideCellStackButtonPresenterSpec.swift in Sources */,
- 09F86F84222D84A8008C86DE /* MockAppStateNotifier.swift in Sources */,
- 09F12DC722313E300024D6E9 /* MockBaseViewController.swift in Sources */,
- 407EC7F022CF93DC00F24CFC /* MockAnalyticsService.swift in Sources */,
- FCF7E68F2226A76B00EEBF98 /* KarhooBookingStatusSpec.swift in Sources */,
- 090F08E021C934EB000C7E50 /* MockDatePickerView.swift in Sources */,
- FC83E2DF221EECB0008FE26D /* TripMapPresenterSpec.swift in Sources */,
- FC435F6D2211D76100FB6BB5 /* MockTripsSorter.swift in Sources */,
- FC13584421D64E8C005054AE /* DefaultConstraintSwitcherTests.swift in Sources */,
- 09E35D7221E5118A003E840C /* KarhooTripAllocationPresenterSpec.swift in Sources */,
- FC13584721D64F66005054AE /* KarhooBookingRequestPresenterSpec.swift in Sources */,
- 097800AA226F4886008772E4 /* MockLocationService.swift in Sources */,
- FC658F552216D308006C48F2 /* KarhooCardRegistrationFlowSpec.swift in Sources */,
- 09E35D7521E5118A003E840C /* BookingMapPresenterSpec.swift in Sources */,
- 09E35D7921E5118A003E840C /* KarhooQuoteSorterSpec.swift in Sources */,
- 0949545521FF7CDB00D930C0 /* MockKarhooMapView.swift in Sources */,
- 09D293C722C651C20051C455 /* KarhooDateFormatterSpec.swift in Sources */,
- FC83E303221EF0B9008FE26D /* MockTimeFetcher.swift in Sources */,
- FC435F782211DC5600FB6BB5 /* TripMetaDataViewModelSpec.swift in Sources */,
- FC04659822148912004E76FE /* PopupDialogPresenterSpec.swift in Sources */,
- 09DCC7F621BE7CE000DF02B9 /* KarhooAddressSearchProviderSpec.swift in Sources */,
- FC83E2FD221EEE8A008FE26D /* MockTripScreenDetailsView.swift in Sources */,
- 0968F0EB21BE7FF100745370 /* MockAddressSearchBar.swift in Sources */,
- FC658F4D2216D0BB006C48F2 /* MockAddressScreenBuilder.swift in Sources */,
- FC83E2D9221EEC9E008FE26D /* KarhooTripPresenterSpec.swift in Sources */,
- 5C4397D022615F37006BC6C4 /* MockRidesScreenBuilder.swift in Sources */,
- FC13584321D64E8C005054AE /* ResizingSwitcherTests.swift in Sources */,
- 094B764622CE734D00326CE1 /* MockThreeDSecureProvider.swift in Sources */,
- 09E35D7721E5118A003E840C /* PickupOnlyStrategySpec.swift in Sources */,
- FC435F682211D3DD00FB6BB5 /* MockRidesListActions.swift in Sources */,
- 0968F10221BE850F00745370 /* MockObservable.swift in Sources */,
- 09E35D5A21E5117C003E840C /* MockQuoteCategoryBarView.swift in Sources */,
- 5C9D9918242CEBC4004F1DBD /* MockAnalytics.swift in Sources */,
- 09C169BC22819C1A00CF7E66 /* MockPickupOnlyStrategy.swift in Sources */,
- 0968F0FE21BE850F00745370 /* MockKarhooPollExecutor.swift in Sources */,
+ 14707CA325D54C2200CAD083 /* KarhooTripMetaDataPresenterSpec.swift in Sources */,
+ 14707CC625D54C2200CAD083 /* TripAddressBarPresenterSpec.swift in Sources */,
+ 14707C7325D54C2100CAD083 /* MockFlightDetailsView.swift in Sources */,
+ 14707C5825D54C2100CAD083 /* MockBookingView.swift in Sources */,
+ 14707C4325D54C2100CAD083 /* MockStackButtonView.swift in Sources */,
+ 14707CC025D54C2200CAD083 /* MockFeedbackMailComposter.swift in Sources */,
+ 14707CA625D54C2200CAD083 /* FlightNumberValidatorSpec.swift in Sources */,
+ 14707C9B25D54C2200CAD083 /* PickupOnlyStrategySpec.swift in Sources */,
+ 14707C5F25D54C2100CAD083 /* KarhooTripsProviderSpec.swift in Sources */,
+ A1A0312626171A4E00B01E1F /* KarhooQuoteListPresenterSpec.swift in Sources */,
+ 14707C8425D54C2200CAD083 /* MockDatePickerView.swift in Sources */,
+ 14707C6725D54C2100CAD083 /* MockPaymentService.swift in Sources */,
+ 14707C4425D54C2100CAD083 /* MockUserService.swift in Sources */,
+ 14707C5B25D54C2100CAD083 /* BookingStatusViewModelSpec.swift in Sources */,
+ 14707C6E25D54C2100CAD083 /* MockAddressSearchBar.swift in Sources */,
+ 14707CD125D54C2200CAD083 /* MockTripMetaDataActions.swift in Sources */,
+ 14707CB325D54C2200CAD083 /* MockAnalyticsService.swift in Sources */,
+ 14707C5025D54C2100CAD083 /* DefaultConstraintSwitcherTests.swift in Sources */,
+ 14707CAF25D54C2200CAD083 /* TripInfoUtilitySpec.swift in Sources */,
+ 14707C9425D54C2200CAD083 /* RideCellStackButtonPresenterSpec.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
- 5C2E26222420F8B500B1FF0C /* PBXTargetDependency */ = {
+ 14707ADE25D54B5B00CAD083 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
- target = 5C2E260C2420F8AC00B1FF0C /* Client */;
- targetProxy = 5C2E26212420F8B500B1FF0C /* PBXContainerItemProxy */;
+ target = FC8F471321539E24007841FB /* KarhooUISDK */;
+ targetProxy = 14707ADD25D54B5B00CAD083 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
@@ -3968,6 +3989,16 @@
name = LaunchScreen.storyboard;
sourceTree = "";
};
+ D8D8ED2D261F1FDA0061066D /* Localizable.stringsdict */ = {
+ isa = PBXVariantGroup;
+ children = (
+ D8D8ED2C261F1FDA0061066D /* en */,
+ D8D8ED31261F1FE00061066D /* fr */,
+ D8D8ED32261F1FE10061066D /* es */,
+ );
+ name = Localizable.stringsdict;
+ sourceTree = "";
+ };
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
@@ -3977,6 +4008,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = U7U4Q7YGDH;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Client/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
@@ -3999,6 +4031,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = U7U4Q7YGDH;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Client/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
@@ -4153,7 +4186,7 @@
CODE_SIGN_IDENTITY = "";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 3;
+ CURRENT_PROJECT_VERSION = 4;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = U7U4Q7YGDH;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -4172,7 +4205,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
- MARKETING_VERSION = 1.4.0;
+ MARKETING_VERSION = 1.5.0;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.karhoo.KarhooUISDK;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
@@ -4195,7 +4228,7 @@
CODE_SIGN_IDENTITY = "";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 3;
+ CURRENT_PROJECT_VERSION = 4;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = U7U4Q7YGDH;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -4214,7 +4247,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
- MARKETING_VERSION = 1.4.0;
+ MARKETING_VERSION = 1.5.0;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.karhoo.KarhooUISDK;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
@@ -4230,10 +4263,11 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 2372675E70509D3779F8061D /* Pods-KarhooUISDKTests.debug.xcconfig */;
buildSettings = {
- ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)";
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)";
BUILD_LIBRARY_FOR_DISTRIBUTION = NO;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = U7U4Q7YGDH;
+ EMBED_ASSET_PACKS_IN_PRODUCT_BUNDLE = "$(inherited)";
ENABLE_TESTING_SEARCH_PATHS = YES;
EXCLUDED_ARCHS = "x86_64-apple-ios-simulator";
INFOPLIST_FILE = KarhooUISDKTests/Info.plist;
diff --git a/KarhooUISDK.xcodeproj/xcshareddata/xcschemes/KarhooUISDKTests.xcscheme b/KarhooUISDK.xcodeproj/xcshareddata/xcschemes/KarhooUISDKTests.xcscheme
index 06cde22a7..f12c3e1c2 100644
--- a/KarhooUISDK.xcodeproj/xcshareddata/xcschemes/KarhooUISDKTests.xcscheme
+++ b/KarhooUISDK.xcodeproj/xcshareddata/xcschemes/KarhooUISDKTests.xcscheme
@@ -20,20 +20,6 @@
ReferencedContainer = "container:KarhooUISDK.xcodeproj">
-
-
-
-
-
-
-
-
diff --git a/KarhooUISDK/Builders/TripSummaryScreenBuilder.swift b/KarhooUISDK/Builders/TripSummaryScreenBuilder.swift
index e8e067d30..da6b537d3 100644
--- a/KarhooUISDK/Builders/TripSummaryScreenBuilder.swift
+++ b/KarhooUISDK/Builders/TripSummaryScreenBuilder.swift
@@ -11,5 +11,5 @@ import KarhooSDK
internal protocol TripSummaryScreenBuilder {
func buildTripSummaryScreen(trip: TripInfo,
- callback: @escaping ScreenResultCallback) -> Screen
+ callback: @escaping ScreenResultCallback) -> Screen
}
diff --git a/KarhooUISDK/Classes/CancelRideBehaviour.swift b/KarhooUISDK/Classes/CancelRideBehaviour.swift
index 7d7bdd804..3eace9c7f 100644
--- a/KarhooUISDK/Classes/CancelRideBehaviour.swift
+++ b/KarhooUISDK/Classes/CancelRideBehaviour.swift
@@ -12,61 +12,87 @@ import KarhooSDK
protocol CancelRideDelegate: AnyObject {
func showLoadingOverlay()
func hideLoadingOverlay()
- func sendCancelRideNetworkRequest(callback: @escaping CallbackClosure)
+ func handleSuccessfulCancellation()
}
protocol CancelRideBehaviourProtocol: AnyObject {
var delegate: CancelRideDelegate? { get set }
- func triggerCancelRide()
+ func cancelPressed()
}
final class CancelRideBehaviour: CancelRideBehaviourProtocol {
private(set) var trip: TripInfo
+ private let tripService: TripService
private let alertHandler: AlertHandlerProtocol
private let phoneNumberCaller: PhoneNumberCallerProtocol
public weak var delegate: CancelRideDelegate?
public init(trip: TripInfo,
+ tripService: TripService = Karhoo.getTripService(),
delegate: CancelRideDelegate? = nil,
alertHandler: AlertHandlerProtocol,
phoneNumberCaller: PhoneNumberCallerProtocol = PhoneNumberCaller()) {
self.trip = trip
+ self.tripService = tripService
self.delegate = delegate
self.alertHandler = alertHandler
self.phoneNumberCaller = phoneNumberCaller
}
-
- public func triggerCancelRide() {
- showConfirmCancelRideAlert()
+
+ public func cancelPressed() {
+ delegate?.showLoadingOverlay()
+
+ tripService.cancellationFee(identifier: getTripIdentifier())
+ .execute(callback: { [weak self] result in
+ self?.delegate?.hideLoadingOverlay()
+ guard let self = self else {
+ return
+ }
+
+ if result.isSuccess() {
+ self.showCancellationFeeAlert(cancellationFee: result.successValue() ?? CancellationFee())
+ } else {
+ self.showCancellationFailedAlert()
+ }
+ })
+ }
+
+ private func getTripIdentifier() -> String {
+ if Karhoo.configuration.authenticationMethod().isGuest() {
+ return trip.followCode
+ } else {
+ return trip.tripId
+ }
}
private func cancelBookingConfirmed() {
delegate?.showLoadingOverlay()
- delegate?.sendCancelRideNetworkRequest { [weak self] result in
- self?.delegate?.hideLoadingOverlay()
+ let tripCancellation = TripCancellation(tripId: getTripIdentifier(), cancelReason: .notNeededAnymore)
- if result.errorValue() != nil {
- self?.showCancellationFailedAlert()
- }
- }
+ tripService.cancel(tripCancellation: tripCancellation)
+ .execute(callback: { [weak self] result in
+ self?.delegate?.hideLoadingOverlay()
+ guard let self = self else {
+ return
+ }
+
+ if result.isSuccess() {
+ _ = self.alertHandler.show(title: UITexts.Bookings.cancellationSuccessAlertTitle,
+ message: UITexts.Bookings.cancellationSuccessAlertMessage,
+ actions: [AlertAction(title: UITexts.Generic.ok, style: .default, handler: { [weak self] _ in
+ self?.delegate?.handleSuccessfulCancellation()
+ })])
+ } else {
+ self.showCancellationFailedAlert()
+ }
+ })
}
private func callFleetPressed() {
phoneNumberCaller.call(number: trip.fleetInfo.phoneNumber)
}
- private func showConfirmCancelRideAlert() {
- _ = alertHandler.show(title: UITexts.Trip.tripCancelBookingConfirmationAlertTitle,
- message: UITexts.Trip.tripCancelBookingConfirmationAlertMessage,
- actions: [
- AlertAction(title: UITexts.Generic.no, style: .default, handler: nil),
- AlertAction(title: UITexts.Generic.yes, style: .default, handler: { [weak self] _ in
- self?.cancelBookingConfirmed()
- })
- ])
- }
-
private func showCancellationFailedAlert() {
let callFleet = UITexts.Trip.tripCancelBookingFailedAlertCallFleetButton
@@ -79,4 +105,29 @@ final class CancelRideBehaviour: CancelRideBehaviourProtocol {
})
])
}
+
+ func showCancellationFeeAlert(cancellationFee: CancellationFee) {
+ let message: String
+ if cancellationFee.fee.value > 0 {
+ let feeString = CurrencyCodeConverter.toPriceString(price: cancellationFee.fee.value, currencyCode: cancellationFee.fee.currency)
+ message = String(format: UITexts.Bookings.cancellationFeeCharge, feeString)
+ } else {
+ message = UITexts.Bookings.cancellationFeeContinue
+ }
+
+ _ = alertHandler.show(title: UITexts.Trip.tripCancelBookingConfirmationAlertTitle,
+ message: message,
+ actions: [
+ AlertAction(title: UITexts.Generic.no, style: .default, handler: { [weak self] _ in
+ self?.delegate?.hideLoadingOverlay()
+ }),
+ AlertAction(title: UITexts.Generic.yes, style: .default, handler: { [weak self] _ in
+ self?.cancelBookingConfirmed()
+ })
+ ])
+ }
+
+ private func hideOverlay() {
+
+ }
}
diff --git a/KarhooUISDK/Classes/Payment/AddCard/AdyenCardRegistrationFlow.swift b/KarhooUISDK/Classes/Payment/AddCard/AdyenCardRegistrationFlow.swift
index ad0e4ab65..328fab472 100644
--- a/KarhooUISDK/Classes/Payment/AddCard/AdyenCardRegistrationFlow.swift
+++ b/KarhooUISDK/Classes/Payment/AddCard/AdyenCardRegistrationFlow.swift
@@ -19,8 +19,10 @@ final class AdyenCardRegistrationFlow: CardRegistrationFlow {
private var tripId: String = ""
private var amount: Int = 0
private var currencyCode: String = ""
+ private var supplierPartnerId: String = ""
private let adyenResponseHandler: AdyenResponseHandler
private let paymentFactory: PaymentFactory
+ private let threeDSecureUtil: ThreeDSecureUtils
private var adyenAmout: AdyenAmount {
return AdyenAmount(currency: self.currencyCode, value: self.amount)
@@ -28,10 +30,12 @@ final class AdyenCardRegistrationFlow: CardRegistrationFlow {
init(paymentService: PaymentService = Karhoo.getPaymentService(),
adyenResponseHandler: AdyenResponseHandler = AdyenResponseHandler(),
- paymentFactory: PaymentFactory = PaymentFactory()) {
+ paymentFactory: PaymentFactory = PaymentFactory(),
+ threeDSecureUtil: ThreeDSecureUtils = AdyenThreeDSecureUtils()) {
self.paymentService = paymentService
self.adyenResponseHandler = adyenResponseHandler
self.paymentFactory = paymentFactory
+ self.threeDSecureUtil = threeDSecureUtil
}
func setBaseView(_ baseViewController: BaseViewController?) {
@@ -40,10 +44,12 @@ final class AdyenCardRegistrationFlow: CardRegistrationFlow {
func start(cardCurrency: String,
amount: Int,
+ supplierPartnerId: String,
showUpdateCardAlert: Bool,
callback: @escaping (OperationResult) -> Void) {
self.currencyCode = cardCurrency
self.amount = amount
+ self.supplierPartnerId = supplierPartnerId
self.callback = callback
baseViewController?.showLoadingOverlay(true)
@@ -85,6 +91,7 @@ final class AdyenCardRegistrationFlow: CardRegistrationFlow {
let configuration = DropInComponent.PaymentMethodsConfiguration()
configuration.card.publicKey = adyenKey
configuration.card.showsStorePaymentMethodField = showStorePaymentMethod
+ configuration.card.showsHolderNameField = true
guard let methods = paymentMethods else {
finish(result: .completed(value: .didFailWithError(nil)))
@@ -105,8 +112,19 @@ final class AdyenCardRegistrationFlow: CardRegistrationFlow {
}
private func finish(result: OperationResult) {
- adyenDropIn?.viewController.dismiss(animated: true, completion: nil)
- self.callback?(result)
+ if let presentedViewController = adyenDropIn?.viewController.presentedViewController {
+ presentedViewController.dismiss(animated: true) {
+ self.closeAdyenDropIn(result: result)
+ }
+ } else {
+ self.closeAdyenDropIn(result: result)
+ }
+ }
+
+ private func closeAdyenDropIn(result: OperationResult) {
+ adyenDropIn?.viewController.dismiss(animated: true) {
+ self.callback?(result)
+ }
}
}
@@ -133,9 +151,10 @@ extension AdyenCardRegistrationFlow: DropInComponentDelegate {
adyenPayload.amount = adyenAmout
adyenPayload.additionalData = ["allow3DS2": "true"]
adyenPayload.storePaymentMethod = storePaymentMethod
+ adyenPayload.returnUrl = self.threeDSecureUtil.current3DSReturnUrl
+ adyenPayload.browserInfo = AdyenBrowserInfo(userAgent: self.threeDSecureUtil.userAgent, acceptHeader: self.threeDSecureUtil.acceptHeader)
- let request = AdyenPaymentsRequest(paymentsPayload: adyenPayload,
- returnUrlSuffix: "")
+ let request = AdyenPaymentsRequest(paymentsPayload: adyenPayload, supplyPartnerID: self.supplierPartnerId)
paymentService.adyenPayments(request: request).execute { [weak self] result in
guard let self = self else { return }
@@ -213,10 +232,10 @@ extension AdyenCardRegistrationFlow: DropInComponentDelegate {
finish(result: .completed(value: .didAddPaymentMethod(method: method)))
case .requiresAction(let action):
adyenDropIn?.handle(action)
- case .refused(let reason):
- finish(result: .completed(value: .didFailWithError(ErrorModel(message: reason))))
+ case .refused(let reason, let code):
+ finish(result: .completed(value: .didFailWithError(ErrorModel(message: reason, code: code))))
case .handleResult(let code):
- finish(result: .completed(value: .didFailWithError(ErrorModel(message: code ?? UITexts.Errors.noDetailsAvailable))))
+ finish(result: .completed(value: .didFailWithError(ErrorModel(message: code ?? UITexts.Errors.noDetailsAvailable, code: code ?? UITexts.Errors.noDetailsAvailable))))
}
}
}
diff --git a/KarhooUISDK/Classes/Payment/AddCard/AdyenResponseHandler.swift b/KarhooUISDK/Classes/Payment/AddCard/AdyenResponseHandler.swift
index 3b4fab82b..73eb9216c 100644
--- a/KarhooUISDK/Classes/Payment/AddCard/AdyenResponseHandler.swift
+++ b/KarhooUISDK/Classes/Payment/AddCard/AdyenResponseHandler.swift
@@ -2,12 +2,12 @@
// AdyenResponseHandler.swift
// KarhooUISDK
//
+// This class transforms adyen backend data into an event to progress the users payment trip
+// https://docs.adyen.com/online-payments/ios/drop-in#step-4-additional-client-app
+//
// Copyright © 2020 Flit Technologies Ltd. All rights reserved.
//
-/*** this class transforms adyen backend data into an event to progress the users payment trip *
- * https://docs.adyen.com/checkout/ios/drop-in#step-4-additional-client-app
-*/
import Adyen
struct AdyenResponseHandler {
@@ -24,7 +24,7 @@ struct AdyenResponseHandler {
enum AdyenEvent {
case requiresAction(_ action: Action)
case paymentAuthorised(_ method: PaymentMethod)
- case refused(_ reason: String)
+ case refused(reason: String, code: String)
case handleResult(code: String?)
case failure
}
@@ -60,7 +60,7 @@ struct AdyenResponseHandler {
}
if result == refused {
- return .refused((data[refusalReason] as? String) ?? UITexts.Errors.noDetailsAvailable)
+ return .refused(reason: (data[refusalReason] as? String) ?? UITexts.Errors.noDetailsAvailable, code: (data[resultCode] as? String) ?? UITexts.Errors.noDetailsAvailable)
}
return .handleResult(code: result)
diff --git a/KarhooUISDK/Classes/Payment/AddCard/BraintreeCardRegistrationFlow.swift b/KarhooUISDK/Classes/Payment/AddCard/BraintreeCardRegistrationFlow.swift
index 169abdb84..4bc02e006 100644
--- a/KarhooUISDK/Classes/Payment/AddCard/BraintreeCardRegistrationFlow.swift
+++ b/KarhooUISDK/Classes/Payment/AddCard/BraintreeCardRegistrationFlow.swift
@@ -34,6 +34,7 @@ public final class BraintreeCardRegistrationFlow: CardRegistrationFlow {
public func start(cardCurrency: String,
amount: Int,
+ supplierPartnerId: String,
showUpdateCardAlert: Bool,
callback: @escaping (OperationResult) -> Void) {
self.callback = callback
@@ -68,7 +69,8 @@ public final class BraintreeCardRegistrationFlow: CardRegistrationFlow {
self?.buildBraintreeUI(paymentsToken: token)
} else {
self?.baseViewController?.showAlert(title: UITexts.Generic.error,
- message: UITexts.Errors.missingPaymentSDKToken)
+ message: UITexts.Errors.missingPaymentSDKToken,
+ error: result.errorValue())
self?.callback?(.completed(value: .didFailWithError(result.errorValue())))
}
}
@@ -87,7 +89,8 @@ public final class BraintreeCardRegistrationFlow: CardRegistrationFlow {
private func didBuildBraintreeUIScreen(_ result: ScreenResult) {
guard let item = result.completedValue() else {
baseViewController?.showAlert(title: UITexts.Generic.error,
- message: UITexts.Errors.missingPaymentSDKToken)
+ message: UITexts.Errors.missingPaymentSDKToken,
+ error: result.errorValue())
return
}
diff --git a/KarhooUISDK/Classes/Payment/AddCard/CardRegistrationFlow.swift b/KarhooUISDK/Classes/Payment/AddCard/CardRegistrationFlow.swift
index 0dba56470..05bb74286 100644
--- a/KarhooUISDK/Classes/Payment/AddCard/CardRegistrationFlow.swift
+++ b/KarhooUISDK/Classes/Payment/AddCard/CardRegistrationFlow.swift
@@ -13,6 +13,7 @@ public protocol CardRegistrationFlow {
func setBaseView(_ baseViewController: BaseViewController?)
func start(cardCurrency: String,
amount: Int,
+ supplierPartnerId: String,
showUpdateCardAlert: Bool,
callback: @escaping (OperationResult) -> Void)
}
diff --git a/KarhooUISDK/Classes/Payment/NonceProvider/AdyenPaymentNonceProvider.swift b/KarhooUISDK/Classes/Payment/NonceProvider/AdyenPaymentNonceProvider.swift
index da3fe3a5f..89ad34905 100644
--- a/KarhooUISDK/Classes/Payment/NonceProvider/AdyenPaymentNonceProvider.swift
+++ b/KarhooUISDK/Classes/Payment/NonceProvider/AdyenPaymentNonceProvider.swift
@@ -24,6 +24,7 @@ final class AdyenPaymentNonceProvider: PaymentNonceProvider {
result: @escaping (OperationResult) -> Void) {
cardFlow.start(cardCurrency: quote.price.currencyCode,
amount: quote.price.intHighPrice,
+ supplierPartnerId: quote.fleet.id,
showUpdateCardAlert: false,
callback: { [weak self] cardFlowResult in
switch cardFlowResult {
diff --git a/KarhooUISDK/Classes/Payment/NonceProvider/BraintreePaymentNonceProvider.swift b/KarhooUISDK/Classes/Payment/NonceProvider/BraintreePaymentNonceProvider.swift
index 1139c3de3..60faee963 100644
--- a/KarhooUISDK/Classes/Payment/NonceProvider/BraintreePaymentNonceProvider.swift
+++ b/KarhooUISDK/Classes/Payment/NonceProvider/BraintreePaymentNonceProvider.swift
@@ -48,7 +48,7 @@ final class BraintreePaymentNonceProvider: PaymentNonceProvider {
case .success(let sdkToken):
self?.sdkToken = sdkToken
case .failure:
- self?.callbackResult?(.completed(value: .failedToInitialisePaymentService))
+ self?.callbackResult?(.completed(value: .failedToInitialisePaymentService(error: result.errorValue())))
return
}
}
@@ -75,6 +75,7 @@ final class BraintreePaymentNonceProvider: PaymentNonceProvider {
private func triggerAddCardFlow(currencyCode: String) {
self.cardRegistrationFlow.start(cardCurrency: currencyCode,
amount: 0,
+ supplierPartnerId: "",
showUpdateCardAlert: true,
callback: { [weak self] result in
switch result {
@@ -99,7 +100,7 @@ final class BraintreePaymentNonceProvider: PaymentNonceProvider {
}
guard self.sdkToken != nil else {
- self.callbackResult?(.completed(value: .failedToInitialisePaymentService))
+ self.callbackResult?(.completed(value: .failedToInitialisePaymentService(error: nil)))
return
}
@@ -120,7 +121,7 @@ final class BraintreePaymentNonceProvider: PaymentNonceProvider {
func handleThreeDSecureCheck(_ result: ThreeDSecureCheckResult) {
switch result {
case .failedToInitialisePaymentService:
- self.callbackResult?(.completed(value: .failedToInitialisePaymentService))
+ self.callbackResult?(.completed(value: .failedToInitialisePaymentService(error: nil)))
case .threeDSecureAuthenticationFailed:
triggerAddCardFlow(currencyCode: quote.price.currencyCode)
case .success(let threeDSecureNonce):
diff --git a/KarhooUISDK/Classes/Payment/NonceProvider/PaymentNonceProvider.swift b/KarhooUISDK/Classes/Payment/NonceProvider/PaymentNonceProvider.swift
index f582e3922..8fd57e9f6 100644
--- a/KarhooUISDK/Classes/Payment/NonceProvider/PaymentNonceProvider.swift
+++ b/KarhooUISDK/Classes/Payment/NonceProvider/PaymentNonceProvider.swift
@@ -12,7 +12,7 @@ import KarhooSDK
enum PaymentNonceProviderResult {
case nonce(nonce: Nonce)
case threeDSecureCheckFailed
- case failedToInitialisePaymentService
+ case failedToInitialisePaymentService(error: KarhooError?)
case failedToAddCard(error: KarhooError?)
case cancelledByUser
}
diff --git a/KarhooUISDK/Classes/Payment/ThreeDSecure/AdyenThreeDSecureUtils.swift b/KarhooUISDK/Classes/Payment/ThreeDSecure/AdyenThreeDSecureUtils.swift
new file mode 100644
index 000000000..581d0cd8a
--- /dev/null
+++ b/KarhooUISDK/Classes/Payment/ThreeDSecure/AdyenThreeDSecureUtils.swift
@@ -0,0 +1,31 @@
+//
+// AdyenThreeDSecureUtils.swift
+// KarhooSDK
+//
+// Created by Mostafa Hadian on 04/03/2021.
+//
+
+import Foundation
+
+public struct AdyenThreeDSecureUtils: ThreeDSecureUtils {
+ public init() {}
+
+ public var userAgent: String {
+ return "KH/UISDK/iOS/\(KarhooUISDKVersionNumber)"
+ }
+
+ public var acceptHeader = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"
+
+ public var current3DSReturnUrl: String {
+ "\(current3DSReturnUrlScheme)://"
+ }
+
+ public var current3DSReturnUrlScheme: String {
+ guard let bundleId = Bundle.main.bundleIdentifier else {
+ return ""
+ }
+
+ return "\(bundleId).adyen"
+ }
+
+}
diff --git a/KarhooUISDK/Classes/Payment/ThreeDSecure/ThreeDSecureProvider.swift b/KarhooUISDK/Classes/Payment/ThreeDSecure/ThreeDSecureProvider.swift
index 9293c9b47..c5442a29a 100644
--- a/KarhooUISDK/Classes/Payment/ThreeDSecure/ThreeDSecureProvider.swift
+++ b/KarhooUISDK/Classes/Payment/ThreeDSecure/ThreeDSecureProvider.swift
@@ -16,6 +16,13 @@ enum ThreeDSecureCheckResult {
case failedToInitialisePaymentService
}
+protocol ThreeDSecureUtils {
+ var userAgent: String { get }
+ var acceptHeader: String { get }
+ var current3DSReturnUrl: String { get }
+ var current3DSReturnUrlScheme: String { get }
+}
+
protocol ThreeDSecureProvider {
func threeDSecureCheck(nonce: String,
diff --git a/KarhooUISDK/Common/AddressBarMVP/KarhooAddressBarView.swift b/KarhooUISDK/Common/AddressBarMVP/KarhooAddressBarView.swift
index db5be6d4d..8c2412ca5 100644
--- a/KarhooUISDK/Common/AddressBarMVP/KarhooAddressBarView.swift
+++ b/KarhooUISDK/Common/AddressBarMVP/KarhooAddressBarView.swift
@@ -31,6 +31,8 @@ public class KarhooAddressBarView: UIView, AddressBarView {
private var iconsConnectorLine: LineView!
private var swapButton: UIButton!
private var mainViewContainer: UIView!
+ private var destinationIconWidthConstraint: NSLayoutConstraint!
+ private var destinationIconHeightConstraint: NSLayoutConstraint!
private var presenter: AddressBarPresenter?
private let dropShadow: Bool
@@ -39,6 +41,7 @@ public class KarhooAddressBarView: UIView, AddressBarView {
private let verticalPadding: CGFloat
private let horizontalPadding: CGFloat
private let hidePickUpDestinationConnector: Bool
+ private let destinationIconSize: CGFloat = 18.0
init(cornerRadious: CGFloat = 5.0,
borderLine: Bool = false,
@@ -173,13 +176,14 @@ public class KarhooAddressBarView: UIView, AddressBarView {
destinationField.bottomAnchor.constraint(equalTo: mainViewContainer.bottomAnchor),
destinationField.leadingAnchor.constraint(equalTo: pickupField.leadingAnchor)].map { $0.isActive = true }
- let destinationIconSize: CGFloat = 18.0
- _ = [destinationIcon.widthAnchor.constraint(equalToConstant: destinationIconSize),
- destinationIcon.heightAnchor.constraint(equalToConstant: destinationIconSize),
- destinationIcon.centerXAnchor.constraint(equalTo: pickUpIcon.centerXAnchor),
+ destinationIconWidthConstraint = destinationIcon.widthAnchor.constraint(equalToConstant: destinationIconSize)
+ destinationIconHeightConstraint = destinationIcon.heightAnchor.constraint(equalToConstant: destinationIconSize)
+ destinationIconWidthConstraint.isActive = true
+ destinationIconHeightConstraint.isActive = true
+ _ = [destinationIcon.centerXAnchor.constraint(equalTo: pickUpIcon.centerXAnchor),
destinationIcon.centerYAnchor.constraint(equalTo: destinationField.centerYAnchor)]
.map { $0.isActive = true }
- destinationIcon.layer.cornerRadius = iconSize / 2
+ destinationIcon.layer.cornerRadius = destinationIconSize / 2
_ = [iconsConnectorLine.centerXAnchor.constraint(equalTo: pickUpIcon.centerXAnchor),
iconsConnectorLine.topAnchor.constraint(equalTo: pickUpIcon.bottomAnchor),
@@ -225,7 +229,7 @@ public class KarhooAddressBarView: UIView, AddressBarView {
destinationField.set(text: destinationDisplayAddress)
if destinationDisplayAddress != nil && destinationDisplayAddress != UITexts.AddressBar.addDestination {
destinationIcon.image = nil
- destinationIcon.transform = CGAffineTransform(scaleX: 0.5, y: 0.5)
+ toggleDestinationIconSize(big: false)
destinationIcon.backgroundColor = KarhooUI.colors.primary
}
}
@@ -233,11 +237,18 @@ public class KarhooAddressBarView: UIView, AddressBarView {
public func destinationSetState(disableClearButton: Bool = false) {
swapButton.isHidden = false
destinationIcon.image = nil
- destinationIcon.transform = CGAffineTransform(scaleX: 0.5, y: 0.5)
+ toggleDestinationIconSize(big: false)
destinationIcon.backgroundColor = KarhooUI.colors.primary
destinationField?.ordinaryTextColor()
destinationField?.disableClear(disableClearButton)
}
+
+ private func toggleDestinationIconSize(big: Bool) {
+ let ratio: CGFloat = big == true ? 1 : 2
+ destinationIconWidthConstraint.constant = destinationIconSize / ratio
+ destinationIconHeightConstraint.constant = destinationIconSize / ratio
+ destinationIcon.layer.cornerRadius = destinationIconSize / (ratio*2)
+ }
public func pickupNotSetState() {
swapButton?.isHidden = true
@@ -251,6 +262,7 @@ public class KarhooAddressBarView: UIView, AddressBarView {
public func destinationNotSetState() {
swapButton.isHidden = true
+ toggleDestinationIconSize(big: true)
destinationIcon.image = UIImage.uisdkImage("add_destination").withRenderingMode(.alwaysTemplate)
destinationIcon.backgroundColor = .clear
set(destinationDisplayAddress: UITexts.AddressBar.addDestination)
diff --git a/KarhooUISDK/Common/ConstraintSwitcher/ConstraintSwitcher.swift b/KarhooUISDK/Common/ConstraintSwitcher/ConstraintSwitcher.swift
index e7b3442a5..78d6ba60b 100755
--- a/KarhooUISDK/Common/ConstraintSwitcher/ConstraintSwitcher.swift
+++ b/KarhooUISDK/Common/ConstraintSwitcher/ConstraintSwitcher.swift
@@ -29,7 +29,7 @@ public typealias ConstraintSwitcherCompletedClosure = () -> Void
public final class DefaultConstraintSwitcher: ConstraintSwitcher {
- //Configuration
+ // Configuration
fileprivate var animationTime = 0.75
fileprivate var primaryConstraints: [NSLayoutConstraint]?
diff --git a/KarhooUISDK/Common/CurrencyCodeConverter.swift b/KarhooUISDK/Common/CurrencyCodeConverter.swift
index b3cad7805..15b47c320 100644
--- a/KarhooUISDK/Common/CurrencyCodeConverter.swift
+++ b/KarhooUISDK/Common/CurrencyCodeConverter.swift
@@ -11,25 +11,33 @@ import KarhooSDK
class CurrencyCodeConverter {
+ /// Format money amounts to String
+ ///
+ /// - Parameters:
+ /// - quote: The quote that has the price
class func toPriceString(quote: Quote) -> String {
- return toPriceString(price: quote.price.highPrice, currencyCode: quote.price.currencyCode)
+ return toPriceString(price: quote.price.intHighPrice, currencyCode: quote.price.currencyCode)
}
- class func toPriceString(price: Double, currencyCode: String) -> String {
- let symbol = findCurrencySymbolByCode(currencyCode: currencyCode)
-
- if symbol.isEmpty {
+ /// Format money amounts to String
+ ///
+ /// - Parameters:
+ /// - price: The price in cents or similar (Ex: for 1$ input 100)
+ /// - currencyCode: The currency code (Ex: GBP)
+ class func toPriceString(price: Int, currencyCode: String) -> String {
+ if let price = CurrencyCodeConverter.formatted(amount: price, currencyCode: currencyCode) {
+ return price
+ } else {
return UITexts.Bookings.priceCancelled
}
-
- return String(format: "%@%.2f", symbol, price)
}
+
class func quoteRangePrice(quote: Quote) -> String {
- let highPrice = toPriceString(price: quote.price.highPrice, currencyCode: quote.price.currencyCode)
- let lowPrice = toPriceString(price: quote.price.lowPrice, currencyCode: quote.price.currencyCode)
+ let highPrice = CurrencyCodeConverter.formatted(amount: quote.price.intHighPrice, currencyCode: quote.price.currencyCode)
+ let lowPrice = CurrencyCodeConverter.formatted(amount: quote.price.intLowPrice, currencyCode: quote.price.currencyCode)
- return "\(lowPrice) - \(highPrice)"
+ return "\(lowPrice ?? "") - \(highPrice ?? "")"
}
private static func findCurrencySymbolByCode(currencyCode: String) -> String {
@@ -54,4 +62,67 @@ class CurrencyCodeConverter {
}
return nil
}
+
+ /// Format money amounts.
+ ///
+ /// - Parameters:
+ /// - amount: The amount in minor units.
+ /// - currencyCode: The code of the currency.
+ private static func formatted(amount: Int, currencyCode: String) -> String? {
+ let decimalAmount = CurrencyCodeConverter.decimalAmount(amount, currencyCode: currencyCode)
+ return defaultFormatter(currencyCode: currencyCode).string(from: decimalAmount)
+ }
+
+ /// Converts an amount in major currency unit to an amount in minor currency units.
+ ///
+ /// - Parameters:
+ /// - majorUnitAmount: The amount in major currency units.
+ /// - currencyCode: The code of the currency.
+ private static func minorUnitAmount(from majorUnitAmount: Double, currencyCode: String) -> Int {
+ let maximumFractionDigits = CurrencyCodeConverter.maximumFractionDigits(for: currencyCode)
+ return Int(majorUnitAmount * pow(Double(10), Double(maximumFractionDigits)))
+ }
+
+ private static func decimalAmount(_ amount: Int, currencyCode: String) -> NSDecimalNumber {
+ let defaultFormatter = CurrencyCodeConverter.defaultFormatter(currencyCode: currencyCode)
+ let maximumFractionDigits = CurrencyCodeConverter.maximumFractionDigits(for: currencyCode)
+ defaultFormatter.maximumFractionDigits = maximumFractionDigits
+
+ let decimalMinorAmount = NSDecimalNumber(value: amount)
+ let convertedAmount = decimalMinorAmount.multiplying(byPowerOf10: Int16(-maximumFractionDigits)).doubleValue
+ return NSDecimalNumber(value: convertedAmount)
+ }
+
+ private static func defaultFormatter(currencyCode: String) -> NumberFormatter {
+ let formatter = NumberFormatter()
+ formatter.numberStyle = .currency
+ formatter.currencyCode = currencyCode
+ return formatter
+ }
+
+ private static func maximumFractionDigits(for currencyCode: String) -> Int {
+ // For some currency codes iOS returns the wrong number of minor units.
+ // The below overrides are obtained from https://en.wikipedia.org/wiki/ISO_4217
+
+ switch currencyCode {
+ case "ISK", "CLP", "COP":
+ // iOS returns 0, which is in accordance with ISO-4217, but conflicts with the Adyen backend.
+ return 2
+ case "MRO":
+ // iOS returns 0 instead.
+ return 1
+ case "RSD":
+ // iOS returns 0 instead.
+ return 2
+ case "CVE":
+ // iOS returns 2 instead.
+ return 0
+ case "GHC":
+ // iOS returns 2 instead.
+ return 0
+ default:
+ let formatter = defaultFormatter(currencyCode: currencyCode)
+ return formatter.maximumFractionDigits
+ }
+ }
}
diff --git a/KarhooUISDK/Common/DropDownButton.swift b/KarhooUISDK/Common/DropDownButton.swift
index 7486008bb..8ac4d9b64 100644
--- a/KarhooUISDK/Common/DropDownButton.swift
+++ b/KarhooUISDK/Common/DropDownButton.swift
@@ -44,7 +44,7 @@ final class DropDownButton: UIView {
buttonTitle = UILabel()
buttonTitle.accessibilityIdentifier = KHDropDownButtonID.buttonTitle
buttonTitle.translatesAutoresizingMaskIntoConstraints = false
- buttonTitle.font = UIFont.systemFont(ofSize: 8, weight: .semibold)
+ buttonTitle.font = UIFont.systemFont(ofSize: 10, weight: .semibold)
buttonTitle.textAlignment = .center
buttonTitle.textColor = .darkGray
buttonTitle.text = UITexts.Trip.tripRideOptions
diff --git a/KarhooUISDK/Common/KarhooTextField/KarhooTextField.swift b/KarhooUISDK/Common/KarhooTextField/KarhooTextField.swift
index 612fc0b3f..c1b3dc893 100644
--- a/KarhooUISDK/Common/KarhooTextField/KarhooTextField.swift
+++ b/KarhooUISDK/Common/KarhooTextField/KarhooTextField.swift
@@ -102,7 +102,7 @@ final class KarhooTextField: NibLoadableView, ValidatorListener {
guard let input = inputField else { return }
input.isSecureTextEntry = secureText
- //Workaround to refresh the position of the cursor as the secureTextEntry toggle misplaces it
+ // Workaround to refresh the position of the cursor as the secureTextEntry toggle misplaces it
let beginning = input.beginningOfDocument
let end = input.endOfDocument
input.selectedTextRange = input.textRange(from: beginning, to: beginning)
diff --git a/KarhooUISDK/Common/KarhooTextField/KarhooTextField.xib b/KarhooUISDK/Common/KarhooTextField/KarhooTextField.xib
index e262e1fa5..c92fcac4a 100644
--- a/KarhooUISDK/Common/KarhooTextField/KarhooTextField.xib
+++ b/KarhooUISDK/Common/KarhooTextField/KarhooTextField.xib
@@ -1,9 +1,9 @@
-
+
-
+
@@ -34,7 +34,9 @@