From 4bfb546942704fcff64a10245d6370266c971f09 Mon Sep 17 00:00:00 2001
From: Robin Ward <robin.ward@gmail.com>
Date: Tue, 16 Jul 2013 13:24:59 -0400
Subject: [PATCH] Removed `modelReady` hack now that the async router exists

---
 .../javascripts/admin/models/admin_user.js    |  4 +--
 .../admin_email_preview_digest_route.js       |  6 ++--
 .../admin/routes/admin_user_route.js          | 14 +++++----
 .../discourse/mixins/model_ready.js           | 29 -------------------
 .../discourse/models/invite_list.js           |  1 +
 .../routes/discourse_restricted_user_route.js |  2 +-
 .../discourse/routes/list_categories_route.js |  6 ++--
 .../discourse/routes/user_invited_route.js    |  2 +-
 8 files changed, 22 insertions(+), 42 deletions(-)
 delete mode 100644 app/assets/javascripts/discourse/mixins/model_ready.js

diff --git a/app/assets/javascripts/admin/models/admin_user.js b/app/assets/javascripts/admin/models/admin_user.js
index ba5bc32fc..bd1bcfd6e 100644
--- a/app/assets/javascripts/admin/models/admin_user.js
+++ b/app/assets/javascripts/admin/models/admin_user.js
@@ -238,9 +238,9 @@ Discourse.AdminUser = Discourse.User.extend({
 
   loadDetails: function() {
     var model = this;
-    if (model.get('loadedDetails')) { return; }
+    if (model.get('loadedDetails')) { return Ember.RSVP.resolve(model); }
 
-    Discourse.AdminUser.find(model.get('username_lower')).then(function (result) {
+    return Discourse.AdminUser.find(model.get('username_lower')).then(function (result) {
       model.setProperties(result);
       model.set('loadedDetails', true);
     });
diff --git a/app/assets/javascripts/admin/routes/admin_email_preview_digest_route.js b/app/assets/javascripts/admin/routes/admin_email_preview_digest_route.js
index 5dafb8aad..1c03f56a3 100644
--- a/app/assets/javascripts/admin/routes/admin_email_preview_digest_route.js
+++ b/app/assets/javascripts/admin/routes/admin_email_preview_digest_route.js
@@ -11,14 +11,16 @@ var oneWeekAgo = function() {
   return moment().subtract('days',7).format('YYYY-MM-DD');
 };
 
-Discourse.AdminEmailPreviewDigestRoute = Discourse.Route.extend(Discourse.ModelReady, {
+Discourse.AdminEmailPreviewDigestRoute = Discourse.Route.extend({
 
   model: function() {
     return Discourse.EmailPreview.findDigest(oneWeekAgo());
   },
 
-  modelReady: function(controller, model) {
+  afterModel: function(model) {
+    var controller = this.controllerFor('adminEmailPreviewDigest');
     controller.setProperties({
+      model: model,
       lastSeen: oneWeekAgo(),
       showHtml: true
     });
diff --git a/app/assets/javascripts/admin/routes/admin_user_route.js b/app/assets/javascripts/admin/routes/admin_user_route.js
index 92b6c8f15..dbf5770bd 100644
--- a/app/assets/javascripts/admin/routes/admin_user_route.js
+++ b/app/assets/javascripts/admin/routes/admin_user_route.js
@@ -6,7 +6,7 @@
   @namespace Discourse
   @module Discourse
 **/
-Discourse.AdminUserRoute = Discourse.Route.extend(Discourse.ModelReady, {
+Discourse.AdminUserRoute = Discourse.Route.extend({
 
   serialize: function(params) {
     return { username: Em.get(params, 'username').toLowerCase() };
@@ -20,10 +20,14 @@ Discourse.AdminUserRoute = Discourse.Route.extend(Discourse.ModelReady, {
     this.render({into: 'admin/templates/admin'});
   },
 
-  modelReady: function(controller, adminUser) {
-    adminUser.loadDetails();
-    controller.set('model', adminUser);
-    adminUser.setOriginalTrustLevel();
+  afterModel: function(adminUser) {
+    var controller = this.controllerFor('adminUser');
+
+    adminUser.loadDetails().then(function () {
+      adminUser.setOriginalTrustLevel();
+      controller.set('model', adminUser);
+    });
+
   }
 
 });
diff --git a/app/assets/javascripts/discourse/mixins/model_ready.js b/app/assets/javascripts/discourse/mixins/model_ready.js
deleted file mode 100644
index f50d2c321..000000000
--- a/app/assets/javascripts/discourse/mixins/model_ready.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
-  Until the fully async router is merged into Ember, it is healthy to do some extra checking
-  that setupController is not passed a promise instead of the model we want.
-
-  This mixin handles that case, and calls modelReady instead.
-
-  @class Discourse.ModelReady
-  @extends Ember.Mixin
-  @namespace Discourse
-  @module Discourse
-**/
-Discourse.ModelReady = Em.Mixin.create({
-
-  setupController: function(controller, model) {
-    var route = this;
-    if (model.then) {
-      model.then(function (m) {
-        controller.set('model', m);
-        if (route.modelReady) { route.modelReady(controller, m); }
-      });
-    } else {
-      controller.set('model', model);
-      if (route.modelReady) { route.modelReady(controller, model); }
-    }
-  }
-
-});
-
-
diff --git a/app/assets/javascripts/discourse/models/invite_list.js b/app/assets/javascripts/discourse/models/invite_list.js
index 43376f998..523988108 100644
--- a/app/assets/javascripts/discourse/models/invite_list.js
+++ b/app/assets/javascripts/discourse/models/invite_list.js
@@ -16,6 +16,7 @@ Discourse.InviteList.reopenClass({
 
   findInvitedBy: function(user) {
     return Discourse.ajax("/users/" + (user.get('username_lower')) + "/invited.json").then(function (result) {
+      console.log('wat');
       var invitedList = result.invited_list;
       if (invitedList.pending) {
         invitedList.pending = invitedList.pending.map(function(i) {
diff --git a/app/assets/javascripts/discourse/routes/discourse_restricted_user_route.js b/app/assets/javascripts/discourse/routes/discourse_restricted_user_route.js
index 24e0fdb8a..0b3e45a7b 100644
--- a/app/assets/javascripts/discourse/routes/discourse_restricted_user_route.js
+++ b/app/assets/javascripts/discourse/routes/discourse_restricted_user_route.js
@@ -8,7 +8,7 @@
 **/
 Discourse.RestrictedUserRoute = Discourse.Route.extend({
 
-  redirect: function() {
+  afterModel: function() {
     var user = this.modelFor('user');
     if (!user.get('can_edit')) {
       this.transitionTo('user.activity', user);
diff --git a/app/assets/javascripts/discourse/routes/list_categories_route.js b/app/assets/javascripts/discourse/routes/list_categories_route.js
index 15bb2ee7e..6e125180c 100644
--- a/app/assets/javascripts/discourse/routes/list_categories_route.js
+++ b/app/assets/javascripts/discourse/routes/list_categories_route.js
@@ -6,7 +6,7 @@
   @namespace Discourse
   @module Discourse
 **/
-Discourse.ListCategoriesRoute = Discourse.Route.extend(Discourse.ModelReady, {
+Discourse.ListCategoriesRoute = Discourse.Route.extend({
 
   redirect: function() { Discourse.redirectIfLoginRequired(this); },
 
@@ -31,9 +31,11 @@ Discourse.ListCategoriesRoute = Discourse.Route.extend(Discourse.ModelReady, {
     this.controllerFor('list').set('canCreateCategory', false);
   },
 
-  modelReady: function(controller, categoryList) {
+  renderTemplate: function() {
     this.render('listCategories', { into: 'list', outlet: 'listView' });
+  },
 
+  afterModel: function(categoryList) {
     this.controllerFor('list').setProperties({
       canCreateCategory: categoryList.get('can_create_category'),
       canCreateTopic: categoryList.get('can_create_topic'),
diff --git a/app/assets/javascripts/discourse/routes/user_invited_route.js b/app/assets/javascripts/discourse/routes/user_invited_route.js
index f603b1ccc..53fd4e0f4 100644
--- a/app/assets/javascripts/discourse/routes/user_invited_route.js
+++ b/app/assets/javascripts/discourse/routes/user_invited_route.js
@@ -6,7 +6,7 @@
   @namespace Discourse
   @module Discourse
 **/
-Discourse.UserInvitedRoute = Discourse.Route.extend(Discourse.ModelReady, {
+Discourse.UserInvitedRoute = Discourse.Route.extend({
 
   renderTemplate: function() {
     this.render({ into: 'user', outlet: 'userOutlet' });