From ed8c62f4bd4d8b63cb2729fcc5ed793cb11c1ed7 Mon Sep 17 00:00:00 2001 From: Kacper Donat Date: Fri, 18 Sep 2020 22:47:22 +0200 Subject: [PATCH] Unify provider and main webapp manifest (manifest.json) --- public/manifest.json | 30 --------------------------- src/Controller/MainController.php | 34 ++++++++++++++++++------------- src/Service/ProviderResolver.php | 23 ++++++++++++--------- templates/app.html.twig | 2 +- templates/manifest.json.twig | 7 ++++--- 5 files changed, 38 insertions(+), 58 deletions(-) delete mode 100644 public/manifest.json diff --git a/public/manifest.json b/public/manifest.json deleted file mode 100644 index 00ff1f9..0000000 --- a/public/manifest.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "Co Jedzie?", - "short_name": "Co Jedzie?", - "orientation": "portrait", - "lang": "pl_PL", - "start_url": ".", - "display": "standalone", - "background_color": "#005ea8", - "theme_color": "#005ea8", - "description": "Odpowiedź na odwieczne pytanie ludzkości - czy tramwaje jeżdżą?", - "icons": [{ - "src": "images/icon-256.png", - "sizes": "256x256" - },{ - "src": "images/icon-512.png", - "sizes": "512x512" - },{ - "src": "images/icon-64.png", - "sizes": "64x64" - },{ - "src": "images/icon-128.png", - "sizes": "128x128" - },{ - "src": "images/icon-192.png", - "sizes": "192x192" - },{ - "src": "images/icon-96.png", - "sizes": "96x96" - }] -} diff --git a/src/Controller/MainController.php b/src/Controller/MainController.php index 0987eb6..bfe8d15 100644 --- a/src/Controller/MainController.php +++ b/src/Controller/MainController.php @@ -2,7 +2,6 @@ namespace App\Controller; - use App\Provider\Provider; use App\Service\ProviderResolver; use Symfony\Component\HttpFoundation\Request; @@ -18,25 +17,32 @@ class MainController extends Controller return $this->render('choose.html.twig', ['providers' => $resolver->all()]); } + /** + * @Route("/{provider}/manifest.json", name="provider_manifest") + * @Route("/manifest.json", name="main_manifest") + */ + public function manifest(?Provider $provider = null) + { + $response = $this->render('manifest.json.twig', ['provider' => $provider]); + $response->headers->set('Content-Type', 'application/json'); + + return $response; + } + /** * @Route("/{provider}", name="app") */ public function app(Provider $provider, Request $request) { $state = json_decode($request->query->get('state', '{}'), true) ?: []; - $state = array_merge([ - 'version' => 1, - 'stops' => [], - ], $state); + $state = array_merge( + [ + 'version' => 1, + 'stops' => [], + ], + $state + ); return $this->render('app.html.twig', compact('state', 'provider')); } - - /** - * @Route("/{provider}/manifest.json", name="webapp_manifest") - */ - public function manifest(Provider $provider) - { - return $this->render('manifest.json.twig', ['provider' => $provider]); - } -} \ No newline at end of file +} diff --git a/src/Service/ProviderResolver.php b/src/Service/ProviderResolver.php index 85e2758..29a0193 100644 --- a/src/Service/ProviderResolver.php +++ b/src/Service/ProviderResolver.php @@ -6,8 +6,8 @@ namespace App\Service; use App\Exception\NonExistentServiceException; use App\Provider\Dummy\DummyProvider; use App\Provider\Provider; -use Kadet\Functional\Transforms as t; use Kadet\Functional\Predicates as p; +use Kadet\Functional\Transforms as t; use Tightenco\Collect\Support\Collection; class ProviderResolver @@ -23,16 +23,19 @@ class ProviderResolver } } - /**\ - * @param string $name - * - * @return \App\Provider\Provider - * @throws \App\Exception\NonExistentServiceException - */ - public function resolve(string $name): Provider + public function resolve(?string $name): ?Provider { + if (empty($name)) { + return null; + } + if (!$this->providers->has($name)) { - $message = sprintf("Provider '%s' doesn't exist, you can choose from: %s", $name, $this->providers->keys()->implode(', ')); + $message = sprintf( + "Provider '%s' doesn't exist, you can choose from: %s", + $name, + $this->providers->keys()->implode(', ') + ); + throw new NonExistentServiceException($message); } @@ -44,4 +47,4 @@ class ProviderResolver { return clone $this->providers; } -} \ No newline at end of file +} diff --git a/templates/app.html.twig b/templates/app.html.twig index af27f36..a8143e6 100644 --- a/templates/app.html.twig +++ b/templates/app.html.twig @@ -1,6 +1,6 @@ {% extends 'base.html.twig' %} {% block title "#{parent()} - #{provider.name}" %} -{% block manifest path('webapp_manifest', { provider: provider.identifier }) %} +{% block manifest path('provider_manifest', { provider: provider.identifier }) %} {% block body %}
diff --git a/templates/manifest.json.twig b/templates/manifest.json.twig index 4984474..24de7ff 100644 --- a/templates/manifest.json.twig +++ b/templates/manifest.json.twig @@ -1,13 +1,14 @@ { - "name": "Co Jedzie? - {{ provider.shortName }}", - "short_name": "Co Jedzie? - {{ provider.shortName }}", + "name": "Co Jedzie?{% if provider %} - {{ provider.shortName }}{% endif %}", + "short_name": "Co Jedzie?{% if provider %} - {{ provider.shortName }}{% endif %}", "orientation": "portrait", "lang": "pl_PL", - "start_url": "{{ path('app', { provider: provider.identifier }) }}", + "start_url": "{{ provider ? path('app', { provider: provider.identifier }) : path('choose') }}", "display": "standalone", "background_color": "white", "theme_color": "white", "description": "Odpowiedź na odwieczne pytanie ludzkości - czy tramwaje jeżdżą?", + "categories": ["navigation", "transport", "travel", "utilities"], "icons": [{ "src": "{{ asset('images/icon-256.png') }}", "sizes": "256x256"