const googleBtn = document.getElementById('google-signin-btn'); const facebookBtn = document.getElementById('facebook-signin-btn'); const questionnaire = document.getElementById('questionnaire'); const optInCheck = document.getElementById('opt-in-check'); const genre = document.getElementById('genre'); const promo = document.getElementById('promo'); var googleProvider = new firebase.auth.GoogleAuthProvider(); var facebookProvider = new firebase.auth.FacebookAuthProvider(); // ************************************************** window.onload = function () { initializeFirebase(); document.querySelectorAll('form').forEach(function (form) { form.addEventListener('submit', function (e) { var button = document.getElementById('loginButton'); button.innerHTML = ''; var signupbutton = document.getElementById('signupButton'); signupbutton.innerHTML = ''; }); }); }; // ************************************************** async function initializeFirebase() { try { const firebaseConfig = await fetchFirebaseConfig(); const app = firebase.initializeApp(firebaseConfig); googleBtn.addEventListener('click', e => { googleBtn.disabled = true; facebookBtn.disabled = true; var token = ''; firebase.auth().signInWithPopup(googleProvider).then(async function (result) { googleBtn.innerHTML = ''; token = await result.user.getIdToken(true); var user = result.user; await sendUserDataGoogle(user, token); }).catch(function (error) { console.error(error); }).finally(async function () { googleBtn.disabled = false; facebookBtn.disabled = false; var currentURL = window.location.href.replace('register-page', '#get-started').replace('login-page', '#get-started'); window.location.href = currentURL; }); }); facebookBtn.addEventListener('click', e => { facebookBtn.innerHTML = ''; googleBtn.disabled = true; facebookBtn.disabled = true; firebase.auth().signInWithPopup(facebookProvider).then(async function (result) { facebookBtn.innerHTML = ''; var token = await result.user.getIdToken(true); var user = result.user; await sendUserDataGoogle(user, token); }).catch(function (error) { console.error(error); }).finally(function () { googleBtn.disabled = false; facebookBtn.disabled = false; var currentURL = window.location.href.replace('register-page', '#get-started').replace('login-page', '#get-started'); window.location.href = currentURL; }); }); } catch (error) { console.error(error); } } // ************************* async function fetchFirebaseConfig() { try { const response = await fetch('/firebase-config', { method: 'GET', headers: { 'Content-Type': 'application/json', }, }); if (!response.ok) { throw new Error('Error retrieving Firebase config'); } const firebaseConfig = await response.json(); return firebaseConfig; } catch (error) { console.error(error); throw new Error('Error retrieving Firebase config'); } } async function sendUserDataGoogle(user, token) { try { const userData = { questionnaire: questionnaire && questionnaire.value || '', genre: genre && genre.value || '', promo: promo && promo.value || '', displayName: user.displayName, optInCheck: optInCheck && optInCheck.checked || false, email: user.email, photoURL: user.photoURL, uid: user.uid, token: token }; const response = await fetch('/create_user_google', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(userData), }); if (response.ok) { return; } else { throw new Error('Error sending user data'); } } catch (error) { console.error(error); throw new Error('Error sending user data'); } } // function initializeAppleSignIn() { // AppleID.auth.init({ // clientId: 'MRD3M6NC59', // scope: 'email', // redirectURI: 'https://staccato-368618.firebaseapp.com/__/auth/handler', // usePopup: true, // }); // // var signInButton = document.getElementById('apple-signin-btn'); // // AppleID.auth.createSignInButton(signInButton, { // onSuccess: function (response) { // // Handle successful Apple sign-in // console.log(response); // }, // onError: function (error) { // // Handle error during Apple sign-in // console.error(error); // } // }); // } // // // Call the function to initialize Apple Sign-In when the page is loaded // document.addEventListener('DOMContentLoaded', function () { // initializeAppleSignIn(); // }); // AppleID.auth.init({ // clientId : 'MRD3M6NC59', // // scope : '[SCOPES]', // redirectURI : 'https://staccato-368618.firebaseapp.com/__/auth/handler', // // state : '[STATE]', // // nonce : '[NONCE]', // usePopup : true // }); // async function initializeAppleAuth() { // try { // let response = await fetch('/apple/sign-in-auth'); // let data = await response.json(); // // AppleID.auth.init({ // clientId: data.clientId, // redirectURI: 'https://staccato-368618.firebaseapp.com/__/auth/handler', // state: data.state, // nonce: data.nonce, // usePopup: true // }); // } catch (err) { // console.error('Error initializing AppleID auth:', err); // } // } // // // Call the async function // initializeAppleAuth();