diff --git a/app/controllers/metadata_controller.rb b/app/controllers/metadata_controller.rb index e3494ceecc8..f8d75cfb3df 100644 --- a/app/controllers/metadata_controller.rb +++ b/app/controllers/metadata_controller.rb @@ -13,7 +13,7 @@ class MetadataController < ApplicationController private def default_manifest - logo = SiteSetting.mobile_logo_url.presence || SiteSetting.logo_small_url.presence || SiteSetting.apple_touch_icon_url.presence + logo = SiteSetting.large_icon_url.presence || SiteSetting.logo_small_url.presence || SiteSetting.apple_touch_icon_url.presence manifest = { name: SiteSetting.title, diff --git a/app/controllers/site_controller.rb b/app/controllers/site_controller.rb index 00ed49e502a..1e622449c95 100644 --- a/app/controllers/site_controller.rb +++ b/app/controllers/site_controller.rb @@ -34,7 +34,7 @@ class SiteController < ApplicationController title: SiteSetting.title, description: SiteSetting.site_description } - results[:mobile_logo_url] = SiteSetting.mobile_logo_url if SiteSetting.mobile_logo_url.present? + results[:mobile_logo_url] = SiteSetting.mobile_logo_url.presence DiscourseHub.stats_fetched_at = Time.zone.now if request.user_agent == "Discourse Hub" diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 1a51f1cd15e..b31c87349ad 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -1011,7 +1011,8 @@ en: digest_logo_url: "The alternate logo image used at the top of your site's email summary. Should be a wide rectangle shape. Should not be an SVG image. If left blank `logo_url` will be used." logo_small_url: "The small logo image at the top left of your site, should be a square shape, seen when scrolling down. If left blank a home glyph will be shown." favicon_url: "A favicon for your site, see http://en.wikipedia.org/wiki/Favicon, to work correctly over a CDN it must be a png" - mobile_logo_url: "The fixed position logo image used at the top left of your mobile site and as your logo/splash image on Android. Recommended size is 512px by 512px. If left blank, `logo_url` will be used. eg: http://example.com/uploads/default/logo.png" + mobile_logo_url: "Custom logo url used on mobile version of your site. If left blank, `logo_url` will be used. eg: http://example.com/uploads/default/logo.png" + large_icon_url: "Image used as logo/splash image on Android. Recommended size is 512px by 512px." apple_touch_icon_url: "Icon used for Apple touch devices. Recommended size is 144px by 144px." notification_email: "The from: email address used when sending all essential system emails. The domain specified here must have SPF, DKIM and reverse PTR records set correctly for email to arrive." diff --git a/config/site_settings.yml b/config/site_settings.yml index 2428262a1b0..5df79b5672e 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -54,6 +54,8 @@ required: mobile_logo_url: client: true default: '' + large_icon_url: + default: '' favicon_url: client: true default: '/images/default-favicon.ico' diff --git a/spec/controllers/metadata_controller_spec.rb b/spec/controllers/metadata_controller_spec.rb index 681cbe0725d..cf15a697de2 100644 --- a/spec/controllers/metadata_controller_spec.rb +++ b/spec/controllers/metadata_controller_spec.rb @@ -3,11 +3,17 @@ require 'rails_helper' RSpec.describe MetadataController do describe 'manifest.json' do it 'returns the right output' do + title = 'MyApp' SiteSetting.title = title + SiteSetting.large_icon_url = "http://big.square/png" + get :manifest - expect(response.body).to include(title) expect(response.content_type).to eq('application/json') + manifest = JSON.parse(response.body) + + expect(manifest["name"]).to eq(title) + expect(manifest["icons"].first["src"]).to eq("http://big.square/png") end end