Added Apple web-app meta tag #358 (#359)

* 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 <sascha.issbruecker@gmail.com>
This commit is contained in:
acbgbca
2023-05-24 05:20:58 +10:00
committed by GitHub
parent 84f13dd792
commit cd66dcee7b
5 changed files with 52 additions and 1 deletions

View File

@@ -8,6 +8,8 @@
<meta charset="UTF-8">
<link rel="icon" href="{% static 'favicon.png' %}"/>
<link rel="apple-touch-icon" href="{% static 'apple-touch-icon.png' %}">
<link rel="manifest" href="{% url 'bookmarks:manifest' %}">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimal-ui">
<meta name="description" content="Self-hosted bookmark service">
<meta name="robots" content="index,follow">

View File

@@ -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)

View File

@@ -32,5 +32,7 @@ urlpatterns = [
path('feeds/<str:feed_key>/all', AllBookmarksFeed(), name='feeds.all'),
path('feeds/<str:feed_key>/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')
]

View File

@@ -2,3 +2,4 @@ from .bookmarks import *
from .settings import *
from .toasts import *
from .health import health
from .manifest import manifest

View File

@@ -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)