I am waiting for idToken
response before returning the variable.
Please don't tell me to just use completion handler and call it without a DispatchGroup
. I know I can do that, but I am trying to understand why this logic does not work.
func createToken() -> String {
var token = "empty"
var group = DispatchGroup()
group.enter()
let currentUser = Auth.auth().currentUser
currentUser?.getIDTokenForcingRefresh(true) { idToken, error in
token = idToken ?? "error"
print("Token Set")
group.leave()
}
group.wait(timeout: DispatchTime.now() + 10)
return token
}
Running:
print("create ")
print(createToken())
print("done")
Output:
create
empty
done
Token Set