diff --git a/assets/scripts/app/controllers.coffee b/assets/scripts/app/controllers.coffee index d703f922..2276639e 100644 --- a/assets/scripts/app/controllers.coffee +++ b/assets/scripts/app/controllers.coffee @@ -42,6 +42,12 @@ Travis.AccountProfileController = Em.Controller.extend needs: ['currentUser'] userBinding: 'controllers.currentUser' +Travis.FirstSyncController = Em.Controller.extend + needs: ['currentUser'] + user: Ember.computed.alias('controllers.currentUser') + + isSyncing: Ember.computed.alias('user.isSyncing') + require 'controllers/accounts' require 'controllers/build' require 'controllers/builds' diff --git a/assets/scripts/app/controllers/current_user.coffee b/assets/scripts/app/controllers/current_user.coffee index 548e06a5..5a00ad7b 100644 --- a/assets/scripts/app/controllers/current_user.coffee +++ b/assets/scripts/app/controllers/current_user.coffee @@ -1,3 +1,8 @@ Travis.CurrentUserController = Em.ObjectController.extend sync: -> @get('content').sync() + + syncingDidChange: (-> + if (user = @get('content')) && user.get('isSyncing') && !user.get('syncedAt') + @container.lookup('router:main').send('renderFirstSync') + ).observes('isSyncing', 'content') diff --git a/assets/scripts/app/routes.coffee b/assets/scripts/app/routes.coffee index a89442d8..d2536d66 100644 --- a/assets/scripts/app/routes.coffee +++ b/assets/scripts/app/routes.coffee @@ -24,6 +24,9 @@ Ember.Route.reopen renderNoOwnedRepos: -> @render('no_owned_repos', outlet: 'main') + renderFirstSync: -> + @renderFirstSync() + error: (error) -> if error == 'needs-auth' authController = @container.lookup('controller:auth') || @generateController('auth') @@ -48,6 +51,9 @@ Ember.Route.reopen afterSignOut: -> @transitionTo('index.current') + renderFirstSync: -> + @transitionTo 'first_sync' + beforeModel: (transition) -> Travis.autoSignIn() unless @signedIn() @@ -92,6 +98,7 @@ Travis.Router.map -> @resource 'branches', path: '/branches' @route 'getting_started' + @route 'first_sync' @route 'stats', path: '/stats' @route 'auth', path: '/auth' @route 'notFound', path: '/not-found' @@ -141,6 +148,17 @@ Travis.GettingStartedRoute = Ember.Route.extend @render 'repos', outlet: 'left' @_super.apply(this, arguments) +Travis.FirstSyncRoute = Ember.Route.extend + setupController: -> + $('body').attr('id', 'home') + @container.lookup('controller:repos').activate() + @container.lookup('controller:application').connectLayout 'simple' + @_super.apply(this, arguments) + + renderTemplate: -> + @render 'top', outlet: 'top' + @_super.apply(this, arguments) + Travis.IndexCurrentRoute = Ember.Route.extend Travis.SetupLastBuild, renderTemplate: -> @render 'repo' diff --git a/assets/scripts/app/templates/first_sync.hbs b/assets/scripts/app/templates/first_sync.hbs new file mode 100644 index 00000000..2e5534a6 --- /dev/null +++ b/assets/scripts/app/templates/first_sync.hbs @@ -0,0 +1,9 @@ +This is the first time you log in to Travis and we're still syncing your repositories. + +{{#if isSyncing}} +--- big indicator --- +{{else}} +Syncing has finished, you may check out your +{{#linkTo "profile.index"}}profile{{/linkTo}} + now +{{/if}}