From cd66dcee7b4de3d7dbec227b13ce3b3c022c1ee0 Mon Sep 17 00:00:00 2001 From: acbgbca <60839662+acbgbca@users.noreply.github.com> Date: Wed, 24 May 2023 05:20:58 +1000 Subject: [PATCH] Added Apple web-app meta tag #358 (#359) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added Apple web-app meta tag #358 * Added manifest file for web app * Changed manifest to use template #358 * Small tweaks, add tests --------- Co-authored-by: Sascha Ißbrücker --- bookmarks/templates/bookmarks/layout.html | 2 ++ bookmarks/tests/test_metadata_view.py | 33 +++++++++++++++++++++++ bookmarks/urls.py | 4 ++- bookmarks/views/__init__.py | 1 + bookmarks/views/manifest.py | 13 +++++++++ 5 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 bookmarks/tests/test_metadata_view.py create mode 100644 bookmarks/views/manifest.py diff --git a/bookmarks/templates/bookmarks/layout.html b/bookmarks/templates/bookmarks/layout.html index 90fbb78..b5f67f1 100644 --- a/bookmarks/templates/bookmarks/layout.html +++ b/bookmarks/templates/bookmarks/layout.html @@ -8,6 +8,8 @@ + + diff --git a/bookmarks/tests/test_metadata_view.py b/bookmarks/tests/test_metadata_view.py new file mode 100644 index 0000000..5272392 --- /dev/null +++ b/bookmarks/tests/test_metadata_view.py @@ -0,0 +1,33 @@ +from django.test import TestCase, override_settings + + +class MetadataViewTestCase(TestCase): + + def test_default_manifest(self): + response = self.client.get("/manifest.json") + + self.assertEqual(response.status_code, 200) + + response_body = response.json() + expected_body = { + "short_name": "linkding", + "start_url": "bookmarks", + "display": "standalone", + "scope": "/" + } + self.assertDictEqual(response_body, expected_body) + + @override_settings(LD_CONTEXT_PATH="linkding/") + def test_manifest_respects_context_path(self): + response = self.client.get("/manifest.json") + + self.assertEqual(response.status_code, 200) + + response_body = response.json() + expected_body = { + "short_name": "linkding", + "start_url": "bookmarks", + "display": "standalone", + "scope": "/linkding/" + } + self.assertDictEqual(response_body, expected_body) diff --git a/bookmarks/urls.py b/bookmarks/urls.py index 1c2387d..834a2f4 100644 --- a/bookmarks/urls.py +++ b/bookmarks/urls.py @@ -32,5 +32,7 @@ urlpatterns = [ path('feeds//all', AllBookmarksFeed(), name='feeds.all'), path('feeds//unread', UnreadBookmarksFeed(), name='feeds.unread'), # Health check - path('health', views.health, name='health') + path('health', views.health, name='health'), + # Manifest + path("manifest.json", views.manifest, name='manifest') ] diff --git a/bookmarks/views/__init__.py b/bookmarks/views/__init__.py index 948a4ad..894b61d 100644 --- a/bookmarks/views/__init__.py +++ b/bookmarks/views/__init__.py @@ -2,3 +2,4 @@ from .bookmarks import * from .settings import * from .toasts import * from .health import health +from .manifest import manifest diff --git a/bookmarks/views/manifest.py b/bookmarks/views/manifest.py new file mode 100644 index 0000000..07a3995 --- /dev/null +++ b/bookmarks/views/manifest.py @@ -0,0 +1,13 @@ +from django.http import JsonResponse +from django.conf import settings + + +def manifest(request): + response = { + "short_name": "linkding", + "start_url": "bookmarks", + "display": "standalone", + "scope": "/" + settings.LD_CONTEXT_PATH + } + + return JsonResponse(response, status=200)