mirror of
https://github.com/AU-COVIDSafe/mobile-ios.git
synced 2025-04-19 21:15:21 +00:00
COVIDSafe code from version 1.4 (updates) (#4)
This commit is contained in:
parent
b2e0c5b34c
commit
6b262be150
15 changed files with 140 additions and 144 deletions
|
@ -79,3 +79,5 @@ extension Encounter {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -10,15 +10,63 @@ import CoreData
|
|||
|
||||
extension EncounterRecord {
|
||||
|
||||
func saveToCoreData() {
|
||||
func saveRemoteCentralToCoreData() throws {
|
||||
// remote blob will be modelC rssi txPower msg if v1. If v2 then remoteBlob will just be msg
|
||||
// localblob will be modelP
|
||||
var localBlob = EncounterBlob()
|
||||
localBlob.modelP = self.modelP
|
||||
var remoteBlob = EncounterBlob()
|
||||
remoteBlob.modelC = self.modelC
|
||||
remoteBlob.rssi = self.rssi
|
||||
remoteBlob.txPower = self.txPower
|
||||
remoteBlob.msg = self.msg
|
||||
|
||||
var encryptedLocalBlob: String
|
||||
var encryptedRemoteBlob: String
|
||||
let localJson = try JSONEncoder().encode(localBlob)
|
||||
encryptedLocalBlob = try Crypto.encrypt(dataToEncrypt: localJson)
|
||||
if v == 1 {
|
||||
let remoteJson = try JSONEncoder().encode(remoteBlob)
|
||||
encryptedRemoteBlob = try Crypto.encrypt(dataToEncrypt: remoteJson)
|
||||
} else {
|
||||
encryptedRemoteBlob = self.msg!
|
||||
}
|
||||
|
||||
saveToCoreData(remoteBlob: encryptedRemoteBlob, localBlob: encryptedLocalBlob)
|
||||
}
|
||||
|
||||
func saveRemotePeripheralToCoreData() throws {
|
||||
var remoteBlob = EncounterBlob()
|
||||
remoteBlob.modelP = self.modelP
|
||||
remoteBlob.msg = self.msg
|
||||
var localBlob = EncounterBlob()
|
||||
localBlob.modelC = self.modelC
|
||||
localBlob.rssi = self.rssi
|
||||
localBlob.txPower = self.txPower
|
||||
|
||||
var encryptedLocalBlob: String
|
||||
var encryptedRemoteBlob: String
|
||||
let localJson = try JSONEncoder().encode(localBlob)
|
||||
encryptedLocalBlob = try Crypto.encrypt(dataToEncrypt: localJson)
|
||||
if v == 1 {
|
||||
let remoteJson = try JSONEncoder().encode(remoteBlob)
|
||||
encryptedRemoteBlob = try Crypto.encrypt(dataToEncrypt: remoteJson)
|
||||
} else {
|
||||
encryptedRemoteBlob = self.msg!
|
||||
}
|
||||
|
||||
saveToCoreData(remoteBlob: encryptedRemoteBlob, localBlob: encryptedLocalBlob)
|
||||
}
|
||||
|
||||
private func saveToCoreData(remoteBlob: String, localBlob: String) {
|
||||
DispatchQueue.main.async {
|
||||
guard let persistentContainer = EncounterDB.shared.persistentContainer else {
|
||||
return
|
||||
}
|
||||
let managedContext = appDelegate.persistentContainer.viewContext
|
||||
let managedContext = persistentContainer.viewContext
|
||||
let entity = NSEntityDescription.entity(forEntityName: "Encounter", in: managedContext)!
|
||||
let encounter = Encounter(entity: entity, insertInto: managedContext)
|
||||
encounter.set(encounterStruct: self)
|
||||
encounter.set(encounterStruct: self, remoteBlob: remoteBlob, localBlob: localBlob)
|
||||
do {
|
||||
try managedContext.save()
|
||||
} catch {
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
//
|
||||
// Encounter+Event.swift
|
||||
// CovidSafe
|
||||
//
|
||||
// Copyright © 2020 Australian Government. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import CoreData
|
||||
|
||||
extension Encounter {
|
||||
|
||||
enum Event: String, CaseIterable {
|
||||
case scanningStarted = "Scanning started"
|
||||
case scanningStopped = "Scanning stopped"
|
||||
|
||||
case appStarted = "App started"
|
||||
case appEnteredForeground = "App entered foreground"
|
||||
case appEnteredBackground = "App entered background"
|
||||
case appTerminating = "App about to terminate"
|
||||
}
|
||||
|
||||
static func timestamp(for event: Event) {
|
||||
DispatchQueue.main.async {
|
||||
guard let appDelegate =
|
||||
UIApplication.shared.delegate as? AppDelegate else {
|
||||
return
|
||||
}
|
||||
let managedContext = appDelegate.persistentContainer.viewContext
|
||||
let entity = NSEntityDescription.entity(forEntityName: "Encounter", in: managedContext)!
|
||||
let encounter = Encounter(entity: entity, insertInto: managedContext)
|
||||
encounter.msg = event.rawValue
|
||||
encounter.timestamp = Date()
|
||||
encounter.v = nil
|
||||
do {
|
||||
try managedContext.save()
|
||||
} catch {
|
||||
print("Could not save. \(error)")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
// Copyright © 2020 Australian Government All rights reserved.
|
||||
|
||||
|
||||
import UIKit
|
||||
|
||||
extension UIDevice {
|
||||
|
|
|
@ -49,6 +49,7 @@ public struct FeedbackSettings {
|
|||
getReporterInfoAsynchronously: ((@escaping (_ usernameOrEmail: String?, _ avatarImageURL: URL?) -> Void) -> Void)? = nil
|
||||
) throws {
|
||||
let target = try defaultFeedbackSettings?.JIRATarget ?? JMCTarget.createTargetFromJSONOnDisk()
|
||||
|
||||
self.init(
|
||||
JIRATarget: target,
|
||||
issueType: issueType,
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
<array>
|
||||
<string>bluetooth-central</string>
|
||||
<string>bluetooth-peripheral</string>
|
||||
<string>remote-notification</string>
|
||||
</array>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
|
|
|
@ -244,3 +244,4 @@ class OTPViewController: UIViewController, RegistrationHandler {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,46 +9,8 @@ import UIKit
|
|||
import UserNotifications
|
||||
|
||||
class OnboardingStep2ViewController: UIViewController {
|
||||
|
||||
@IBAction func allowPermissionsBtn(_ sender: UIButton) {
|
||||
requestAllPermissions()
|
||||
}
|
||||
|
||||
@IBAction func onBackTapped(_ sender: UIButton) {
|
||||
self.navigationController?.popViewController(animated: true)
|
||||
}
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
// Do any additional setup after loading the view.
|
||||
}
|
||||
|
||||
override func viewWillDisappear(_ animated: Bool) {
|
||||
super.viewWillDisappear(animated)
|
||||
// Show the navigation bar on other view controllers
|
||||
|
||||
}
|
||||
|
||||
func requestAllPermissions() {
|
||||
UNUserNotificationCenter.current() // 1
|
||||
.requestAuthorization(options: [.alert, .sound, .badge]) { // 2
|
||||
granted, error in
|
||||
BluetraceManager.shared.turnOn()
|
||||
UserDefaults.standard.set(true, forKey: "allowedPermissions")
|
||||
print("Permissions granted: \(granted)") // 3
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
// MARK: - Navigation
|
||||
|
||||
// In a storyboard-based application, you will often want to do a little preparation before navigation
|
||||
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
|
||||
// Get the new view controller using segue.destination.
|
||||
// Pass the selected object to the new view controller.
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
|
|
@ -6,24 +6,41 @@
|
|||
//
|
||||
|
||||
import UIKit
|
||||
import SafariServices
|
||||
|
||||
class OnboardingStep2bViewController: UIViewController {
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
// Do any additional setup after loading the view.
|
||||
override func viewDidAppear(_ animated: Bool) {
|
||||
super.viewDidAppear(animated)
|
||||
BluetraceManager.shared.turnOn()
|
||||
UserDefaults.standard.set(true, forKey: "turnedOnBluetooth")
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
// MARK: - Navigation
|
||||
|
||||
// In a storyboard-based application, you will often want to do a little preparation before navigation
|
||||
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
|
||||
// Get the new view controller using segue.destination.
|
||||
// Pass the selected object to the new view controller.
|
||||
}
|
||||
*/
|
||||
|
||||
@IBAction func learnMoreTapped(_ sender: Any) {
|
||||
guard let url = URL(string: "https://www.covidsafe.gov.au/help-topics.html#bluetooth-pairing-request") else {
|
||||
return
|
||||
}
|
||||
|
||||
let safariVC = SFSafariViewController(url: url)
|
||||
present(safariVC, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
@IBAction func continueBtnTapped(_ sender: UIButton) {
|
||||
requestAllPermissions()
|
||||
}
|
||||
|
||||
func requestAllPermissions() {
|
||||
|
||||
UNUserNotificationCenter.current() // 1
|
||||
.requestAuthorization(options: [.alert, .sound, .badge]) { // 2
|
||||
granted, error in
|
||||
|
||||
UserDefaults.standard.set(true, forKey: "allowedPermissions")
|
||||
print("Permissions granted: \(granted)") // 3
|
||||
|
||||
DispatchQueue.main.async {
|
||||
self.performSegue(withIdentifier: "showHomeSegue", sender: self)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,44 +0,0 @@
|
|||
//
|
||||
// OnboardingStep2cViewController.swift
|
||||
// CovidSafe
|
||||
//
|
||||
// Copyright © 2020 Australian Government. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
class OnboardingStep2cViewController: UIViewController {
|
||||
|
||||
@IBAction func enabledBluetoothBtn(_ sender: UIButton) {
|
||||
UserDefaults.standard.set(true, forKey: "turnedOnBluetooth")
|
||||
|
||||
DispatchQueue.main.async {
|
||||
UNUserNotificationCenter.current().getNotificationSettings(completionHandler: { [weak self] settings in
|
||||
DispatchQueue.main.async {
|
||||
if settings.authorizationStatus == .authorized && BluetraceManager.shared.isBluetoothAuthorized() && BluetraceManager.shared.isBluetoothOn() {
|
||||
self?.performSegue(withIdentifier: "showFullySetUpFromTurnOnBtSegue", sender: self)
|
||||
} else {
|
||||
self?.performSegue(withIdentifier: "showHomeFromTurnOnBtSegue", sender: self)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
// Do any additional setup after loading the view.
|
||||
}
|
||||
|
||||
/*
|
||||
// MARK: - Navigation
|
||||
|
||||
// In a storyboard-based application, you will often want to do a little preparation before navigation
|
||||
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
|
||||
// Get the new view controller using segue.destination.
|
||||
// Pass the selected object to the new view controller.
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
|
@ -28,3 +28,4 @@ class Question2ViewController: UIViewController {
|
|||
messageTextView.addLink("https://www.health.gov.au/news/health-alerts/novel-coronavirus-2019-ncov-health-alert/how-to-protect-yourself-and-others-from-coronavirus-covid-19/self-isolation-self-quarantine-for-coronavirus-covid-19", enclosedIn: "*")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -184,3 +184,4 @@ class UploadDataStep2VC: UIViewController, CodeInputViewDelegate {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue