Skip to content

chore: kickoff release #123

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 21 additions & 4 deletions HostApp/HostApp/Views/StartSessionView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ struct StartSessionView: View {
@ObservedObject var viewModel = StartSessionViewModel()
@Binding var sessionID: String
@Binding var isPresentingContainerView: Bool
@State private var showAlert = false

var body: some View {
VStack {
Expand All @@ -31,18 +32,34 @@ struct StartSessionView: View {
dark: .hex("#7dd6e8")
),
action: {
viewModel.createSession {
sessionID = $0
isPresentingContainerView = true
viewModel.createSession { sessionId, err in
if let sessionId = sessionId {
sessionID = sessionId
isPresentingContainerView = true
}

showAlert = err != nil
}
},
enabled: viewModel.isSignedIn
)
.alert(isPresented: $showAlert) {
Alert(
title: Text("Error Creating Liveness Session"),
message: Text("Unable to create a liveness session id. Please try again."),
dismissButton: .default(
Text("OK"),
action: {
isPresentingContainerView = false
}
)
)
}

Spacer()
HStack {
Spacer()
Text("v0.1.16")
Text("v0.1.19")
.font(.callout)
.padding()
}
Expand Down
9 changes: 7 additions & 2 deletions HostApp/HostApp/Views/StartSessionViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,16 @@ class StartSessionViewModel: ObservableObject {
? .signedIn(action: signOut)
: .signedOut(action: signIn)
} catch {
presentationState = .signedOut(action: signIn)
print("Error fetching auth session", error)
}

}
}

func createSession(_ completion: @escaping (String) -> Void) {
func createSession(_ completion: @escaping (String?, Error?) -> Void) {
Task { @MainActor in
let currentPresentationState = presentationState
presentationState = .loading
let request = RESTRequest(
apiName: "liveness",
Expand All @@ -45,9 +47,12 @@ class StartSessionViewModel: ObservableObject {
CreateSessionResponse.self,
from: data
)
completion(response.sessionId)
presentationState = currentPresentationState
completion(response.sessionId, nil)
} catch {
presentationState = currentPresentationState
print("Error creating session", error)
completion(nil, error)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import Amplify

final class _LivenessViewController: UIViewController {
let viewModel: FaceLivenessDetectionViewModel
var previewLayer: CALayer!
var previewLayer: CALayer?

let faceShapeLayer = CAShapeLayer()
var ovalExists = false
Expand All @@ -39,8 +39,9 @@ final class _LivenessViewController: UIViewController {
}

deinit {
self.previewLayer.removeFromSuperlayer()
(self.previewLayer as? AVCaptureVideoPreviewLayer)?.session = nil
guard let previewLayer = self.previewLayer else { return }
previewLayer.removeFromSuperlayer()
(previewLayer as? AVCaptureVideoPreviewLayer)?.session = nil
self.previewLayer = nil
}

Expand Down Expand Up @@ -84,7 +85,9 @@ final class _LivenessViewController: UIViewController {

avLayer.position = view.center
self.previewLayer = avLayer
viewModel.cameraViewRect = previewLayer.frame
if let previewLayer = self.previewLayer {
viewModel.cameraViewRect = previewLayer.frame
}

DispatchQueue.main.async {
self.view.layer.insertSublayer(avLayer, at: 0)
Expand Down Expand Up @@ -112,11 +115,12 @@ final class _LivenessViewController: UIViewController {
extension _LivenessViewController: FaceLivenessViewControllerPresenter {
func displaySingleFrame(uiImage: UIImage) {
DispatchQueue.main.async {
guard let previewLayer = self.previewLayer else { return }
let imageView = UIImageView(image: uiImage)
imageView.frame = self.previewLayer.frame
imageView.frame = previewLayer.frame
self.view.addSubview(imageView)
self.previewLayer.removeFromSuperlayer()
(self.previewLayer as? AVCaptureVideoPreviewLayer)?.session = nil
(previewLayer as? AVCaptureVideoPreviewLayer)?.session = nil
previewLayer.removeFromSuperlayer()
self.viewModel.stopRecording()
}
}
Expand Down Expand Up @@ -147,14 +151,15 @@ extension _LivenessViewController: FaceLivenessViewControllerPresenter {

func drawOvalInCanvas(_ ovalRect: CGRect) {
DispatchQueue.main.async {
guard let previewLayer = self.previewLayer else { return }
self.faceGuideRect = ovalRect

let ovalView = OvalView(
frame: self.previewLayer.frame,
frame: previewLayer.frame,
ovalFrame: ovalRect
)
self.ovalView = ovalView
ovalView.center = self.previewLayer.position
ovalView.center = previewLayer.position
self.view.insertSubview(
ovalView,
belowSubview: self.freshnessView
Expand Down