// @type="module"@ This tells the blog engine to use the module tag
import {
    getAuth,
    onAuthStateChanged,
    signInWithEmailAndPassword
} from 'https://www.gstatic.com/firebasejs/9.6.2/firebase-auth.js'
import { initializeApp, } from "https://www.gstatic.com/firebasejs/9.6.2/firebase-app.js";
import { getAnalytics } from "https://www.gstatic.com/firebasejs/9.6.2/firebase-analytics.js";
// import app, {auth, googleProvider, analytics} from "./js/firebase.js"

var config = {
    apiKey: "AIzaSyC0GZl8EzCOJ4B3dTMrrvvp1Z-z3gsovTw",
    authDomain: "autodb-book.firebaseapp.com",
};
const app = initializeApp(config);
const auth = getAuth(app);


var email = "eli@fake.com" //document.getElementById("email")
var password = "letmein";

onAuthStateChanged(auth, function (user) {
    if (user) {
        log("Firebase User ---->", user)
        document.getElementById("message").innerHTML = "Welcome, " + user.email;
    } else {
        // document.getElementById("message").innerHTML = "No user signed in.";
    }
});

signInWithEmailAndPassword(auth, email, password).catch(function (error) {
    document.getElementById("message").innerHTML = error.message;
});