2018-03-25 18:03:08 +00:00
|
|
|
// License: LGPL-3.0-or-later
|
2018-03-25 17:30:42 +00:00
|
|
|
const flyd = require('flyd')
|
|
|
|
const filter = require('flyd/module/filter')
|
|
|
|
const R = require('ramda')
|
|
|
|
|
|
|
|
var googz = {}
|
|
|
|
|
|
|
|
// loads client API and returns a true stream if user is already signed in
|
|
|
|
googz.init = scope => {
|
|
|
|
if(document.getElementById('googzAuthApi')) return
|
|
|
|
var script = document.createElement('script')
|
|
|
|
script.type = 'text/javascript'
|
|
|
|
script.id = 'googzAuthApi'
|
|
|
|
document.body.appendChild(script)
|
|
|
|
script.src = 'https://apis.google.com/js/api.js?onload=loadGoogleClientLib'
|
|
|
|
|
|
|
|
const isSignedIn$ = flyd.stream()
|
|
|
|
|
|
|
|
window.loadGoogleClientLib = _ => {
|
|
|
|
gapi.load('client:auth2', _ => {
|
|
|
|
gapi.client.setApiKey(app.google_api)
|
|
|
|
gapi.auth2.init(
|
|
|
|
{'client_id': app.google_auth_client_id
|
|
|
|
, 'scope': scope}
|
|
|
|
).then(_ => {
|
|
|
|
isSignedIn$(gapi.auth2.getAuthInstance().isSignedIn.get())
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
return isSignedIn$
|
|
|
|
}
|
|
|
|
|
|
|
|
// returns a stream that will have a value once the user has signed in
|
|
|
|
googz.signIn = _ => {
|
|
|
|
const isSigningIn$ = flyd.stream()
|
|
|
|
gapi.auth2.getAuthInstance().signIn().then(isSigningIn$)
|
|
|
|
return isSigningIn$
|
|
|
|
}
|
|
|
|
|
|
|
|
// returns a stream with the email of the signed in user
|
|
|
|
googz.email = _ => {
|
|
|
|
const email$ = flyd.stream()
|
|
|
|
var profile = gapi.auth2.getAuthInstance()
|
|
|
|
var email = profile.currentUser.get().getBasicProfile().getEmail()
|
|
|
|
return email$(email)
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = googz
|
|
|
|
|