REFACTOR: new-topic route (#7639)

REFACTOR: new-topic route (#7639)

diff --git a/app/assets/javascripts/discourse/routes/new-topic.js.es6 b/app/assets/javascripts/discourse/routes/new-topic.js.es6
index 54a62c9..c3c3c06 100644
--- a/app/assets/javascripts/discourse/routes/new-topic.js.es6
+++ b/app/assets/javascripts/discourse/routes/new-topic.js.es6
@@ -1,21 +1,22 @@
 import Category from "discourse/models/category";
 
 export default Discourse.Route.extend({
-  beforeModel: function(transition) {
-    const self = this;
-    if (Discourse.User.current()) {
-      let category, category_id;
+  beforeModel(transition) {
+    if (this.currentUser) {
+      let category, categoryId;
 
       if (transition.to.queryParams.category_id) {
-        category_id = transition.to.queryParams.category_id;
-        category = Category.findById(category_id);
+        categoryId = transition.to.queryParams.category_id;
+        category = Category.findById(categoryId);
       } else if (transition.to.queryParams.category) {
         const splitCategory = transition.to.queryParams.category.split("/");
+
         category = this._getCategory(
           splitCategory[0],
           splitCategory[1],
           "nameLower"
         );
+
         if (!category) {
           category = this._getCategory(
             splitCategory[0],
@@ -25,76 +26,71 @@ export default Discourse.Route.extend({
         }
 
         if (category) {
-          category_id = category.get("id");
+          categoryId = category.id;
         }
       }
 
       if (Boolean(category)) {
         let route = "discovery.parentCategory";
-        let params = { category, slug: category.get("slug") };
-        if (category.get("parentCategory")) {
+        let params = { category, slug: category.slug };
+        if (category.parentCategory) {
           route = "discovery.category";
           params = {
             category,
-            parentSlug: category.get("parentCategory.slug"),
-            slug: category.get("slug")
+            parentSlug: category.parentCategory.slug,
+            slug: category.slug
           };
         }
 
-        self.replaceWith(route, params).then(function(e) {
-          if (self.controllerFor("navigation/category").get("canCreateTopic")) {
-            Ember.run.next(function() {
-              e.send(
-                "createNewTopicViaParams",
-                transition.to.queryParams.title,
-                transition.to.queryParams.body,
-                category_id,
-                transition.to.queryParams.tags
-              );
-            });
+        this.replaceWith(route, params).then(e => {
+          if (this.controllerFor("navigation/category").canCreateTopic) {
+            this._sendTransition(e, transition, categoryId);
           }
         });
       } else {
-        self.replaceWith("discovery.latest").then(function(e) {
-          if (self.controllerFor("navigation/default").get("canCreateTopic")) {
-            Ember.run.next(function() {
-              e.send(
-                "createNewTopicViaParams",
-                transition.to.queryParams.title,
-                transition.to.queryParams.body,
-                null,
-                transition.to.queryParams.tags
-              );
-            });
+        this.replaceWith("discovery.latest").then(e => {
+          if (this.controllerFor("navigation/default").canCreateTopic) {
+            this._sendTransition(e, transition);
           }
         });
       }
     } else {
       // User is not logged in
       $.cookie("destination_url", window.location.href);
-      self.replaceWith("login");
+      this.replaceWith("login");
     }
   },
 
+  _sendTransition(event, transition, categoryId) {
+    Ember.run.next(() => {
+      event.send(
+        "createNewTopicViaParams",
+        transition.to.queryParams.title,
+        transition.to.queryParams.body,
+        categoryId,
+        transition.to.queryParams.tags
+      );
+    });
+  },
+
   _getCategory(mainCategory, subCategory, type) {
     let category;
     if (!subCategory) {
-      category = this.site
-        .get("categories")
-        .findBy(type, mainCategory.toLowerCase());
+      category = this.site.categories.findBy(type, mainCategory.toLowerCase());
     } else {
-      const categories = this.site.get("categories");
+      const categories = this.site.categories;
       const main = categories.findBy(type, mainCategory.toLowerCase());
       if (main) {
-        category = categories.find(function(item) {
+        category = categories.find(item => {
           return (
             item &&
-            item.get(type) === subCategory.toLowerCase() &&
-            item.get("parent_category_id") === main.id
+            item.type === subCategory.toLowerCase() &&
+            item.parent_category_id === main.id
           );
         });
       }
     }
+
     return category;
   }
 });

GitHub sha: c77bc525