FIX: Use CDN urls for theme uploads (#12769)

FIX: Use CDN urls for theme uploads (#12769)

diff --git a/app/models/theme.rb b/app/models/theme.rb
index 63ab102..c396c83 100644
--- a/app/models/theme.rb
+++ b/app/models/theme.rb
@@ -128,7 +128,7 @@ class Theme < ActiveRecord::Base
     SvgSprite.expire_cache
   end
 
-  BASE_COMPILER_VERSION = 48
+  BASE_COMPILER_VERSION = 49
   def self.compiler_version
     get_set_cache "compiler_version" do
       dependencies = [
@@ -493,7 +493,7 @@ class Theme < ActiveRecord::Base
 
     theme_uploads = {}
     upload_fields.each do |field|
-      theme_uploads[field.name] = field.upload.url
+      theme_uploads[field.name] = Discourse.store.cdn_url(field.upload.url)
     end
     hash['theme_uploads'] = theme_uploads if theme_uploads.present?
 
diff --git a/spec/models/theme_spec.rb b/spec/models/theme_spec.rb
index 997bedb..d9b5df2 100644
--- a/spec/models/theme_spec.rb
+++ b/spec/models/theme_spec.rb
@@ -518,6 +518,19 @@ HTML
     expect(json["theme_uploads"]["bob"]).to eq(upload.url)
   end
 
+  it 'uses CDN url for theme_uploads in settings' do
+    set_cdn_url("http://cdn.localhost")
+    Theme.destroy_all
+
+    upload = UploadCreator.new(file_from_fixtures("logo.png"), "logo.png").create_for(-1)
+    theme.set_field(type: :theme_upload_var, target: :common, name: "bob", upload_id: upload.id)
+    theme.save!
+
+    json = JSON.parse(cached_settings(theme.id))
+
+    expect(json["theme_uploads"]["bob"]).to eq("http://cdn.localhost#{upload.url}")
+  end
+
   it 'handles settings cache correctly' do
     Theme.destroy_all
 

GitHub sha: d44deb45

This commit appears in #12769 which was approved by davidtaylorhq. It was merged by pmusaraj.