Commit 709919a9 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

Experimental PWA support (#13)

parent 9f3b80a8
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1723,6 +1723,7 @@ sub startup {
	$r->get('/changelog')->to('static#changelog');
	$r->get('/impressum')->to('static#imprint');
	$r->get('/imprint')->to('static#imprint');
	$r->get('/offline')->to('static#offline');
	$r->get('/api/v0/:user_action/:token')->to('api#get_v0');
	$r->get('/api/v1/:user_action/:token')->to('api#get_v1');
	$r->get('/login')->to('account#login_form');
+6 −0
Original line number Diff line number Diff line
@@ -23,4 +23,10 @@ sub imprint {
	$self->render('imprint');
}

sub offline {
	my ($self) = @_;

	$self->render('offline');
}

1;
+47 −0
Original line number Diff line number Diff line
const CACHE_NAME = 'static-cache-v10';
const FILES_TO_CACHE = [
  '/offline.html',
  '/static/v10/css/materialize.min.css',
  '/static/v10/css/material-icons.css',
  '/static/v10/css/local.css',
  '/static/v10/js/jquery-2.2.4.min.js',
  '/static/v10/js/materialize.min.js',
  '/static/v10/js/travelynx-actions.min.js',
];

self.addEventListener('install', (evt) => {
  evt.waitUntil(
    caches.open(CACHE_NAME).then((cache) => {
      return cache.addAll(FILES_TO_CACHE);
    })
  );
  self.skipWaiting();
});

self.addEventListener('activate', (evt) => {
  evt.waitUntil(
    caches.keys().then((keyList) => {
      return Promise.all(keyList.map((key) => {
        if (key !== CACHE_NAME) {
          return caches.delete(key);
        }
      }));
    })
  );
  self.clients.claim();
});

self.addEventListener('fetch', (evt) => {
  if (evt.request.mode !== 'navigate') {
    return;
  }
  evt.respondWith(
    fetch(evt.request)
        .catch(() => {
          return caches.open(CACHE_NAME)
              .then((cache) => {
                return cache.match('offline.html');
              });
        })
  );
});
+1.42 KiB
Loading image diff...
+1.53 KiB
Loading image diff...
Loading