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();