Skip to content

Commit

Permalink
Merge 3f36068 into 0da52f6
Browse files Browse the repository at this point in the history
  • Loading branch information
differentmatt committed Jul 17, 2018
2 parents 0da52f6 + 3f36068 commit cd101a5
Show file tree
Hide file tree
Showing 11 changed files with 45 additions and 43 deletions.
10 changes: 1 addition & 9 deletions app/core/Router.coffee
Expand Up @@ -334,19 +334,11 @@ module.exports = class CocoRouter extends Backbone.Router
), 10

initializeSocialMediaServices: ->
return if application.testing or application.demoing
return if application.testing or application.demoing or me.onChinaInfra()
application.facebookHandler.loadAPI()
application.gplusHandler.loadAPI()
require('core/services/twitter')()

renderSocialButtons: =>
# TODO: Refactor remaining services to Handlers, use loadAPI success callback
@initializeSocialMediaServices()
$('.share-buttons, .partner-badges').addClass('fade-in').delay(10000).removeClass('fade-in', 5000)
application.facebookHandler.renderButtons()
application.gplusHandler.renderButtons()
twttr?.widgets?.load?()

activateTab: ->
base = _.string.words(document.location.pathname[1..], '/')[0]
$("ul.nav li.#{base}").addClass('active')
Expand Down
7 changes: 4 additions & 3 deletions app/core/application.coffee
Expand Up @@ -70,9 +70,10 @@ Application = {
if $.browser.msie and parseInt($.browser.version) is 10
$("html").addClass("ie10")
@tracker = new Tracker()
@facebookHandler = new FacebookHandler()
@gplusHandler = new GPlusHandler()
@githubHandler = new GitHubHandler()
unless me.onChinaInfra()
@facebookHandler = new FacebookHandler()
@gplusHandler = new GPlusHandler()
@githubHandler = new GitHubHandler()
locale.load(me.get('preferredLanguage', true)).then =>
@tracker.promptForCookieConsent()
preferredLanguage = me.get('preferredLanguage') or 'en'
Expand Down
10 changes: 6 additions & 4 deletions app/core/social-handlers/FacebookHandler.coffee
Expand Up @@ -11,16 +11,18 @@ userPropsToSave =
'email': 'email'
'id': 'facebookID'


module.exports = FacebookHandler = class FacebookHandler extends CocoClass
constructor: ->
if me.onChinaInfra() then throw new Error('No Facebook support in China region.')
super()

token: -> @authResponse?.accessToken

startedLoading: false
apiLoaded: false
connected: false
person: null

fakeAPI: ->
window.FB =
login: (cb, options) ->
Expand All @@ -43,7 +45,7 @@ module.exports = FacebookHandler = class FacebookHandler extends CocoClass
options.success.bind(options.context)()
else
@once 'load-api', options.success, options.context

if not @startedLoading
# Load the SDK asynchronously
@startedLoading = true
Expand All @@ -56,7 +58,7 @@ module.exports = FacebookHandler = class FacebookHandler extends CocoClass
js.id = id
js.async = true
js.src = '//connect.facebook.net/en_US/sdk.js'

#js.src = '//connect.facebook.net/en_US/all/debug.js'
ref.parentNode.insertBefore js, ref
return
Expand Down
21 changes: 11 additions & 10 deletions app/core/social-handlers/GPlusHandler.coffee
Expand Up @@ -19,11 +19,12 @@ scope = 'https://www.googleapis.com/auth/plus.login email'

module.exports = GPlusHandler = class GPlusHandler extends CocoClass
constructor: ->
if me.onChinaInfra() then throw new Error('No Google+ support in China region.')
@accessToken = storage.load GPLUS_TOKEN_KEY, false
super()

token: -> @accessToken?.access_token

startedLoading: false
apiLoaded: false
connected: false
Expand All @@ -46,14 +47,14 @@ module.exports = GPlusHandler = class GPlusHandler extends CocoClass
emails: [{value: 'some@email.com'}]
})
}

auth:
authorize: (opts, cb) ->
cb({access_token: '1234'})

@startedLoading = true
@apiLoaded = true

fakeConnect: ->
@accessToken = {access_token: '1234'}
@trigger 'connect'
Expand All @@ -65,7 +66,7 @@ module.exports = GPlusHandler = class GPlusHandler extends CocoClass
options.success.bind(options.context)()
else
@once 'load-api', options.success, options.context

if not @startedLoading
po = document.createElement('script')
po.type = 'text/javascript'
Expand All @@ -86,7 +87,7 @@ module.exports = GPlusHandler = class GPlusHandler extends CocoClass
else
@connected = false
@trigger 'load-api'


connect: (options={}) ->
options.success ?= _.noop
Expand All @@ -107,7 +108,7 @@ module.exports = GPlusHandler = class GPlusHandler extends CocoClass
@accessToken = e
@trigger 'connect'
options.success.bind(options.context)()


loadPerson: (options={}) ->
options.success ?= _.noop
Expand All @@ -123,7 +124,7 @@ module.exports = GPlusHandler = class GPlusHandler extends CocoClass
value = value[key]
if value
attrs[userProp] = value

if r.emails?.length
attrs.email = r.emails[0].value
@trigger 'load-person', attrs
Expand All @@ -133,9 +134,9 @@ module.exports = GPlusHandler = class GPlusHandler extends CocoClass
renderButtons: ->
return false unless gapi?.plusone?
gapi.plusone.go?() # Handles +1 button

# Friends logic, not in use

loadFriends: (friendsCallback) ->
return friendsCallback() unless @loggedIn
expiresIn = if @accessToken then parseInt(@accessToken.expires_at) - new Date().getTime()/1000 else -1
Expand Down
3 changes: 2 additions & 1 deletion app/core/social-handlers/GitHubHandler.coffee
Expand Up @@ -9,6 +9,7 @@ module.exports = class GitHubHandler extends CocoClass
'auth:log-in-with-github': 'commenceGitHubLogin'

constructor: ->
if me.onChinaInfra() then throw new Error('No GitHub support in China region.')
super arguments...
@clientID = if application.isProduction() then '9b405bf5fb84590d1f02' else 'fd5c9d34eb171131bc87'
@redirectURI = if application.isProduction() then 'http://codecombat.com/github/auth_callback' else 'http://localhost:3000/github/auth_callback'
Expand All @@ -19,4 +20,4 @@ module.exports = class GitHubHandler extends CocoClass
client_id: @clientID
redirect_uri: @redirectURI

location.href = "https://github.com/login/oauth/authorize?" + $.param(request)
location.href = "https://github.com/login/oauth/authorize?" + $.param(request)
9 changes: 5 additions & 4 deletions app/templates/base-flat.jade
Expand Up @@ -153,10 +153,11 @@ mixin accountLinks
if !me.isStudent()
li
a.contact-modal(tabindex=-1, data-i18n="nav.contact")
li
a(href="https://www.facebook.com/codecombat", data-i18n="nav.facebook")
li
a(href="https://twitter.com/codecombat", data-i18n="nav.twitter")
if !me.onChinaInfra()
li
a(href="https://www.facebook.com/codecombat", data-i18n="nav.facebook")
li
a(href="https://twitter.com/codecombat", data-i18n="nav.twitter")

#final-footer.small.text-center(dir="ltr")
span(data-i18n="nav.copyright_prefix")
Expand Down
2 changes: 1 addition & 1 deletion app/templates/base.jade
Expand Up @@ -86,7 +86,7 @@ block footer
if me.isAdmin()
a(href='/admin') Admin

if usesSocialMedia
if usesSocialMedia && !me.onChinaInfra()
.share-buttons
if !isIE
.g-plusone(data-href="http://codecombat.com", data-size="medium")
Expand Down
7 changes: 4 additions & 3 deletions app/views/core/AuthModal.coffee
Expand Up @@ -26,9 +26,10 @@ module.exports = class AuthModal extends ModalView
@previousFormInputs = options.initialValues or {}
@previousFormInputs.emailOrUsername ?= @previousFormInputs.email or @previousFormInputs.username

# TODO: Switch to promises and state, rather than using defer to hackily enable buttons after render
application.gplusHandler.loadAPI({ success: => _.defer => @$('#gplus-login-btn').attr('disabled', false) })
application.facebookHandler.loadAPI({ success: => _.defer => @$('#facebook-login-btn').attr('disabled', false) })
unless me.onChinaInfra()
# TODO: Switch to promises and state, rather than using defer to hackily enable buttons after render
application.gplusHandler.loadAPI({ success: => _.defer => @$('#gplus-login-btn').attr('disabled', false) })
application.facebookHandler.loadAPI({ success: => _.defer => @$('#facebook-login-btn').attr('disabled', false) })
@subModalContinue = options.subModalContinue

afterRender: ->
Expand Down
11 changes: 6 additions & 5 deletions app/views/core/CreateAccountModal/CreateAccountModal.coffee
Expand Up @@ -64,8 +64,8 @@ module.exports = class CreateAccountModal extends ModalView
screen: if classCode then 'segment-check' else 'choose-account-type'
ssoUsed: null # or 'facebook', 'gplus'
classroom: null # or Classroom instance
facebookEnabled: application.facebookHandler.apiLoaded
gplusEnabled: application.gplusHandler.apiLoaded
facebookEnabled: application.facebookHandler?.apiLoaded
gplusEnabled: application.gplusHandler?.apiLoaded
classCode
birthday: new Date('') # so that birthday.getTime() is NaN
authModalInitialValues: {}
Expand Down Expand Up @@ -165,9 +165,10 @@ module.exports = class CreateAccountModal extends ModalView

@insertSubView(new ConfirmationView({ @signupState }))

# TODO: Switch to promises and state, rather than using defer to hackily enable buttons after render
application.facebookHandler.loadAPI({ success: => @signupState.set { facebookEnabled: true } unless @destroyed })
application.gplusHandler.loadAPI({ success: => @signupState.set { gplusEnabled: true } unless @destroyed })
unless me.onChinaInfra()
# TODO: Switch to promises and state, rather than using defer to hackily enable buttons after render
application.facebookHandler.loadAPI({ success: => @signupState.set { facebookEnabled: true } unless @destroyed })
application.gplusHandler.loadAPI({ success: => @signupState.set { gplusEnabled: true } unless @destroyed })

@once 'hidden', ->
if @signupState.get('accountCreated') and not application.testing
Expand Down
3 changes: 2 additions & 1 deletion server_setup.coffee
Expand Up @@ -478,7 +478,8 @@ exports.setupRoutes = (app) ->
routes.setup(app)

baseRoute.setup app
setupFacebookCrossDomainCommunicationRoute app
unless config.chinaInfra
setupFacebookCrossDomainCommunicationRoute app
setupUpdateBillingRoute app
setupFallbackRouteToIndex app
setupErrorMiddleware app
Expand Down
5 changes: 3 additions & 2 deletions test/app/views/core/AuthModal.spec.coffee
Expand Up @@ -6,8 +6,9 @@ describe 'AuthModal', ->
modal = null

beforeEach ->
application.facebookHandler.fakeAPI()
application.gplusHandler.fakeAPI()
if !window.features.chinaInfra
application.facebookHandler.fakeAPI()
application.gplusHandler.fakeAPI()
modal = new AuthModal()
modal.render()

Expand Down

0 comments on commit cd101a5

Please sign in to comment.