From 9342705e6bfc4f0e4f999bd3c1bb70d425fcb598 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcin=20Miko=C5=82ajczak?= <me@mkljczk.pl>
Date: Tue, 15 Dec 2020 02:04:56 +0100
Subject: [PATCH] Add app shortcuts (#15234)

* Add app shortcuts

Signed-off-by: mkljczk <me@mkljczk.pl>

* Fix codeclimate issues

Signed-off-by: mkljczk <me@mkljczk.pl>

* Change shortcuts

Signed-off-by: mkljczk <me@mkljczk.pl>

* More consistent new-status icon

Signed-off-by: mkljczk <me@mkljczk.pl>
---
 app/serializers/manifest_serializer.rb |  40 ++++++++++++++++++++++++-
 public/shortcuts/direct.png            | Bin 0 -> 3045 bytes
 public/shortcuts/new-status.png        | Bin 0 -> 3031 bytes
 public/shortcuts/notifications.png     | Bin 0 -> 3067 bytes
 public/shortcuts/profile.png           | Bin 0 -> 4190 bytes
 5 files changed, 39 insertions(+), 1 deletion(-)
 create mode 100644 public/shortcuts/direct.png
 create mode 100644 public/shortcuts/new-status.png
 create mode 100644 public/shortcuts/notifications.png
 create mode 100644 public/shortcuts/profile.png

diff --git a/app/serializers/manifest_serializer.rb b/app/serializers/manifest_serializer.rb
index 21ec0d4bed..dafe8f55b9 100644
--- a/app/serializers/manifest_serializer.rb
+++ b/app/serializers/manifest_serializer.rb
@@ -7,7 +7,7 @@ class ManifestSerializer < ActiveModel::Serializer
   attributes :name, :short_name, :description,
              :icons, :theme_color, :background_color,
              :display, :start_url, :scope,
-             :share_target
+             :share_target, :shortcuts
 
   def name
     object.site_title
@@ -64,4 +64,42 @@ class ManifestSerializer < ActiveModel::Serializer
       },
     }
   end
+
+  def shortcuts
+    [
+      {
+        name: 'New toot',
+        url: '/web/statuses/new',
+        icons: [
+          {
+            src: '/shortcuts/new-status.png',
+            type: 'image/png',
+            sizes: '192x192',
+          },
+        ],
+      },
+      {
+        name: 'Notifications',
+        url: '/web/notifications',
+        icons: [
+          {
+            src: '/shortcuts/notifications.png',
+            type: 'image/png',
+            sizes: '192x192',
+          },
+        ],
+      },
+      {
+        name: 'Direct messages',
+        url: '/web/timelines/direct',
+        icons: [
+          {
+            src: '/shortcuts/direct.png',
+            type: 'image/png',
+            sizes: '192x192',
+          },
+        ],
+      },
+    ]
+  end
 end
diff --git a/public/shortcuts/direct.png b/public/shortcuts/direct.png
new file mode 100644
index 0000000000000000000000000000000000000000..e8772c00e664042779abc16be73407e3e2cb0e89
GIT binary patch
literal 3045
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
WEJzr{dGNj+fUT7S^q))KiT?w`Yn!?N

literal 0
HcmV?d00001

diff --git a/public/shortcuts/new-status.png b/public/shortcuts/new-status.png
new file mode 100644
index 0000000000000000000000000000000000000000..b7095f3c457071547153ab5b99255d37d26b6457
GIT binary patch
literal 3031
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
Z`ai>UH@>A_0vG@Q002ovPDHLkV1n|Rqn-c&

literal 0
HcmV?d00001

diff --git a/public/shortcuts/notifications.png b/public/shortcuts/notifications.png
new file mode 100644
index 0000000000000000000000000000000000000000..6b9d45718c82784e5c3380dcc9e4cd3fadb9e9b2
GIT binary patch
literal 3067
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

literal 0
HcmV?d00001

diff --git a/public/shortcuts/profile.png b/public/shortcuts/profile.png
new file mode 100644
index 0000000000000000000000000000000000000000..0b3bf517ddaa5d49281a6f2ad32d3e6f49e8bb6f
GIT binary patch
literal 4190
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

literal 0
HcmV?d00001

-- 
GitLab