amplify-swift/AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Task/Protocols/AmplifyAuthTaskNonThrowing....

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)
}
}