42 lines
872 B
Swift
42 lines
872 B
Swift
//
|
|
// Copyright Amazon.com Inc. or its affiliates.
|
|
// All Rights Reserved.
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
import Foundation
|
|
import Amplify
|
|
|
|
protocol AmplifyAuthTaskNonThrowing {
|
|
|
|
associatedtype Success
|
|
associatedtype Request
|
|
|
|
var value: Success { get async }
|
|
|
|
var eventName: HubPayloadEventName { get }
|
|
|
|
func execute() async -> Success
|
|
|
|
func dispatch(result: Success)
|
|
|
|
}
|
|
|
|
extension AmplifyAuthTaskNonThrowing {
|
|
var value: Success {
|
|
get async {
|
|
let valueReturned = await execute()
|
|
dispatch(result: valueReturned)
|
|
return valueReturned
|
|
}
|
|
}
|
|
|
|
func dispatch(result: Success) {
|
|
|
|
let channel = HubChannel(from: .auth)
|
|
let payload = HubPayload(eventName: eventName, context: nil, data: result)
|
|
Amplify.Hub.dispatch(to: channel, payload: payload)
|
|
}
|
|
}
|