From b9ab393d70a682b9249d0642e1f59c02f6a28f7c Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Thu, 14 Mar 2019 15:36:12 +0800 Subject: [PATCH] Fix favicon not updating on the client side when changed. Regression from 1c6a2262b3b57d344a60402eee6b5cbcfab7cf6d. Documented the rational for include the url since we can't really test this properly. --- app/assets/javascripts/discourse.js.es6 | 10 +++++++++- app/controllers/static_controller.rb | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/discourse.js.es6 b/app/assets/javascripts/discourse.js.es6 index a393adbfc46..41eba5d39b9 100644 --- a/app/assets/javascripts/discourse.js.es6 +++ b/app/assets/javascripts/discourse.js.es6 @@ -62,7 +62,15 @@ const Discourse = Ember.Application.extend({ @observes("notifyCount") faviconChanged() { if (Discourse.User.currentProp("dynamic_favicon")) { - const url = Discourse.getURL("/favicon/proxied"); + let url = Discourse.SiteSettings.site_favicon_url; + + // Since the favicon is cached on the browser for a really long time, we + // append the favicon_url as query params to the path so that the cache + // is not used when the favicon changes. + if (/^http/.test(url)) { + url = Discourse.getURL("/favicon/proxied?" + encodeURIComponent(url)); + } + new window.Favcount(url).set(this.get("notifyCount")); } }, diff --git a/app/controllers/static_controller.rb b/app/controllers/static_controller.rb index 3ba48643559..95b4be02204 100644 --- a/app/controllers/static_controller.rb +++ b/app/controllers/static_controller.rb @@ -124,7 +124,7 @@ class StaticController < ApplicationController is_asset_path hijack do - data = DistributedMemoizer.memoize("FAVICON#{SiteSetting.favicon&.id}", 60 * 30) do + data = DistributedMemoizer.memoize("FAVICON#{SiteSetting.site_favicon_url}", 60 * 30) do favicon = SiteSetting.favicon next "" unless favicon