import Foundation
import GoogleSignIn

@objc public class CapacitorNativeGoogleAuth: NSObject {

    @objc public func signIn(
        presentingVC: UIViewController,
        clientId: String,
        completion: @escaping (_ token: String?, _ errorMessage: String?) -> Void
    ) {

        DispatchQueue.main.async {

            GIDSignIn.sharedInstance.configuration = GIDConfiguration(clientID: clientId)

            GIDSignIn.sharedInstance.signIn(withPresenting: presentingVC) { result, error in

                if let error = error {
                    completion(nil, error.localizedDescription)
                    return
                }

                guard let user = result?.user,
                      let token = user.idToken?.tokenString else {
                    completion(nil, "No ID token returned")
                    return
                }

                completion(token, nil)
            }
        }
    }
}
