diff --git a/app/controllers/metadata_controller.rb b/app/controllers/metadata_controller.rb index ccde4cd1b79..ce6f1f85c61 100644 --- a/app/controllers/metadata_controller.rb +++ b/app/controllers/metadata_controller.rb @@ -50,7 +50,57 @@ class MetadataController < ApplicationController title: "title", text: "body" } - } + }, + shortcuts: [ + { + name: I18n.t('js.topic.create_long'), + short_name: I18n.t('js.topic.create'), + url: "/new-topic", + icons: [ + { + src: ActionController::Base.helpers.image_url("push-notifications/check.png"), + sizes: "128x128", + type: "image/png" + } + ] + }, + { + name: I18n.t('js.user.messages.inbox'), + short_name: I18n.t('js.user.messages.inbox'), + url: "/my/messages", + icons: [ + { + src: ActionController::Base.helpers.image_url("push-notifications/private_message.png"), + sizes: "128x128", + type: "image/png" + } + ] + }, + { + name: I18n.t('js.user.bookmarks'), + short_name: I18n.t('js.user.bookmarks'), + url: "/my/bookmarks", + icons: [ + { + src: ActionController::Base.helpers.image_url("push-notifications/check.png"), + sizes: "128x128", + type: "image/png" + } + ] + }, + { + name: I18n.t('js.filters.top.title'), + short_name: I18n.t('js.filters.top.title'), + url: "/top", + icons: [ + { + src: ActionController::Base.helpers.image_url("push-notifications/check.png"), + sizes: "128x128", + type: "image/png" + } + ] + } + ] } logo = SiteSetting.site_manifest_icon_url diff --git a/spec/requests/metadata_controller_spec.rb b/spec/requests/metadata_controller_spec.rb index e008236da1f..ae8166428b4 100644 --- a/spec/requests/metadata_controller_spec.rb +++ b/spec/requests/metadata_controller_spec.rb @@ -86,6 +86,14 @@ RSpec.describe MetadataController do manifest = JSON.parse(response.body) expect(manifest["short_name"]).to eq("foo") end + + it 'contains valid shortcuts by default' do + get "/manifest.webmanifest" + expect(response.status).to eq(200) + manifest = JSON.parse(response.body) + expect(manifest["shortcuts"].size).to be > 0 + expect { URI.parse(manifest["shortcuts"][0]["icons"][0]["src"]) }.not_to raise_error + end end describe 'opensearch.xml' do