diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index ab384e3392..c068b95892 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -4,13 +4,13 @@ on: push: branches: - gps-release - paths-ignore: - - 'package.json' - - 'CHANGELOG.md' + paths-ignore: + - "package.json" + - "CHANGELOG.md" jobs: version_bump: - name: 'Bump version' + name: "Bump version" runs-on: ubuntu-latest steps: @@ -22,10 +22,10 @@ jobs: uses: TriPSs/conventional-changelog-action@v2 with: github-token: ${{ secrets.GITHUB_TOKEN }} - git-message: 'chore(release): {version}' - preset: 'angular' - tag-prefix: '' - output-file: 'CHANGELOG.md' + git-message: "chore(release): {version}" + preset: "angular" + tag-prefix: "" + output-file: "CHANGELOG.md" deploy_android_gps: # gps-release branch only @@ -118,21 +118,21 @@ jobs: KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} GITHUB_RUN_NUMBER: ${{ github.run_number }} with: - lane: 'release_gps' - subdirectory: 'android' - bundle-install-path: 'vendor/bundle' + lane: "release_gps" + subdirectory: "android" + bundle-install-path: "vendor/bundle" - name: Upload to Google Play beta track uses: maierj/fastlane-action@v1.4.0 with: - lane: 'play_store_gps' - subdirectory: 'android' - bundle-install-path: 'vendor/bundle' + lane: "play_store_gps" + subdirectory: "android" + bundle-install-path: "vendor/bundle" deploy_ios_gps: # gps-release branch only if: github.event_name == 'push' && github.ref == 'refs/heads/gps-release' - runs-on: macOS-latest + runs-on: macos-latest needs: version_bump steps: - uses: actions/checkout@master @@ -197,9 +197,9 @@ jobs: MATCH_GIT_BASIC_AUTH: ${{ secrets.MATCH_GIT_BASIC_AUTH }} SSH_AUTH_SOCK: /tmp/ssh_agent.sock with: - lane: 'release' - subdirectory: 'ios' - bundle-install-path: 'vendor/bundle' + lane: "release" + subdirectory: "ios" + bundle-install-path: "vendor/bundle" - name: Deploy to testflight uses: maierj/fastlane-action@v1.4.0 @@ -212,6 +212,6 @@ jobs: MATCH_GIT_BASIC_AUTH: ${{ secrets.MATCH_GIT_BASIC_AUTH }} SSH_AUTH_SOCK: /tmp/ssh_agent.sock with: - lane: 'deploy' - subdirectory: 'ios' - bundle-install-path: 'vendor/bundle' \ No newline at end of file + lane: "deploy" + subdirectory: "ios" + bundle-install-path: "vendor/bundle" diff --git a/.github/workflows/dev_setup.yml b/.github/workflows/dev_setup.yml index a6dc2df2ae..d32c10ec68 100644 --- a/.github/workflows/dev_setup.yml +++ b/.github/workflows/dev_setup.yml @@ -4,11 +4,11 @@ on: push: branches: [develop] paths: - - 'dev_setup.sh' + - "dev_setup.sh" pull_request: branches: [develop] paths: - - 'dev_setup.sh' + - "dev_setup.sh" jobs: test-ubuntu: @@ -32,7 +32,7 @@ jobs: run: npx react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/ --verbose test-mac: - runs-on: macOS-latest + runs-on: macos-latest steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/test-e2e.yml b/.github/workflows/test-e2e.yml index ea91c4c955..6c65e1b847 100644 --- a/.github/workflows/test-e2e.yml +++ b/.github/workflows/test-e2e.yml @@ -7,7 +7,7 @@ on: jobs: e2e-ios-build: - runs-on: macOS-latest + runs-on: macos-latest # while this job doesn't depend on the previous job explicitly # this will force them not to run in parallel. If they're run in parallel, # the node_modules caches will conflict @@ -66,10 +66,10 @@ jobs: - uses: actions/upload-artifact@v1 with: name: e2e-ios-bin - path: ios/build/Build/Products/Release-GPS-iphonesimulator/GPS.app + path: ios/build/Build/Products/Release-iphonesimulator/GPS.app e2e-iphone-se: - runs-on: macOS-latest + runs-on: macos-latest needs: e2e-ios-build timeout-minutes: 15 env: @@ -104,7 +104,7 @@ jobs: - uses: actions/download-artifact@master with: name: e2e-ios-bin - path: ios/build/Build/Products/Release-GPS-iphonesimulator/GPS.app + path: ios/build/Build/Products/Release-iphonesimulator/GPS.app - run: yarn test:e2e:iphone-se diff --git a/.github/workflows/test-ios.yml b/.github/workflows/test-ios.yml index 8fa05df1ac..764c80fd83 100644 --- a/.github/workflows/test-ios.yml +++ b/.github/workflows/test-ios.yml @@ -4,18 +4,15 @@ on: push: branches: - develop - paths: - - ios/** pull_request: branches: - develop paths: - - ios/** + - "ios/**" jobs: - unit-test-ios-gps: - runs-on: macOS-latest - needs: unit-test + unit-test-ios: + runs-on: macos-latest timeout-minutes: 25 steps: - uses: actions/checkout@master @@ -53,8 +50,8 @@ jobs: - run: pod install --repo-update working-directory: ./ios - - run: | + - run: | xcodebuild test -workspace COVIDSafePaths.xcworkspace \ -scheme GPS_Development \ -destination 'platform=iOS Simulator,name=iPhone 8' \ - working-directory: ./ios \ No newline at end of file + working-directory: ./ios diff --git a/.github/workflows/test-js.yml b/.github/workflows/test-js.yml index 2ace0dc823..98c2c928b8 100644 --- a/.github/workflows/test-js.yml +++ b/.github/workflows/test-js.yml @@ -4,16 +4,14 @@ on: push: branches: - develop - paths: - - app/** pull_request: branches: - develop paths: - - app/** + - 'app/**' jobs: - unit-test: + unit-test-js: runs-on: ubuntu-latest steps: diff --git a/README.md b/README.md index ae9f807de2..81e60651bb 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ src="./assets/Safe_Paths_Logo.png" /> - + **https://pathcheck.org/** @@ -19,9 +19,9 @@ Help us stop COVID-19. -COVID Safe Paths is a mobile app for digital contract tracing (DCT) sponsored by Path Check a nonprofit and developed by a growing global community of engineers, designers, and contributors. Safe Paths is based on research originally conducted at the MIT Media Lab. +COVID Safe Paths is a mobile app for digital contract tracing (DCT) sponsored by Path Check a nonprofit and developed by a growing global community of engineers, designers, and contributors. Safe Paths is based on research originally conducted at the MIT Media Lab. -## Privacy Preserving +## Privacy Preserving What’s truly special about Safe Paths is our strong commitment to preserving the privacy of individual users. We're building an application that can help contain outbreaks of COVID-19 without forcing users to sacrifice their personal privacy. For example, if a user chooses to use Safe Paths to maintain a record of their locations use a time stamped GPS log, which stores 14 days of data in 5 minute increments. The location log is stored on the user's phone. The logged data only leaves the device if the user chooses to send the information to an authorized public health authority (PHA) as part of the contact tracing process. @@ -29,14 +29,14 @@ What’s truly special about Safe Paths is our strong commitment to preserving t Safe Paths is designed to support a range of DCT and public health use cases. Currently the main build uses GPS for location tracking. Our roadmap includes adding support for other location and proximity technologies, symptom tracking, and communication with PHAs. -## Multiple Implementation Strategies +## Multiple Implementation Strategies The Safe Paths app is being developed to support a variety of build 'flavors' of the application around core health and tracing functionality. Reach out to our team to discuss creating a flavor for your use-case. ### Path Check Release of COVID Safe Paths -Safe Paths is available as an app published by Path Check in the [Apple App Store](https://apps.apple.com/us/app/covid-safe-paths/id1508266966) and the [Google Play App Store](https://play.google.com/store/apps/details?id=org.pathcheck.covidsafepaths). Any authorized pubic health authority can use Safe Paths. +Safe Paths is available as an app published by Path Check in the [Apple App Store](https://apps.apple.com/us/app/covid-safe-paths/id1508266966) and the [Google Play App Store](https://play.google.com/store/apps/details?id=org.pathcheck.covidsafepaths). Any authorized pubic health authority can use Safe Paths. -### Custom Builds +### Custom Builds We welcome public health authorities and other organizations implementing digital contact tracing strategies to create custom builds for their specific needs, incorporate Safe Paths features into their applications, or create downstream projects that stay linked to the Safe Paths project. If intending to fork the repository and develop off of it, be aware that this comes "at your own risk" for continued maintenance. @@ -44,7 +44,7 @@ We welcome public health authorities and other organizations implementing digita Safe Paths is designed to work with Safe Places, a tool for contact tracing teams to work with location data in the course of contact tracing interviews and to publish points of concern. Without having to sharing their own location history, a Safe Paths user can download the points of concern from their PHA to identify if they have had risk of an exposure. -## Broad Non-Developer Community +## Broad Non-Developer Community One of the important aspects of the Safe Paths open source project is that it's supported by a large community of volunteers in addition to the open source developer community. Spanning as diverse domains as product management, user research, cryptography, security, compliance, design, and videography more than 1,400 Path Check volunteers are working together to support Safe Paths and help drive adoption around the world. @@ -54,7 +54,7 @@ One of the important aspects of the Safe Paths open source project is that it's [Apps Gone Rogue: Maintaining Personal Privacy in an Epidemic](https://drive.google.com/file/d/1nwOR4drE3YdkCkyy_HBd6giQPPhLEkRc/view?usp=sharing) - The original white paper. -[COVID Safe Paths Slack](covidsafepaths.slack.com) - Where the community lives. +[COVID Safe Paths Slack](covidsafepaths.slack.com) - Where the community lives. [Path-Check/gaen-mobile](https://github.com/Path-Check/gaen-mobile) - PathCheck's GAEN based contract tracing solution. @@ -117,7 +117,7 @@ Populate the following 2 `.env` files with the relevant urls for your GAEN serve #### Android (Windows, Linux, macOS) ``` -yarn run-android-gps ## for the location enabled app +yarn run-android ## for the location enabled app ``` Device storage can be cleared by long-pressing on the app icon in the simulator, clicking "App info", then "Storage", and lastly, "Clear Storage". @@ -133,7 +133,7 @@ yarn install:pod ## only needs to be ran once Then, run the application: ``` -yarn run-ios-gps ## for the location enabled app +yarn run-ios ## for the location enabled app ``` Device storage can be cleared by clicking "Hardware" on the system toolbar, and then "Erase all content and settings". diff --git a/ios/AppDelegate.m b/ios/AppDelegate.m deleted file mode 100644 index 094b44f829..0000000000 --- a/ios/AppDelegate.m +++ /dev/null @@ -1,117 +0,0 @@ -// -// AppDelegate.m -// BT -// -// Created by John Schoeman on 5/28/20. -// Copyright © 2020 Path Check Inc. All rights reserved. -// - -#import -#import "AppDelegate.h" - -#import -#import -#import -#import -#import -#import -#import - -@implementation AppDelegate -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; - RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge - moduleName:@"COVIDSafePaths" - initialProperties:nil]; - - rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; - - self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; - - UIViewController *rootViewController = [UIViewController new]; - rootViewController.view = rootView; - - self.window.rootViewController = rootViewController; - [self.window makeKeyAndVisible]; - - UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; - center.delegate = self; - - // Register background task - [[ExposureManager shared] registerBackgroundTask]; - - // Schedule background task - [[ExposureManager shared] scheduleBackgroundTaskIfNeeded]; - - [RNSplashScreen showSplash:@"LaunchScreen" inRootView:rootView]; - return YES; -} - -- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge -{ -#if DEBUG - return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; -#else - return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; -#endif -} - -// Required to register for notifications -- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings -{ - [RNCPushNotificationIOS didRegisterUserNotificationSettings:notificationSettings]; -} -// Required for the register event. -- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken -{ - [RNCPushNotificationIOS didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; -} -// Required for the notification event. You must call the completion handler after handling the remote notification. -- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo -fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler -{ - [RNCPushNotificationIOS didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; -} - -// Required for the registrationError event. -- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error -{ - [RNCPushNotificationIOS didFailToRegisterForRemoteNotificationsWithError:error]; -} -// Required for the localNotification event. -- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification -{ - [RNCPushNotificationIOS didReceiveLocalNotification:notification]; -} - --(BOOL) isFirstTimeClosing { - //Show local notifiation at first time only. - if(![[NSUserDefaults standardUserDefaults] boolForKey:@"cxfed_NotificationAtFirstTimeOnly"]) { - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"cxfed_NotificationAtFirstTimeOnly"]; - [[NSUserDefaults standardUserDefaults] synchronize]; - return TRUE; - } - return FALSE; -} - -- (BOOL)hasNotificationPermissions { - //Checking local notification permission or not. - UIUserNotificationSettings *grantedSettings = [[UIApplication sharedApplication] currentUserNotificationSettings]; - if (grantedSettings.types != UIUserNotificationTypeNone){ - return TRUE; - } - return FALSE; -} - -- (void)applicationWillTerminate:(UIApplication *)application { - if([self isFirstTimeClosing] && [self hasNotificationPermissions]) { - } -} - --(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler -{ - completionHandler(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge); -} - -@end diff --git a/ios/BT/API/APIClient.swift b/ios/BT/API/APIClient.swift deleted file mode 100644 index f612a50589..0000000000 --- a/ios/BT/API/APIClient.swift +++ /dev/null @@ -1,241 +0,0 @@ -import Alamofire - -enum RequestType { - case postKeys, - downloadKeys -} - -final class APIClient { - - let postKeysUrl: URL - let downloadBaseUrl: URL - static let shared = APIClient( - postKeysUrl: URL(string: ReactNativeConfig.env(for: .postKeysUrl))!, - downloadBaseUrl: URL(string: ReactNativeConfig.env(for: .downloadBaseUrl))! - ) - - private let sessionManager: SessionManager - - init(postKeysUrl: URL, downloadBaseUrl: URL) { - self.postKeysUrl = postKeysUrl - self.downloadBaseUrl = downloadBaseUrl - - let configuration = URLSessionConfiguration.default - - let headers = SessionManager.defaultHTTPHeaders - - configuration.httpAdditionalHeaders = headers - configuration.requestCachePolicy = .reloadIgnoringLocalAndRemoteCacheData - - sessionManager = SessionManager(configuration: configuration) - } - - func request(_ request: T, requestType: RequestType, completion: @escaping GenericCompletion) where T.ResponseType == Void { - dataRequest(for: request, requestType: requestType) - .validate(validate) - .response { response in - if let error = response.error { - completion(.failure(error)) - } - else { - completion(GenericSuccess) - } - } - } - - func downloadRequest(_ request: T, requestType: RequestType, completion: @escaping (Result) -> Void) { - downloadRequest(for: request).responseData { response in - guard let data = response.result.value else { - completion(.failure(GenericError.unknown)) - return - } - if let downloadedPackage = DownloadedPackage(compressedData: data) { - completion(.success(downloadedPackage)) - } else { - completion(.failure(GenericError.unknown)) - } - } - } - - func request(_ request: T, requestType: RequestType, completion: @escaping (Result) -> Void) where T.ResponseType == JSONObject { - dataRequest(for: request, requestType: requestType) - .validate(validate) - .responseJSON { response in - switch response.result { - case .success(let value): - completion(.success(value as? JSONObject ?? JSONObject())) - case .failure(let error): - completion(.failure(error)) - } - } - } - - func request(_ request: T, requestType: RequestType, completion: @escaping (Result) -> Void) where T.ResponseType: Decodable { - requestDecodable(request, requestType: requestType, completion: completion) - } - - func requestList(_ request: T, requestType: RequestType, completion: @escaping (Result<[T.ResponseType.Element]>) -> Void) where T.ResponseType: Collection, T.ResponseType.Element: Decodable { - requestDecodables(request, requestType: requestType, completion: completion) - } - - func requestString(_ request: T, requestType: RequestType, completion: @escaping (Result) -> Void) where T.ResponseType == String { - dataRequest(for: request, requestType: requestType) - .validate(validate) - .responseData { response in - switch response.result { - case .success(let data): - completion(.success(String(decoding: data, as: UTF8.self))) - case .failure(let error): - completion(.failure(error)) - } - } - } - - func cancelAllRequests() { - sessionManager.session.getAllTasks { tasks in - tasks.forEach { $0.cancel() } - } - } - - static var documentsDirectory: URL? { - let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask) - - return paths.first - } - -} - -// MARK: - Private - -private extension APIClient { - - enum Key { - static let error = "error" - static let errorMessage = "error_description" - } - - func downloadRequest(for request: T) -> DataRequest { - let r = sessionManager.request(downloadBaseUrl.appendingPathComponent(request.path)) - debugPrint(r) - return r - } - - func dataRequest(for request: T, requestType: RequestType) -> DataRequest { - var baseUrl: URL! - switch requestType { - case .postKeys: - baseUrl = postKeysUrl - case .downloadKeys: - baseUrl = downloadBaseUrl - } - let r = sessionManager.request( - baseUrl.appendingPathComponent(request.path, isDirectory: false), - method: request.method, - parameters: request.parameters, - encoding: request.encoding - ) - debugPrint(r) - return r - } - - func validate(request: URLRequest?, response: HTTPURLResponse, data: Data?) -> Request.ValidationResult { - if (200...399).contains(response.statusCode) { - return .success - } - - // Attempt to deserialize structured error, if it exists - if let data = data, let json = (try? JSONSerialization.jsonObject(with: data, options: [])) as? JSONObject, let errorJson = json[Key.error] as? JSONObject { - do { - return .failure(try StructuredError(json: errorJson)) - } catch { - return .failure(error) - } - } - - // Fallback on a simple status code error - return .failure(GenericError(statusCode: response.statusCode)) - } - - func requestDecodable(_ request: T, requestType: RequestType, completion: @escaping (Result) -> Void) where T.ResponseType: Decodable { - dataRequest(for: request, requestType: requestType) - .validate(validate) - .responseData { response in - switch response.result { - case .success(let data): - do { - let decoder = JSONDecoder() - decoder.dateDecodingStrategy = .formatted(DateFormatter.iso8601Full) - completion(.success(try decoder.decode(T.ResponseType.self, from: data))) - } catch { - completion(.failure(error)) - } - case .failure(let error): - completion(.failure(error)) - } - } - } - - func requestDecodables(_ request: T, requestType: RequestType, completion: @escaping (Result<[T.ResponseType.Element]>) -> Void) where T.ResponseType: Collection, T.ResponseType.Element: Decodable { - requestDecodable(CollectionAPIRequest(request: request), requestType: requestType) { result in - switch result { - case .success(let value): - completion(.success(value.results)) - case .failure(let error): - completion(.failure(error)) - } - } - } - -} - -private struct CollectionAPIRequest: APIRequest where T.ResponseType: Collection, T.ResponseType.Element: Decodable { - - typealias ResponseType = ResultsContainer - - let request: T - - var method: HTTPMethod { - return request.method - } - - var path: String { - return request.path - } - - var parameters: Parameters? { - return request.parameters - } - -} - -private struct ResultsContainer: Decodable { - var results: [T] -} - -private extension GenericError { - - init(statusCode: Int) { - switch statusCode { - case 400: - self = .badRequest - case 401: - self = .unauthorized - case 404: - self = .notFound - default: - self = .unknown - } - } - -} - -private extension DateFormatter { - static let iso8601Full: DateFormatter = { - let formatter = DateFormatter() - formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ" - formatter.calendar = Calendar(identifier: .iso8601) - formatter.timeZone = TimeZone(secondsFromGMT: 0) - formatter.locale = Locale(identifier: "en_US_POSIX") - return formatter - }() -} diff --git a/ios/BT/API/APIRequest.swift b/ios/BT/API/APIRequest.swift deleted file mode 100644 index d2ebda9ec9..0000000000 --- a/ios/BT/API/APIRequest.swift +++ /dev/null @@ -1,33 +0,0 @@ -import Alamofire - -protocol APIRequest { - - associatedtype ResponseType - - var method: HTTPMethod { get } - var path: String { get } - var parameters: Parameters? { get } - var encoding: ParameterEncoding { get } - -} - -extension APIRequest { - - var method: HTTPMethod { - return .get - } - - var parameters: Parameters? { - return nil - } - - var encoding: ParameterEncoding { - switch method { - case .get, .connect, .options, .head, .trace: - return URLEncoding.default - case .post, .patch, .put, .delete: - return JSONEncoding.default - } - } - -} diff --git a/ios/BT/API/Helpers/DownloadPackage+Helpers.swift b/ios/BT/API/Helpers/DownloadPackage+Helpers.swift deleted file mode 100644 index d099bf7750..0000000000 --- a/ios/BT/API/Helpers/DownloadPackage+Helpers.swift +++ /dev/null @@ -1,17 +0,0 @@ -import Foundation - -extension DownloadedPackage { - - func writeSignatureEntry(toDirectory directory: URL, filename: String) throws -> URL { - let url = directory.appendingPathComponent(filename).appendingPathExtension("sig") - try signature.write(to: url) - return url - } - - func writeKeysEntry(toDirectory directory: URL, filename: String) throws -> URL { - let url = directory.appendingPathComponent(filename).appendingPathExtension("bin") - try bin.write(to: url) - return url - } - -} diff --git a/ios/BT/API/JSON.swift b/ios/BT/API/JSON.swift deleted file mode 100644 index a806f12540..0000000000 --- a/ios/BT/API/JSON.swift +++ /dev/null @@ -1,41 +0,0 @@ -import Foundation - -typealias JSONObject = [String: Any] -typealias JSONObjectArray = [JSONObject] - -protocol JSONSerializable { - - func toJson() throws -> JSONObject - -} - -protocol JSONDeserializable { - - init(json: JSONObject) throws - -} - -extension Encodable { - - func toJson() throws -> Any { - let encoder = JSONEncoder() - encoder.dateEncodingStrategy = .iso8601 - encoder.dataEncodingStrategy = .base64 - - return try JSONSerialization.jsonObject(with: encoder.encode(self), options: []) - } - -} - -extension Decodable { - - init(json: JSONObject) throws { - let data = try JSONSerialization.data(withJSONObject: json, options: []) - - let decoder = JSONDecoder() - decoder.dateDecodingStrategy = .iso8601 - - self = try decoder.decode(Self.self, from: data) - } - -} diff --git a/ios/BT/API/Model/DownloadedPackage.swift b/ios/BT/API/Model/DownloadedPackage.swift deleted file mode 100644 index b24086690e..0000000000 --- a/ios/BT/API/Model/DownloadedPackage.swift +++ /dev/null @@ -1,56 +0,0 @@ -import Foundation -import ZIPFoundation -import CryptoKit - -struct DownloadedPackage { - - init(keysBin: Data, signature: Data) { - bin = keysBin - self.signature = signature - } - - init?(compressedData: Data) { - guard let archive = Archive(data: compressedData, accessMode: .read) else { - return nil - } - do { - self = try archive.extractKeyPackage() - } catch { - return nil - } - } - - let bin: Data - let signature: Data - -} - -private extension Archive { - typealias KeyPackage = (bin: Data, sig: Data) - enum KeyPackageError: Error { - case binNotFound - case sigNotFound - case signatureCheckFailed - } - - func extractData(from entry: Entry) throws -> Data { - var data = Data() - try _ = extract(entry) { slice in - data.append(slice) - } - return data - } - - func extractKeyPackage() throws -> DownloadedPackage { - guard let binEntry = self["export.bin"] else { - throw KeyPackageError.binNotFound - } - guard let sigEntry = self["export.sig"] else { - throw KeyPackageError.sigNotFound - } - return DownloadedPackage( - keysBin: try extractData(from: binEntry), - signature: try extractData(from: sigEntry) - ) - } -} diff --git a/ios/BT/API/Model/Exposure.swift b/ios/BT/API/Model/Exposure.swift deleted file mode 100644 index f79346637d..0000000000 --- a/ios/BT/API/Model/Exposure.swift +++ /dev/null @@ -1,44 +0,0 @@ -import ExposureNotification -import Foundation -import RealmSwift - -@objcMembers -class Exposure: Object, Codable { - @objc dynamic var id: String = .default - @objc dynamic var date: Int = 0 - @objc dynamic var duration: Double = 0.0 - @objc dynamic var totalRiskScore: Int = 0 - @objc dynamic var transmissionRiskLevel: Int = 0 - - init(id: String, - date: Int, - duration: TimeInterval, - totalRiskScore: ENRiskScore, - transmissionRiskLevel: ENRiskScore) { - self.id = id - self.date = date - self.duration = duration - self.totalRiskScore = Int(totalRiskScore) - self.transmissionRiskLevel = Int(transmissionRiskLevel) - super.init() - } - - required init() { - super.init() - } - - override class func primaryKey() -> String? { - "id" - } - - var asDictionary : [String: Any] { - return [ - "id": id, - "date": date, - "duration": duration, - "totalRiskScore": totalRiskScore, - "transmissionRiskLevel": transmissionRiskLevel - ] - } - -} diff --git a/ios/BT/API/Model/ExposureConfiguration.swift b/ios/BT/API/Model/ExposureConfiguration.swift deleted file mode 100644 index 3571454fa9..0000000000 --- a/ios/BT/API/Model/ExposureConfiguration.swift +++ /dev/null @@ -1,36 +0,0 @@ -import Foundation -import ExposureNotification - -struct ExposureConfiguration: Codable { - - let minimumRiskScore: ENRiskScore - let attenuationDurationThresholds: [Int] - let attenuationLevelValues: [ENRiskLevelValue] - let daysSinceLastExposureLevelValues: [ENRiskLevelValue] - let durationLevelValues: [ENRiskLevelValue] - let transmissionRiskLevelValues: [ENRiskLevelValue] - -} - -extension ExposureConfiguration { - - static var placeholder: ExposureConfiguration = { - ExposureConfiguration(minimumRiskScore: 0, - attenuationDurationThresholds: [50, 70], - attenuationLevelValues: [1, 2, 3, 4, 5, 6, 7, 8], - daysSinceLastExposureLevelValues: [1, 2, 3, 4, 5, 6, 7, 8], - durationLevelValues: [1, 2, 3, 4, 5, 6, 7, 8], - transmissionRiskLevelValues: [1, 2, 3, 4, 5, 6, 7, 8]) - }() - - var asENExposureConfiguration: ENExposureConfiguration { - let config = ENExposureConfiguration() - config.metadata = ["attenuationDurationThresholds": attenuationDurationThresholds] - config.attenuationLevelValues = attenuationLevelValues.map { NSNumber(value: $0) } - config.daysSinceLastExposureLevelValues = daysSinceLastExposureLevelValues.map { NSNumber(value: $0) } - config.durationLevelValues = durationLevelValues.map { NSNumber(value: $0) } - config.transmissionRiskLevelValues = transmissionRiskLevelValues.map { NSNumber(value: $0) } - return config - } - -} diff --git a/ios/BT/API/Model/ExposureKey.swift b/ios/BT/API/Model/ExposureKey.swift deleted file mode 100644 index b80fa6514c..0000000000 --- a/ios/BT/API/Model/ExposureKey.swift +++ /dev/null @@ -1,11 +0,0 @@ -import Foundation -import ExposureNotification - -struct ExposureKey: Codable { - - let key: Data - let rollingPeriod: ENIntervalNumber - let rollingStartNumber: ENIntervalNumber - let transmissionRisk: ENRiskLevel - -} diff --git a/ios/BT/API/Model/Region.swift b/ios/BT/API/Model/Region.swift deleted file mode 100644 index c8971310a7..0000000000 --- a/ios/BT/API/Model/Region.swift +++ /dev/null @@ -1,3 +0,0 @@ -enum Region: String { - case US -} diff --git a/ios/BT/API/Model/UserState.swift b/ios/BT/API/Model/UserState.swift deleted file mode 100644 index 435137b3ae..0000000000 --- a/ios/BT/API/Model/UserState.swift +++ /dev/null @@ -1,19 +0,0 @@ -import Foundation -import RealmSwift - -@objcMembers -class UserState: Object { - static let id = 0 - - @objc dynamic var id: Int = UserState.id - @objc dynamic var dateLastPerformedFileCapacityReset: Date? = nil - @objc dynamic var remainingDailyFileProcessingCapacity: Int = Constants.dailyFileProcessingCapacity - @objc dynamic var exposureDetectionErrorLocalizedDescription: String = .default - @objc dynamic var urlOfMostRecentlyDetectedKeyFile: String = .default - let exposures: List = List() - - override class func primaryKey() -> String? { - "id" - } - -} diff --git a/ios/BT/API/Requests/DiagnosisKeyRequests.swift b/ios/BT/API/Requests/DiagnosisKeyRequests.swift deleted file mode 100644 index c92fd9af89..0000000000 --- a/ios/BT/API/Requests/DiagnosisKeyRequests.swift +++ /dev/null @@ -1,67 +0,0 @@ -import Alamofire -import ExposureNotification - -enum DiagnosisKeyRequest: APIRequest { - - typealias ResponseType = ExposureKey - - case get(URL), - delete(URL) - - var method: HTTPMethod { - switch self { - case .get: - return .get - case .delete: - return .delete - } - } - - var path: String { - return "" - } - - var parameters: Parameters? { - return nil - } - -} - -enum DiagnosisKeyListRequest: APIRequest { - - typealias ResponseType = Void - - case post([ExposureKey], [Region], String, String) - - var method: HTTPMethod { - switch self { - case .post: - return .post - } - } - - var path: String { - switch self { - case .post: - return "" - } - } - - var parameters: Parameters? { - switch self { - case .post(let diagnosisKeys, - let regions, - let certificate, - let hmacKey): - let keys = diagnosisKeys.map { try? $0.toJson() as? JSONObject } - return [ - "temporaryExposureKeys": keys, - "regions": regions.map { $0.rawValue }, - "appPackageName": Bundle.main.bundleIdentifier!, - "verificationPayload": certificate, - "hmackey": hmacKey, - "padding": String(decoding: Data(), as: UTF8.self) - ] - } - } -} diff --git a/ios/BT/API/Requests/DiagnosisKeyUrlRequests.swift b/ios/BT/API/Requests/DiagnosisKeyUrlRequests.swift deleted file mode 100644 index 0882e4042d..0000000000 --- a/ios/BT/API/Requests/DiagnosisKeyUrlRequests.swift +++ /dev/null @@ -1,51 +0,0 @@ -import Alamofire -import ExposureNotification - -enum DiagnosisKeyUrlRequest: APIRequest { - - typealias ResponseType = Void - - case get(String) - - var method: HTTPMethod { - switch self { - case .get: - return .get - } - } - - var path: String { - switch self { - case .get(let path): - return path - } - } - - var parameters: Parameters? { - return nil - } - -} - -enum DiagnosisKeyUrlListRequest: APIRequest { - - typealias ResponseType = [URL] - - case get(Int) - - var method: HTTPMethod { - switch self { - case .get: - return .get - } - } - - var path: String { - return "" - } - - var parameters: Parameters? { - return nil - } - -} diff --git a/ios/BT/API/Requests/ExposureConfigurationRequests.swift b/ios/BT/API/Requests/ExposureConfigurationRequests.swift deleted file mode 100644 index 709a17e057..0000000000 --- a/ios/BT/API/Requests/ExposureConfigurationRequests.swift +++ /dev/null @@ -1,24 +0,0 @@ -import Alamofire -import Foundation - -enum ExposureConfigurationRequest: APIRequest { - - typealias ResponseType = ExposureConfiguration - - case get - - var method: HTTPMethod { - switch self { - case .get: - return .get - } - } - - var path: String { - switch self { - case .get: - return "" - } - } - -} diff --git a/ios/BT/API/Requests/IndexFileRequests.swift b/ios/BT/API/Requests/IndexFileRequests.swift deleted file mode 100644 index f14f728d52..0000000000 --- a/ios/BT/API/Requests/IndexFileRequests.swift +++ /dev/null @@ -1,20 +0,0 @@ -import Alamofire - -enum IndexFileRequest: APIRequest { - - typealias ResponseType = String - - case get - - var method: HTTPMethod { - switch self { - case .get: - return .get - } - } - - var path: String { - (ReactNativeConfig.env(for: .downloadPath)) + "/index.txt" - } - -} diff --git a/ios/BT/API/Result.swift b/ios/BT/API/Result.swift deleted file mode 100644 index 902141e3d8..0000000000 --- a/ios/BT/API/Result.swift +++ /dev/null @@ -1,82 +0,0 @@ -import Alamofire - -public enum Result { - - case success(T) - case failure(Error) - -} - -public enum ExposureResult { - - case success(Int) - case failure(ExposureError) - -} - -public enum GenericError: Error { - - case unknown - case badRequest - case cancelled - case notFound - case notImplemented - case unauthorized - -} - -public enum ExposureError: LocalizedError { - - case `default`(String?) - case dailyFileProcessingLimitExceeded - case cancelled - - public var errorDescription: String? { - switch self { - case .default(message: let message): - guard let unwrappedMessage = message else { - return localizedDescription - } - return unwrappedMessage - case .dailyFileProcessingLimitExceeded: - return "Daily exposure detection file processing limit exceeded" - case .cancelled: - return "Exposure Detection Cancelled" - } - } - -} - -public enum APIError: LocalizedError { - case `default`(message: String?) - - public var errorDescription: String? { - switch self { - case .default(message: let message): - guard let unwrappedMessage = message else { - return "" - } - return unwrappedMessage - } - } - -} - -public let GenericSuccess = GenericResult.success(()) - -public func GenericFailure(_ error: GenericError) -> Result { - return .failure(error) -} - -extension Error { - - public var isCancellation: Bool { - switch self { - case let error as GenericError: - return error == .cancelled - case let error as NSError: - return error.domain == NSURLErrorDomain && error.code == NSURLErrorCancelled - } - } - -} diff --git a/ios/BT/API/StructuredError.swift b/ios/BT/API/StructuredError.swift deleted file mode 100644 index fe3d112c13..0000000000 --- a/ios/BT/API/StructuredError.swift +++ /dev/null @@ -1,13 +0,0 @@ -import Foundation - -struct StructuredError: Error, Decodable { - - let title: String? - let message: String - - init(title: String? = nil, message: String) { - self.title = title - self.message = message - } - -} diff --git a/ios/BT/API/TypeAliases.swift b/ios/BT/API/TypeAliases.swift deleted file mode 100644 index 8d96228a70..0000000000 --- a/ios/BT/API/TypeAliases.swift +++ /dev/null @@ -1,3 +0,0 @@ - -public typealias GenericResult = Result -public typealias GenericCompletion = (GenericResult) -> Void diff --git a/ios/BT/BT-Bridging-Header.h b/ios/BT/BT-Bridging-Header.h deleted file mode 100644 index f99e7ec0c5..0000000000 --- a/ios/BT/BT-Bridging-Header.h +++ /dev/null @@ -1,11 +0,0 @@ -// -// BT-Bridging-Header.h -// BT -// -// Created by John Schoeman on 6/1/20. -// Copyright © 2020 Path Check Inc. All rights reserved. -// - -#import "React/RCTBridgeModule.h" -#import -#import "ReactNativeConfig.h" diff --git a/ios/BT/BT-Development.entitlements b/ios/BT/BT-Development.entitlements deleted file mode 100644 index f86fce9ef6..0000000000 --- a/ios/BT/BT-Development.entitlements +++ /dev/null @@ -1,16 +0,0 @@ - - - - - com.apple.developer.exposure-notification-test - - com.apple.developer.exposure-notification-test-skip-file-verification - - com.apple.developer.exposure-notification-logging - - aps-environment - Development - com.apple.developer.exposure-notification - - - diff --git a/ios/BT/BT-Production.entitlements b/ios/BT/BT-Production.entitlements deleted file mode 100644 index d525d0a851..0000000000 --- a/ios/BT/BT-Production.entitlements +++ /dev/null @@ -1,10 +0,0 @@ - - - - - aps-environment - Production - com.apple.developer.exposure-notification - - - diff --git a/ios/BT/Config/Debug-BT.xcconfig b/ios/BT/Config/Debug-BT.xcconfig deleted file mode 100644 index b76394efaf..0000000000 --- a/ios/BT/Config/Debug-BT.xcconfig +++ /dev/null @@ -1,17 +0,0 @@ -// -// Debug-BT.xcconfig -// COVIDSafePaths -// -// Created by Rob Visentin on 6/26/20. -// Copyright © 2020 Path Check Inc. All rights reserved. -// - -// Configuration settings file format documentation can be found at: -// https://help.apple.com/xcode/#/dev745c5c974 - -#include "Version.xcconfig" - -ASSETCATALOG_COMPILER_APPICON_NAME = AppIconDev -PRODUCT_BUNDLE_IDENTIFIER = org.pathcheck.bt.dev - -ALLOW_INSECURE_HTTP = YES diff --git a/ios/BT/Config/Release-BT.xcconfig b/ios/BT/Config/Release-BT.xcconfig deleted file mode 100644 index 0f136e969b..0000000000 --- a/ios/BT/Config/Release-BT.xcconfig +++ /dev/null @@ -1,17 +0,0 @@ -// -// Release-BT.xcconfig -// COVIDSafePaths -// -// Created by Rob Visentin on 6/26/20. -// Copyright © 2020 Path Check Inc. All rights reserved. -// - -// Configuration settings file format documentation can be found at: -// https://help.apple.com/xcode/#/dev745c5c974 - -#include "Version.xcconfig" - -ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon -PRODUCT_BUNDLE_IDENTIFIER = org.pathcheck.bt - -ALLOW_INSECURE_HTTP = NO diff --git a/ios/BT/Config/Staging-BT.xcconfig b/ios/BT/Config/Staging-BT.xcconfig deleted file mode 100644 index 059f88dd86..0000000000 --- a/ios/BT/Config/Staging-BT.xcconfig +++ /dev/null @@ -1,17 +0,0 @@ -// -// Staging-BT.xcconfig -// COVIDSafePaths -// -// Created by Rob Visentin on 6/26/20. -// Copyright © 2020 Path Check Inc. All rights reserved. -// - -// Configuration settings file format documentation can be found at: -// https://help.apple.com/xcode/#/dev745c5c974 - -#include "Version.xcconfig" - -ASSETCATALOG_COMPILER_APPICON_NAME = AppIconStaging -PRODUCT_BUNDLE_IDENTIFIER = org.pathcheck.bt.staging - -ALLOW_INSECURE_HTTP = NO diff --git a/ios/BT/Config/Version.xcconfig b/ios/BT/Config/Version.xcconfig deleted file mode 100644 index 97a7221d72..0000000000 --- a/ios/BT/Config/Version.xcconfig +++ /dev/null @@ -1,18 +0,0 @@ -// -// Version.xcconfig -// COVIDSafePaths -// -// Created by Rob Visentin on 6/26/20. -// Copyright © 2020 Path Check Inc. All rights reserved. -// - -// Configuration settings file format documentation can be found at: -// https://help.apple.com/xcode/#/dev745c5c974 - -// Staging -MARKETING_VERSION = 1.0.0 -CURRENT_PROJECT_VERSION = 1 - -// Release -MARKETING_VERSION[config=Release-BT] = 1.0.29 -CURRENT_PROJECT_VERSION[config=Release-BT] = 3 diff --git a/ios/BT/Constants.swift b/ios/BT/Constants.swift deleted file mode 100644 index 0f97e059af..0000000000 --- a/ios/BT/Constants.swift +++ /dev/null @@ -1,5 +0,0 @@ -enum Constants { - static let intervalsPerRollingPeriod: Int = 144 - static let exposureLifetimeHours: Int = 336 - static let dailyFileProcessingCapacity: Int = 15 -} diff --git a/ios/BT/DebugAction.swift b/ios/BT/DebugAction.swift deleted file mode 100644 index 0b26cc0f38..0000000000 --- a/ios/BT/DebugAction.swift +++ /dev/null @@ -1,11 +0,0 @@ -@objc enum DebugAction: Int { - case fetchDiagnosisKeys, - detectExposuresNow, - simulateExposureDetectionError, - simulateExposure, - fetchExposures, - getAndPostDiagnosisKeys, - resetExposures, - toggleENAuthorization, - showLastProcessedFilePath -} diff --git a/ios/BT/ExposureManager.swift b/ios/BT/ExposureManager.swift deleted file mode 100644 index a8b26f05f8..0000000000 --- a/ios/BT/ExposureManager.swift +++ /dev/null @@ -1,432 +0,0 @@ -import Foundation -import ExposureNotification -import RealmSwift -import UserNotifications -import BackgroundTasks - -@objc(ExposureManager) -final class ExposureManager: NSObject { - - enum EnabledState: String { - case enabled = "ENABLED" - case disabled = "DISABLED" - } - - enum AuthorizationState: String { - case authorized = "AUTHORIZED" - case unauthorized = "UNAUTHORIZED" - } - - @objc static let shared = ExposureManager() - - private static let backgroundTaskIdentifier = "\(Bundle.main.bundleIdentifier!).exposure-notification" - - let manager = ENManager() - - var enabledState: EnabledState { - return manager.exposureNotificationEnabled ? .enabled : .disabled - } - - var authorizationState: AuthorizationState { - return (ENManager.authorizationStatus == .authorized) ? .authorized : .unauthorized - } - - @objc var currentExposures: String { - return Array(BTSecureStorage.shared.userState.exposures).jsonStringRepresentation() - } - - private var isDetectingExposures = false - - /// Downloaded archives from the GAEN server - private var downloadedPackages = [DownloadedPackage]() - - /// Local urls of the bin/sig files from each archive - private var localUncompressedURLs = [URL]() - - override init() { - super.init() - manager.activate { _ in - // Ensure exposure notifications are enabled if the app is authorized. The app - // could get into a state where it is authorized, but exposure - // notifications are not enabled, if the user initially denied Exposure Notifications - // during onboarding, but then flipped on the "COVID-19 Exposure Notifications" switch - // in Settings. - if self.authorizationState == .authorized && self.enabledState == .disabled { - self.manager.setExposureNotificationEnabled(true) { _ in - // No error handling for attempts to enable on launch - } - } - } - - // Schedule background task if needed whenever EN authorization status changes - NotificationCenter.default.addObserver( - self, - selector: #selector(scheduleBackgroundTaskIfNeeded), - name: .AuthorizationStatusDidChange, - object: nil - ) - } - - deinit { - manager.invalidate() - } - - @objc func requestExposureNotificationAuthorization(enabled: Bool, callback: @escaping RCTResponseSenderBlock) { - // Ensure exposure notifications are enabled if the app is authorized. The app - // could get into a state where it is authorized, but exposure - // notifications are not enabled, if the user initially denied Exposure Notifications - // during onboarding, but then flipped on the "COVID-19 Exposure Notifications" switch - // in Settings. - manager.setExposureNotificationEnabled(enabled) { error in - if let error = error { - callback([error]) - } else { - NotificationCenter.default.post(Notification( - name: .AuthorizationStatusDidChange, - object: self, - userInfo: [ - Notification.UserInfoKey.enabledState: self.enabledState.rawValue, - Notification.UserInfoKey.authorizationState: self.authorizationState.rawValue - ] - )) - callback([String.genericSuccess]) - } - } - } - - @objc func getCurrentENPermissionsStatus(callback: @escaping RCTResponseSenderBlock) { - callback([[authorizationState.rawValue, enabledState.rawValue]]) - } - - @discardableResult func detectExposures(completionHandler: @escaping ((ExposureResult) -> Void)) -> Progress { - - let progress = Progress() - - var lastProcessedUrlPath: String = .default - var processedFileCount: Int = 0 - - // Disallow concurrent exposure detection, because if allowed we might try to detect the same diagnosis keys more than once - guard !isDetectingExposures else { - finish( - .failure(ExposureError.default("Detection Already in Progress")), - processedFileCount: processedFileCount, - lastProcessedUrlPath: lastProcessedUrlPath, - progress: progress, - completionHandler: completionHandler - ) - return progress - } - - isDetectingExposures = true - - // Reset file capacity to 15 if > 24 hours have elapsed since last reset - ExposureManager.updateRemainingFileCapacity() - - // Abort if daily file capacity is exceeded - guard BTSecureStorage.shared.userState.remainingDailyFileProcessingCapacity > 0 else { - finish( - .success([]), - processedFileCount: processedFileCount, - lastProcessedUrlPath: lastProcessedUrlPath, - progress: progress, - completionHandler: completionHandler - ) - return progress - } - - APIClient.shared.requestString(IndexFileRequest.get, requestType: .downloadKeys) { result in - let dispatchGroup = DispatchGroup() - - switch result { - case let .success(indexFileString): - let remoteURLs = indexFileString.gaenFilePaths - let targetUrls = ExposureManager.urlPathsToProcess(remoteURLs) - lastProcessedUrlPath = targetUrls.last ?? .default - processedFileCount = targetUrls.count - for remoteURL in targetUrls { - dispatchGroup.enter() - APIClient.shared.downloadRequest(DiagnosisKeyUrlRequest.get(remoteURL), requestType: .downloadKeys) { result in - switch result { - case .success (let package): - self.downloadedPackages.append(package) - case .failure(let error): - self.finish(.failure(error), - processedFileCount: processedFileCount, - lastProcessedUrlPath: lastProcessedUrlPath, - progress: progress, - completionHandler: completionHandler) - return - } - dispatchGroup.leave() - } - } - - case let .failure(error): - self.finish(.failure(error), - processedFileCount: processedFileCount, - lastProcessedUrlPath: lastProcessedUrlPath, - progress: progress, - completionHandler: completionHandler) - return - } - dispatchGroup.notify(queue: .main) { - do { - try self.downloadedPackages.unpack { urls in - self.localUncompressedURLs = urls - - // TODO: Fetch configuration from API - let enConfiguration = ExposureConfiguration.placeholder.asENExposureConfiguration - ExposureManager.shared.manager.detectExposures(configuration: enConfiguration, diagnosisKeyURLs: self.localUncompressedURLs) { summary, error in - if let error = error { - self.finish(.failure(error), - processedFileCount: processedFileCount, - lastProcessedUrlPath: lastProcessedUrlPath, - progress: progress, - completionHandler: completionHandler) - return - } - let userExplanation = NSLocalizedString(String.newExposureNotificationBody, comment: .default) - ExposureManager.shared.manager.getExposureInfo(summary: summary!, userExplanation: userExplanation) { exposures, error in - if let error = error { - self.finish(.failure(error), - processedFileCount: processedFileCount, - lastProcessedUrlPath: lastProcessedUrlPath, - progress: progress, - completionHandler: completionHandler) - return - } - let newExposures = (exposures ?? []).map { exposure in - Exposure(id: UUID().uuidString, - date: exposure.date.posixRepresentation, - duration: exposure.duration, - totalRiskScore: exposure.totalRiskScore, - transmissionRiskLevel: exposure.transmissionRiskLevel) - } - self.finish(.success(newExposures), - processedFileCount: processedFileCount, - lastProcessedUrlPath: lastProcessedUrlPath, - progress: progress, - completionHandler: completionHandler) - } - } - } - } catch(let error) { - self.finish(.failure(error), - processedFileCount: processedFileCount, - lastProcessedUrlPath: lastProcessedUrlPath, - progress: progress, - completionHandler: completionHandler) - } - } - } - return progress - } - - func finish(_ result: Result<[Exposure]>, - processedFileCount: Int, - lastProcessedUrlPath: String, - progress: Progress, - completionHandler: ((ExposureResult) -> Void)) { - - cleanup() - - isDetectingExposures = false - - if progress.isCancelled { - BTSecureStorage.shared.exposureDetectionErrorLocalizedDescription = GenericError.unknown.localizedDescription - completionHandler(.failure(ExposureError.cancelled)) - } else { - switch result { - case let .success(newExposures): - BTSecureStorage.shared.exposureDetectionErrorLocalizedDescription = .default - BTSecureStorage.shared.remainingDailyFileProcessingCapacity -= processedFileCount - if lastProcessedUrlPath != .default { - BTSecureStorage.shared.urlOfMostRecentlyDetectedKeyFile = lastProcessedUrlPath - } - BTSecureStorage.shared.storeExposures(newExposures) - completionHandler(.success(processedFileCount)) - case let .failure(error): - let exposureError = ExposureError.default(error.localizedDescription) - BTSecureStorage.shared.exposureDetectionErrorLocalizedDescription = error.localizedDescription - postExposureDetectionErrorNotification(exposureError.errorDescription) - completionHandler(.failure(exposureError)) - } - } - } - - @objc func registerBackgroundTask() { - notifyUserBlueToothOffIfNeeded() - BGTaskScheduler.shared.register(forTaskWithIdentifier: ExposureManager.backgroundTaskIdentifier, using: .main) { [weak self] task in - - // Notify the user if bluetooth is off - self?.notifyUserBlueToothOffIfNeeded() - - // Perform the exposure detection - let progress = ExposureManager.shared.detectExposures { result in - switch result { - case .success: - task.setTaskCompleted(success: true) - case .failure: - task.setTaskCompleted(success: false) - } - } - - // Handle running out of time - task.expirationHandler = { - progress.cancel() - BTSecureStorage.shared.exposureDetectionErrorLocalizedDescription = NSLocalizedString("BACKGROUND_TIMEOUT", comment: "Error") - } - - // Schedule the next background task - self?.scheduleBackgroundTaskIfNeeded() - } - } - - @objc func scheduleBackgroundTaskIfNeeded() { - guard ENManager.authorizationStatus == .authorized else { return } - let taskRequest = BGProcessingTaskRequest(identifier: ExposureManager.backgroundTaskIdentifier) - taskRequest.requiresNetworkConnectivity = true - do { - try BGTaskScheduler.shared.submit(taskRequest) - } catch { - print("Unable to schedule background task: \(error)") - } - } - - @objc func getAndPostDiagnosisKeys(certificate: String, - HMACKey: String, - resolve: @escaping RCTPromiseResolveBlock, - reject: @escaping RCTPromiseRejectBlock) { - manager.getDiagnosisKeys { temporaryExposureKeys, error in - if let error = error { - reject(String.noExposureKeysFound, "Failed to get exposure keys", error) - } else { - - let allKeys = (temporaryExposureKeys ?? []) - - // Filter keys > 350 hrs old - let currentKeys = allKeys.current() - - APIClient.shared.request(DiagnosisKeyListRequest.post(currentKeys.compactMap { $0.asCodableKey }, [.US], certificate, HMACKey), - requestType: .postKeys) { result in - switch result { - case .success: - resolve("Submitted: \(currentKeys.count) keys.") - case .failure(let error): - reject(String.networkFailure, "Failed to post exposure keys \(error.localizedDescription)", error) - } - } - } - } - } - - func postExposureDetectionErrorNotification(_ errorString: String?) { - #if DEBUG - let identifier = String.exposureDetectionErrorNotificationIdentifier - - let content = UNMutableNotificationContent() - content.title = String.exposureDetectionErrorNotificationTitle.localized - content.body = errorString ?? String.exposureDetectionErrorNotificationBody.localized - content.sound = .default - let request = UNNotificationRequest(identifier: identifier, content: content, trigger: nil) - UNUserNotificationCenter.current().add(request) { error in - DispatchQueue.main.async { - if let error = error { - print("Error showing error user notification: \(error)") - } - } - } - #endif - } - - @objc func fetchExposureKeys(resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) { - manager.getDiagnosisKeys { (keys, error) in - if let error = error { - print(error) - reject("no_exposure_keys", "There was an error fetching the exposure keys \(error)", error); - } else { - resolve((keys ?? []).map { $0.asDictionary }) - } - } - } - -} - -// MARK: - FileProcessing - -extension ExposureManager { - - static func startIndex(for urlPaths: [String]) -> Int { - let path = BTSecureStorage.shared.userState.urlOfMostRecentlyDetectedKeyFile - if let lastIdx = urlPaths.firstIndex(of: path) { - return min(lastIdx + 1, urlPaths.count) - } - return 0 - } - - static func urlPathsToProcess(_ urlPaths: [String]) -> [String] { - let startIdx = startIndex(for: urlPaths) - let endIdx = min(startIdx + BTSecureStorage.shared.userState.remainingDailyFileProcessingCapacity, urlPaths.count) - return Array(urlPaths[startIdx.. 24 { - BTSecureStorage.shared.remainingDailyFileProcessingCapacity = Constants.dailyFileProcessingCapacity - BTSecureStorage.shared.dateLastPerformedFileCapacityReset = Date() - } - } - - @objc func fetchLastDetectionDate( - resolve: @escaping RCTPromiseResolveBlock, - reject: @escaping RCTPromiseRejectBlock - ) { - guard let lastResetDate = BTSecureStorage.shared.userState.dateLastPerformedFileCapacityReset else { - reject(.detectionNeverPerformed, "No lastResetDate available", GenericError.unknown); - return - } - resolve(lastResetDate.posixRepresentation) - } -} - -// MARK: - Private - -private extension ExposureManager { - - func notifyUserBlueToothOffIfNeeded() { - let identifier = String.bluetoothNotificationIdentifier - - // Bluetooth must be enabled in order for the device to exchange keys with other devices - if ENManager.authorizationStatus == .authorized && manager.exposureNotificationStatus == .bluetoothOff { - let content = UNMutableNotificationContent() - content.title = String.bluetoothNotificationTitle.localized - content.body = String.bluetoothNotificationBody.localized - content.sound = .default - let request = UNNotificationRequest(identifier: identifier, content: content, trigger: nil) - UNUserNotificationCenter.current().add(request) { error in - DispatchQueue.main.async { - if let error = error { - print("Error showing error user notification: \(error)") - } - } - } - } else { - UNUserNotificationCenter.current().removeDeliveredNotifications(withIdentifiers: [identifier]) - } - } - - func cleanup() { - // Delete downloaded files from file system - localUncompressedURLs.cleanup() - localUncompressedURLs = [] - downloadedPackages = [] - } - -} diff --git a/ios/BT/Extensions/Exposure Notifications/ENTemporaryExposureKey+Extensions.swift b/ios/BT/Extensions/Exposure Notifications/ENTemporaryExposureKey+Extensions.swift deleted file mode 100644 index 7b6c355d90..0000000000 --- a/ios/BT/Extensions/Exposure Notifications/ENTemporaryExposureKey+Extensions.swift +++ /dev/null @@ -1,26 +0,0 @@ -import Foundation -import ExposureNotification - -extension ENTemporaryExposureKey { - - var asCodableKey: ExposureKey { - ExposureKey(key: keyData, - rollingPeriod: rollingPeriod, - rollingStartNumber: rollingStartNumber, - transmissionRisk: transmissionRiskLevel) - } - - var asDictionary : [String: Any] { - return [ - "key": keyData, - "rollingPeriod": rollingPeriod, - "rollingStartNumber": rollingStartNumber, - "transmissionRisk": transmissionRiskLevel - ] - } - - static func rollingStartNumber(_ date: Date) -> UInt32 { - UInt32(Int(date.timeIntervalSince1970 / (24 * 60 * 60)) * Constants.intervalsPerRollingPeriod) - } - -} diff --git a/ios/BT/Extensions/Foundation/Array+Extensions.swift b/ios/BT/Extensions/Foundation/Array+Extensions.swift deleted file mode 100644 index a7b5cf73c3..0000000000 --- a/ios/BT/Extensions/Foundation/Array+Extensions.swift +++ /dev/null @@ -1,55 +0,0 @@ -import ExposureNotification -import Foundation - -extension Array where Element == DownloadedPackage { - - func unpack(_ completion: @escaping (([URL]) -> Void)) throws { - guard count > 0 else { - completion([]) - return - } - var uncompressedFileUrls = [URL]() - do { - for idx in (0.. UInt32 { - let date = Calendar.current.date(byAdding: .hour, value: -Constants.exposureLifetimeHours, to: Date())! - return ENTemporaryExposureKey.rollingStartNumber(date) - } - - func current() -> [ENTemporaryExposureKey] { - filter { $0.rollingStartNumber > self.minRollingStartNumber() } - } - -} - -extension Array where Element == URL { - - func cleanup() { - forEach { try? FileManager.default.removeItem(at: $0) } - } - -} - -private extension String { - static let binPath: String = "/export.bin" - static let sigPath: String = "/export.sig" -} diff --git a/ios/BT/Extensions/Foundation/Date+Extensions.swift b/ios/BT/Extensions/Foundation/Date+Extensions.swift deleted file mode 100644 index 6bed35281e..0000000000 --- a/ios/BT/Extensions/Foundation/Date+Extensions.swift +++ /dev/null @@ -1,10 +0,0 @@ -extension Date { - var posixRepresentation: Int { - Int(timeIntervalSince1970) * 1000 - } - - static func hourDifference(from startDate: Date, to endDate: Date) -> Int { - Calendar.current.dateComponents([.hour], from: startDate, to: endDate).hour ?? 0 - } - -} diff --git a/ios/BT/Extensions/Foundation/Encodable+Extensions.swift b/ios/BT/Extensions/Foundation/Encodable+Extensions.swift deleted file mode 100644 index d6839d74d4..0000000000 --- a/ios/BT/Extensions/Foundation/Encodable+Extensions.swift +++ /dev/null @@ -1,7 +0,0 @@ -extension Encodable { - func jsonStringRepresentation() -> String { - let encodedValue = try! JSONEncoder().encode(self) - let string = String(data: encodedValue, encoding: .utf8)! - return string - } -} diff --git a/ios/BT/Extensions/Foundation/List+Extensions.swift b/ios/BT/Extensions/Foundation/List+Extensions.swift deleted file mode 100644 index ecb08390b6..0000000000 --- a/ios/BT/Extensions/Foundation/List+Extensions.swift +++ /dev/null @@ -1,8 +0,0 @@ -import RealmSwift - -extension List where Element: Encodable { - public func encode(to coder: Encoder) throws { - var container = coder.unkeyedContainer() - try container.encode(contentsOf: self) - } -} diff --git a/ios/BT/Extensions/Foundation/Notification+Extensions.swift b/ios/BT/Extensions/Foundation/Notification+Extensions.swift deleted file mode 100644 index d9b286a561..0000000000 --- a/ios/BT/Extensions/Foundation/Notification+Extensions.swift +++ /dev/null @@ -1,20 +0,0 @@ -extension Notification.Name { - public static let StorageTestResultsDidChange = Notification.Name(rawValue: "BTSecureStorageTestResultsDidChange") - public static let StorageExposureDetectionErrorLocalizedDescriptionDidChange = Notification.Name(rawValue: "BTSecureStorageExposureDetectionErrorLocalizedDescriptionDidChange") - public static let dateLastPerformedFileCapacityResetDidChange = Notification.Name(rawValue: "BTSecureStorageDateLastPerformedExposureDetectionDidChange") - public static let HMACKeyDidChange = Notification.Name(rawValue: "BTSecureStorageHMACKeyDidChange") - public static let ExposuresDidChange = Notification.Name(rawValue: "onExposureRecordUpdated") - public static let AuthorizationStatusDidChange = Notification.Name(rawValue: "onEnabledStatusUpdated") - public static let remainingDailyFileProcessingCapacityDidChange = Notification.Name(rawValue: "remainingDailyFileProcessingCapacityDidChange") - public static let UrlOfMostRecentlyDetectedKeyFileDidChange = Notification.Name(rawValue: "UrlOfMostRecentlyDetectedKeyFileDidChange") -} - -extension Notification { - - public enum UserInfoKey { - public static let enabledState = "enabledState" - public static let authorizationState = "authorizationState" - } - -} - diff --git a/ios/BT/Extensions/Foundation/String+Extensions.swift b/ios/BT/Extensions/Foundation/String+Extensions.swift deleted file mode 100644 index 274c6c4a91..0000000000 --- a/ios/BT/Extensions/Foundation/String+Extensions.swift +++ /dev/null @@ -1,54 +0,0 @@ -import Foundation - -extension String { - - static let `default` = "" - - // EN - static let notAuthorized = "notAuthorized" - static let authorized = "authorized" - - // Realm - static let remainingDailyFileProcessingCapacity = "remainingDailyFileProcessingCapacity" - static let urlOfMostRecentlyDetectedKeyFile = "urlOfMostRecentlyDetectedKeyFile" - - // Persisted - static let keyPathTestResults = "testResults" - static let keyPathExposureDetectionErrorLocalizedDescription = "exposureDetectionErrorLocalizedDescription" - static let keyPathdateLastPerformedFileCapacityReset = "dateLastPerformedFileCapacityReset" - static let keyPathExposures = "exposures" - static let keyPathHMACKey = "HMACKey" - - // .env - static let postKeysUrl = "POST_DIAGNOSIS_KEYS_URL" - static let downloadBaseUrl = "DOWNLOAD_BASE_URL" - static let downloadPath = "DOWNLOAD_PATH" - static let hmackey = "HMAC_KEY" - - // Notifications - static let bluetoothNotificationTitle = "Bluetooth Off" - static let bluetoothNotificationBody = "You must enable bluetooth to receive Exposure Notifications." - static let bluetoothNotificationIdentifier = "bluetooth-off" - static let exposureDetectionErrorNotificationTitle = "Error Detecting Exposures" - static let exposureDetectionErrorNotificationBody = "An error occurred while attempting to detect exposures." - static let newExposureNotificationBody = "Someone you were near recently has been diagnosed with COVID-19. Tap for more details." - static let exposureDetectionErrorNotificationIdentifier = "expososure-notification-error" - - // JS Layer - static let genericSuccess = "success" - - // ErrorCodes - static let networkFailure = "network_request_error" - static let noExposureKeysFound = "no_exposure_keys_found" - static let detectionNeverPerformed = "no_last_detection_date" - - // Computed Properties - var gaenFilePaths: [String] { - split(separator: "\n").map { String($0) } - } - - var localized: String { - NSLocalizedString(self, comment: .default) - } - -} diff --git a/ios/BT/Extensions/Other/ExposureManager+Extensions.swift b/ios/BT/Extensions/Other/ExposureManager+Extensions.swift deleted file mode 100644 index ce7c8202d7..0000000000 --- a/ios/BT/Extensions/Other/ExposureManager+Extensions.swift +++ /dev/null @@ -1,64 +0,0 @@ -import ExposureNotification -import Foundation -import RealmSwift - -extension ExposureManager { - - @objc func handleDebugAction(_ action: DebugAction, - resolve: @escaping RCTPromiseResolveBlock, - reject: @escaping RCTPromiseRejectBlock) { - switch action { - case .fetchDiagnosisKeys: - manager.getDiagnosisKeys { (keys, error) in - if let error = error { - reject(error.localizedDescription, "Failed to get exposure keys", error) - } else { - resolve(keys!.map { $0.asDictionary }) - } - } - case .detectExposuresNow: - guard BTSecureStorage.shared.userState.remainingDailyFileProcessingCapacity > 0 else { - let hoursRemaining = 24 - Date.hourDifference(from: BTSecureStorage.shared.userState.dateLastPerformedFileCapacityReset ?? Date(), to: Date()) - reject("Time window Error.", "You have reached the exposure file submission limit. Please wait \(hoursRemaining) hours before detecting exposures again.", GenericError.unknown) - return - } - - detectExposures { result in - switch result { - case .success(let numberOfFilesProcessed): - resolve("Exposure detection successfully executed. Processed \(numberOfFilesProcessed) files.") - case .failure(let exposureError): - reject(exposureError.localizedDescription, exposureError.errorDescription, exposureError) - } - } - case .simulateExposureDetectionError: - BTSecureStorage.shared.exposureDetectionErrorLocalizedDescription = "Unable to connect to server." - ExposureManager.shared.postExposureDetectionErrorNotification("Simulated Error") - resolve(String.genericSuccess) - case .simulateExposure: - let exposure = Exposure(id: UUID().uuidString, - date: Date().posixRepresentation - Int(TimeInterval.random(in: 0...13)) * 24 * 60 * 60 * 1000, - duration: TimeInterval(1), - totalRiskScore: .random(in: 1...8), - transmissionRiskLevel: .random(in: 0...7)) - BTSecureStorage.shared.storeExposures([exposure]) - resolve("Exposures: \(BTSecureStorage.shared.userState.exposures)") - case .fetchExposures: - resolve(currentExposures) - case .getAndPostDiagnosisKeys: - getAndPostDiagnosisKeys(certificate: .default, HMACKey: .default, resolve: resolve, reject: reject) - case .resetExposures: - BTSecureStorage.shared.exposures = List() - resolve("Exposures: \(BTSecureStorage.shared.exposures.count)") - case .toggleENAuthorization: - let enabled = manager.exposureNotificationEnabled ? false : true - requestExposureNotificationAuthorization(enabled: enabled) { result in - resolve("EN Enabled: \(self.manager.exposureNotificationEnabled)") - } - case .showLastProcessedFilePath: - let path = BTSecureStorage.shared.userState.urlOfMostRecentlyDetectedKeyFile - resolve(path) - } - } - -} diff --git a/ios/BT/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/BT/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index f3cbfbed15..0000000000 --- a/ios/BT/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "images" : [ - { - "filename" : "bt-ios-icon-20@2x.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "20x20" - }, - { - "filename" : "bt-ios-icon-20@3x.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "20x20" - }, - { - "filename" : "bt-ios-icon-29@2x.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "29x29" - }, - { - "filename" : "bt-ios-icon-29@3x.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "29x29" - }, - { - "filename" : "bt-ios-icon-40@2x.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "40x40" - }, - { - "filename" : "bt-ios-icon-40@3x.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "40x40" - }, - { - "filename" : "bt-ios-icon-60@2x.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "60x60" - }, - { - "filename" : "bt-ios-icon-60@3x.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "60x60" - }, - { - "filename" : "bt-ios-icon-1024@1x.png", - "idiom" : "ios-marketing", - "scale" : "1x", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-1024@1x.png b/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-1024@1x.png deleted file mode 100644 index e71db06ce3..0000000000 Binary files a/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-1024@1x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-20@2x.png b/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-20@2x.png deleted file mode 100644 index 843ae3dba8..0000000000 Binary files a/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-20@2x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-20@3x.png b/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-20@3x.png deleted file mode 100644 index 270a2e7497..0000000000 Binary files a/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-20@3x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-29@2x.png b/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-29@2x.png deleted file mode 100644 index 23a1b687e8..0000000000 Binary files a/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-29@2x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-29@3x.png b/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-29@3x.png deleted file mode 100644 index b02241f07d..0000000000 Binary files a/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-29@3x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-40@2x.png b/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-40@2x.png deleted file mode 100644 index e5c3f49fa3..0000000000 Binary files a/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-40@2x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-40@3x.png b/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-40@3x.png deleted file mode 100644 index 1de297a0f1..0000000000 Binary files a/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-40@3x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-60@2x.png b/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-60@2x.png deleted file mode 100644 index 1c3d2b1d58..0000000000 Binary files a/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-60@2x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-60@3x.png b/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-60@3x.png deleted file mode 100644 index 27a5122725..0000000000 Binary files a/ios/BT/Images.xcassets/AppIcon.appiconset/bt-ios-icon-60@3x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIconDev.appiconset/Contents.json b/ios/BT/Images.xcassets/AppIconDev.appiconset/Contents.json deleted file mode 100644 index f3cbfbed15..0000000000 --- a/ios/BT/Images.xcassets/AppIconDev.appiconset/Contents.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "images" : [ - { - "filename" : "bt-ios-icon-20@2x.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "20x20" - }, - { - "filename" : "bt-ios-icon-20@3x.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "20x20" - }, - { - "filename" : "bt-ios-icon-29@2x.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "29x29" - }, - { - "filename" : "bt-ios-icon-29@3x.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "29x29" - }, - { - "filename" : "bt-ios-icon-40@2x.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "40x40" - }, - { - "filename" : "bt-ios-icon-40@3x.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "40x40" - }, - { - "filename" : "bt-ios-icon-60@2x.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "60x60" - }, - { - "filename" : "bt-ios-icon-60@3x.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "60x60" - }, - { - "filename" : "bt-ios-icon-1024@1x.png", - "idiom" : "ios-marketing", - "scale" : "1x", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-1024@1x.png b/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-1024@1x.png deleted file mode 100644 index e71db06ce3..0000000000 Binary files a/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-1024@1x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-20@2x.png b/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-20@2x.png deleted file mode 100644 index 843ae3dba8..0000000000 Binary files a/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-20@2x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-20@3x.png b/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-20@3x.png deleted file mode 100644 index 270a2e7497..0000000000 Binary files a/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-20@3x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-29@2x.png b/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-29@2x.png deleted file mode 100644 index 23a1b687e8..0000000000 Binary files a/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-29@2x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-29@3x.png b/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-29@3x.png deleted file mode 100644 index b02241f07d..0000000000 Binary files a/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-29@3x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-40@2x.png b/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-40@2x.png deleted file mode 100644 index e5c3f49fa3..0000000000 Binary files a/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-40@2x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-40@3x.png b/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-40@3x.png deleted file mode 100644 index 1de297a0f1..0000000000 Binary files a/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-40@3x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-60@2x.png b/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-60@2x.png deleted file mode 100644 index 1c3d2b1d58..0000000000 Binary files a/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-60@2x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-60@3x.png b/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-60@3x.png deleted file mode 100644 index 27a5122725..0000000000 Binary files a/ios/BT/Images.xcassets/AppIconDev.appiconset/bt-ios-icon-60@3x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIconStaging.appiconset/Contents.json b/ios/BT/Images.xcassets/AppIconStaging.appiconset/Contents.json deleted file mode 100644 index 52a59612db..0000000000 --- a/ios/BT/Images.xcassets/AppIconStaging.appiconset/Contents.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "images" : [ - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "bt-ios-icon-20@2x.png", - "scale" : "2x" - }, - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "bt-ios-icon-20@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "bt-ios-icon-29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "bt-ios-icon-29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "bt-ios-icon-40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "bt-ios-icon-40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "bt-ios-icon-60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "bt-ios-icon-60@3x.png", - "scale" : "3x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "bt-ios-icon-1024@1x.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-1024@1x.png b/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-1024@1x.png deleted file mode 100644 index e71db06ce3..0000000000 Binary files a/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-1024@1x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-20@2x.png b/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-20@2x.png deleted file mode 100644 index 843ae3dba8..0000000000 Binary files a/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-20@2x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-20@3x.png b/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-20@3x.png deleted file mode 100644 index 270a2e7497..0000000000 Binary files a/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-20@3x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-29@2x.png b/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-29@2x.png deleted file mode 100644 index 23a1b687e8..0000000000 Binary files a/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-29@2x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-29@3x.png b/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-29@3x.png deleted file mode 100644 index b02241f07d..0000000000 Binary files a/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-29@3x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-40@2x.png b/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-40@2x.png deleted file mode 100644 index e5c3f49fa3..0000000000 Binary files a/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-40@2x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-40@3x.png b/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-40@3x.png deleted file mode 100644 index 1de297a0f1..0000000000 Binary files a/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-40@3x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-60@2x.png b/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-60@2x.png deleted file mode 100644 index 1c3d2b1d58..0000000000 Binary files a/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-60@2x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-60@3x.png b/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-60@3x.png deleted file mode 100644 index 27a5122725..0000000000 Binary files a/ios/BT/Images.xcassets/AppIconStaging.appiconset/bt-ios-icon-60@3x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/BgImage.imageset/Contents.json b/ios/BT/Images.xcassets/BgImage.imageset/Contents.json deleted file mode 100644 index 0b5c985d83..0000000000 --- a/ios/BT/Images.xcassets/BgImage.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "bgImage.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "bgImage@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "bgImage@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/ios/BT/Images.xcassets/BgImage.imageset/bgImage.png b/ios/BT/Images.xcassets/BgImage.imageset/bgImage.png deleted file mode 100644 index f9d90578b3..0000000000 Binary files a/ios/BT/Images.xcassets/BgImage.imageset/bgImage.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/BgImage.imageset/bgImage@2x.png b/ios/BT/Images.xcassets/BgImage.imageset/bgImage@2x.png deleted file mode 100644 index b124988376..0000000000 Binary files a/ios/BT/Images.xcassets/BgImage.imageset/bgImage@2x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/BgImage.imageset/bgImage@3x.png b/ios/BT/Images.xcassets/BgImage.imageset/bgImage@3x.png deleted file mode 100644 index 840c4242d4..0000000000 Binary files a/ios/BT/Images.xcassets/BgImage.imageset/bgImage@3x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/logoImage.imageset/Contents.json b/ios/BT/Images.xcassets/logoImage.imageset/Contents.json deleted file mode 100644 index fc1189127b..0000000000 --- a/ios/BT/Images.xcassets/logoImage.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "bt-logo-512.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "bt-logo-512@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "bt-logo-512@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/ios/BT/Images.xcassets/logoImage.imageset/bt-logo-512.png b/ios/BT/Images.xcassets/logoImage.imageset/bt-logo-512.png deleted file mode 100644 index 7f9fe2f6b3..0000000000 Binary files a/ios/BT/Images.xcassets/logoImage.imageset/bt-logo-512.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/logoImage.imageset/bt-logo-512@2x.png b/ios/BT/Images.xcassets/logoImage.imageset/bt-logo-512@2x.png deleted file mode 100644 index 81e274c429..0000000000 Binary files a/ios/BT/Images.xcassets/logoImage.imageset/bt-logo-512@2x.png and /dev/null differ diff --git a/ios/BT/Images.xcassets/logoImage.imageset/bt-logo-512@3x.png b/ios/BT/Images.xcassets/logoImage.imageset/bt-logo-512@3x.png deleted file mode 100644 index 038fc0224f..0000000000 Binary files a/ios/BT/Images.xcassets/logoImage.imageset/bt-logo-512@3x.png and /dev/null differ diff --git a/ios/BT/Info.plist b/ios/BT/Info.plist deleted file mode 100644 index 7a1f58885c..0000000000 --- a/ios/BT/Info.plist +++ /dev/null @@ -1,104 +0,0 @@ - - - - - BGTaskSchedulerPermittedIdentifiers - - com.transistorsoft.fetch - $(PRODUCT_BUNDLE_IDENTIFIER).exposure-notification - - CFBundleDevelopmentRegion - en - CFBundleDisplayName - PathCheck BT - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(MARKETING_VERSION) - CFBundleSignature - ???? - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - LSApplicationCategoryType - - LSApplicationQueriesSchemes - - itms-apps - - LSRequiresIPhoneOS - - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - NSExceptionDomains - - - NSCameraUsageDescription - To simulate sharing diagnosis keys between a central server by scanning QR codes. - NSMainNibFile - LaunchScreen - UIAppFonts - - IBMPlexSans-Bold.ttf - IBMPlexSans-BoldItalic.ttf - IBMPlexSans-ExtraLight.ttf - IBMPlexSans-ExtraLightItalic.ttf - IBMPlexSans-Italic.ttf - IBMPlexSans-Light.ttf - IBMPlexSans-LightItalic.ttf - IBMPlexSans-Medium.ttf - IBMPlexSans-MediumItalic.ttf - IBMPlexSans.ttf - IBMPlexSans-SemiBold.ttf - IBMPlexSans-SemiBoldItalic.ttf - IBMPlexSans-Thin.ttf - IBMPlexSans-ThinItalic.ttf - IBMPlexMono-Bold.ttf - IBMPlexMono-BoldItalic.ttf - IBMPlexMono-ExtraLight.ttf - IBMPlexMono-ExtraLightItalic.ttf - IBMPlexMono-Italic.ttf - IBMPlexMono-Light.ttf - IBMPlexMono-LightItalic.ttf - IBMPlexMono-Medium.ttf - IBMPlexMono-MediumItalic.ttf - IBMPlexMono.ttf - IBMPlexMono-SemiBold.ttf - IBMPlexMono-SemiBoldItalic.ttf - IBMPlexMono-Thin.ttf - IBMPlexMono-ThinItalic.ttf - - UIBackgroundModes - - fetch - processing - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - bluetooth-le - telephony - - UIStatusBarStyle - UIStatusBarStyleLightContent - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - - UIUserInterfaceStyle - Light - UIViewControllerBasedStatusBarAppearance - - - diff --git a/ios/BT/Storage/BTSecureStorage.swift b/ios/BT/Storage/BTSecureStorage.swift deleted file mode 100644 index 3d0688183c..0000000000 --- a/ios/BT/Storage/BTSecureStorage.swift +++ /dev/null @@ -1,102 +0,0 @@ -import ExposureNotification -import Foundation -import RealmSwift - -final class BTSecureStorage: SafePathsSecureStorage { - - static let shared = BTSecureStorage(inMemory: false) - - override var keychainIdentifier: String { - "\(Bundle.main.bundleIdentifier!).realm" - } - - private lazy var realmConfig: Realm.Configuration = { - guard let realmConfig = getRealmConfig() else { - fatalError("Missing realm configuration") - } - return realmConfig - }() - - override init(inMemory: Bool = false) { - super.init(inMemory: inMemory) - if !userStateExists { - resetUserState({ _ in }) - } - } - - override func getRealmConfig() -> Realm.Configuration? { - if let key = getEncryptionKey() { - if (inMemory) { - return Realm.Configuration(inMemoryIdentifier: identifier, encryptionKey: key as Data, schemaVersion: 4, - migrationBlock: { _, _ in }, objectTypes: [UserState.self, Exposure.self]) - } else { - return Realm.Configuration(encryptionKey: key as Data, schemaVersion: 4, - migrationBlock: { _, _ in }, objectTypes: [UserState.self, Exposure.self]) - } - } else { - return nil - } - } - - var userState: UserState { - let realm = try! Realm(configuration: realmConfig) - return realm.object(ofType: UserState.self, forPrimaryKey: 0) ?? UserState() - } - - var userStateExists: Bool { - let realm = try! Realm(configuration: realmConfig) - return realm.object(ofType: UserState.self, forPrimaryKey: 0) != nil - } - - func setUserValue(value: Value, keyPath: String, notificationName: Notification.Name) { - let realm = try! Realm(configuration: realmConfig) - try! realm.write { - realm.create(UserState.self, value: [keyPath: value], update: .modified) - let jsonString = value.jsonStringRepresentation() - NotificationCenter.default.post(name: notificationName, object: jsonString) - } - } - - func resetUserState(_ completion: ((UserState) -> Void)) { - guard let realmConfig = getRealmConfig() else { - return - } - let realm = try! Realm(configuration: realmConfig) - try! realm.write { - let userState = UserState() - realm.add(userState, update: .modified) - completion(userState) - } - } - - func storeExposures(_ exposures: [Exposure]) { - let realm = try! Realm(configuration: realmConfig) - try! realm.write { - userState.exposures.append(objectsIn: exposures) - let jsonString = userState.exposures.jsonStringRepresentation() - NotificationCenter.default.post(name: .ExposuresDidChange, object: jsonString) - } - } - - @Persisted(keyPath: .remainingDailyFileProcessingCapacity, notificationName: .remainingDailyFileProcessingCapacityDidChange, defaultValue: Constants.dailyFileProcessingCapacity) - var remainingDailyFileProcessingCapacity: Int - - @Persisted(keyPath: .urlOfMostRecentlyDetectedKeyFile, notificationName: .UrlOfMostRecentlyDetectedKeyFileDidChange, defaultValue: .default) - var urlOfMostRecentlyDetectedKeyFile: String - - @Persisted(keyPath: .keyPathExposures, notificationName: .ExposuresDidChange, defaultValue: List()) - var exposures: List - - @Persisted(keyPath: .keyPathdateLastPerformedFileCapacityReset, - notificationName: .dateLastPerformedFileCapacityResetDidChange, defaultValue: nil) - var dateLastPerformedFileCapacityReset: Date? - - @Persisted(keyPath: .keyPathHMACKey, - notificationName: .HMACKeyDidChange, defaultValue: "") - var HMACKey: String - - @Persisted(keyPath: .keyPathExposureDetectionErrorLocalizedDescription, notificationName: - .StorageExposureDetectionErrorLocalizedDescriptionDidChange, defaultValue: .default) - var exposureDetectionErrorLocalizedDescription: String - -} diff --git a/ios/BT/Storage/Persisted.swift b/ios/BT/Storage/Persisted.swift deleted file mode 100644 index bed17c777f..0000000000 --- a/ios/BT/Storage/Persisted.swift +++ /dev/null @@ -1,29 +0,0 @@ -import Foundation -import RealmSwift - -@propertyWrapper -class Persisted { - - init(keyPath: String, notificationName: Notification.Name, defaultValue: Value) { - self.keyPath = keyPath - self.notificationName = notificationName - self.wrappedValue = defaultValue - } - - let keyPath: String - let notificationName: Notification.Name - - var wrappedValue: Value { - didSet { - BTSecureStorage.shared.setUserValue(value: wrappedValue, keyPath: keyPath, notificationName: notificationName) - } - } - - var projectedValue: Persisted { self } - - func addObserver(using block: @escaping () -> Void) -> NSObjectProtocol { - return NotificationCenter.default.addObserver(forName: notificationName, object: nil, queue: nil) { _ in - block() - } - } -} diff --git a/ios/BT/bridge/DebugMenuModule.m b/ios/BT/bridge/DebugMenuModule.m deleted file mode 100644 index 521033c4f4..0000000000 --- a/ios/BT/bridge/DebugMenuModule.m +++ /dev/null @@ -1,78 +0,0 @@ -#import -#import -#import "BT-Swift.h" - -@interface DebugMenuModule: NSObject -@end - -@implementation DebugMenuModule - -RCT_EXPORT_MODULE(); - -RCT_REMAP_METHOD(fetchDiagnosisKeys, - fetchDiagnosisKeysWithResolver:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)reject) -{ - [[ExposureManager shared] handleDebugAction:DebugActionFetchDiagnosisKeys resolve:resolve reject:reject]; -} - -RCT_REMAP_METHOD(detectExposuresNow, - detectExposuresNowWithResolver:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)reject) -{ - [[ExposureManager shared] handleDebugAction:DebugActionDetectExposuresNow resolve:resolve reject:reject]; -} - -RCT_REMAP_METHOD(simulateExposureDetectionError, - simulateExposureDetectionErrorWithResolver:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)reject) -{ - [[ExposureManager shared] handleDebugAction:DebugActionSimulateExposureDetectionError resolve:resolve reject:reject]; - -} - -RCT_REMAP_METHOD(simulateExposure, - simulateExposureWithResolver:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)reject) -{ - [[ExposureManager shared] handleDebugAction:DebugActionSimulateExposure resolve:resolve reject:reject]; -} - - -RCT_REMAP_METHOD(fetchExposures, - fetchExposuresWithResolver:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)reject) -{ - [[ExposureManager shared] handleDebugAction:DebugActionSimulateExposure resolve:resolve reject:reject]; -} - -RCT_REMAP_METHOD(toggleExposureNotifications, - toggleExposureNotificationsWithResolver:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)reject) -{ - [[ExposureManager shared] handleDebugAction:DebugActionToggleENAuthorization resolve:resolve reject:reject]; -} - -RCT_REMAP_METHOD(resetExposures, - resetExposuresWithResolver:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)reject) -{ - [[ExposureManager shared] handleDebugAction:DebugActionResetExposures resolve:resolve reject:reject]; -} - -RCT_REMAP_METHOD(submitExposureKeys, - submitExposureKeysResolver:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)reject) -{ - [[ExposureManager shared] handleDebugAction:DebugActionGetAndPostDiagnosisKeys resolve:resolve reject:reject]; -} - - -RCT_REMAP_METHOD(showLastProcessedFilePath, - showLastProcessedFilePathResolver:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)reject) -{ - [[ExposureManager shared] handleDebugAction:DebugActionShowLastProcessedFilePath resolve:resolve reject:reject]; -} - -@end diff --git a/ios/BT/bridge/ENPermissionsModule.m b/ios/BT/bridge/ENPermissionsModule.m deleted file mode 100644 index 3b479dbfd4..0000000000 --- a/ios/BT/bridge/ENPermissionsModule.m +++ /dev/null @@ -1,20 +0,0 @@ -#import -#import -#import "BT-Swift.h" - -@interface ENPermissionsModule: NSObject -@end - -@implementation ENPermissionsModule - -RCT_EXPORT_MODULE(); - -RCT_EXPORT_METHOD(requestExposureNotificationAuthorization: (RCTResponseSenderBlock)callback) { - [[ExposureManager shared] requestExposureNotificationAuthorizationWithEnabled:YES callback:callback]; -} - -RCT_EXPORT_METHOD(getCurrentENPermissionsStatus: (RCTResponseSenderBlock)callback) { - [[ExposureManager shared] getCurrentENPermissionsStatusWithCallback:callback]; -} - -@end diff --git a/ios/BT/bridge/ExposureEventEmitter.m b/ios/BT/bridge/ExposureEventEmitter.m deleted file mode 100644 index f469c35dc4..0000000000 --- a/ios/BT/bridge/ExposureEventEmitter.m +++ /dev/null @@ -1,59 +0,0 @@ -#import -#import - -// Notification/Event Names -NSString *const onEnabledStatusUpdated = @"onEnabledStatusUpdated"; -NSString *const onExposuresChanged = @"onExposureRecordUpdated"; - -@interface ExposureEventEmitter : RCTEventEmitter -@end - -@implementation ExposureEventEmitter - -+ (BOOL)requiresMainQueueSetup -{ - return YES; // only do this if your module initialization relies on calling UIKit! -} - -RCT_EXPORT_MODULE(); - -- (instancetype)init -{ - self = [super init]; - if (self) { - [self startObserving]; - } - return self; -} - - -- (NSArray *)supportedEvents { - return @[ - onExposuresChanged, - onEnabledStatusUpdated - ]; -} - -- (void)startObserving { - [self stopObserving]; - for (NSString *event in [self supportedEvents]) { - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(handleNotification:) - name:event - object:nil]; - } -} - -- (void)stopObserving { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -# pragma mark Private - -- (void)handleNotification:(NSNotification *)notification { - - [self sendEventWithName:notification.name body: notification.object]; - -} - -@end diff --git a/ios/BT/bridge/ExposureHistoryModule.m b/ios/BT/bridge/ExposureHistoryModule.m deleted file mode 100644 index 3c868fe5cb..0000000000 --- a/ios/BT/bridge/ExposureHistoryModule.m +++ /dev/null @@ -1,24 +0,0 @@ -#import -#import -#import -#import "BT-Swift.h" - -@interface ExposureHistoryModule: NSObject -@end - -@implementation ExposureHistoryModule - -RCT_EXPORT_MODULE(); - -RCT_EXPORT_METHOD(getCurrentExposures: (RCTResponseSenderBlock)callback) { - callback(@[[[ExposureManager shared] currentExposures]]); -} - -RCT_REMAP_METHOD(fetchLastDetectionDate, - fetchLastDetectionDateWithResolver:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)reject) -{ - [[ExposureManager shared] fetchLastDetectionDateWithResolve:resolve reject:reject]; -} - -@end diff --git a/ios/BT/bridge/ExposureKeyModule.m b/ios/BT/bridge/ExposureKeyModule.m deleted file mode 100644 index ad834f4492..0000000000 --- a/ios/BT/bridge/ExposureKeyModule.m +++ /dev/null @@ -1,30 +0,0 @@ -#import -#import -#import -#import "BT-Swift.h" - -@interface ExposureKeyModule: NSObject -@end - -@implementation ExposureKeyModule - -RCT_EXPORT_MODULE(); - -RCT_REMAP_METHOD(fetchExposureKeys, - fetchExposureKeysWithResolver:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)reject) -{ - [[ExposureManager shared] fetchExposureKeysWithResolve:resolve reject:reject]; -} - -RCT_REMAP_METHOD(postDiagnosisKeys, - certificate: (NSString *)certificate - hmacKey: (NSString *)HMACKey - resolver:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)reject) -{ - [[ExposureManager shared] getAndPostDiagnosisKeysWithCertificate:certificate HMACKey:HMACKey resolve:resolve reject:reject]; -} - - -@end diff --git a/ios/BT/main.m b/ios/BT/main.m deleted file mode 100644 index 5732e9a03a..0000000000 --- a/ios/BT/main.m +++ /dev/null @@ -1,18 +0,0 @@ -// -// main.m -// BT -// -// Created by John Schoeman on 5/28/20. -// Copyright © 2020 Path Check Inc. All rights reserved. -// - -#import - -#import "AppDelegate.h" - -int main(int argc, char * argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} - diff --git a/ios/BTTestsInfo.plist b/ios/BTTestsInfo.plist deleted file mode 100644 index 66f61f3829..0000000000 --- a/ios/BTTestsInfo.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0.28 - CFBundleSignature - ???? - CFBundleVersion - 1.0.28 - - diff --git a/ios/COVIDSafePaths.xcodeproj/project.pbxproj b/ios/COVIDSafePaths.xcodeproj/project.pbxproj index 119dc74f70..d82bb97d3d 100644 --- a/ios/COVIDSafePaths.xcodeproj/project.pbxproj +++ b/ios/COVIDSafePaths.xcodeproj/project.pbxproj @@ -9,7 +9,6 @@ /* Begin PBXBuildFile section */ 00E356F31AD99517003FC87E /* COVIDSafePathsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* COVIDSafePathsTests.m */; }; 0814DA4E882656978623FE96 /* libPods-GPS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D04E3B4F6078718D8B62A9D /* libPods-GPS.a */; }; - 0835F8922441054A00E95AE3 /* RNBackgroundFetch+AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0835F8902441054900E95AE3 /* RNBackgroundFetch+AppDelegate.m */; }; 08445F4C24283AFF008754AC /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08445F4B24283AFF008754AC /* Accelerate.framework */; }; 08445F4E24283B0B008754AC /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08445F4D24283B0B008754AC /* CoreData.framework */; }; 08445F50242849C1008754AC /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08445F4F242849C1008754AC /* CoreGraphics.framework */; }; @@ -27,134 +26,51 @@ 08445F6824284A52008754AC /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08445F6724284A52008754AC /* UIKit.framework */; }; 12922BC2C16E4BCCB3F4EA44 /* IBMPlexSans-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 668BDA050EF549C6B0759425 /* IBMPlexSans-Bold.ttf */; }; 1360D7CA70F14549967C9912 /* IBMPlexMono-ThinItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3918820E06534ED8B0C3323C /* IBMPlexMono-ThinItalic.ttf */; }; - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 25004E4C90704C6B807B88C7 /* IBMPlexMono-MediumItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 71F26FBF5BDA423184286546 /* IBMPlexMono-MediumItalic.ttf */; }; 2606D1B2B11C4D419867361F /* IBMPlexSans-MediumItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A57577D96B89452694B53982 /* IBMPlexSans-MediumItalic.ttf */; }; 271089B024698720009AC76F /* LocationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 271089AF24698720009AC76F /* LocationTests.swift */; }; 271881C02461AF76001DE067 /* SafePathsSecureStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 271881BF2461AF76001DE067 /* SafePathsSecureStorage.swift */; }; 271881C32461BF19001DE067 /* RealmSecureStorageTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 271881C22461BF19001DE067 /* RealmSecureStorageTest.swift */; }; 276AB15C245291DE00D39B58 /* Location.swift in Sources */ = {isa = PBXBuildFile; fileRef = 276AB15B245291DE00D39B58 /* Location.swift */; }; - 27F931572459E28800E1024C /* SecureStorageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 27F931562459E28800E1024C /* SecureStorageManager.m */; }; - 27F9315A2459E2BD00E1024C /* SecureStorageManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27F931592459E2BD00E1024C /* SecureStorageManager.swift */; }; 3AD7E092BBC64F37879D040B /* IBMPlexMono.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 08F2A97BB10A459D962AB877 /* IBMPlexMono.ttf */; }; 3C14AE6C1C3B4428A17E7616 /* IBMPlexSans-LightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C98841A50F7B43E5987C2D4A /* IBMPlexSans-LightItalic.ttf */; }; 3E97D87FD88C42B79836C314 /* IBMPlexMono-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 8CA5CB7E2A134220AB62370B /* IBMPlexMono-Italic.ttf */; }; - 49C5264730115D459DEB65DA /* libPods-BT.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B7372C03D7AA19943931FCE4 /* libPods-BT.a */; }; 4B96C998B698BEF36609E7BA /* libPods-GPSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A9CA53C8BA83132D03AD65C /* libPods-GPSTests.a */; }; 522B6187A48A4AF3A676D5A0 /* IBMPlexSans-Thin.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1423A22FF9E04F88BEEE42D6 /* IBMPlexSans-Thin.ttf */; }; 527CA705E5514AF9BEAC9A2F /* IBMPlexMono-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6C8CF282C4264C88A4ED8ABF /* IBMPlexMono-Medium.ttf */; }; 57693D8BEF8A40C289F7168A /* IBMPlexSans-ExtraLightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3A582C62ABAC478BBD976037 /* IBMPlexSans-ExtraLightItalic.ttf */; }; 6858E21561F14E61A6A85280 /* IBMPlexSans-SemiBoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 747AA5DBBC684319A8273F2C /* IBMPlexSans-SemiBoldItalic.ttf */; }; 68D8970624809AA50091A254 /* Scrypt in Frameworks */ = {isa = PBXBuildFile; productRef = 68D8970524809AA50091A254 /* Scrypt */; }; - 68D8970C24809B4E0091A254 /* MAURLocation+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68D8970B24809B4E0091A254 /* MAURLocation+Extension.swift */; }; 68D8970F24809CEB0091A254 /* Geohash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68D8970E24809CEB0091A254 /* Geohash.swift */; }; - 68D8971224809DAE0091A254 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68D8971124809DAE0091A254 /* Array+Extension.swift */; }; - 68D8971524809E4B0091A254 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68D8971424809E4B0091A254 /* String+Extension.swift */; }; 68D8971824809F5C0091A254 /* MARULocation+ExtensionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68D8971724809F5C0091A254 /* MARULocation+ExtensionTests.swift */; }; 68D8971A24809F9C0091A254 /* GeohashTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68D8971924809F9C0091A254 /* GeohashTests.swift */; }; 68D8971C24809FB50091A254 /* Array+ExtensionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68D8971B24809FB50091A254 /* Array+ExtensionTests.swift */; }; - 68EFB21324856EC6003D84F3 /* Scrypt in Frameworks */ = {isa = PBXBuildFile; productRef = 68EFB21224856EC6003D84F3 /* Scrypt */; }; - 68EFB215248570C2003D84F3 /* Log.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68EFB214248570C2003D84F3 /* Log.swift */; }; 7A2281C376904F23BCA10FCA /* IBMPlexSans.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 89D241005D9647C4B0586127 /* IBMPlexSans.ttf */; }; 8A5B44AA7D724388B70F100B /* IBMPlexSans-ExtraLight.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 36B22BAB357B44949D2E168C /* IBMPlexSans-ExtraLight.ttf */; }; 8CB0C49FEC0F493D95420B30 /* IBMPlexMono-ExtraLight.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3053DF05D78949A09366B85D /* IBMPlexMono-ExtraLight.ttf */; }; 966BF87C9654448280E34CD8 /* IBMPlexSans-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 210E5F50B07048118538B796 /* IBMPlexSans-Italic.ttf */; }; A0DE2282B6A14351BC318062 /* IBMPlexMono-Thin.ttf in Resources */ = {isa = PBXBuildFile; fileRef = DF7DA7FE28F84E9EA7A6E4D4 /* IBMPlexMono-Thin.ttf */; }; A5EA4480D4CC4B468D4B4DDC /* IBMPlexMono-SemiBoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 997AE6137471448A99893BC8 /* IBMPlexMono-SemiBoldItalic.ttf */; }; - B01CF5299E2C4108F39C1232 /* libPods-BTTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D74339326986C2F8EE1F59BA /* libPods-BTTests.a */; }; - B2A58219244CE80C000F39A6 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = B2A5821B244CE80C000F39A6 /* InfoPlist.strings */; }; - B507A9EE24A197FF00E039D5 /* DownloadedPackage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B507A9ED24A197FF00E039D5 /* DownloadedPackage.swift */; }; - B507AA0724A2533200E039D5 /* DownloadPackage+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = B507AA0624A2533200E039D5 /* DownloadPackage+Helpers.swift */; }; - B52D88C0248F0FC00071ED51 /* SafePathsSecureStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 271881BF2461AF76001DE067 /* SafePathsSecureStorage.swift */; }; B52D88C2248F0FD90071ED51 /* GPSSecureStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52D88C1248F0FD90071ED51 /* GPSSecureStorage.swift */; }; - B52D88C4248F10FD0071ED51 /* BTSecureStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52D88C3248F10FD0071ED51 /* BTSecureStorage.swift */; }; - B54CBF26249A72E700218477 /* Region.swift in Sources */ = {isa = PBXBuildFile; fileRef = B54CBF25249A72E700218477 /* Region.swift */; }; - B54CBF32249A738500218477 /* IndexFileRequests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B54CBF31249A738500218477 /* IndexFileRequests.swift */; }; - B5582D47249943E5001458A9 /* ExposureEventEmitter.m in Sources */ = {isa = PBXBuildFile; fileRef = B5582D43249943DE001458A9 /* ExposureEventEmitter.m */; }; - B576CC4324993F5200CDD9D9 /* Date+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576CC3D24993F4C00CDD9D9 /* Date+Extensions.swift */; }; - B576CC4424993F5200CDD9D9 /* Encodable+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576CC4024993F4C00CDD9D9 /* Encodable+Extensions.swift */; }; - B596C0722488127D00943B79 /* ENPermissionsModule.m in Sources */ = {isa = PBXBuildFile; fileRef = B596C0712488127D00943B79 /* ENPermissionsModule.m */; }; - B59F4C3524BDF879007B09D5 /* ExposureHistoryModule.m in Sources */ = {isa = PBXBuildFile; fileRef = B59F4C3424BDF879007B09D5 /* ExposureHistoryModule.m */; }; - B59F4C3724BE0658007B09D5 /* List+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59F4C3624BE0658007B09D5 /* List+Extensions.swift */; }; - B5A6FD6E24BC9E69007D328C /* ExposureManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A6FD6A24BC9E54007D328C /* ExposureManagerTests.swift */; }; - B5C9723024B8A909007F4C0B /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C9722F24B8A909007F4C0B /* Constants.swift */; }; - B5E29D54249E3BE100E686DC /* ExposureManager+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E29D53249E3BE100E686DC /* ExposureManager+Extensions.swift */; }; - B5E79437249E666B00BD8596 /* Array+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E79436249E666B00BD8596 /* Array+Extensions.swift */; }; - B5FB3B43248BD61A001DB1D5 /* DebugMenuModule.m in Sources */ = {isa = PBXBuildFile; fileRef = B5FB3B42248BD61A001DB1D5 /* DebugMenuModule.m */; }; - B5FBB0BD2490339900433980 /* DiagnosisKeyUrlRequests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FBB0BC2490339900433980 /* DiagnosisKeyUrlRequests.swift */; }; - B5FBB0CF24916A4C00433980 /* DebugAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FBB0CE24916A4C00433980 /* DebugAction.swift */; }; - B5FBB0D124916A7200433980 /* Persisted.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FBB0D024916A7200433980 /* Persisted.swift */; }; - B5FBB0D324916B3600433980 /* String+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FBB0D224916B3600433980 /* String+Extensions.swift */; }; - B5FBB0D524916D8900433980 /* UserState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FBB0D424916D8900433980 /* UserState.swift */; }; - B5FBB0D724916DE100433980 /* Notification+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FBB0D624916DE100433980 /* Notification+Extensions.swift */; }; - B5FC37C12489B075006474EB /* APIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FC37C02489B075006474EB /* APIClient.swift */; }; - B5FC37C62489B1B3006474EB /* APIRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FC37C52489B1B3006474EB /* APIRequest.swift */; }; - B5FC37CA2489B1C1006474EB /* JSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FC37C92489B1C1006474EB /* JSON.swift */; }; - B5FC37CC2489B251006474EB /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FC37CB2489B251006474EB /* Result.swift */; }; - B5FC37CE2489B359006474EB /* TypeAliases.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FC37CD2489B359006474EB /* TypeAliases.swift */; }; - B5FC37D02489B3DE006474EB /* StructuredError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FC37CF2489B3DE006474EB /* StructuredError.swift */; }; - B5FC37D8248A784F006474EB /* DiagnosisKeyRequests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FC37D7248A784F006474EB /* DiagnosisKeyRequests.swift */; }; - B5FC37DD248A78D2006474EB /* ExposureKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FC37DC248A78D2006474EB /* ExposureKey.swift */; }; - B5FC37DF248A78FC006474EB /* ExposureConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FC37DE248A78FC006474EB /* ExposureConfiguration.swift */; }; - B5FC37E1248A7EED006474EB /* ExposureConfigurationRequests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FC37E0248A7EED006474EB /* ExposureConfigurationRequests.swift */; }; - B5FC37E3248A82AE006474EB /* Exposure.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FC37E2248A82AE006474EB /* Exposure.swift */; }; - B5FC37F6248A9968006474EB /* ENTemporaryExposureKey+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FC37F5248A9968006474EB /* ENTemporaryExposureKey+Extensions.swift */; }; BB916399F2D64D8D89249A05 /* IBMPlexSans-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5D98D5DA5B77459FACDD673D /* IBMPlexSans-Light.ttf */; }; BEA401E86568452A9E8FF210 /* IBMPlexSans-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C42F32AF52974EE8ADEE67B5 /* IBMPlexSans-Medium.ttf */; }; - C53FD08B24719AD1006D3268 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08445F6724284A52008754AC /* UIKit.framework */; }; - C53FD08C24719AD1006D3268 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08445F6524284A42008754AC /* SystemConfiguration.framework */; }; - C53FD08D24719AD1006D3268 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08445F6324284A36008754AC /* QuartzCore.framework */; }; - C53FD08E24719AD1006D3268 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08445F6124284A2C008754AC /* OpenGLES.framework */; }; - C53FD08F24719AD1006D3268 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 08445F5F24284A22008754AC /* libz.tbd */; }; - C53FD09024719AD1006D3268 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 08445F5D24284A15008754AC /* libc++.tbd */; }; - C53FD09124719AD1006D3268 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08445F5B24284A08008754AC /* ImageIO.framework */; }; - C53FD09224719AD1006D3268 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08445F59242849FD008754AC /* GLKit.framework */; }; - C53FD09324719AD1006D3268 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08445F57242849F1008754AC /* CoreText.framework */; }; - C53FD09424719AD1006D3268 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08445F55242849E5008754AC /* CoreTelephony.framework */; }; - C53FD09524719AD1006D3268 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08445F53242849D8008754AC /* CoreLocation.framework */; }; - C53FD09624719AD1006D3268 /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08445F51242849CF008754AC /* CoreImage.framework */; }; - C53FD09724719AD1006D3268 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08445F4F242849C1008754AC /* CoreGraphics.framework */; }; - C53FD09824719AD1006D3268 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08445F4D24283B0B008754AC /* CoreData.framework */; }; - C53FD09924719AD1006D3268 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08445F4B24283AFF008754AC /* Accelerate.framework */; }; - C53FD09E24719AD1006D3268 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; - C53FD09F24719AD1006D3268 /* IBMPlexMono-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = AE25A1CE9ED048DC83FAE7B0 /* IBMPlexMono-Bold.ttf */; }; - C53FD0A024719AD1006D3268 /* IBMPlexMono-BoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B4A262ECA724F9CAB9A2C70 /* IBMPlexMono-BoldItalic.ttf */; }; - C53FD0A124719AD1006D3268 /* IBMPlexMono-ExtraLight.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3053DF05D78949A09366B85D /* IBMPlexMono-ExtraLight.ttf */; }; - C53FD0A224719AD1006D3268 /* IBMPlexMono-ExtraLightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 167DF82F84E242A39CBEB042 /* IBMPlexMono-ExtraLightItalic.ttf */; }; - C53FD0A324719AD1006D3268 /* IBMPlexMono-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 8CA5CB7E2A134220AB62370B /* IBMPlexMono-Italic.ttf */; }; - C53FD0A424719AD1006D3268 /* IBMPlexMono-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E5C8EDCCEFCE4874A747E404 /* IBMPlexMono-Light.ttf */; }; - C53FD0A524719AD1006D3268 /* IBMPlexMono-LightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CF0DA9BBE69043D2BD80FF3B /* IBMPlexMono-LightItalic.ttf */; }; - C53FD0A624719AD1006D3268 /* IBMPlexMono-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6C8CF282C4264C88A4ED8ABF /* IBMPlexMono-Medium.ttf */; }; - C53FD0A724719AD1006D3268 /* IBMPlexMono-MediumItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 71F26FBF5BDA423184286546 /* IBMPlexMono-MediumItalic.ttf */; }; - C53FD0A824719AD1006D3268 /* IBMPlexMono-SemiBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BF6254720C1D4A3288ECE351 /* IBMPlexMono-SemiBold.ttf */; }; - C53FD0A924719AD1006D3268 /* IBMPlexMono-SemiBoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 997AE6137471448A99893BC8 /* IBMPlexMono-SemiBoldItalic.ttf */; }; - C53FD0AA24719AD1006D3268 /* IBMPlexMono-Thin.ttf in Resources */ = {isa = PBXBuildFile; fileRef = DF7DA7FE28F84E9EA7A6E4D4 /* IBMPlexMono-Thin.ttf */; }; - C53FD0AB24719AD1006D3268 /* IBMPlexMono-ThinItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3918820E06534ED8B0C3323C /* IBMPlexMono-ThinItalic.ttf */; }; - C53FD0AC24719AD1006D3268 /* IBMPlexMono.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 08F2A97BB10A459D962AB877 /* IBMPlexMono.ttf */; }; - C53FD0AD24719AD1006D3268 /* IBMPlexSans-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 668BDA050EF549C6B0759425 /* IBMPlexSans-Bold.ttf */; }; - C53FD0AE24719AD1006D3268 /* IBMPlexSans-BoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C6CBA4DBBF104AC1AB920555 /* IBMPlexSans-BoldItalic.ttf */; }; - C53FD0AF24719AD1006D3268 /* IBMPlexSans-ExtraLight.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 36B22BAB357B44949D2E168C /* IBMPlexSans-ExtraLight.ttf */; }; - C53FD0B024719AD1006D3268 /* IBMPlexSans-ExtraLightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3A582C62ABAC478BBD976037 /* IBMPlexSans-ExtraLightItalic.ttf */; }; - C53FD0B124719AD1006D3268 /* IBMPlexSans-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 210E5F50B07048118538B796 /* IBMPlexSans-Italic.ttf */; }; - C53FD0B224719AD1006D3268 /* IBMPlexSans-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5D98D5DA5B77459FACDD673D /* IBMPlexSans-Light.ttf */; }; - C53FD0B324719AD1006D3268 /* IBMPlexSans-LightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C98841A50F7B43E5987C2D4A /* IBMPlexSans-LightItalic.ttf */; }; - C53FD0B424719AD1006D3268 /* IBMPlexSans-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C42F32AF52974EE8ADEE67B5 /* IBMPlexSans-Medium.ttf */; }; - C53FD0B524719AD1006D3268 /* IBMPlexSans-MediumItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A57577D96B89452694B53982 /* IBMPlexSans-MediumItalic.ttf */; }; - C53FD0B624719AD1006D3268 /* IBMPlexSans-SemiBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4904B061CC24439783E20928 /* IBMPlexSans-SemiBold.ttf */; }; - C53FD0B724719AD1006D3268 /* IBMPlexSans-SemiBoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 747AA5DBBC684319A8273F2C /* IBMPlexSans-SemiBoldItalic.ttf */; }; - C53FD0B824719AD1006D3268 /* IBMPlexSans-Thin.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1423A22FF9E04F88BEEE42D6 /* IBMPlexSans-Thin.ttf */; }; - C53FD0B924719AD1006D3268 /* IBMPlexSans-ThinItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FF7D8132928346A2904ED363 /* IBMPlexSans-ThinItalic.ttf */; }; - C53FD0BA24719AD1006D3268 /* IBMPlexSans.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 89D241005D9647C4B0586127 /* IBMPlexSans.ttf */; }; - C550A66624B7906F002CA7F2 /* ExposureKeyModule.m in Sources */ = {isa = PBXBuildFile; fileRef = C550A66524B7906F002CA7F2 /* ExposureKeyModule.m */; }; - C58463E42486C51100BCB842 /* ExposureManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C58463E32486C51100BCB842 /* ExposureManager.swift */; }; - C5850A64247D5A41007A596B /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C5850A63247D5A41007A596B /* Images.xcassets */; }; - C5AA24D824768FFF00BA0A99 /* COVIDSafePathsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* COVIDSafePathsTests.m */; }; - C5C850C7248014F700A494CA /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C5C850C6248014F700A494CA /* main.m */; }; - C5C850CA2480156200A494CA /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C5C850C92480156200A494CA /* AppDelegate.m */; }; - C5EF723724864F8500AA39D5 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C5EF72202485D0E600AA39D5 /* main.m */; }; D43E27B6F1E045D798270A11 /* IBMPlexSans-SemiBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4904B061CC24439783E20928 /* IBMPlexSans-SemiBold.ttf */; }; + D4B4A85F24C8A16400E00A99 /* Log.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4B4A85A24C8A16400E00A99 /* Log.swift */; }; + D4B4A86024C8A16400E00A99 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = D4B4A85B24C8A16400E00A99 /* main.m */; }; + D4B4A86124C8A16400E00A99 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D4B4A85D24C8A16400E00A99 /* AppDelegate.m */; }; + D4B4A88B24C8A17300E00A99 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D4B4A86424C8A17300E00A99 /* Localizable.strings */; }; + D4B4A88C24C8A17300E00A99 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D4B4A86624C8A17300E00A99 /* InfoPlist.strings */; }; + D4B4A89124C8A18E00E00A99 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = D4B4A88E24C8A18E00E00A99 /* LaunchScreen.xib */; }; + D4B4A89224C8A18E00E00A99 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D4B4A89024C8A18E00E00A99 /* Images.xcassets */; }; + D4B4A8A024C8A1A700E00A99 /* MAURLocation+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4B4A89424C8A1A700E00A99 /* MAURLocation+Extension.swift */; }; + D4B4A8A124C8A1A700E00A99 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4B4A89524C8A1A700E00A99 /* String+Extension.swift */; }; + D4B4A8A224C8A1A700E00A99 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4B4A89624C8A1A700E00A99 /* Array+Extension.swift */; }; + D4B4A8A324C8A1A700E00A99 /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = D4B4A89824C8A1A700E00A99 /* Debug.xcconfig */; }; + D4B4A8A424C8A1A700E00A99 /* Release.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = D4B4A89924C8A1A700E00A99 /* Release.xcconfig */; }; + D4B4A8A524C8A1A700E00A99 /* Version.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = D4B4A89A24C8A1A700E00A99 /* Version.xcconfig */; }; + D4B4A8A624C8A1A700E00A99 /* Staging.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = D4B4A89B24C8A1A700E00A99 /* Staging.xcconfig */; }; + D4B4A8A724C8A1A700E00A99 /* SecureStorageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D4B4A89D24C8A1A700E00A99 /* SecureStorageManager.m */; }; + D4B4A8A824C8A1A700E00A99 /* SecureStorageManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4B4A89F24C8A1A700E00A99 /* SecureStorageManager.swift */; }; D668C3DAB08B4FCBB01E8C2D /* IBMPlexMono-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E5C8EDCCEFCE4874A747E404 /* IBMPlexMono-Light.ttf */; }; D7E714F18C9C4172BC01ADF8 /* IBMPlexMono-SemiBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BF6254720C1D4A3288ECE351 /* IBMPlexMono-SemiBold.ttf */; }; DED6BB86437B4610B1CD3302 /* IBMPlexSans-ThinItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FF7D8132928346A2904ED363 /* IBMPlexSans-ThinItalic.ttf */; }; @@ -180,13 +96,6 @@ remoteGlobalIDString = 3D7682761D8E76B80014119E; remoteInfo = SplashScreen; }; - C5AA24E32476901700BA0A99 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; - proxyType = 1; - remoteGlobalIDString = C53FD07D24719AD1006D3268; - remoteInfo = BT; - }; C5C850E024804A0300A494CA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = C5C850DC24804A0300A494CA /* RCTBackgroundGeolocation.xcodeproj */; @@ -197,11 +106,9 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; 00E356EE1AD99517003FC87E /* GPSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GPSTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 00E356F21AD99517003FC87E /* COVIDSafePathsTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = COVIDSafePathsTests.m; sourceTree = ""; }; - 0835F8902441054900E95AE3 /* RNBackgroundFetch+AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "RNBackgroundFetch+AppDelegate.m"; path = "../../node_modules/react-native-background-fetch/ios/RNBackgroundFetch/RNBackgroundFetch+AppDelegate.m"; sourceTree = ""; }; 08445F4324283A2F008754AC /* GoogleMapsBase.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleMapsBase.framework; path = "GoogleMaps-3.8.0/Base/Frameworks/GoogleMapsBase.framework"; sourceTree = ""; }; 08445F4524283A40008754AC /* GoogleMaps.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleMaps.framework; path = "GoogleMaps-3.8.0/Maps/Frameworks/GoogleMaps.framework"; sourceTree = ""; }; 08445F4724283A46008754AC /* GoogleMapsCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleMapsCore.framework; path = "GoogleMaps-3.8.0/Maps/Frameworks/GoogleMapsCore.framework"; sourceTree = ""; }; @@ -224,12 +131,8 @@ 08F2A97BB10A459D962AB877 /* IBMPlexMono.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = IBMPlexMono.ttf; path = ../shared/assets/fonts/IBMPlexMono.ttf; sourceTree = ""; }; 0AB0A08F38494307BF6F0EBC /* IBMPlexMono-ThinItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexMono-ThinItalic.ttf"; path = "../app/assets/fonts/IBMPlexMono-ThinItalic.ttf"; sourceTree = ""; }; 0DD29292C60B45029B7823D6 /* IBMPlexSans-ExtraLight.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexSans-ExtraLight.ttf"; path = "../app/assets/fonts/IBMPlexSans-ExtraLight.ttf"; sourceTree = ""; }; + 0EA86B049D0BB9D221E6F627 /* Pods-GPSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GPSTests.debug.xcconfig"; path = "Target Support Files/Pods-GPSTests/Pods-GPSTests.debug.xcconfig"; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* GPS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GPS.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 141B3702EDB77175BCFE1BA2 /* Pods-BTTests.release-bt.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BTTests.release-bt.xcconfig"; path = "Target Support Files/Pods-BTTests/Pods-BTTests.release-bt.xcconfig"; sourceTree = ""; }; 1423A22FF9E04F88BEEE42D6 /* IBMPlexSans-Thin.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexSans-Thin.ttf"; path = "../shared/assets/fonts/IBMPlexSans-Thin.ttf"; sourceTree = ""; }; 145476A32A7724DCC004C292 /* Pods-GPS.staging-gps.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GPS.staging-gps.xcconfig"; path = "Target Support Files/Pods-GPS/Pods-GPS.staging-gps.xcconfig"; sourceTree = ""; }; @@ -241,8 +144,6 @@ 271881BF2461AF76001DE067 /* SafePathsSecureStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafePathsSecureStorage.swift; sourceTree = ""; }; 271881C22461BF19001DE067 /* RealmSecureStorageTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RealmSecureStorageTest.swift; sourceTree = ""; }; 276AB15B245291DE00D39B58 /* Location.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Location.swift; sourceTree = ""; }; - 27F931562459E28800E1024C /* SecureStorageManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SecureStorageManager.m; sourceTree = ""; }; - 27F931592459E2BD00E1024C /* SecureStorageManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureStorageManager.swift; sourceTree = ""; }; 2CE99177C2D5C9E6462639A1 /* Pods-GPS.staging-bt.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GPS.staging-bt.xcconfig"; path = "Target Support Files/Pods-GPS/Pods-GPS.staging-bt.xcconfig"; sourceTree = ""; }; 2E9077612439A903005C98DE /* SplashScreen.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SplashScreen.xcodeproj; path = "../node_modules/react-native-splash-screen/ios/SplashScreen.xcodeproj"; sourceTree = ""; }; 2F42C67AFB6A35F87118053B /* Pods-GPSTests.release-gps.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GPSTests.release-gps.xcconfig"; path = "Target Support Files/Pods-GPSTests/Pods-GPSTests.release-gps.xcconfig"; sourceTree = ""; }; @@ -257,6 +158,7 @@ 450B58D199444B7D8DEE6A0A /* IBMPlexSans-Italic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexSans-Italic.ttf"; path = "../app/assets/fonts/IBMPlexSans-Italic.ttf"; sourceTree = ""; }; 4904B061CC24439783E20928 /* IBMPlexSans-SemiBold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexSans-SemiBold.ttf"; path = "../shared/assets/fonts/IBMPlexSans-SemiBold.ttf"; sourceTree = ""; }; 4E3ED4D343165DDCF8CF6F14 /* Pods-GPS.debug-bt.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GPS.debug-bt.xcconfig"; path = "Target Support Files/Pods-GPS/Pods-GPS.debug-bt.xcconfig"; sourceTree = ""; }; + 500296CFBBD33FA70F4403EF /* Pods-GPS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GPS.debug.xcconfig"; path = "Target Support Files/Pods-GPS/Pods-GPS.debug.xcconfig"; sourceTree = ""; }; 530526E48807C46118B2B9B7 /* Pods-GPSTests.staging-bt.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GPSTests.staging-bt.xcconfig"; path = "Target Support Files/Pods-GPSTests/Pods-GPSTests.staging-bt.xcconfig"; sourceTree = ""; }; 53A0C1C57CED4660822FE560 /* IBMPlexMono-Medium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexMono-Medium.ttf"; path = "../app/assets/fonts/IBMPlexMono-Medium.ttf"; sourceTree = ""; }; 542F7FB7FF534DC2A7D428AE /* IBMPlexSans.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = file; name = IBMPlexSans.ttf; path = ../app/assets/fonts/IBMPlexSans.ttf; sourceTree = ""; }; @@ -265,17 +167,15 @@ 56E8CDA04E244E24A9781CA8 /* IBMPlexSans-SemiBoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexSans-SemiBoldItalic.ttf"; path = "../app/assets/fonts/IBMPlexSans-SemiBoldItalic.ttf"; sourceTree = ""; }; 5D1446DDD4674BFAA520C0E8 /* IBMPlexMono-ExtraLight.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexMono-ExtraLight.ttf"; path = "../app/assets/fonts/IBMPlexMono-ExtraLight.ttf"; sourceTree = ""; }; 5D98D5DA5B77459FACDD673D /* IBMPlexSans-Light.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexSans-Light.ttf"; path = "../shared/assets/fonts/IBMPlexSans-Light.ttf"; sourceTree = ""; }; + 606EB844E7D64AB33707A02E /* Pods-GPSTests.staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GPSTests.staging.xcconfig"; path = "Target Support Files/Pods-GPSTests/Pods-GPSTests.staging.xcconfig"; sourceTree = ""; }; 667ABCBB6E3FBF03F44D3672 /* Pods-GPS.debug-gps.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GPS.debug-gps.xcconfig"; path = "Target Support Files/Pods-GPS/Pods-GPS.debug-gps.xcconfig"; sourceTree = ""; }; 668BDA050EF549C6B0759425 /* IBMPlexSans-Bold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexSans-Bold.ttf"; path = "../shared/assets/fonts/IBMPlexSans-Bold.ttf"; sourceTree = ""; }; 67DC43BDE1EF8997F26F2108 /* Pods-BT.release-bt.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BT.release-bt.xcconfig"; path = "Target Support Files/Pods-BT/Pods-BT.release-bt.xcconfig"; sourceTree = ""; }; - 68D8970B24809B4E0091A254 /* MAURLocation+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MAURLocation+Extension.swift"; sourceTree = ""; }; 68D8970E24809CEB0091A254 /* Geohash.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Geohash.swift; sourceTree = ""; }; - 68D8971124809DAE0091A254 /* Array+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Array+Extension.swift"; sourceTree = ""; }; - 68D8971424809E4B0091A254 /* String+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Extension.swift"; sourceTree = ""; }; 68D8971724809F5C0091A254 /* MARULocation+ExtensionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MARULocation+ExtensionTests.swift"; sourceTree = ""; }; 68D8971924809F9C0091A254 /* GeohashTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GeohashTests.swift; sourceTree = ""; }; 68D8971B24809FB50091A254 /* Array+ExtensionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Array+ExtensionTests.swift"; sourceTree = ""; }; - 68EFB214248570C2003D84F3 /* Log.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Log.swift; sourceTree = ""; }; + 69C0CB99A1291E1928585D63 /* Pods-GPS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GPS.release.xcconfig"; path = "Target Support Files/Pods-GPS/Pods-GPS.release.xcconfig"; sourceTree = ""; }; 6A9CA53C8BA83132D03AD65C /* libPods-GPSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-GPSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 6BA94CE8425944B8990A49B3 /* IBMPlexSans-Bold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexSans-Bold.ttf"; path = "../app/assets/fonts/IBMPlexSans-Bold.ttf"; sourceTree = ""; }; 6C8CF282C4264C88A4ED8ABF /* IBMPlexMono-Medium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexMono-Medium.ttf"; path = "../shared/assets/fonts/IBMPlexMono-Medium.ttf"; sourceTree = ""; }; @@ -283,6 +183,7 @@ 71F26FBF5BDA423184286546 /* IBMPlexMono-MediumItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexMono-MediumItalic.ttf"; path = "../shared/assets/fonts/IBMPlexMono-MediumItalic.ttf"; sourceTree = ""; }; 747AA5DBBC684319A8273F2C /* IBMPlexSans-SemiBoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexSans-SemiBoldItalic.ttf"; path = "../shared/assets/fonts/IBMPlexSans-SemiBoldItalic.ttf"; sourceTree = ""; }; 751F8AE184B9709A8C3817BF /* Pods-BTTests.staging-gps.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BTTests.staging-gps.xcconfig"; path = "Target Support Files/Pods-BTTests/Pods-BTTests.staging-gps.xcconfig"; sourceTree = ""; }; + 78335934CC8BDA43BF1F4759 /* Pods-GPS.staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GPS.staging.xcconfig"; path = "Target Support Files/Pods-GPS/Pods-GPS.staging.xcconfig"; sourceTree = ""; }; 844C843F62B5585C2F2346EA /* Pods-BT.staging-bt.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BT.staging-bt.xcconfig"; path = "Target Support Files/Pods-BT/Pods-BT.staging-bt.xcconfig"; sourceTree = ""; }; 89D241005D9647C4B0586127 /* IBMPlexSans.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = IBMPlexSans.ttf; path = ../shared/assets/fonts/IBMPlexSans.ttf; sourceTree = ""; }; 8CA5CB7E2A134220AB62370B /* IBMPlexMono-Italic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexMono-Italic.ttf"; path = "../shared/assets/fonts/IBMPlexMono-Italic.ttf"; sourceTree = ""; }; @@ -295,106 +196,85 @@ A74024E269FF63C56B1025EA /* Pods-BTTests.release-gps.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BTTests.release-gps.xcconfig"; path = "Target Support Files/Pods-BTTests/Pods-BTTests.release-gps.xcconfig"; sourceTree = ""; }; AE25A1CE9ED048DC83FAE7B0 /* IBMPlexMono-Bold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexMono-Bold.ttf"; path = "../shared/assets/fonts/IBMPlexMono-Bold.ttf"; sourceTree = ""; }; B27E26E7076641EFB4386943 /* IBMPlexSans-ExtraLightItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexSans-ExtraLightItalic.ttf"; path = "../app/assets/fonts/IBMPlexSans-ExtraLightItalic.ttf"; sourceTree = ""; }; - B2A58213244CE76C000F39A6 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; - B2A58216244CE778000F39A6 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = ""; }; - B2A5821A244CE80C000F39A6 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - B2A5821C244CE8D6000F39A6 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; }; - B2A5821D244CE988000F39A6 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/InfoPlist.strings; sourceTree = ""; }; - B2A5821E244CE988000F39A6 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Localizable.strings; sourceTree = ""; }; - B2A5821F244CE9EB000F39A6 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/InfoPlist.strings; sourceTree = ""; }; - B2A58220244CE9EB000F39A6 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/Localizable.strings; sourceTree = ""; }; - B2A58221244CE9F7000F39A6 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/InfoPlist.strings; sourceTree = ""; }; - B2A58222244CE9F7000F39A6 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/Localizable.strings; sourceTree = ""; }; - B2A58223244CEA20000F39A6 /* fr-HT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "fr-HT"; path = "fr-HT.lproj/InfoPlist.strings"; sourceTree = ""; }; - B2A58224244CEA20000F39A6 /* fr-HT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "fr-HT"; path = "fr-HT.lproj/Localizable.strings"; sourceTree = ""; }; - B2A58225244CEA6C000F39A6 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/InfoPlist.strings"; sourceTree = ""; }; - B2A58226244CEA6C000F39A6 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = ""; }; - B2A58227244CEA7B000F39A6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; }; - B2A58228244CEA7B000F39A6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; - B2A58229244CEA84000F39A6 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; }; - B2A5822A244CEA84000F39A6 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; }; - B2A5822B244CEA8F000F39A6 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/InfoPlist.strings; sourceTree = ""; }; - B2A5822C244CEA8F000F39A6 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Localizable.strings; sourceTree = ""; }; - B2A5822D244CEA9F000F39A6 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/InfoPlist.strings"; sourceTree = ""; }; - B2A5822E244CEA9F000F39A6 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = ""; }; B3D0B8224679467D85423742 /* IBMPlexMono-Italic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexMono-Italic.ttf"; path = "../app/assets/fonts/IBMPlexMono-Italic.ttf"; sourceTree = ""; }; B3ED5E905B1401FCBA420CFF /* Pods-GPSTests.debug-gps.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GPSTests.debug-gps.xcconfig"; path = "Target Support Files/Pods-GPSTests/Pods-GPSTests.debug-gps.xcconfig"; sourceTree = ""; }; - B507A9ED24A197FF00E039D5 /* DownloadedPackage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DownloadedPackage.swift; sourceTree = ""; }; - B507AA0624A2533200E039D5 /* DownloadPackage+Helpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DownloadPackage+Helpers.swift"; sourceTree = ""; }; B52D88C1248F0FD90071ED51 /* GPSSecureStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GPSSecureStorage.swift; sourceTree = ""; }; - B52D88C3248F10FD0071ED51 /* BTSecureStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BTSecureStorage.swift; sourceTree = ""; }; - B54CBF25249A72E700218477 /* Region.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Region.swift; sourceTree = ""; }; - B54CBF31249A738500218477 /* IndexFileRequests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IndexFileRequests.swift; sourceTree = ""; }; - B5582D43249943DE001458A9 /* ExposureEventEmitter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ExposureEventEmitter.m; sourceTree = ""; }; - B576CC3D24993F4C00CDD9D9 /* Date+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Date+Extensions.swift"; sourceTree = ""; }; - B576CC4024993F4C00CDD9D9 /* Encodable+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Encodable+Extensions.swift"; sourceTree = ""; }; - B596C0712488127D00943B79 /* ENPermissionsModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ENPermissionsModule.m; sourceTree = ""; }; - B59F4C3424BDF879007B09D5 /* ExposureHistoryModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ExposureHistoryModule.m; sourceTree = ""; }; - B59F4C3624BE0658007B09D5 /* List+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "List+Extensions.swift"; sourceTree = ""; }; B5A6FD6A24BC9E54007D328C /* ExposureManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExposureManagerTests.swift; sourceTree = ""; }; B5C490A72498F84000588A5F /* Region.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Region.swift; sourceTree = ""; }; - B5C9722F24B8A909007F4C0B /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; - B5E29D53249E3BE100E686DC /* ExposureManager+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ExposureManager+Extensions.swift"; sourceTree = ""; }; - B5E79436249E666B00BD8596 /* Array+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Array+Extensions.swift"; sourceTree = ""; }; - B5FB3B42248BD61A001DB1D5 /* DebugMenuModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DebugMenuModule.m; sourceTree = ""; }; - B5FBB0BC2490339900433980 /* DiagnosisKeyUrlRequests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiagnosisKeyUrlRequests.swift; sourceTree = ""; }; - B5FBB0CE24916A4C00433980 /* DebugAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DebugAction.swift; sourceTree = ""; }; - B5FBB0D024916A7200433980 /* Persisted.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Persisted.swift; sourceTree = ""; }; - B5FBB0D224916B3600433980 /* String+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Extensions.swift"; sourceTree = ""; }; - B5FBB0D424916D8900433980 /* UserState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserState.swift; sourceTree = ""; }; - B5FBB0D624916DE100433980 /* Notification+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Notification+Extensions.swift"; sourceTree = ""; }; - B5FC37C02489B075006474EB /* APIClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIClient.swift; sourceTree = ""; }; - B5FC37C52489B1B3006474EB /* APIRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIRequest.swift; sourceTree = ""; }; - B5FC37C92489B1C1006474EB /* JSON.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JSON.swift; sourceTree = ""; }; - B5FC37CB2489B251006474EB /* Result.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Result.swift; sourceTree = ""; }; - B5FC37CD2489B359006474EB /* TypeAliases.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypeAliases.swift; sourceTree = ""; }; - B5FC37CF2489B3DE006474EB /* StructuredError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StructuredError.swift; sourceTree = ""; }; - B5FC37D7248A784F006474EB /* DiagnosisKeyRequests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiagnosisKeyRequests.swift; sourceTree = ""; }; - B5FC37DC248A78D2006474EB /* ExposureKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExposureKey.swift; sourceTree = ""; }; - B5FC37DE248A78FC006474EB /* ExposureConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExposureConfiguration.swift; sourceTree = ""; }; - B5FC37E0248A7EED006474EB /* ExposureConfigurationRequests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExposureConfigurationRequests.swift; sourceTree = ""; }; - B5FC37E2248A82AE006474EB /* Exposure.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Exposure.swift; sourceTree = ""; }; - B5FC37F5248A9968006474EB /* ENTemporaryExposureKey+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ENTemporaryExposureKey+Extensions.swift"; sourceTree = ""; }; B7372C03D7AA19943931FCE4 /* libPods-BT.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-BT.a"; sourceTree = BUILT_PRODUCTS_DIR; }; BF6254720C1D4A3288ECE351 /* IBMPlexMono-SemiBold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexMono-SemiBold.ttf"; path = "../shared/assets/fonts/IBMPlexMono-SemiBold.ttf"; sourceTree = ""; }; BFBEC306069776E19FE33586 /* Pods-BT.debug-gps.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BT.debug-gps.xcconfig"; path = "Target Support Files/Pods-BT/Pods-BT.debug-gps.xcconfig"; sourceTree = ""; }; C42F32AF52974EE8ADEE67B5 /* IBMPlexSans-Medium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexSans-Medium.ttf"; path = "../shared/assets/fonts/IBMPlexSans-Medium.ttf"; sourceTree = ""; }; - C504FDC1249D15260024219C /* BT-Production.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "BT-Production.entitlements"; sourceTree = ""; }; - C504FDC4249D155D0024219C /* BT-Development.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "BT-Development.entitlements"; sourceTree = ""; }; - C504FDC5249D15990024219C /* GPS-Production.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "GPS-Production.entitlements"; sourceTree = ""; }; - C53FD0C124719AD1006D3268 /* BT.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BT.app; sourceTree = BUILT_PRODUCTS_DIR; }; - C53FD0C224719AD2006D3268 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - C550A66524B7906F002CA7F2 /* ExposureKeyModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ExposureKeyModule.m; sourceTree = ""; }; - C56190A12485332E009A6756 /* BT-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BT-Bridging-Header.h"; sourceTree = ""; }; - C58463E32486C51100BCB842 /* ExposureManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExposureManager.swift; sourceTree = ""; }; - C5850A63247D5A41007A596B /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - C5AA24E124768FFF00BA0A99 /* BTTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BTTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - C5C850C6248014F700A494CA /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - C5C850C92480156200A494CA /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = SOURCE_ROOT; }; C5C850DC24804A0300A494CA /* RCTBackgroundGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTBackgroundGeolocation.xcodeproj; path = "../node_modules/@mauron85/react-native-background-geolocation/ios/RCTBackgroundGeolocation.xcodeproj"; sourceTree = ""; }; C5C850E324804A5200A494CA /* libBackgroundGeolocation.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libBackgroundGeolocation.a; sourceTree = BUILT_PRODUCTS_DIR; }; C5C850F8248125A800A494CA /* libBackgroundGeolocation.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libBackgroundGeolocation.a; sourceTree = BUILT_PRODUCTS_DIR; }; - C5C850FB24812AAB00A494CA /* GPS-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "GPS-Bridging-Header.h"; sourceTree = ""; }; - C5EF72202485D0E600AA39D5 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = main.m; path = bridge/main.m; sourceTree = ""; }; C6CBA4DBBF104AC1AB920555 /* IBMPlexSans-BoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexSans-BoldItalic.ttf"; path = "../shared/assets/fonts/IBMPlexSans-BoldItalic.ttf"; sourceTree = ""; }; C840FB7884D64E6FA97ECC2C /* IBMPlexSans-Medium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexSans-Medium.ttf"; path = "../app/assets/fonts/IBMPlexSans-Medium.ttf"; sourceTree = ""; }; C98841A50F7B43E5987C2D4A /* IBMPlexSans-LightItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexSans-LightItalic.ttf"; path = "../shared/assets/fonts/IBMPlexSans-LightItalic.ttf"; sourceTree = ""; }; CC1EBAC6486247BFA5EF04EB /* IBMPlexSans-SemiBold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexSans-SemiBold.ttf"; path = "../app/assets/fonts/IBMPlexSans-SemiBold.ttf"; sourceTree = ""; }; CF0DA9BBE69043D2BD80FF3B /* IBMPlexMono-LightItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexMono-LightItalic.ttf"; path = "../shared/assets/fonts/IBMPlexMono-LightItalic.ttf"; sourceTree = ""; }; D04E298A8C92F0D267143C3A /* Pods-BTTests.staging-bt.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BTTests.staging-bt.xcconfig"; path = "Target Support Files/Pods-BTTests/Pods-BTTests.staging-bt.xcconfig"; sourceTree = ""; }; - D4CB500824A66A2900405D61 /* Version.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = ""; }; - D4CB500924A66ACB00405D61 /* Debug-GPS.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Debug-GPS.xcconfig"; sourceTree = ""; }; - D4CB500A24A66B6400405D61 /* Staging-GPS.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Staging-GPS.xcconfig"; sourceTree = ""; }; - D4CB500B24A66B8700405D61 /* Release-GPS.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Release-GPS.xcconfig"; sourceTree = ""; }; - D4CB502824A66C5D00405D61 /* Version.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = ""; }; - D4CB502A24A66C7500405D61 /* Debug-BT.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Debug-BT.xcconfig"; sourceTree = ""; }; - D4CB502B24A66C7500405D61 /* Release-BT.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Release-BT.xcconfig"; sourceTree = ""; }; - D4CB502C24A66C7500405D61 /* Staging-BT.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Staging-BT.xcconfig"; sourceTree = ""; }; + D4B4A85924C8A16400E00A99 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + D4B4A85A24C8A16400E00A99 /* Log.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Log.swift; sourceTree = ""; }; + D4B4A85B24C8A16400E00A99 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + D4B4A85C24C8A16400E00A99 /* GPS-Production.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = "GPS-Production.entitlements"; sourceTree = ""; }; + D4B4A85D24C8A16400E00A99 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + D4B4A85E24C8A16400E00A99 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D4B4A86524C8A17300E00A99 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = ""; }; + D4B4A86724C8A17300E00A99 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/InfoPlist.strings; sourceTree = ""; }; + D4B4A86824C8A17300E00A99 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; + D4B4A86924C8A17300E00A99 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + D4B4A86A24C8A17300E00A99 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; }; + D4B4A86B24C8A17300E00A99 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; }; + D4B4A86C24C8A17300E00A99 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Localizable.strings; sourceTree = ""; }; + D4B4A86D24C8A17300E00A99 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/InfoPlist.strings; sourceTree = ""; }; + D4B4A86E24C8A17300E00A99 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = ""; }; + D4B4A86F24C8A17300E00A99 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; }; + D4B4A87024C8A17300E00A99 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Localizable.strings; sourceTree = ""; }; + D4B4A87124C8A17300E00A99 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/InfoPlist.strings; sourceTree = ""; }; + D4B4A87224C8A17300E00A99 /* ml */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ml; path = ml.lproj/Localizable.strings; sourceTree = ""; }; + D4B4A87324C8A17300E00A99 /* ml */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ml; path = ml.lproj/InfoPlist.strings; sourceTree = ""; }; + D4B4A87424C8A17300E00A99 /* fr-HT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "fr-HT"; path = "fr-HT.lproj/Localizable.strings"; sourceTree = ""; }; + D4B4A87524C8A17300E00A99 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = ""; }; + D4B4A87624C8A17300E00A99 /* es-PR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "es-PR"; path = "es-PR.lproj/Localizable.strings"; sourceTree = ""; }; + D4B4A87724C8A17300E00A99 /* es-PR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "es-PR"; path = "es-PR.lproj/InfoPlist.strings"; sourceTree = ""; }; + D4B4A87824C8A17300E00A99 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = ""; }; + D4B4A87924C8A17300E00A99 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = ""; }; + D4B4A87A24C8A17300E00A99 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = ""; }; + D4B4A87B24C8A17300E00A99 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/InfoPlist.strings"; sourceTree = ""; }; + D4B4A87C24C8A17300E00A99 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Localizable.strings; sourceTree = ""; }; + D4B4A87D24C8A17300E00A99 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; + D4B4A87E24C8A17300E00A99 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; }; + D4B4A87F24C8A17300E00A99 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; }; + D4B4A88024C8A17300E00A99 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = ""; }; + D4B4A88124C8A17300E00A99 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/Localizable.strings; sourceTree = ""; }; + D4B4A88224C8A17300E00A99 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = ""; }; + D4B4A88324C8A17300E00A99 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = ""; }; + D4B4A88424C8A17300E00A99 /* zz-ZZ */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zz-ZZ"; path = "zz-ZZ.lproj/Localizable.strings"; sourceTree = ""; }; + D4B4A88524C8A17300E00A99 /* zz-ZZ */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zz-ZZ"; path = "zz-ZZ.lproj/InfoPlist.strings"; sourceTree = ""; }; + D4B4A88624C8A17300E00A99 /* ht */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ht; path = ht.lproj/Localizable.strings; sourceTree = ""; }; + D4B4A88724C8A17300E00A99 /* ht */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ht; path = ht.lproj/InfoPlist.strings; sourceTree = ""; }; + D4B4A88824C8A17300E00A99 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/Localizable.strings; sourceTree = ""; }; + D4B4A88924C8A17300E00A99 /* tl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tl; path = tl.lproj/Localizable.strings; sourceTree = ""; }; + D4B4A88A24C8A17300E00A99 /* tl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tl; path = tl.lproj/InfoPlist.strings; sourceTree = ""; }; + D4B4A88F24C8A18E00E00A99 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + D4B4A89024C8A18E00E00A99 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + D4B4A89424C8A1A700E00A99 /* MAURLocation+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "MAURLocation+Extension.swift"; sourceTree = ""; }; + D4B4A89524C8A1A700E00A99 /* String+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+Extension.swift"; sourceTree = ""; }; + D4B4A89624C8A1A700E00A99 /* Array+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Array+Extension.swift"; sourceTree = ""; }; + D4B4A89824C8A1A700E00A99 /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; + D4B4A89924C8A1A700E00A99 /* Release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + D4B4A89A24C8A1A700E00A99 /* Version.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = ""; }; + D4B4A89B24C8A1A700E00A99 /* Staging.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Staging.xcconfig; sourceTree = ""; }; + D4B4A89D24C8A1A700E00A99 /* SecureStorageManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SecureStorageManager.m; sourceTree = ""; }; + D4B4A89E24C8A1A700E00A99 /* GPS-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GPS-Bridging-Header.h"; sourceTree = ""; }; + D4B4A89F24C8A1A700E00A99 /* SecureStorageManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureStorageManager.swift; sourceTree = ""; }; D5A05B8E61DC402E8753A057 /* IBMPlexMono-ExtraLightItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexMono-ExtraLightItalic.ttf"; path = "../app/assets/fonts/IBMPlexMono-ExtraLightItalic.ttf"; sourceTree = ""; }; D5CD9AD3FED744E6B5F0CEF9 /* IBMPlexMono.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = file; name = IBMPlexMono.ttf; path = ../app/assets/fonts/IBMPlexMono.ttf; sourceTree = ""; }; D5DFB90A472F4881A3C888C3 /* IBMPlexSans-ThinItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexSans-ThinItalic.ttf"; path = "../app/assets/fonts/IBMPlexSans-ThinItalic.ttf"; sourceTree = ""; }; D74339326986C2F8EE1F59BA /* libPods-BTTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-BTTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; DF7DA7FE28F84E9EA7A6E4D4 /* IBMPlexMono-Thin.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexMono-Thin.ttf"; path = "../shared/assets/fonts/IBMPlexMono-Thin.ttf"; sourceTree = ""; }; + E2D33B0C827A4C85EDDD6272 /* Pods-GPSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GPSTests.release.xcconfig"; path = "Target Support Files/Pods-GPSTests/Pods-GPSTests.release.xcconfig"; sourceTree = ""; }; E5C8EDCCEFCE4874A747E404 /* IBMPlexMono-Light.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexMono-Light.ttf"; path = "../shared/assets/fonts/IBMPlexMono-Light.ttf"; sourceTree = ""; }; E872D3374DDA4AA29E3D8511 /* IBMPlexSans-Thin.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "IBMPlexSans-Thin.ttf"; path = "../app/assets/fonts/IBMPlexSans-Thin.ttf"; sourceTree = ""; }; EB49F7B51E4014329A4AA36D /* Pods-BT.staging-gps.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BT.staging-gps.xcconfig"; path = "Target Support Files/Pods-BT/Pods-BT.staging-gps.xcconfig"; sourceTree = ""; }; @@ -446,38 +326,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - C53FD08A24719AD1006D3268 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - C53FD08B24719AD1006D3268 /* UIKit.framework in Frameworks */, - C53FD08C24719AD1006D3268 /* SystemConfiguration.framework in Frameworks */, - C53FD08D24719AD1006D3268 /* QuartzCore.framework in Frameworks */, - C53FD08E24719AD1006D3268 /* OpenGLES.framework in Frameworks */, - C53FD08F24719AD1006D3268 /* libz.tbd in Frameworks */, - C53FD09024719AD1006D3268 /* libc++.tbd in Frameworks */, - C53FD09124719AD1006D3268 /* ImageIO.framework in Frameworks */, - C53FD09224719AD1006D3268 /* GLKit.framework in Frameworks */, - C53FD09324719AD1006D3268 /* CoreText.framework in Frameworks */, - C53FD09424719AD1006D3268 /* CoreTelephony.framework in Frameworks */, - C53FD09524719AD1006D3268 /* CoreLocation.framework in Frameworks */, - C53FD09624719AD1006D3268 /* CoreImage.framework in Frameworks */, - C53FD09724719AD1006D3268 /* CoreGraphics.framework in Frameworks */, - C53FD09824719AD1006D3268 /* CoreData.framework in Frameworks */, - C53FD09924719AD1006D3268 /* Accelerate.framework in Frameworks */, - 68EFB21324856EC6003D84F3 /* Scrypt in Frameworks */, - 49C5264730115D459DEB65DA /* libPods-BT.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C5AA24D924768FFF00BA0A99 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B01CF5299E2C4108F39C1232 /* libPods-BTTests.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -531,6 +379,12 @@ 2F42C67AFB6A35F87118053B /* Pods-GPSTests.release-gps.xcconfig */, 530526E48807C46118B2B9B7 /* Pods-GPSTests.staging-bt.xcconfig */, FF44B2971AD1FA3EB0E99224 /* Pods-GPSTests.staging-gps.xcconfig */, + 500296CFBBD33FA70F4403EF /* Pods-GPS.debug.xcconfig */, + 69C0CB99A1291E1928585D63 /* Pods-GPS.release.xcconfig */, + 78335934CC8BDA43BF1F4759 /* Pods-GPS.staging.xcconfig */, + 0EA86B049D0BB9D221E6F627 /* Pods-GPSTests.debug.xcconfig */, + E2D33B0C827A4C85EDDD6272 /* Pods-GPSTests.release.xcconfig */, + 606EB844E7D64AB33707A02E /* Pods-GPSTests.staging.xcconfig */, ); path = Pods; sourceTree = ""; @@ -601,34 +455,26 @@ 13B07FAE1A68108700A75B9A /* COVIDSafePaths */ = { isa = PBXGroup; children = ( - B52D88BF248F0F130071ED51 /* Common */, - C53FD0C324719C25006D3268 /* BT */, - C53FD07C247199A4006D3268 /* GPS */, - 008F07F21AC5B25A0029DE68 /* main.jsbundle */, - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, - 13B07FAF1A68108700A75B9A /* AppDelegate.h */, - B2A58212244CE76C000F39A6 /* Localizable.strings */, - ); - name = COVIDSafePaths; - sourceTree = ""; - }; - 276F786A245B6C8A00312927 /* bridge */ = { - isa = PBXGroup; - children = ( - 27F931562459E28800E1024C /* SecureStorageManager.m */, - 27F931592459E2BD00E1024C /* SecureStorageManager.swift */, + D4B4A85824C8A16400E00A99 /* Application */, + D4B4A89C24C8A1A700E00A99 /* Bridge */, + D4B4A89724C8A1A700E00A99 /* Config */, + D4B4A89324C8A1A700E00A99 /* Extension */, + D4B4A86324C8A17300E00A99 /* Localization */, + D4B4A88D24C8A18E00E00A99 /* Resources */, + 276F786C245B6CB400312927 /* Storage */, ); - path = bridge; + path = COVIDSafePaths; sourceTree = ""; }; - 276F786C245B6CB400312927 /* storage */ = { + 276F786C245B6CB400312927 /* Storage */ = { isa = PBXGroup; children = ( - 276AB15B245291DE00D39B58 /* Location.swift */, 68D8970E24809CEB0091A254 /* Geohash.swift */, B52D88C1248F0FD90071ED51 /* GPSSecureStorage.swift */, + 276AB15B245291DE00D39B58 /* Location.swift */, + 271881BF2461AF76001DE067 /* SafePathsSecureStorage.swift */, ); - path = storage; + path = Storage; sourceTree = ""; }; 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { @@ -669,16 +515,6 @@ name = Products; sourceTree = ""; }; - 68D8970A24809B2D0091A254 /* Extension */ = { - isa = PBXGroup; - children = ( - 68D8970B24809B4E0091A254 /* MAURLocation+Extension.swift */, - 68D8971124809DAE0091A254 /* Array+Extension.swift */, - 68D8971424809E4B0091A254 /* String+Extension.swift */, - ); - path = Extension; - sourceTree = ""; - }; 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( @@ -696,8 +532,8 @@ 08445F4524283A40008754AC /* GoogleMaps.framework */, 08445F4324283A2F008754AC /* GoogleMapsBase.framework */, 13B07FAE1A68108700A75B9A /* COVIDSafePaths */, - 832341AE1AAA6A7D00B99B32 /* Libraries */, 00E356EF1AD99517003FC87E /* COVIDSafePathsTests */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, 83CBBA001A601CBA00E9B192 /* Products */, 2D16E6871FA4F8E400B85C8A /* Frameworks */, 08CFC7C2232A41A8F8E9E0B0 /* Pods */, @@ -714,28 +550,10 @@ children = ( 13B07F961A680F5B00A75B9A /* GPS.app */, 00E356EE1AD99517003FC87E /* GPSTests.xctest */, - C53FD0C124719AD1006D3268 /* BT.app */, - C5AA24E124768FFF00BA0A99 /* BTTests.xctest */, ); name = Products; sourceTree = ""; }; - B507AA0524A2531000E039D5 /* Helpers */ = { - isa = PBXGroup; - children = ( - B507AA0624A2533200E039D5 /* DownloadPackage+Helpers.swift */, - ); - path = Helpers; - sourceTree = ""; - }; - B52D88BF248F0F130071ED51 /* Common */ = { - isa = PBXGroup; - children = ( - 271881BF2461AF76001DE067 /* SafePathsSecureStorage.swift */, - ); - path = Common; - sourceTree = ""; - }; B562F041249A64400006647B /* Recovered References */ = { isa = PBXGroup; children = ( @@ -744,176 +562,74 @@ name = "Recovered References"; sourceTree = ""; }; - B5E29D4A249E3A7D00E686DC /* Foundation */ = { - isa = PBXGroup; - children = ( - B5FBB0D224916B3600433980 /* String+Extensions.swift */, - B5E79436249E666B00BD8596 /* Array+Extensions.swift */, - B576CC3D24993F4C00CDD9D9 /* Date+Extensions.swift */, - B576CC4024993F4C00CDD9D9 /* Encodable+Extensions.swift */, - B59F4C3624BE0658007B09D5 /* List+Extensions.swift */, - B5FBB0D624916DE100433980 /* Notification+Extensions.swift */, - ); - path = Foundation; - sourceTree = ""; - }; - B5E29D4D249E3A8700E686DC /* Exposure Notifications */ = { - isa = PBXGroup; - children = ( - B5FC37F5248A9968006474EB /* ENTemporaryExposureKey+Extensions.swift */, - ); - path = "Exposure Notifications"; - sourceTree = ""; - }; - B5E29D4E249E3A8F00E686DC /* Other */ = { - isa = PBXGroup; - children = ( - B5E29D53249E3BE100E686DC /* ExposureManager+Extensions.swift */, - ); - path = Other; - sourceTree = ""; - }; - B5FC37BD2489B05F006474EB /* API */ = { - isa = PBXGroup; - children = ( - B507AA0524A2531000E039D5 /* Helpers */, - B5FC37DB248A78C3006474EB /* Model */, - B5FC37D12489C25D006474EB /* Requests */, - B5FC37C02489B075006474EB /* APIClient.swift */, - B5FC37CF2489B3DE006474EB /* StructuredError.swift */, - B5FC37CB2489B251006474EB /* Result.swift */, - B5FC37CD2489B359006474EB /* TypeAliases.swift */, - B5FC37C52489B1B3006474EB /* APIRequest.swift */, - B5FC37C92489B1C1006474EB /* JSON.swift */, - ); - path = API; - sourceTree = ""; - }; - B5FC37D12489C25D006474EB /* Requests */ = { + C5C850DD24804A0300A494CA /* Products */ = { isa = PBXGroup; children = ( - B5FC37D7248A784F006474EB /* DiagnosisKeyRequests.swift */, - B5FBB0BC2490339900433980 /* DiagnosisKeyUrlRequests.swift */, - B54CBF31249A738500218477 /* IndexFileRequests.swift */, - B5FC37E0248A7EED006474EB /* ExposureConfigurationRequests.swift */, + C5C850E124804A0300A494CA /* libRCTBackgroundGeolocation.a */, ); - path = Requests; - sourceTree = ""; - }; - B5FC37DB248A78C3006474EB /* Model */ = { - isa = PBXGroup; - children = ( - B5FC37DC248A78D2006474EB /* ExposureKey.swift */, - B507A9ED24A197FF00E039D5 /* DownloadedPackage.swift */, - B5FC37DE248A78FC006474EB /* ExposureConfiguration.swift */, - B54CBF25249A72E700218477 /* Region.swift */, - B5FC37E2248A82AE006474EB /* Exposure.swift */, - B5FBB0D424916D8900433980 /* UserState.swift */, - ); - path = Model; + name = Products; sourceTree = ""; }; - B5FC37E4248A82D6006474EB /* Storage */ = { + D4B4A85824C8A16400E00A99 /* Application */ = { isa = PBXGroup; children = ( - B52D88C3248F10FD0071ED51 /* BTSecureStorage.swift */, - B5FBB0D024916A7200433980 /* Persisted.swift */, - ); - path = Storage; + D4B4A85924C8A16400E00A99 /* AppDelegate.h */, + D4B4A85D24C8A16400E00A99 /* AppDelegate.m */, + D4B4A85C24C8A16400E00A99 /* GPS-Production.entitlements */, + D4B4A85E24C8A16400E00A99 /* Info.plist */, + D4B4A85A24C8A16400E00A99 /* Log.swift */, + D4B4A85B24C8A16400E00A99 /* main.m */, + ); + path = Application; sourceTree = ""; }; - B5FC37F2248A9934006474EB /* Extensions */ = { + D4B4A86324C8A17300E00A99 /* Localization */ = { isa = PBXGroup; children = ( - B5E29D4E249E3A8F00E686DC /* Other */, - B5E29D4D249E3A8700E686DC /* Exposure Notifications */, - B5E29D4A249E3A7D00E686DC /* Foundation */, + D4B4A86624C8A17300E00A99 /* InfoPlist.strings */, + D4B4A86424C8A17300E00A99 /* Localizable.strings */, ); - path = Extensions; - sourceTree = ""; - }; - C53FD07C247199A4006D3268 /* GPS */ = { - isa = PBXGroup; - children = ( - D4CB500524A66A1A00405D61 /* Config */, - 68D8970A24809B2D0091A254 /* Extension */, - 276F786C245B6CB400312927 /* storage */, - 276F786A245B6C8A00312927 /* bridge */, - 13B07FB01A68108700A75B9A /* AppDelegate.m */, - 68EFB214248570C2003D84F3 /* Log.swift */, - C5EF72202485D0E600AA39D5 /* main.m */, - B2A5821B244CE80C000F39A6 /* InfoPlist.strings */, - 13B07FB61A68108700A75B9A /* Info.plist */, - 13B07FB51A68108700A75B9A /* Images.xcassets */, - 0835F8902441054900E95AE3 /* RNBackgroundFetch+AppDelegate.m */, - C5C850FB24812AAB00A494CA /* GPS-Bridging-Header.h */, - C504FDC5249D15990024219C /* GPS-Production.entitlements */, - ); - path = GPS; - sourceTree = ""; - }; - C53FD0C324719C25006D3268 /* BT */ = { - isa = PBXGroup; - children = ( - D4CB502524A66C5D00405D61 /* Config */, - B5FC37F2248A9934006474EB /* Extensions */, - B5FC37E4248A82D6006474EB /* Storage */, - B5FC37BD2489B05F006474EB /* API */, - C57BDFB124883EF400CE62B1 /* bridge */, - C5C850C92480156200A494CA /* AppDelegate.m */, - C5C850C6248014F700A494CA /* main.m */, - C53FD0C224719AD2006D3268 /* Info.plist */, - C5850A63247D5A41007A596B /* Images.xcassets */, - C56190A12485332E009A6756 /* BT-Bridging-Header.h */, - C58463E32486C51100BCB842 /* ExposureManager.swift */, - B5C9722F24B8A909007F4C0B /* Constants.swift */, - B5FBB0CE24916A4C00433980 /* DebugAction.swift */, - C504FDC1249D15260024219C /* BT-Production.entitlements */, - C504FDC4249D155D0024219C /* BT-Development.entitlements */, - ); - path = BT; + path = Localization; sourceTree = ""; }; - C57BDFB124883EF400CE62B1 /* bridge */ = { + D4B4A88D24C8A18E00E00A99 /* Resources */ = { isa = PBXGroup; children = ( - B596C0712488127D00943B79 /* ENPermissionsModule.m */, - C550A66524B7906F002CA7F2 /* ExposureKeyModule.m */, - B59F4C3424BDF879007B09D5 /* ExposureHistoryModule.m */, - B5FB3B42248BD61A001DB1D5 /* DebugMenuModule.m */, - B5582D43249943DE001458A9 /* ExposureEventEmitter.m */, + D4B4A89024C8A18E00E00A99 /* Images.xcassets */, + D4B4A88E24C8A18E00E00A99 /* LaunchScreen.xib */, ); - path = bridge; + path = Resources; sourceTree = ""; }; - C5C850DD24804A0300A494CA /* Products */ = { + D4B4A89324C8A1A700E00A99 /* Extension */ = { isa = PBXGroup; children = ( - C5C850E124804A0300A494CA /* libRCTBackgroundGeolocation.a */, + D4B4A89624C8A1A700E00A99 /* Array+Extension.swift */, + D4B4A89424C8A1A700E00A99 /* MAURLocation+Extension.swift */, + D4B4A89524C8A1A700E00A99 /* String+Extension.swift */, ); - name = Products; + path = Extension; sourceTree = ""; }; - D4CB500524A66A1A00405D61 /* Config */ = { + D4B4A89724C8A1A700E00A99 /* Config */ = { isa = PBXGroup; children = ( - D4CB500924A66ACB00405D61 /* Debug-GPS.xcconfig */, - D4CB500B24A66B8700405D61 /* Release-GPS.xcconfig */, - D4CB500A24A66B6400405D61 /* Staging-GPS.xcconfig */, - D4CB500824A66A2900405D61 /* Version.xcconfig */, + D4B4A89824C8A1A700E00A99 /* Debug.xcconfig */, + D4B4A89924C8A1A700E00A99 /* Release.xcconfig */, + D4B4A89B24C8A1A700E00A99 /* Staging.xcconfig */, + D4B4A89A24C8A1A700E00A99 /* Version.xcconfig */, ); path = Config; sourceTree = ""; }; - D4CB502524A66C5D00405D61 /* Config */ = { + D4B4A89C24C8A1A700E00A99 /* Bridge */ = { isa = PBXGroup; children = ( - D4CB502A24A66C7500405D61 /* Debug-BT.xcconfig */, - D4CB502B24A66C7500405D61 /* Release-BT.xcconfig */, - D4CB502C24A66C7500405D61 /* Staging-BT.xcconfig */, - D4CB502824A66C5D00405D61 /* Version.xcconfig */, + D4B4A89E24C8A1A700E00A99 /* GPS-Bridging-Header.h */, + D4B4A89D24C8A1A700E00A99 /* SecureStorageManager.m */, + D4B4A89F24C8A1A700E00A99 /* SecureStorageManager.swift */, ); - path = Config; + path = Bridge; sourceTree = ""; }; /* End PBXGroup section */ @@ -962,49 +678,6 @@ productReference = 13B07F961A680F5B00A75B9A /* GPS.app */; productType = "com.apple.product-type.application"; }; - C53FD07D24719AD1006D3268 /* BT */ = { - isa = PBXNativeTarget; - buildConfigurationList = C53FD0BC24719AD1006D3268 /* Build configuration list for PBXNativeTarget "BT" */; - buildPhases = ( - B8B3F66D67BD3E6B2C9A66F0 /* [CP] Check Pods Manifest.lock */, - C53FD07F24719AD1006D3268 /* Start Packager */, - C53FD08024719AD1006D3268 /* Sources */, - C53FD08A24719AD1006D3268 /* Frameworks */, - C53FD09B24719AD1006D3268 /* Resources */, - D447FDBA24BF332B00250621 /* Configure ATS */, - C53FD0BB24719AD1006D3268 /* Bundle React Native code and images */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = BT; - packageProductDependencies = ( - 68EFB21224856EC6003D84F3 /* Scrypt */, - ); - productName = COVIDSafePaths; - productReference = C53FD0C124719AD1006D3268 /* BT.app */; - productType = "com.apple.product-type.application"; - }; - C5AA24D124768FFF00BA0A99 /* BTTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = C5AA24DC24768FFF00BA0A99 /* Build configuration list for PBXNativeTarget "BTTests" */; - buildPhases = ( - C7E79764B7E41310387F475F /* [CP] Check Pods Manifest.lock */, - C5AA24D524768FFF00BA0A99 /* Sources */, - C5AA24D924768FFF00BA0A99 /* Frameworks */, - C5AA24DB24768FFF00BA0A99 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - C5AA24E42476901700BA0A99 /* PBXTargetDependency */, - ); - name = BTTests; - productName = COVIDSafePathsTests; - productReference = C5AA24E124768FFF00BA0A99 /* BTTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -1024,9 +697,6 @@ 13B07F861A680F5B00A75B9A = { LastSwiftMigration = 1130; }; - C5AA24D124768FFF00BA0A99 = { - TestTargetID = C53FD07D24719AD1006D3268; - }; }; }; buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "COVIDSafePaths" */; @@ -1048,6 +718,15 @@ "zh-Hant", sk, "pt-BR", + ar, + da, + "es-PR", + pl, + nl, + "zz-ZZ", + ht, + tl, + fil, ); mainGroup = 83CBB9F61A601CBA00E9B192; packageReferences = ( @@ -1069,8 +748,6 @@ targets = ( 13B07F861A680F5B00A75B9A /* GPS */, 00E356ED1AD99517003FC87E /* GPSTests */, - C53FD07D24719AD1006D3268 /* BT */, - C5AA24D124768FFF00BA0A99 /* BTTests */, ); }; /* End PBXProject section */ @@ -1104,26 +781,27 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - B2A58219244CE80C000F39A6 /* InfoPlist.strings in Resources */, - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, E815ED8FD59D4635AD64CCB3 /* IBMPlexMono-Bold.ttf in Resources */, F4A4CE1B537D4CDA9FED9458 /* IBMPlexMono-BoldItalic.ttf in Resources */, 8CB0C49FEC0F493D95420B30 /* IBMPlexMono-ExtraLight.ttf in Resources */, FB74D96D942D4B9FBECB1175 /* IBMPlexMono-ExtraLightItalic.ttf in Resources */, 3E97D87FD88C42B79836C314 /* IBMPlexMono-Italic.ttf in Resources */, + D4B4A8A524C8A1A700E00A99 /* Version.xcconfig in Resources */, D668C3DAB08B4FCBB01E8C2D /* IBMPlexMono-Light.ttf in Resources */, F4E13CA171B74075A5EECD71 /* IBMPlexMono-LightItalic.ttf in Resources */, 527CA705E5514AF9BEAC9A2F /* IBMPlexMono-Medium.ttf in Resources */, 25004E4C90704C6B807B88C7 /* IBMPlexMono-MediumItalic.ttf in Resources */, D7E714F18C9C4172BC01ADF8 /* IBMPlexMono-SemiBold.ttf in Resources */, A5EA4480D4CC4B468D4B4DDC /* IBMPlexMono-SemiBoldItalic.ttf in Resources */, + D4B4A88B24C8A17300E00A99 /* Localizable.strings in Resources */, A0DE2282B6A14351BC318062 /* IBMPlexMono-Thin.ttf in Resources */, 1360D7CA70F14549967C9912 /* IBMPlexMono-ThinItalic.ttf in Resources */, 3AD7E092BBC64F37879D040B /* IBMPlexMono.ttf in Resources */, + D4B4A89224C8A18E00E00A99 /* Images.xcassets in Resources */, 12922BC2C16E4BCCB3F4EA44 /* IBMPlexSans-Bold.ttf in Resources */, F3B14B1B97834BBC886F10D5 /* IBMPlexSans-BoldItalic.ttf in Resources */, 8A5B44AA7D724388B70F100B /* IBMPlexSans-ExtraLight.ttf in Resources */, + D4B4A8A424C8A1A700E00A99 /* Release.xcconfig in Resources */, 57693D8BEF8A40C289F7168A /* IBMPlexSans-ExtraLightItalic.ttf in Resources */, 966BF87C9654448280E34CD8 /* IBMPlexSans-Italic.ttf in Resources */, BB916399F2D64D8D89249A05 /* IBMPlexSans-Light.ttf in Resources */, @@ -1131,54 +809,14 @@ BEA401E86568452A9E8FF210 /* IBMPlexSans-Medium.ttf in Resources */, 2606D1B2B11C4D419867361F /* IBMPlexSans-MediumItalic.ttf in Resources */, D43E27B6F1E045D798270A11 /* IBMPlexSans-SemiBold.ttf in Resources */, + D4B4A8A624C8A1A700E00A99 /* Staging.xcconfig in Resources */, + D4B4A8A324C8A1A700E00A99 /* Debug.xcconfig in Resources */, 6858E21561F14E61A6A85280 /* IBMPlexSans-SemiBoldItalic.ttf in Resources */, 522B6187A48A4AF3A676D5A0 /* IBMPlexSans-Thin.ttf in Resources */, DED6BB86437B4610B1CD3302 /* IBMPlexSans-ThinItalic.ttf in Resources */, + D4B4A89124C8A18E00E00A99 /* LaunchScreen.xib in Resources */, 7A2281C376904F23BCA10FCA /* IBMPlexSans.ttf in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C53FD09B24719AD1006D3268 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - C53FD09E24719AD1006D3268 /* LaunchScreen.xib in Resources */, - C53FD09F24719AD1006D3268 /* IBMPlexMono-Bold.ttf in Resources */, - C53FD0A024719AD1006D3268 /* IBMPlexMono-BoldItalic.ttf in Resources */, - C53FD0A124719AD1006D3268 /* IBMPlexMono-ExtraLight.ttf in Resources */, - C5850A64247D5A41007A596B /* Images.xcassets in Resources */, - C53FD0A224719AD1006D3268 /* IBMPlexMono-ExtraLightItalic.ttf in Resources */, - C53FD0A324719AD1006D3268 /* IBMPlexMono-Italic.ttf in Resources */, - C53FD0A424719AD1006D3268 /* IBMPlexMono-Light.ttf in Resources */, - C53FD0A524719AD1006D3268 /* IBMPlexMono-LightItalic.ttf in Resources */, - C53FD0A624719AD1006D3268 /* IBMPlexMono-Medium.ttf in Resources */, - C53FD0A724719AD1006D3268 /* IBMPlexMono-MediumItalic.ttf in Resources */, - C53FD0A824719AD1006D3268 /* IBMPlexMono-SemiBold.ttf in Resources */, - C53FD0A924719AD1006D3268 /* IBMPlexMono-SemiBoldItalic.ttf in Resources */, - C53FD0AA24719AD1006D3268 /* IBMPlexMono-Thin.ttf in Resources */, - C53FD0AB24719AD1006D3268 /* IBMPlexMono-ThinItalic.ttf in Resources */, - C53FD0AC24719AD1006D3268 /* IBMPlexMono.ttf in Resources */, - C53FD0AD24719AD1006D3268 /* IBMPlexSans-Bold.ttf in Resources */, - C53FD0AE24719AD1006D3268 /* IBMPlexSans-BoldItalic.ttf in Resources */, - C53FD0AF24719AD1006D3268 /* IBMPlexSans-ExtraLight.ttf in Resources */, - C53FD0B024719AD1006D3268 /* IBMPlexSans-ExtraLightItalic.ttf in Resources */, - C53FD0B124719AD1006D3268 /* IBMPlexSans-Italic.ttf in Resources */, - C53FD0B224719AD1006D3268 /* IBMPlexSans-Light.ttf in Resources */, - C53FD0B324719AD1006D3268 /* IBMPlexSans-LightItalic.ttf in Resources */, - C53FD0B424719AD1006D3268 /* IBMPlexSans-Medium.ttf in Resources */, - C53FD0B524719AD1006D3268 /* IBMPlexSans-MediumItalic.ttf in Resources */, - C53FD0B624719AD1006D3268 /* IBMPlexSans-SemiBold.ttf in Resources */, - C53FD0B724719AD1006D3268 /* IBMPlexSans-SemiBoldItalic.ttf in Resources */, - C53FD0B824719AD1006D3268 /* IBMPlexSans-Thin.ttf in Resources */, - C53FD0B924719AD1006D3268 /* IBMPlexSans-ThinItalic.ttf in Resources */, - C53FD0BA24719AD1006D3268 /* IBMPlexSans.ttf in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C5AA24DB24768FFF00BA0A99 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( + D4B4A88C24C8A17300E00A99 /* InfoPlist.strings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1243,83 +881,6 @@ 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; }; - B8B3F66D67BD3E6B2C9A66F0 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-BT-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - C53FD07F24719AD1006D3268 /* Start Packager */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "Start Packager"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; - showEnvVarsInLog = 0; - }; - C53FD0BB24719AD1006D3268 /* Bundle React Native code and images */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Bundle React Native code and images"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; - }; - C7E79764B7E41310387F475F /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-BTTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; D447FDB724BF310000250621 /* Configure ATS */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -1338,24 +899,6 @@ shellPath = /bin/sh; shellScript = "/usr/libexec/PlistBuddy -c \"Set :NSAppTransportSecurity:NSAllowsArbitraryLoads ${ALLOW_INSECURE_HTTP}\" ${TARGET_BUILD_DIR}/${INFOPLIST_PATH}\n"; }; - D447FDBA24BF332B00250621 /* Configure ATS */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "Configure ATS"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/usr/libexec/PlistBuddy -c \"Set :NSAppTransportSecurity:NSAllowsArbitraryLoads ${ALLOW_INSECURE_HTTP}\" ${TARGET_BUILD_DIR}/${INFOPLIST_PATH}\n"; - }; FD10A7F022414F080027D42C /* Start Packager */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -1395,73 +938,18 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C5EF723724864F8500AA39D5 /* main.m in Sources */, + D4B4A8A824C8A1A700E00A99 /* SecureStorageManager.swift in Sources */, + D4B4A8A724C8A1A700E00A99 /* SecureStorageManager.m in Sources */, 271881C02461AF76001DE067 /* SafePathsSecureStorage.swift in Sources */, - 0835F8922441054A00E95AE3 /* RNBackgroundFetch+AppDelegate.m in Sources */, - 68EFB215248570C2003D84F3 /* Log.swift in Sources */, - 68D8971224809DAE0091A254 /* Array+Extension.swift in Sources */, + D4B4A8A224C8A1A700E00A99 /* Array+Extension.swift in Sources */, + D4B4A8A124C8A1A700E00A99 /* String+Extension.swift in Sources */, + D4B4A85F24C8A16400E00A99 /* Log.swift in Sources */, 68D8970F24809CEB0091A254 /* Geohash.swift in Sources */, - 27F931572459E28800E1024C /* SecureStorageManager.m in Sources */, - 68D8971524809E4B0091A254 /* String+Extension.swift in Sources */, - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, + D4B4A86124C8A16400E00A99 /* AppDelegate.m in Sources */, B52D88C2248F0FD90071ED51 /* GPSSecureStorage.swift in Sources */, - 68D8970C24809B4E0091A254 /* MAURLocation+Extension.swift in Sources */, + D4B4A8A024C8A1A700E00A99 /* MAURLocation+Extension.swift in Sources */, 276AB15C245291DE00D39B58 /* Location.swift in Sources */, - 27F9315A2459E2BD00E1024C /* SecureStorageManager.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C53FD08024719AD1006D3268 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B5FBB0D524916D8900433980 /* UserState.swift in Sources */, - B5FBB0D724916DE100433980 /* Notification+Extensions.swift in Sources */, - B54CBF26249A72E700218477 /* Region.swift in Sources */, - C550A66624B7906F002CA7F2 /* ExposureKeyModule.m in Sources */, - B54CBF32249A738500218477 /* IndexFileRequests.swift in Sources */, - B52D88C4248F10FD0071ED51 /* BTSecureStorage.swift in Sources */, - B5FC37CC2489B251006474EB /* Result.swift in Sources */, - C58463E42486C51100BCB842 /* ExposureManager.swift in Sources */, - B5FC37C62489B1B3006474EB /* APIRequest.swift in Sources */, - B5FBB0D124916A7200433980 /* Persisted.swift in Sources */, - B5FBB0BD2490339900433980 /* DiagnosisKeyUrlRequests.swift in Sources */, - C5C850CA2480156200A494CA /* AppDelegate.m in Sources */, - B5FC37E3248A82AE006474EB /* Exposure.swift in Sources */, - B576CC4324993F5200CDD9D9 /* Date+Extensions.swift in Sources */, - B52D88C0248F0FC00071ED51 /* SafePathsSecureStorage.swift in Sources */, - B5FB3B43248BD61A001DB1D5 /* DebugMenuModule.m in Sources */, - B5582D47249943E5001458A9 /* ExposureEventEmitter.m in Sources */, - C5C850C7248014F700A494CA /* main.m in Sources */, - B59F4C3524BDF879007B09D5 /* ExposureHistoryModule.m in Sources */, - B596C0722488127D00943B79 /* ENPermissionsModule.m in Sources */, - B5FC37D8248A784F006474EB /* DiagnosisKeyRequests.swift in Sources */, - B59F4C3724BE0658007B09D5 /* List+Extensions.swift in Sources */, - B5FBB0D324916B3600433980 /* String+Extensions.swift in Sources */, - B507A9EE24A197FF00E039D5 /* DownloadedPackage.swift in Sources */, - B5FC37F6248A9968006474EB /* ENTemporaryExposureKey+Extensions.swift in Sources */, - B5E29D54249E3BE100E686DC /* ExposureManager+Extensions.swift in Sources */, - B5FC37C12489B075006474EB /* APIClient.swift in Sources */, - B5FC37CE2489B359006474EB /* TypeAliases.swift in Sources */, - B507AA0724A2533200E039D5 /* DownloadPackage+Helpers.swift in Sources */, - B576CC4424993F5200CDD9D9 /* Encodable+Extensions.swift in Sources */, - B5FBB0CF24916A4C00433980 /* DebugAction.swift in Sources */, - B5FC37E1248A7EED006474EB /* ExposureConfigurationRequests.swift in Sources */, - B5FC37DD248A78D2006474EB /* ExposureKey.swift in Sources */, - B5FC37DF248A78FC006474EB /* ExposureConfiguration.swift in Sources */, - B5E79437249E666B00BD8596 /* Array+Extensions.swift in Sources */, - B5FC37CA2489B1C1006474EB /* JSON.swift in Sources */, - B5FC37D02489B3DE006474EB /* StructuredError.swift in Sources */, - B5C9723024B8A909007F4C0B /* Constants.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C5AA24D524768FFF00BA0A99 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B5A6FD6E24BC9E69007D328C /* ExposureManagerTests.swift in Sources */, - C5AA24D824768FFF00BA0A99 /* COVIDSafePathsTests.m in Sources */, + D4B4A86024C8A16400E00A99 /* main.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1474,754 +962,78 @@ target = 13B07F861A680F5B00A75B9A /* GPS */; targetProxy = 271881CB2461C95F001DE067 /* PBXContainerItemProxy */; }; - C5AA24E42476901700BA0A99 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - platformFilter = ios; - target = C53FD07D24719AD1006D3268 /* BT */; - targetProxy = C5AA24E32476901700BA0A99 /* PBXContainerItemProxy */; - }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { + D4B4A86424C8A17300E00A99 /* Localizable.strings */ = { isa = PBXVariantGroup; children = ( - 13B07FB21A68108700A75B9A /* Base */, + D4B4A86524C8A17300E00A99 /* ar */, + D4B4A86824C8A17300E00A99 /* en */, + D4B4A86A24C8A17300E00A99 /* es */, + D4B4A86C24C8A17300E00A99 /* da */, + D4B4A86E24C8A17300E00A99 /* it */, + D4B4A87024C8A17300E00A99 /* sk */, + D4B4A87224C8A17300E00A99 /* ml */, + D4B4A87424C8A17300E00A99 /* fr-HT */, + D4B4A87524C8A17300E00A99 /* zh-Hant */, + D4B4A87624C8A17300E00A99 /* es-PR */, + D4B4A87824C8A17300E00A99 /* pl */, + D4B4A87A24C8A17300E00A99 /* pt-BR */, + D4B4A87C24C8A17300E00A99 /* vi */, + D4B4A87D24C8A17300E00A99 /* ru */, + D4B4A87F24C8A17300E00A99 /* fr */, + D4B4A88124C8A17300E00A99 /* id */, + D4B4A88224C8A17300E00A99 /* nl */, + D4B4A88424C8A17300E00A99 /* zz-ZZ */, + D4B4A88624C8A17300E00A99 /* ht */, + D4B4A88824C8A17300E00A99 /* ro */, + D4B4A88924C8A17300E00A99 /* tl */, ); - name = LaunchScreen.xib; - path = COVIDSafePaths; + name = Localizable.strings; sourceTree = ""; }; - B2A58212244CE76C000F39A6 /* Localizable.strings */ = { + D4B4A86624C8A17300E00A99 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( - B2A58213244CE76C000F39A6 /* en */, - B2A58216244CE778000F39A6 /* it */, - B2A5821E244CE988000F39A6 /* sk */, - B2A58220244CE9EB000F39A6 /* ro */, - B2A58222244CE9F7000F39A6 /* id */, - B2A58224244CEA20000F39A6 /* fr-HT */, - B2A58226244CEA6C000F39A6 /* pt-BR */, - B2A58228244CEA7B000F39A6 /* ru */, - B2A5822A244CEA84000F39A6 /* es */, - B2A5822C244CEA8F000F39A6 /* vi */, - B2A5822E244CEA9F000F39A6 /* zh-Hant */, + D4B4A86724C8A17300E00A99 /* ar */, + D4B4A86924C8A17300E00A99 /* en */, + D4B4A86B24C8A17300E00A99 /* es */, + D4B4A86D24C8A17300E00A99 /* da */, + D4B4A86F24C8A17300E00A99 /* it */, + D4B4A87124C8A17300E00A99 /* sk */, + D4B4A87324C8A17300E00A99 /* ml */, + D4B4A87724C8A17300E00A99 /* es-PR */, + D4B4A87924C8A17300E00A99 /* pl */, + D4B4A87B24C8A17300E00A99 /* pt-BR */, + D4B4A87E24C8A17300E00A99 /* ru */, + D4B4A88024C8A17300E00A99 /* fr */, + D4B4A88324C8A17300E00A99 /* nl */, + D4B4A88524C8A17300E00A99 /* zz-ZZ */, + D4B4A88724C8A17300E00A99 /* ht */, + D4B4A88A24C8A17300E00A99 /* tl */, ); - name = Localizable.strings; + name = InfoPlist.strings; sourceTree = ""; }; - B2A5821B244CE80C000F39A6 /* InfoPlist.strings */ = { + D4B4A88E24C8A18E00E00A99 /* LaunchScreen.xib */ = { isa = PBXVariantGroup; children = ( - B2A5821A244CE80C000F39A6 /* en */, - B2A5821C244CE8D6000F39A6 /* it */, - B2A5821D244CE988000F39A6 /* sk */, - B2A5821F244CE9EB000F39A6 /* ro */, - B2A58221244CE9F7000F39A6 /* id */, - B2A58223244CEA20000F39A6 /* fr-HT */, - B2A58225244CEA6C000F39A6 /* pt-BR */, - B2A58227244CEA7B000F39A6 /* ru */, - B2A58229244CEA84000F39A6 /* es */, - B2A5822B244CEA8F000F39A6 /* vi */, - B2A5822D244CEA9F000F39A6 /* zh-Hant */, + D4B4A88F24C8A18E00E00A99 /* Base */, ); - name = InfoPlist.strings; + name = LaunchScreen.xib; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ - 00E356F61AD99517003FC87E /* Debug-BT */ = { + D4CB500C24A66BB800405D61 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F6854A5E4C5120F2760E0E62 /* Pods-GPSTests.debug-bt.xcconfig */; + baseConfigurationReference = D4B4A89824C8A1A700E00A99 /* Debug.xcconfig */; buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ENABLE_MODULES = YES; - DEVELOPMENT_TEAM = 79Z8HUPGC3; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = COVIDSafePathsTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SWIFT_OBJC_BRIDGING_HEADER = "GPS/GPS-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GPS.app/GPS"; - }; - name = "Debug-BT"; - }; - 00E356F71AD99517003FC87E /* Release-BT */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3B644EE0F2C85738FCD937EA /* Pods-GPSTests.release-bt.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ENABLE_MODULES = YES; - COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = 79Z8HUPGC3; - INFOPLIST_FILE = COVIDSafePathsTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SWIFT_OBJC_BRIDGING_HEADER = "GPS/GPS-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GPS.app/GPS"; - }; - name = "Release-BT"; - }; - 13B07F941A680F5B00A75B9A /* Debug-BT */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4E3ED4D343165DDCF8CF6F14 /* Pods-GPS.debug-bt.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = "GPS/GPS-Production.entitlements"; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - DEAD_CODE_STRIPPING = NO; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 79Z8HUPGC3; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/../node_modules/react-native-splash-screen/ios", - "$(SRCROOT)/../node_modules/@mauron85/react-native-background-geolocation/ios/common/BackgroundGeolocation", - ); - INFOPLIST_FILE = GPS/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"${PODS_CONFIGURATION_BUILD_DIR}/BVLinearGradient\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/FBReactNativeSpec\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/Folly\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/Permission-LocationAlways\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/Permission-Notifications\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RCTTypeSafety\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNCAsyncStorage\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNCMaskedView\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNCPushNotificationIOS\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNFS\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNGestureHandler\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNPermissions\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNReanimated\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNSVG\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNScreens\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNShare\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNZipArchive\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-Core\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-CoreModules\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTActionSheet\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAnimation\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTBlob\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTImage\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTLinking\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTNetwork\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTSettings\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTText\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTVibration\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-jsi\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-jsiexecutor\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/Yoga\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/glog\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-background-timer\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-geolocation\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-safe-area-context\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-splash-screen\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-uuid-generator\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-viewpager\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-webview\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/rn-fetch-blob\"", - ); - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - PRODUCT_NAME = GPS; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = "GPS/GPS-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = "Debug-BT"; - }; - 13B07F951A680F5B00A75B9A /* Release-BT */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 977BE49F665F3E0768AD52E3 /* Pods-GPS.release-bt.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = "GPS/GPS-Production.entitlements"; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - DEAD_CODE_STRIPPING = YES; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 79Z8HUPGC3; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/../node_modules/react-native-splash-screen/ios", - "$(SRCROOT)/../node_modules/@mauron85/react-native-background-geolocation/ios/common/BackgroundGeolocation", - ); - INFOPLIST_FILE = GPS/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"${PODS_CONFIGURATION_BUILD_DIR}/BVLinearGradient\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/FBReactNativeSpec\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/Folly\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/Permission-LocationAlways\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/Permission-Notifications\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RCTTypeSafety\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNCAsyncStorage\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNCMaskedView\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNCPushNotificationIOS\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNFS\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNGestureHandler\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNPermissions\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNReanimated\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNSVG\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNScreens\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNShare\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNZipArchive\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-Core\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-CoreModules\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTActionSheet\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAnimation\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTBlob\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTImage\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTLinking\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTNetwork\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTSettings\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTText\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTVibration\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-jsi\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-jsiexecutor\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/Yoga\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/glog\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-background-timer\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-geolocation\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-safe-area-context\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-splash-screen\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-uuid-generator\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-viewpager\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-webview\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/rn-fetch-blob\"", - ); - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - PRODUCT_NAME = GPS; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = "GPS/GPS-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - }; - name = "Release-BT"; - }; - 83CBBA201A601CBA00E9B192 /* Debug-BT */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D4CB502A24A66C7500405D61 /* Debug-BT.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "Debug-BT"; - }; - 83CBBA211A601CBA00E9B192 /* Release-BT */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D4CB502B24A66C7500405D61 /* Release-BT.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "Release-BT"; - }; - C53FD0BD24719AD1006D3268 /* Debug-BT */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = FB93AEF93E757536F638DE58 /* Pods-BT.debug-bt.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = "BT/BT-Production.entitlements"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Manual; - DEAD_CODE_STRIPPING = NO; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 6R7GW6VJ2A; - INFOPLIST_FILE = BT/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -Xcc -fmodule-map-file=\"${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap\" -Xcc -fmodule-map-file=\"${PODS_CONFIGURATION_BUILD_DIR}/RealmSwift/RealmSwift.modulemap\" -Xcc -fmodule-map-file=\"${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap\" -Xcc -fmodule-map-file=\"${PODS_ROOT}/Headers/Private/Realm/Realm.modulemap\" -Xcc -fmodule-map-file=\"${PODS_ROOT}/Headers/Public/SSZipArchive/SSZipArchive.modulemap\" -D DEBUG"; - PRODUCT_BUNDLE_IDENTIFIER = org.pathcheck.mn.bt; - PRODUCT_NAME = BT; - PROVISIONING_PROFILE_SPECIFIER = "PathCheck Dev"; - SWIFT_OBJC_BRIDGING_HEADER = "BT/BT-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = "Debug-BT"; - }; - C53FD0BF24719AD1006D3268 /* Release-BT */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 67DC43BDE1EF8997F26F2108 /* Pods-BT.release-bt.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = "BT/BT-Production.entitlements"; - CODE_SIGN_IDENTITY = "iPhone Distribution"; - CODE_SIGN_STYLE = Manual; - DEAD_CODE_STRIPPING = YES; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 6R7GW6VJ2A; - INFOPLIST_FILE = BT/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -Xcc -fmodule-map-file=\"${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap\" -Xcc -fmodule-map-file=\"${PODS_CONFIGURATION_BUILD_DIR}/RealmSwift/RealmSwift.modulemap\" -Xcc -fmodule-map-file=\"${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap\" -Xcc -fmodule-map-file=\"${PODS_ROOT}/Headers/Private/Realm/Realm.modulemap\" -Xcc -fmodule-map-file=\"${PODS_ROOT}/Headers/Public/SSZipArchive/SSZipArchive.modulemap\""; - PRODUCT_BUNDLE_IDENTIFIER = org.pathcheck.mn.bt; - PRODUCT_NAME = BT; - PROVISIONING_PROFILE_SPECIFIER = "pathcheck-mn-bt-appstore"; - SWIFT_OBJC_BRIDGING_HEADER = "BT/BT-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - }; - name = "Release-BT"; - }; - C5AA24DD24768FFF00BA0A99 /* Debug-BT */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 323E903F3DAB2E4C925FECBD /* Pods-BTTests.debug-bt.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ENABLE_MODULES = YES; - DEVELOPMENT_TEAM = 79Z8HUPGC3; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = COVIDSafePathsTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "BT/BT-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BT.app/BT"; - }; - name = "Debug-BT"; - }; - C5AA24DF24768FFF00BA0A99 /* Release-BT */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 141B3702EDB77175BCFE1BA2 /* Pods-BTTests.release-bt.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ENABLE_MODULES = YES; - COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = 79Z8HUPGC3; - INFOPLIST_FILE = COVIDSafePathsTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "BT/BT-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BT.app/BT"; - }; - name = "Release-BT"; - }; - D4CB500C24A66BB800405D61 /* Debug-GPS */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D4CB500924A66ACB00405D61 /* Debug-GPS.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "Debug-GPS"; - }; - D4CB500D24A66BB800405D61 /* Debug-GPS */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 667ABCBB6E3FBF03F44D3672 /* Pods-GPS.debug-gps.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = "GPS/GPS-Production.entitlements"; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - DEAD_CODE_STRIPPING = NO; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 79Z8HUPGC3; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/../node_modules/react-native-splash-screen/ios", - "$(SRCROOT)/../node_modules/@mauron85/react-native-background-geolocation/ios/common/BackgroundGeolocation", - ); - INFOPLIST_FILE = GPS/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"${PODS_CONFIGURATION_BUILD_DIR}/BVLinearGradient\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/FBReactNativeSpec\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/Folly\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/Permission-LocationAlways\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/Permission-Notifications\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RCTTypeSafety\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNCAsyncStorage\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNCMaskedView\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNCPushNotificationIOS\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNFS\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNGestureHandler\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNPermissions\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNReanimated\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNSVG\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNScreens\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNShare\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/RNZipArchive\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-Core\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-CoreModules\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTActionSheet\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAnimation\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTBlob\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTImage\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTLinking\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTNetwork\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTSettings\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTText\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTVibration\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-jsi\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-jsiexecutor\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/Yoga\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/glog\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-background-timer\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-geolocation\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-safe-area-context\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-splash-screen\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-uuid-generator\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-viewpager\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-webview\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/rn-fetch-blob\"", - ); - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - PRODUCT_NAME = GPS; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = "GPS/GPS-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = "Debug-GPS"; - }; - D4CB500E24A66BB800405D61 /* Debug-GPS */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B3ED5E905B1401FCBA420CFF /* Pods-GPSTests.debug-gps.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ENABLE_MODULES = YES; - DEVELOPMENT_TEAM = 79Z8HUPGC3; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = COVIDSafePathsTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SWIFT_OBJC_BRIDGING_HEADER = "GPS/GPS-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GPS.app/GPS"; - }; - name = "Debug-GPS"; - }; - D4CB500F24A66BB800405D61 /* Debug-GPS */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = BFBEC306069776E19FE33586 /* Pods-BT.debug-gps.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = "BT/BT-Production.entitlements"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Manual; - DEAD_CODE_STRIPPING = NO; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 79Z8HUPGC3; - INFOPLIST_FILE = BT/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -Xcc -fmodule-map-file=\"${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap\" -Xcc -fmodule-map-file=\"${PODS_CONFIGURATION_BUILD_DIR}/RealmSwift/RealmSwift.modulemap\" -Xcc -fmodule-map-file=\"${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap\" -Xcc -fmodule-map-file=\"${PODS_ROOT}/Headers/Private/Realm/Realm.modulemap\" -Xcc -fmodule-map-file=\"${PODS_ROOT}/Headers/Public/SSZipArchive/SSZipArchive.modulemap\" -D DEBUG"; - PRODUCT_NAME = BT; - PROVISIONING_PROFILE_SPECIFIER = "match Development org.pathcheck.bt"; - SWIFT_OBJC_BRIDGING_HEADER = "BT/BT-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = "Debug-GPS"; - }; - D4CB501024A66BB800405D61 /* Debug-GPS */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 93396F628DA498595B93956B /* Pods-BTTests.debug-gps.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ENABLE_MODULES = YES; - DEVELOPMENT_TEAM = 79Z8HUPGC3; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = COVIDSafePathsTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "BT/BT-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BT.app/BT"; - }; - name = "Debug-GPS"; - }; - D4CB501624A66BCE00405D61 /* Staging-BT */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D4CB502C24A66C7500405D61 /* Staging-BT.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; @@ -2244,11 +1056,18 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; + COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; @@ -2256,22 +1075,22 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Staging-BT"; + name = Debug; }; - D4CB501724A66BCE00405D61 /* Staging-BT */ = { + D4CB500D24A66BB800405D61 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2CE99177C2D5C9E6462639A1 /* Pods-GPS.staging-bt.xcconfig */; + baseConfigurationReference = 500296CFBBD33FA70F4403EF /* Pods-GPS.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = "GPS/GPS-Production.entitlements"; + CODE_SIGN_ENTITLEMENTS = "$(PROJECT_NAME)/Application/GPS-Production.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - DEAD_CODE_STRIPPING = YES; + DEAD_CODE_STRIPPING = NO; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 79Z8HUPGC3; HEADER_SEARCH_PATHS = ( @@ -2279,7 +1098,7 @@ "$(SRCROOT)/../node_modules/react-native-splash-screen/ios", "$(SRCROOT)/../node_modules/@mauron85/react-native-background-geolocation/ios/common/BackgroundGeolocation", ); - INFOPLIST_FILE = GPS/Info.plist; + INFOPLIST_FILE = "$(PROJECT_NAME)/Application/Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2339,19 +1158,23 @@ ); PRODUCT_NAME = GPS; PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = "GPS/GPS-Bridging-Header.h"; + SWIFT_OBJC_BRIDGING_HEADER = "$(PROJECT_NAME)/Bridge/GPS-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; }; - name = "Staging-BT"; + name = Debug; }; - D4CB501824A66BCE00405D61 /* Staging-BT */ = { + D4CB500E24A66BB800405D61 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 530526E48807C46118B2B9B7 /* Pods-GPSTests.staging-bt.xcconfig */; + baseConfigurationReference = 0EA86B049D0BB9D221E6F627 /* Pods-GPSTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ENABLE_MODULES = YES; - COPY_PHASE_STRIP = NO; DEVELOPMENT_TEAM = 79Z8HUPGC3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); INFOPLIST_FILE = COVIDSafePathsTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -2367,73 +1190,15 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; PUBLIC_HEADERS_FOLDER_PATH = ""; - SWIFT_OBJC_BRIDGING_HEADER = "GPS/GPS-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GPS.app/GPS"; }; - name = "Staging-BT"; - }; - D4CB501924A66BCE00405D61 /* Staging-BT */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 844C843F62B5585C2F2346EA /* Pods-BT.staging-bt.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = "BT/BT-Production.entitlements"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Manual; - DEAD_CODE_STRIPPING = YES; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 79Z8HUPGC3; - INFOPLIST_FILE = BT/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -Xcc -fmodule-map-file=\"${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap\" -Xcc -fmodule-map-file=\"${PODS_CONFIGURATION_BUILD_DIR}/RealmSwift/RealmSwift.modulemap\" -Xcc -fmodule-map-file=\"${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap\" -Xcc -fmodule-map-file=\"${PODS_ROOT}/Headers/Private/Realm/Realm.modulemap\" -Xcc -fmodule-map-file=\"${PODS_ROOT}/Headers/Public/SSZipArchive/SSZipArchive.modulemap\""; - PRODUCT_NAME = BT; - PROVISIONING_PROFILE_SPECIFIER = "match Development org.pathcheck.bt"; - SWIFT_OBJC_BRIDGING_HEADER = "BT/BT-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - }; - name = "Staging-BT"; - }; - D4CB501A24A66BCE00405D61 /* Staging-BT */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D04E298A8C92F0D267143C3A /* Pods-BTTests.staging-bt.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ENABLE_MODULES = YES; - COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = 79Z8HUPGC3; - INFOPLIST_FILE = COVIDSafePathsTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "BT/BT-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BT.app/BT"; - }; - name = "Staging-BT"; + name = Debug; }; - D4CB501B24A66BD400405D61 /* Staging-GPS */ = { + D4CB501B24A66BD400405D61 /* Staging */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D4CB500A24A66B6400405D61 /* Staging-GPS.xcconfig */; + baseConfigurationReference = D4B4A89B24C8A1A700E00A99 /* Staging.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -2477,14 +1242,14 @@ VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Staging-GPS"; + name = Staging; }; - D4CB501C24A66BD400405D61 /* Staging-GPS */ = { + D4CB501C24A66BD400405D61 /* Staging */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 145476A32A7724DCC004C292 /* Pods-GPS.staging-gps.xcconfig */; + baseConfigurationReference = 78335934CC8BDA43BF1F4759 /* Pods-GPS.staging.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = "GPS/GPS-Production.entitlements"; + CODE_SIGN_ENTITLEMENTS = "$(PROJECT_NAME)/Application/GPS-Production.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; DEAD_CODE_STRIPPING = YES; @@ -2495,7 +1260,7 @@ "$(SRCROOT)/../node_modules/react-native-splash-screen/ios", "$(SRCROOT)/../node_modules/@mauron85/react-native-background-geolocation/ios/common/BackgroundGeolocation", ); - INFOPLIST_FILE = GPS/Info.plist; + INFOPLIST_FILE = "$(PROJECT_NAME)/Application/Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2555,14 +1320,14 @@ ); PRODUCT_NAME = GPS; PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = "GPS/GPS-Bridging-Header.h"; + SWIFT_OBJC_BRIDGING_HEADER = "$(PROJECT_NAME)/Bridge/GPS-Bridging-Header.h"; SWIFT_VERSION = 5.0; }; - name = "Staging-GPS"; + name = Staging; }; - D4CB501D24A66BD400405D61 /* Staging-GPS */ = { + D4CB501D24A66BD400405D61 /* Staging */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FF44B2971AD1FA3EB0E99224 /* Pods-GPSTests.staging-gps.xcconfig */; + baseConfigurationReference = 606EB844E7D64AB33707A02E /* Pods-GPSTests.staging.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ENABLE_MODULES = YES; @@ -2583,73 +1348,14 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; PUBLIC_HEADERS_FOLDER_PATH = ""; - SWIFT_OBJC_BRIDGING_HEADER = "GPS/GPS-Bridging-Header.h"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GPS.app/GPS"; }; - name = "Staging-GPS"; - }; - D4CB501E24A66BD400405D61 /* Staging-GPS */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EB49F7B51E4014329A4AA36D /* Pods-BT.staging-gps.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = "BT/BT-Production.entitlements"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Manual; - DEAD_CODE_STRIPPING = YES; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 79Z8HUPGC3; - INFOPLIST_FILE = BT/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -Xcc -fmodule-map-file=\"${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap\" -Xcc -fmodule-map-file=\"${PODS_CONFIGURATION_BUILD_DIR}/RealmSwift/RealmSwift.modulemap\" -Xcc -fmodule-map-file=\"${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap\" -Xcc -fmodule-map-file=\"${PODS_ROOT}/Headers/Private/Realm/Realm.modulemap\" -Xcc -fmodule-map-file=\"${PODS_ROOT}/Headers/Public/SSZipArchive/SSZipArchive.modulemap\""; - PRODUCT_NAME = BT; - PROVISIONING_PROFILE_SPECIFIER = "match Development org.pathcheck.bt"; - SWIFT_OBJC_BRIDGING_HEADER = "BT/BT-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - }; - name = "Staging-GPS"; - }; - D4CB501F24A66BD400405D61 /* Staging-GPS */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 751F8AE184B9709A8C3817BF /* Pods-BTTests.staging-gps.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ENABLE_MODULES = YES; - COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = 79Z8HUPGC3; - INFOPLIST_FILE = COVIDSafePathsTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "BT/BT-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BT.app/BT"; - }; - name = "Staging-GPS"; + name = Staging; }; - D4CB502024A66BFA00405D61 /* Release-GPS */ = { + D4CB502024A66BFA00405D61 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D4CB500B24A66B8700405D61 /* Release-GPS.xcconfig */; + baseConfigurationReference = D4B4A89924C8A1A700E00A99 /* Release.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -2693,14 +1399,14 @@ VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Release-GPS"; + name = Release; }; - D4CB502124A66BFA00405D61 /* Release-GPS */ = { + D4CB502124A66BFA00405D61 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 22E0DA6B2DECC1B29A4C7B64 /* Pods-GPS.release-gps.xcconfig */; + baseConfigurationReference = 69C0CB99A1291E1928585D63 /* Pods-GPS.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = "GPS/GPS-Production.entitlements"; + CODE_SIGN_ENTITLEMENTS = "$(PROJECT_NAME)/Application/GPS-Production.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; DEAD_CODE_STRIPPING = YES; @@ -2711,7 +1417,7 @@ "$(SRCROOT)/../node_modules/react-native-splash-screen/ios", "$(SRCROOT)/../node_modules/@mauron85/react-native-background-geolocation/ios/common/BackgroundGeolocation", ); - INFOPLIST_FILE = GPS/Info.plist; + INFOPLIST_FILE = "$(PROJECT_NAME)/Application/Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2771,14 +1477,14 @@ ); PRODUCT_NAME = GPS; PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = "GPS/GPS-Bridging-Header.h"; + SWIFT_OBJC_BRIDGING_HEADER = "$(PROJECT_NAME)/Bridge/GPS-Bridging-Header.h"; SWIFT_VERSION = 5.0; }; - name = "Release-GPS"; + name = Release; }; - D4CB502224A66BFA00405D61 /* Release-GPS */ = { + D4CB502224A66BFA00405D61 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2F42C67AFB6A35F87118053B /* Pods-GPSTests.release-gps.xcconfig */; + baseConfigurationReference = E2D33B0C827A4C85EDDD6272 /* Pods-GPSTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ENABLE_MODULES = YES; @@ -2799,69 +1505,10 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; PUBLIC_HEADERS_FOLDER_PATH = ""; - SWIFT_OBJC_BRIDGING_HEADER = "GPS/GPS-Bridging-Header.h"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GPS.app/GPS"; }; - name = "Release-GPS"; - }; - D4CB502324A66BFA00405D61 /* Release-GPS */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A5B812656CA17568F2153FC2 /* Pods-BT.release-gps.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = "BT/BT-Production.entitlements"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Manual; - DEAD_CODE_STRIPPING = YES; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 79Z8HUPGC3; - INFOPLIST_FILE = BT/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -Xcc -fmodule-map-file=\"${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap\" -Xcc -fmodule-map-file=\"${PODS_CONFIGURATION_BUILD_DIR}/RealmSwift/RealmSwift.modulemap\" -Xcc -fmodule-map-file=\"${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap\" -Xcc -fmodule-map-file=\"${PODS_ROOT}/Headers/Private/Realm/Realm.modulemap\" -Xcc -fmodule-map-file=\"${PODS_ROOT}/Headers/Public/SSZipArchive/SSZipArchive.modulemap\""; - PRODUCT_NAME = BT; - PROVISIONING_PROFILE_SPECIFIER = "match Development org.pathcheck.bt"; - SWIFT_OBJC_BRIDGING_HEADER = "BT/BT-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - }; - name = "Release-GPS"; - }; - D4CB502424A66BFA00405D61 /* Release-GPS */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A74024E269FF63C56B1025EA /* Pods-BTTests.release-gps.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ENABLE_MODULES = YES; - COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = 79Z8HUPGC3; - INFOPLIST_FILE = COVIDSafePathsTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "BT/BT-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BT.app/BT"; - }; - name = "Release-GPS"; + name = Release; }; /* End XCBuildConfiguration section */ @@ -2869,67 +1516,32 @@ 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "GPSTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 00E356F61AD99517003FC87E /* Debug-BT */, - D4CB500E24A66BB800405D61 /* Debug-GPS */, - 00E356F71AD99517003FC87E /* Release-BT */, - D4CB502224A66BFA00405D61 /* Release-GPS */, - D4CB501824A66BCE00405D61 /* Staging-BT */, - D4CB501D24A66BD400405D61 /* Staging-GPS */, + D4CB500E24A66BB800405D61 /* Debug */, + D4CB502224A66BFA00405D61 /* Release */, + D4CB501D24A66BD400405D61 /* Staging */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = "Release-BT"; + defaultConfigurationName = Debug; }; 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "GPS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 13B07F941A680F5B00A75B9A /* Debug-BT */, - D4CB500D24A66BB800405D61 /* Debug-GPS */, - 13B07F951A680F5B00A75B9A /* Release-BT */, - D4CB502124A66BFA00405D61 /* Release-GPS */, - D4CB501724A66BCE00405D61 /* Staging-BT */, - D4CB501C24A66BD400405D61 /* Staging-GPS */, + D4CB500D24A66BB800405D61 /* Debug */, + D4CB502124A66BFA00405D61 /* Release */, + D4CB501C24A66BD400405D61 /* Staging */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = "Release-BT"; + defaultConfigurationName = Debug; }; 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "COVIDSafePaths" */ = { isa = XCConfigurationList; buildConfigurations = ( - 83CBBA201A601CBA00E9B192 /* Debug-BT */, - D4CB500C24A66BB800405D61 /* Debug-GPS */, - 83CBBA211A601CBA00E9B192 /* Release-BT */, - D4CB502024A66BFA00405D61 /* Release-GPS */, - D4CB501624A66BCE00405D61 /* Staging-BT */, - D4CB501B24A66BD400405D61 /* Staging-GPS */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = "Release-BT"; - }; - C53FD0BC24719AD1006D3268 /* Build configuration list for PBXNativeTarget "BT" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C53FD0BD24719AD1006D3268 /* Debug-BT */, - D4CB500F24A66BB800405D61 /* Debug-GPS */, - C53FD0BF24719AD1006D3268 /* Release-BT */, - D4CB502324A66BFA00405D61 /* Release-GPS */, - D4CB501924A66BCE00405D61 /* Staging-BT */, - D4CB501E24A66BD400405D61 /* Staging-GPS */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = "Release-BT"; - }; - C5AA24DC24768FFF00BA0A99 /* Build configuration list for PBXNativeTarget "BTTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C5AA24DD24768FFF00BA0A99 /* Debug-BT */, - D4CB501024A66BB800405D61 /* Debug-GPS */, - C5AA24DF24768FFF00BA0A99 /* Release-BT */, - D4CB502424A66BFA00405D61 /* Release-GPS */, - D4CB501A24A66BCE00405D61 /* Staging-BT */, - D4CB501F24A66BD400405D61 /* Staging-GPS */, + D4CB500C24A66BB800405D61 /* Debug */, + D4CB502024A66BFA00405D61 /* Release */, + D4CB501B24A66BD400405D61 /* Staging */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = "Release-BT"; + defaultConfigurationName = Debug; }; /* End XCConfigurationList section */ @@ -2950,11 +1562,6 @@ package = 68D8970424809AA40091A254 /* XCRemoteSwiftPackageReference "swift-scrypt" */; productName = Scrypt; }; - 68EFB21224856EC6003D84F3 /* Scrypt */ = { - isa = XCSwiftPackageProductDependency; - package = 68D8970424809AA40091A254 /* XCRemoteSwiftPackageReference "swift-scrypt" */; - productName = Scrypt; - }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; diff --git a/ios/COVIDSafePaths.xcodeproj/xcshareddata/xcschemes/BT_Development.xcscheme b/ios/COVIDSafePaths.xcodeproj/xcshareddata/xcschemes/BT_Development.xcscheme deleted file mode 100644 index 7f77c2eefc..0000000000 --- a/ios/COVIDSafePaths.xcodeproj/xcshareddata/xcschemes/BT_Development.xcscheme +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ios/COVIDSafePaths.xcodeproj/xcshareddata/xcschemes/BT_Production.xcscheme b/ios/COVIDSafePaths.xcodeproj/xcshareddata/xcschemes/BT_Production.xcscheme deleted file mode 100644 index 0d6a29191f..0000000000 --- a/ios/COVIDSafePaths.xcodeproj/xcshareddata/xcschemes/BT_Production.xcscheme +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ios/COVIDSafePaths.xcodeproj/xcshareddata/xcschemes/GPS_Development.xcscheme b/ios/COVIDSafePaths.xcodeproj/xcshareddata/xcschemes/GPS_Development.xcscheme index b114798f8d..7ccbb10e6a 100644 --- a/ios/COVIDSafePaths.xcodeproj/xcshareddata/xcschemes/GPS_Development.xcscheme +++ b/ios/COVIDSafePaths.xcodeproj/xcshareddata/xcschemes/GPS_Development.xcscheme @@ -41,7 +41,7 @@ @@ -59,7 +59,7 @@ + buildConfiguration = "Debug"> diff --git a/ios/COVIDSafePaths.xcodeproj/xcshareddata/xcschemes/GPS_Production.xcscheme b/ios/COVIDSafePaths.xcodeproj/xcshareddata/xcschemes/GPS_Production.xcscheme index 432c72e106..0d1176e2a3 100644 --- a/ios/COVIDSafePaths.xcodeproj/xcshareddata/xcschemes/GPS_Production.xcscheme +++ b/ios/COVIDSafePaths.xcodeproj/xcshareddata/xcschemes/GPS_Production.xcscheme @@ -41,7 +41,7 @@ @@ -59,7 +59,7 @@ + buildConfiguration = "Release"> diff --git a/ios/AppDelegate.h b/ios/COVIDSafePaths/Application/AppDelegate.h similarity index 100% rename from ios/AppDelegate.h rename to ios/COVIDSafePaths/Application/AppDelegate.h diff --git a/ios/GPS/AppDelegate.m b/ios/COVIDSafePaths/Application/AppDelegate.m similarity index 100% rename from ios/GPS/AppDelegate.m rename to ios/COVIDSafePaths/Application/AppDelegate.m diff --git a/ios/GPS/GPS-Production.entitlements b/ios/COVIDSafePaths/Application/GPS-Production.entitlements similarity index 100% rename from ios/GPS/GPS-Production.entitlements rename to ios/COVIDSafePaths/Application/GPS-Production.entitlements diff --git a/ios/GPS/Info.plist b/ios/COVIDSafePaths/Application/Info.plist similarity index 100% rename from ios/GPS/Info.plist rename to ios/COVIDSafePaths/Application/Info.plist diff --git a/ios/GPS/Log.swift b/ios/COVIDSafePaths/Application/Log.swift similarity index 100% rename from ios/GPS/Log.swift rename to ios/COVIDSafePaths/Application/Log.swift diff --git a/ios/GPS/bridge/main.m b/ios/COVIDSafePaths/Application/main.m similarity index 100% rename from ios/GPS/bridge/main.m rename to ios/COVIDSafePaths/Application/main.m diff --git a/ios/GPS/GPS-Bridging-Header.h b/ios/COVIDSafePaths/Bridge/GPS-Bridging-Header.h similarity index 100% rename from ios/GPS/GPS-Bridging-Header.h rename to ios/COVIDSafePaths/Bridge/GPS-Bridging-Header.h diff --git a/ios/GPS/bridge/SecureStorageManager.m b/ios/COVIDSafePaths/Bridge/SecureStorageManager.m similarity index 100% rename from ios/GPS/bridge/SecureStorageManager.m rename to ios/COVIDSafePaths/Bridge/SecureStorageManager.m diff --git a/ios/GPS/bridge/SecureStorageManager.swift b/ios/COVIDSafePaths/Bridge/SecureStorageManager.swift similarity index 100% rename from ios/GPS/bridge/SecureStorageManager.swift rename to ios/COVIDSafePaths/Bridge/SecureStorageManager.swift diff --git a/ios/GPS/Config/Debug-GPS.xcconfig b/ios/COVIDSafePaths/Config/Debug.xcconfig similarity index 94% rename from ios/GPS/Config/Debug-GPS.xcconfig rename to ios/COVIDSafePaths/Config/Debug.xcconfig index 9cf487b385..686ae72a90 100644 --- a/ios/GPS/Config/Debug-GPS.xcconfig +++ b/ios/COVIDSafePaths/Config/Debug.xcconfig @@ -1,5 +1,5 @@ // -// Debug-GPS.xcconfig +// Debug.xcconfig // COVIDSafePaths // // Created by Rob Visentin on 6/26/20. diff --git a/ios/GPS/Config/Release-GPS.xcconfig b/ios/COVIDSafePaths/Config/Release.xcconfig similarity index 94% rename from ios/GPS/Config/Release-GPS.xcconfig rename to ios/COVIDSafePaths/Config/Release.xcconfig index 82868cb2f6..579d6731ca 100644 --- a/ios/GPS/Config/Release-GPS.xcconfig +++ b/ios/COVIDSafePaths/Config/Release.xcconfig @@ -1,5 +1,5 @@ // -// Release-GPS.xcconfig +// Release.xcconfig // COVIDSafePaths // // Created by Rob Visentin on 6/26/20. diff --git a/ios/GPS/Config/Staging-GPS.xcconfig b/ios/COVIDSafePaths/Config/Staging.xcconfig similarity index 94% rename from ios/GPS/Config/Staging-GPS.xcconfig rename to ios/COVIDSafePaths/Config/Staging.xcconfig index cae74c5ce5..d60b901ff4 100644 --- a/ios/GPS/Config/Staging-GPS.xcconfig +++ b/ios/COVIDSafePaths/Config/Staging.xcconfig @@ -1,5 +1,5 @@ // -// Staging-GPS.xcconfig +// Staging.xcconfig // COVIDSafePaths // // Created by Rob Visentin on 6/26/20. diff --git a/ios/GPS/Config/Version.xcconfig b/ios/COVIDSafePaths/Config/Version.xcconfig similarity index 78% rename from ios/GPS/Config/Version.xcconfig rename to ios/COVIDSafePaths/Config/Version.xcconfig index 7ae4157fb6..5d0d011e84 100644 --- a/ios/GPS/Config/Version.xcconfig +++ b/ios/COVIDSafePaths/Config/Version.xcconfig @@ -14,5 +14,5 @@ MARKETING_VERSION = 1.0.0 CURRENT_PROJECT_VERSION = 8 // Release -MARKETING_VERSION[config=Release-GPS] = 1.2.1 -CURRENT_PROJECT_VERSION[config=Release-GPS] = 1 +MARKETING_VERSION[config=Release] = 1.2.1 +CURRENT_PROJECT_VERSION[config=Release] = 1 diff --git a/ios/GPS/Extension/Array+Extension.swift b/ios/COVIDSafePaths/Extension/Array+Extension.swift similarity index 100% rename from ios/GPS/Extension/Array+Extension.swift rename to ios/COVIDSafePaths/Extension/Array+Extension.swift diff --git a/ios/GPS/Extension/MAURLocation+Extension.swift b/ios/COVIDSafePaths/Extension/MAURLocation+Extension.swift similarity index 100% rename from ios/GPS/Extension/MAURLocation+Extension.swift rename to ios/COVIDSafePaths/Extension/MAURLocation+Extension.swift diff --git a/ios/GPS/Extension/String+Extension.swift b/ios/COVIDSafePaths/Extension/String+Extension.swift similarity index 100% rename from ios/GPS/Extension/String+Extension.swift rename to ios/COVIDSafePaths/Extension/String+Extension.swift diff --git a/ios/ar.lproj/InfoPlist.strings b/ios/COVIDSafePaths/Localization/ar.lproj/InfoPlist.strings similarity index 100% rename from ios/ar.lproj/InfoPlist.strings rename to ios/COVIDSafePaths/Localization/ar.lproj/InfoPlist.strings diff --git a/ios/ar.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/ar.lproj/Localizable.strings similarity index 100% rename from ios/ar.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/ar.lproj/Localizable.strings diff --git a/ios/da.lproj/InfoPlist.strings b/ios/COVIDSafePaths/Localization/da.lproj/InfoPlist.strings similarity index 100% rename from ios/da.lproj/InfoPlist.strings rename to ios/COVIDSafePaths/Localization/da.lproj/InfoPlist.strings diff --git a/ios/da.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/da.lproj/Localizable.strings similarity index 100% rename from ios/da.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/da.lproj/Localizable.strings diff --git a/ios/en.lproj/InfoPlist.strings b/ios/COVIDSafePaths/Localization/en.lproj/InfoPlist.strings similarity index 100% rename from ios/en.lproj/InfoPlist.strings rename to ios/COVIDSafePaths/Localization/en.lproj/InfoPlist.strings diff --git a/ios/en.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/en.lproj/Localizable.strings similarity index 100% rename from ios/en.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/en.lproj/Localizable.strings diff --git a/ios/es-PR.lproj/InfoPlist.strings b/ios/COVIDSafePaths/Localization/es-PR.lproj/InfoPlist.strings similarity index 100% rename from ios/es-PR.lproj/InfoPlist.strings rename to ios/COVIDSafePaths/Localization/es-PR.lproj/InfoPlist.strings diff --git a/ios/es-PR.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/es-PR.lproj/Localizable.strings similarity index 100% rename from ios/es-PR.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/es-PR.lproj/Localizable.strings diff --git a/ios/es.lproj/InfoPlist.strings b/ios/COVIDSafePaths/Localization/es.lproj/InfoPlist.strings similarity index 100% rename from ios/es.lproj/InfoPlist.strings rename to ios/COVIDSafePaths/Localization/es.lproj/InfoPlist.strings diff --git a/ios/es.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/es.lproj/Localizable.strings similarity index 100% rename from ios/es.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/es.lproj/Localizable.strings diff --git a/ios/fr-HT.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/fr-HT.lproj/Localizable.strings similarity index 100% rename from ios/fr-HT.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/fr-HT.lproj/Localizable.strings diff --git a/ios/fr.lproj/InfoPlist.strings b/ios/COVIDSafePaths/Localization/fr.lproj/InfoPlist.strings similarity index 100% rename from ios/fr.lproj/InfoPlist.strings rename to ios/COVIDSafePaths/Localization/fr.lproj/InfoPlist.strings diff --git a/ios/fr.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/fr.lproj/Localizable.strings similarity index 100% rename from ios/fr.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/fr.lproj/Localizable.strings diff --git a/ios/ht.lproj/InfoPlist.strings b/ios/COVIDSafePaths/Localization/ht.lproj/InfoPlist.strings similarity index 100% rename from ios/ht.lproj/InfoPlist.strings rename to ios/COVIDSafePaths/Localization/ht.lproj/InfoPlist.strings diff --git a/ios/ht.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/ht.lproj/Localizable.strings similarity index 100% rename from ios/ht.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/ht.lproj/Localizable.strings diff --git a/ios/id.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/id.lproj/Localizable.strings similarity index 100% rename from ios/id.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/id.lproj/Localizable.strings diff --git a/ios/it.lproj/InfoPlist.strings b/ios/COVIDSafePaths/Localization/it.lproj/InfoPlist.strings similarity index 100% rename from ios/it.lproj/InfoPlist.strings rename to ios/COVIDSafePaths/Localization/it.lproj/InfoPlist.strings diff --git a/ios/it.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/it.lproj/Localizable.strings similarity index 100% rename from ios/it.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/it.lproj/Localizable.strings diff --git a/ios/ml.lproj/InfoPlist.strings b/ios/COVIDSafePaths/Localization/ml.lproj/InfoPlist.strings similarity index 100% rename from ios/ml.lproj/InfoPlist.strings rename to ios/COVIDSafePaths/Localization/ml.lproj/InfoPlist.strings diff --git a/ios/ml.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/ml.lproj/Localizable.strings similarity index 100% rename from ios/ml.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/ml.lproj/Localizable.strings diff --git a/ios/nl.lproj/InfoPlist.strings b/ios/COVIDSafePaths/Localization/nl.lproj/InfoPlist.strings similarity index 100% rename from ios/nl.lproj/InfoPlist.strings rename to ios/COVIDSafePaths/Localization/nl.lproj/InfoPlist.strings diff --git a/ios/nl.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/nl.lproj/Localizable.strings similarity index 100% rename from ios/nl.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/nl.lproj/Localizable.strings diff --git a/ios/pl.lproj/InfoPlist.strings b/ios/COVIDSafePaths/Localization/pl.lproj/InfoPlist.strings similarity index 100% rename from ios/pl.lproj/InfoPlist.strings rename to ios/COVIDSafePaths/Localization/pl.lproj/InfoPlist.strings diff --git a/ios/pl.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/pl.lproj/Localizable.strings similarity index 100% rename from ios/pl.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/pl.lproj/Localizable.strings diff --git a/ios/pt-BR.lproj/InfoPlist.strings b/ios/COVIDSafePaths/Localization/pt-BR.lproj/InfoPlist.strings similarity index 100% rename from ios/pt-BR.lproj/InfoPlist.strings rename to ios/COVIDSafePaths/Localization/pt-BR.lproj/InfoPlist.strings diff --git a/ios/pt-BR.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/pt-BR.lproj/Localizable.strings similarity index 100% rename from ios/pt-BR.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/pt-BR.lproj/Localizable.strings diff --git a/ios/ro.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/ro.lproj/Localizable.strings similarity index 100% rename from ios/ro.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/ro.lproj/Localizable.strings diff --git a/ios/ru.lproj/InfoPlist.strings b/ios/COVIDSafePaths/Localization/ru.lproj/InfoPlist.strings similarity index 100% rename from ios/ru.lproj/InfoPlist.strings rename to ios/COVIDSafePaths/Localization/ru.lproj/InfoPlist.strings diff --git a/ios/ru.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/ru.lproj/Localizable.strings similarity index 100% rename from ios/ru.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/ru.lproj/Localizable.strings diff --git a/ios/sk.lproj/InfoPlist.strings b/ios/COVIDSafePaths/Localization/sk.lproj/InfoPlist.strings similarity index 100% rename from ios/sk.lproj/InfoPlist.strings rename to ios/COVIDSafePaths/Localization/sk.lproj/InfoPlist.strings diff --git a/ios/sk.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/sk.lproj/Localizable.strings similarity index 100% rename from ios/sk.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/sk.lproj/Localizable.strings diff --git a/ios/tl.lproj/InfoPlist.strings b/ios/COVIDSafePaths/Localization/tl.lproj/InfoPlist.strings similarity index 100% rename from ios/tl.lproj/InfoPlist.strings rename to ios/COVIDSafePaths/Localization/tl.lproj/InfoPlist.strings diff --git a/ios/tl.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/tl.lproj/Localizable.strings similarity index 100% rename from ios/tl.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/tl.lproj/Localizable.strings diff --git a/ios/vi.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/vi.lproj/Localizable.strings similarity index 100% rename from ios/vi.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/vi.lproj/Localizable.strings diff --git a/ios/zh-Hant.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/zh-Hant.lproj/Localizable.strings similarity index 100% rename from ios/zh-Hant.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/zh-Hant.lproj/Localizable.strings diff --git a/ios/zz-ZZ.lproj/InfoPlist.strings b/ios/COVIDSafePaths/Localization/zz-ZZ.lproj/InfoPlist.strings similarity index 100% rename from ios/zz-ZZ.lproj/InfoPlist.strings rename to ios/COVIDSafePaths/Localization/zz-ZZ.lproj/InfoPlist.strings diff --git a/ios/zz-ZZ.lproj/Localizable.strings b/ios/COVIDSafePaths/Localization/zz-ZZ.lproj/Localizable.strings similarity index 100% rename from ios/zz-ZZ.lproj/Localizable.strings rename to ios/COVIDSafePaths/Localization/zz-ZZ.lproj/Localizable.strings diff --git a/ios/COVIDSafePaths/Base.lproj/LaunchScreen.xib b/ios/COVIDSafePaths/Resources/Base.lproj/LaunchScreen.xib similarity index 100% rename from ios/COVIDSafePaths/Base.lproj/LaunchScreen.xib rename to ios/COVIDSafePaths/Resources/Base.lproj/LaunchScreen.xib diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/Contents.json rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/Contents.json diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-1024@1x.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-1024@1x.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-1024@1x.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-1024@1x.png diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-20.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-20.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-20.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-20.png diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-20@2x-1.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-20@2x-1.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-20@2x-1.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-20@2x-1.png diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-20@2x-2.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-20@2x-2.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-20@2x-2.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-20@2x-2.png diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-20@2x.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-20@2x.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-20@2x.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-20@2x.png diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-20@3x.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-20@3x.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-20@3x.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-20@3x.png diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-29.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-29.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-29.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-29.png diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-29@2x-1.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-29@2x-1.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-29@2x-1.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-29@2x-1.png diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-29@2x.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-29@2x.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-29@2x.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-29@2x.png diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-29@3x.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-29@3x.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-29@3x.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-29@3x.png diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-30.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-30.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-30.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-30.png diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-40@2x-1.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-40@2x-1.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-40@2x-1.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-40@2x-1.png diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-40@2x.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-40@2x.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-40@2x.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-40@2x.png diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-40@3x.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-40@3x.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-40@3x.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-40@3x.png diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-60@2x.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-60@2x.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-60@2x.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-60@2x.png diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-60@3x.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-60@3x.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-60@3x.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-60@3x.png diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-76.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-76.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-76.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-76.png diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-76@2x.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-76@2x.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-76@2x.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-76@2x.png diff --git a/ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-83.5@2x.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-83.5@2x.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIcon.appiconset/icon-ios-83.5@2x.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIcon.appiconset/icon-ios-83.5@2x.png diff --git a/ios/GPS/Images.xcassets/AppIconDev.appiconset/Contents.json b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconDev.appiconset/Contents.json similarity index 100% rename from ios/GPS/Images.xcassets/AppIconDev.appiconset/Contents.json rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconDev.appiconset/Contents.json diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/100.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/100.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/100.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/100.png diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/1024.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/1024.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/1024.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/1024.png diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/114.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/114.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/114.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/114.png diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/120.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/120.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/120.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/120.png diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/144.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/144.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/144.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/144.png diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/152.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/152.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/152.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/152.png diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/167.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/167.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/167.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/167.png diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/180.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/180.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/180.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/180.png diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/20.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/20.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/20.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/20.png diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/29.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/29.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/29.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/29.png diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/40.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/40.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/40.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/40.png diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/50.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/50.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/50.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/50.png diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/57.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/57.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/57.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/57.png diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/58.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/58.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/58.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/58.png diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/60.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/60.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/60.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/60.png diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/72.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/72.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/72.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/72.png diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/76.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/76.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/76.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/76.png diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/80.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/80.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/80.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/80.png diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/87.png b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/87.png similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/87.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/87.png diff --git a/ios/GPS/Images.xcassets/AppIconStaging.appiconset/Contents.json b/ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/Contents.json similarity index 100% rename from ios/GPS/Images.xcassets/AppIconStaging.appiconset/Contents.json rename to ios/COVIDSafePaths/Resources/Images.xcassets/AppIconStaging.appiconset/Contents.json diff --git a/ios/BT/Images.xcassets/Contents.json b/ios/COVIDSafePaths/Resources/Images.xcassets/Contents.json similarity index 100% rename from ios/BT/Images.xcassets/Contents.json rename to ios/COVIDSafePaths/Resources/Images.xcassets/Contents.json diff --git a/ios/GPS/Images.xcassets/bgImage.imageset/Contents.json b/ios/COVIDSafePaths/Resources/Images.xcassets/bgImage.imageset/Contents.json similarity index 100% rename from ios/GPS/Images.xcassets/bgImage.imageset/Contents.json rename to ios/COVIDSafePaths/Resources/Images.xcassets/bgImage.imageset/Contents.json diff --git a/ios/GPS/Images.xcassets/bgImage.imageset/loading - light.png b/ios/COVIDSafePaths/Resources/Images.xcassets/bgImage.imageset/loading - light.png similarity index 100% rename from ios/GPS/Images.xcassets/bgImage.imageset/loading - light.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/bgImage.imageset/loading - light.png diff --git a/ios/GPS/Images.xcassets/bgImage.imageset/loading - light@2x.png b/ios/COVIDSafePaths/Resources/Images.xcassets/bgImage.imageset/loading - light@2x.png similarity index 100% rename from ios/GPS/Images.xcassets/bgImage.imageset/loading - light@2x.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/bgImage.imageset/loading - light@2x.png diff --git a/ios/GPS/Images.xcassets/bgImage.imageset/loading - light@3x.png b/ios/COVIDSafePaths/Resources/Images.xcassets/bgImage.imageset/loading - light@3x.png similarity index 100% rename from ios/GPS/Images.xcassets/bgImage.imageset/loading - light@3x.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/bgImage.imageset/loading - light@3x.png diff --git a/ios/GPS/Images.xcassets/logoImage.imageset/COVIDSafePathsLogo.png b/ios/COVIDSafePaths/Resources/Images.xcassets/logoImage.imageset/COVIDSafePathsLogo.png similarity index 100% rename from ios/GPS/Images.xcassets/logoImage.imageset/COVIDSafePathsLogo.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/logoImage.imageset/COVIDSafePathsLogo.png diff --git a/ios/GPS/Images.xcassets/logoImage.imageset/COVIDSafePathsLogo@2x.png b/ios/COVIDSafePaths/Resources/Images.xcassets/logoImage.imageset/COVIDSafePathsLogo@2x.png similarity index 100% rename from ios/GPS/Images.xcassets/logoImage.imageset/COVIDSafePathsLogo@2x.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/logoImage.imageset/COVIDSafePathsLogo@2x.png diff --git a/ios/GPS/Images.xcassets/logoImage.imageset/COVIDSafePathsLogo@3x.png b/ios/COVIDSafePaths/Resources/Images.xcassets/logoImage.imageset/COVIDSafePathsLogo@3x.png similarity index 100% rename from ios/GPS/Images.xcassets/logoImage.imageset/COVIDSafePathsLogo@3x.png rename to ios/COVIDSafePaths/Resources/Images.xcassets/logoImage.imageset/COVIDSafePathsLogo@3x.png diff --git a/ios/GPS/Images.xcassets/logoImage.imageset/Contents.json b/ios/COVIDSafePaths/Resources/Images.xcassets/logoImage.imageset/Contents.json similarity index 100% rename from ios/GPS/Images.xcassets/logoImage.imageset/Contents.json rename to ios/COVIDSafePaths/Resources/Images.xcassets/logoImage.imageset/Contents.json diff --git a/ios/GPS/storage/GPSSecureStorage.swift b/ios/COVIDSafePaths/storage/GPSSecureStorage.swift similarity index 100% rename from ios/GPS/storage/GPSSecureStorage.swift rename to ios/COVIDSafePaths/storage/GPSSecureStorage.swift diff --git a/ios/GPS/storage/Location.swift b/ios/COVIDSafePaths/storage/Location.swift similarity index 100% rename from ios/GPS/storage/Location.swift rename to ios/COVIDSafePaths/storage/Location.swift diff --git a/ios/Common/SafePathsSecureStorage.swift b/ios/COVIDSafePaths/storage/SafePathsSecureStorage.swift similarity index 100% rename from ios/Common/SafePathsSecureStorage.swift rename to ios/COVIDSafePaths/storage/SafePathsSecureStorage.swift diff --git a/ios/GPS/Images.xcassets/Contents.json b/ios/GPS/Images.xcassets/Contents.json deleted file mode 100644 index da4a164c91..0000000000 --- a/ios/GPS/Images.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/ios/GPS/storage/Geohash.swift b/ios/GPS/storage/Geohash.swift deleted file mode 100644 index b34ad544e8..0000000000 --- a/ios/GPS/storage/Geohash.swift +++ /dev/null @@ -1,120 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2019 Naoki Hiroshima -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// Influenced by https://github.com/nh7a/Geohash/blob/master/Sources/Geohash/Geohash.swift -// GeoHash information https://www.movable-type.co.uk/scripts/geohash.html -import Foundation - -public struct Geohash { - public static func decode(hash: String) -> (latitude: (min: Double, max: Double), longitude: (min: Double, max: Double))? { - // For example: hash = u4pruydqqvj - let bits = hash.map { bitmap[$0] ?? "?" }.joined(separator: "") - guard bits.count % 5 == 0 else { return nil } - // bits = 1101000100101011011111010111100110010110101101101110001 - - let (lat, lon) = bits.enumerated().reduce(into: ([Character](), [Character]())) { - if $1.0 % 2 == 0 { - $0.1.append($1.1) - } else { - $0.0.append($1.1) - } - } - // lat = [1,1,0,1,0,0,0,1,1,1,1,1,1,1,0,1,0,1,1,0,0,1,1,0,1,0,0] - // lon = [1,0,0,0,0,1,1,1,0,1,1,0,0,1,1,0,1,0,0,1,1,1,0,1,1,1,0,1] - - func combiner(array a: (min: Double, max: Double), value: Character) -> (Double, Double) { - let mean = (a.min + a.max) / 2 - return value == "1" ? (mean, a.max) : (a.min, mean) - } - - let latRange = lat.reduce((-90.0, 90.0), combiner) - // latRange = (57.649109959602356, 57.649111300706863) - - let lonRange = lon.reduce((-180.0, 180.0), combiner) - // lonRange = (10.407439023256302, 10.407440364360809) - - return (latRange, lonRange) - } - - public static func encode(latitude: Double, longitude: Double, length: Int) -> String { - // For example: (latitude, longitude) = (57.6491106301546, 10.4074396938086) - func combiner(array a: (min: Double, max: Double, array: [String]), value: Double) -> (Double, Double, [String]) { - let mean = (a.min + a.max) / 2 - if value < mean { - return (a.min, mean, a.array + "0") - } else { - return (mean, a.max, a.array + "1") - } - } - - let lat = Array(repeating: latitude, count: length*5).reduce((-90.0, 90.0, [String]()), combiner) - // lat = (57.64911063015461, 57.649110630154766, [1,1,0,1,0,0,0,1,1,1,1,1,1,1,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,0,...]) - - let lon = Array(repeating: longitude, count: length*5).reduce((-180.0, 180.0, [String]()), combiner) - // lon = (10.407439693808236, 10.407439693808556, [1,0,0,0,0,1,1,1,0,1,1,0,0,1,1,0,1,0,0,1,1,1,0,1,1,1,0,1,0,1,..]) - - let latlon = lon.2.enumerated().flatMap { [$1, lat.2[$0]] } - // latlon - [1,1,0,1,0,0,0,1,0,0,1,0,1,0,1,1,0,1,1,1,1,1,0,1,0,1,1,1,1,...] - - let bits = latlon.enumerated().reduce([String]()) { $1.0 % 5 > 0 ? $0 << $1.1 : $0 + $1.1 } - // bits: [11010,00100,10101,10111,11010,11110,01100,10110,10110,11011,10001,10010,10101,...] - - let arr = bits.compactMap { charmap[$0] } - // arr: [u,4,p,r,u,y,d,q,q,v,j,k,p,b,...] - - return String(arr.prefix(length)) - } - - /// Radius around center point of a given location - public static let GEO_CIRCLE_RADII: [(latitude: Double, longitude: Double)] = [ - (0, 0), // center - (0.0001, 0), // N - (0.00007, 0.00007), // NE - (0, 0.0001), // E - (-0.00007, 0.00007), // SE - (-0.0001, 0), // S - (-0.00007, -0.00007), // SW - (0, -0.0001), // W - (0.00007, -0.00007) //NW - ] - - // MARK: Private - private static let bitmap = "0123456789bcdefghjkmnpqrstuvwxyz".enumerated() - .map {($1, String(integer: $0, radix: 2, padding: 5))} - .reduce(into: [Character: String]()) { $0[$1.0] = $1.1 } - - private static let charmap = bitmap - .reduce(into: [String: Character]()) { $0[$1.1] = $1.0 } -} - -private func + (left: [String], right: String) -> [String] { - var arr = left - arr.append(right) - return arr -} - -private func << (left: [String], right: String) -> [String] { - var arr = left - var s = arr.popLast()! - s += right - arr.append(s) - return arr -} diff --git a/ios/Podfile b/ios/Podfile index 5851c592d5..b833e8895f 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -2,12 +2,11 @@ platform :ios, '9.0' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' project 'COVIDSafePaths.xcodeproj', -'Debug-BT' => :debug, -'Debug-GPS' => :debug, -'Release-BT' => :release, -'Release-GPS' => :release, -'Staging-BT' => :release, -'Staging-GPS' => :release +'Debug' => :debug, +'Release' => :release, +'Staging' => :release + +inhibit_all_warnings! def shared_pods # Pods for COVIDSafePaths @@ -46,8 +45,7 @@ def shared_pods pod 'RNReanimated', :path => '../node_modules/react-native-reanimated' - permissions_path = '../node_modules/react-native-permissions/ios' - pod 'Permission-Notifications', :path => "#{permissions_path}/Notifications.podspec" + pod 'Permission-Notifications', :path => "../node_modules/react-native-permissions/ios/Notifications.podspec" pod 'Realm', :modular_headers => true pod 'RealmSwift', :modular_headers => true @@ -56,16 +54,7 @@ def shared_pods end def gps_pods - permissions_path = '../node_modules/react-native-permissions/ios' - pod 'Permission-LocationAlways', :path => "#{permissions_path}/LocationAlways.podspec" -end - -def bt_pods - ### These should be removed in a future commit - permissions_path = '../node_modules/react-native-permissions/ios' - pod 'Permission-LocationAlways', :path => "#{permissions_path}/LocationAlways.podspec" - pod 'Alamofire', '~> 4.9.1' - pod 'ZIPFoundation' + pod 'Permission-LocationAlways', :path => "../node_modules/react-native-permissions/ios/LocationAlways.podspec" end target 'GPS' do @@ -73,19 +62,8 @@ target 'GPS' do shared_pods end -target 'BT' do - bt_pods - shared_pods -end - target 'GPSTests' do inherit! :search_paths gps_pods shared_pods end - -target 'BTTests' do - inherit! :search_paths - bt_pods - shared_pods -end diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 62da032b14..6b409781ba 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,7 +1,6 @@ PODS: - "@mauron85_react-native-background-geolocation (0.6.3)": - React - - Alamofire (4.9.1) - boost-for-react-native (1.63.0) - BVLinearGradient (2.5.6): - React @@ -290,11 +289,9 @@ PODS: - SSZipArchive (= 2.2.2) - SSZipArchive (2.2.2) - Yoga (1.14.0) - - ZIPFoundation (0.9.11) DEPENDENCIES: - "@mauron85_react-native-background-geolocation (from `../node_modules/@mauron85/react-native-background-geolocation`)" - - Alamofire (~> 4.9.1) - BVLinearGradient (from `../node_modules/react-native-linear-gradient`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) @@ -354,16 +351,13 @@ DEPENDENCIES: - RNSVG (from `../node_modules/react-native-svg`) - RNZipArchive (from `../node_modules/react-native-zip-archive`) - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) - - ZIPFoundation SPEC REPOS: trunk: - - Alamofire - boost-for-react-native - Realm - RealmSwift - SSZipArchive - - ZIPFoundation EXTERNAL SOURCES: "@mauron85_react-native-background-geolocation": @@ -479,7 +473,6 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: "@mauron85_react-native-background-geolocation": fa34ab82e94212be16ef6e75c32bcb707b0a1524 - Alamofire: 85e8a02c69d6020a0d734f6054870d7ecb75cf18 boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c BVLinearGradient: e3aad03778a456d77928f594a649e96995f1c872 DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2 @@ -538,8 +531,7 @@ SPEC CHECKSUMS: RNZipArchive: ab51bc004a31657f34010254a9182014c6a81217 SSZipArchive: fa16b8cc4cdeceb698e5e5d9f67e9558532fbf23 Yoga: f2a7cd4280bfe2cca5a7aed98ba0eb3d1310f18b - ZIPFoundation: b1f0de4eed33e74a676f76e12559ab6b75990197 -PODFILE CHECKSUM: d641f53b267b5fdc2398388c8211cf0739401d29 +PODFILE CHECKSUM: a70cd2a7867b1a342049fd907a0dace84082799b COCOAPODS: 1.9.1 diff --git a/package.json b/package.json index 513ebc61d4..42a41bddbf 100644 --- a/package.json +++ b/package.json @@ -10,10 +10,8 @@ "format": "yarn prettier --write", "lint": "eslint ./", "validate": "yarn prettier --list-different && yarn tsc && yarn lint", - "run-android-bt": "react-native run-android --variant=btDebug --appId=org.pathcheck.covidsafepathsBt", - "run-android-gps": "react-native run-android --variant=gpsDebug --appId=org.pathcheck.covidsafepaths", - "run-ios-bt": "yarn install:pod && react-native run-ios --scheme \"BT_Development\" --configuration \"Debug-BT\" --simulator \"iPhone 11 (13.5)\"", - "run-ios-gps": "yarn install:pod && react-native run-ios --scheme \"GPS_Development\" --configuration \"Debug-GPS\"", + "run-android": "react-native run-android --variant=gpsDebug --appId=org.pathcheck.covidsafepaths", + "run-ios": "yarn install:pod && react-native run-ios --scheme \"GPS_Development\" --configuration \"Debug\"", "preinstall": "node -e \"if(process.env.npm_execpath.indexOf('yarn') === -1) throw new Error('You must use Yarn to install, not NPM')\"", "install:pod": "cd ios && bundle install --quiet && bundle exec pod install --silent", "postinstall": "./scripts/install-submodules.sh node_modules/\\@mauron85/react-native-background-geolocation && patch-package && node ./scripts/replace.js && npx react-native-jetifier", @@ -186,48 +184,24 @@ }, "configurations": { "iphone11.sim": { - "binaryPath": "ios/build/Build/Products/Release-GPS-iphonesimulator/GPS.app", - "build": "xcodebuild -workspace ios/COVIDSafePaths.xcworkspace -scheme GPS_Production -configuration Release-GPS -sdk iphonesimulator -derivedDataPath ios/build", + "binaryPath": "ios/build/Build/Products/Release-iphonesimulator/GPS.app", + "build": "xcodebuild -workspace ios/COVIDSafePaths.xcworkspace -scheme GPS_Production -configuration Release -sdk iphonesimulator -derivedDataPath ios/build", "type": "ios.simulator", "device": { "type": "iPhone 11" } }, "iphone8.sim": { - "binaryPath": "ios/build/Build/Products/Release-GPS-iphonesimulator/GPS.app", - "build": "xcodebuild -workspace ios/COVIDSafePaths.xcworkspace -scheme GPS_Production -configuration Release-GPS -sdk iphonesimulator -derivedDataPath ios/build", + "binaryPath": "ios/build/Build/Products/Release-iphonesimulator/GPS.app", + "build": "xcodebuild -workspace ios/COVIDSafePaths.xcworkspace -scheme GPS_Production -configuration Release -sdk iphonesimulator -derivedDataPath ios/build", "type": "ios.simulator", "device": { "type": "iPhone 8" } }, "iphone-se.sim": { - "binaryPath": "ios/build/Build/Products/Release-GPS-iphonesimulator/GPS.app", - "build": "xcodebuild -workspace ios/COVIDSafePaths.xcworkspace -scheme GPS_Production -configuration Release-GPS -sdk iphonesimulator -derivedDataPath ios/build", - "type": "ios.simulator", - "device": { - "type": "iPhone SE (2nd generation)" - } - }, - "iphone11-bt.sim": { - "binaryPath": "ios/build/Build/Products/Release-BT-iphonesimulator/BT.app", - "build": "xcodebuild -workspace ios/COVIDSafePaths.xcworkspace -scheme BT_Production -configuration Release-BT -sdk iphonesimulator -derivedDataPath ios/build", - "type": "ios.simulator", - "device": { - "type": "iPhone 11" - } - }, - "iphone8-bt.sim": { - "binaryPath": "ios/build/Build/Products/Release-BT-iphonesimulator/BT.app", - "build": "xcodebuild -workspace ios/COVIDSafePaths.xcworkspace -scheme BT_Production -configuration Release-BT -sdk iphonesimulator -derivedDataPath ios/build", - "type": "ios.simulator", - "device": { - "type": "iPhone 8" - } - }, - "iphone-se-bt.sim": { - "binaryPath": "ios/build/Build/Products/Release-BT-iphonesimulator/BT.app", - "build": "xcodebuild -workspace ios/COVIDSafePaths.xcworkspace -scheme BT_Production -configuration Release-BT -sdk iphonesimulator -derivedDataPath ios/build", + "binaryPath": "ios/build/Build/Products/Release-iphonesimulator/GPS.app", + "build": "xcodebuild -workspace ios/COVIDSafePaths.xcworkspace -scheme GPS_Production -configuration Release -sdk iphonesimulator -derivedDataPath ios/build", "type": "ios.simulator", "device": { "type": "iPhone SE (2nd generation)"