diff --git a/app/assets/javascripts/discourse/components/home-logo.js.es6 b/app/assets/javascripts/discourse/components/home-logo.js.es6 index c0846e268b8..c1e39a437c3 100644 --- a/app/assets/javascripts/discourse/components/home-logo.js.es6 +++ b/app/assets/javascripts/discourse/components/home-logo.js.es6 @@ -1,32 +1,28 @@ import DiscourseURL from 'discourse/lib/url'; -import { setting } from 'discourse/lib/computed'; +import { iconHTML } from 'discourse/helpers/fa-icon'; +import { observes } from 'ember-addons/ember-computed-decorators'; export default Ember.Component.extend({ - classNames: ["title"], + widget: 'home-logo', + showMobileLogo: null, + linkUrl: null, + classNames: ['title'], - targetUrl: function() { - // For overriding by customizations - return '/'; - }.property(), + init() { + this._super(); + this.showMobileLogo = this.site.mobileView && !Ember.isEmpty(this.siteSettings.mobile_logo_url); + this.linkUrl = this.get('targetUrl') || '/'; + }, - linkUrl: function() { - return Discourse.getURL(this.get('targetUrl')); - }.property('targetUrl'), + @observes('minimized') + _updateLogo() { + // On mobile we don't minimize the logo + if (!this.site.mobileView) { + this.rerender(); + } + }, - showSmallLogo: function() { - return !this.site.mobileView && this.get("minimized"); - }.property("minimized"), - - showMobileLogo: function() { - return this.site.mobileView && !Ember.isBlank(this.get('mobileBigLogoUrl')); - }.property(), - - smallLogoUrl: setting('logo_small_url'), - bigLogoUrl: setting('logo_url'), - mobileBigLogoUrl: setting('mobile_logo_url'), - title: setting('title'), - - click: function(e) { + click(e) { // if they want to open in a new tab, let it so if (e.shiftKey || e.metaKey || e.ctrlKey || e.which === 2) { return true; } @@ -34,5 +30,29 @@ export default Ember.Component.extend({ DiscourseURL.routeTo(this.get('targetUrl')); return false; + }, + + render(buffer) { + const { siteSettings } = this; + const logoUrl = siteSettings.logo_url || ''; + const title = siteSettings.title; + + buffer.push(``); + if (!this.site.mobileView && this.get('minimized')) { + const logoSmallUrl = siteSettings.logo_small_url || ''; + if (logoSmallUrl.length) { + buffer.push(``); + } else { + buffer.push(iconHTML('home')); + } + } else if (this.showMobileLogo) { + buffer.push(``); + } else if (logoUrl.length) { + buffer.push(``); + } else { + buffer.push(``); + } + buffer.push(''); } + }); diff --git a/app/assets/javascripts/discourse/components/mount-widget.js.es6 b/app/assets/javascripts/discourse/components/mount-widget.js.es6 index 8958cfd057c..b7a8fdb0207 100644 --- a/app/assets/javascripts/discourse/components/mount-widget.js.es6 +++ b/app/assets/javascripts/discourse/components/mount-widget.js.es6 @@ -56,6 +56,8 @@ export default Ember.Component.extend({ rerenderWidget() { Ember.run.cancel(this._timeout); if (this._rootNode) { + const t0 = new Date().getTime(); + const opts = { model: this.get('model') }; const newTree = new this._widgetClass(this.get('args'), this.container, opts); @@ -86,6 +88,10 @@ export default Ember.Component.extend({ } renderedKey('*'); + if (this.profileWidget) { + console.log(new Date().getTime() - t0); + } + } } diff --git a/app/assets/javascripts/discourse/templates/components/home-logo.hbs b/app/assets/javascripts/discourse/templates/components/home-logo.hbs deleted file mode 100644 index 8cb81d9c4b9..00000000000 --- a/app/assets/javascripts/discourse/templates/components/home-logo.hbs +++ /dev/null @@ -1,19 +0,0 @@ - - {{#if showSmallLogo}} - {{#if smallLogoUrl}} - {{unbound title}} - {{else}} - - {{/if}} - {{else}} - {{#if showMobileLogo}} - - {{else}} - {{#if bigLogoUrl}} - - {{else}} - - {{/if}} - {{/if}} - {{/if}} - diff --git a/test/javascripts/components/home-logo-test.js.es6 b/test/javascripts/components/home-logo-test.js.es6 index 770343d4994..60eefd94b9f 100644 --- a/test/javascripts/components/home-logo-test.js.es6 +++ b/test/javascripts/components/home-logo-test.js.es6 @@ -17,6 +17,7 @@ componentTest('basics', { }, test(assert) { + assert.ok(this.$('.title').length === 1); assert.ok(this.$('a[data-auto-route]').length === 1); assert.ok(this.$('img#site-logo.logo-big').length === 1); @@ -55,29 +56,22 @@ componentTest('no logo', { }); componentTest('mobile logo', { - template: "{{home-logo minimized=minimized}}", + template: "{{home-logo}}", setup() { this.siteSettings.mobile_logo_url = mobileLogo; this.siteSettings.logo_small_url= smallLogo; - this.set('minimized', true); this.site.mobileView = true; }, test(assert) { assert.ok(this.$('img#site-logo.logo-big').length === 1); assert.equal(this.$('#site-logo').attr('src'), mobileLogo); - - this.set('minimized', true); - andThen(() => { - assert.equal(this.$('#site-logo').attr('src'), mobileLogo); - }); } }); componentTest('mobile without logo', { - template: "{{home-logo minimized=minimized}}", + template: "{{home-logo}}", setup() { - this.set('minimized', true); this.siteSettings.logo_url = bigLogo; this.site.mobileView = true; },