Skip to content

Commit

Permalink
setup pwa (#21)
Browse files Browse the repository at this point in the history
* add manifest.json, sw.js with pwa icons

* add screen_shots for mobile and desktop experiences

* remove other icon variants

* use sveltekit approach to service worker setup
  • Loading branch information
nwaughachukwuma authored Dec 4, 2024
1 parent 88b08d2 commit 6cbbd90
Show file tree
Hide file tree
Showing 5 changed files with 116 additions and 0 deletions.
3 changes: 3 additions & 0 deletions app/src/app.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,15 @@
<head>
<meta charset="utf-8" />
<link rel="icon" href="%sveltekit.assets%/favicon.svg" />
<link rel="manifest" href="/manifest.json" />
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="mobile-web-app-capable" content="yes">
<meta name="theme-color" content="#000000" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />

<link rel="apple-touch-icon" sizes="152x152" href="/apple-touch-icon.png">

<title>Audiora</title>
<meta name="description" content="Listen to anything, anytime, leveraging AI" />

Expand Down
80 changes: 80 additions & 0 deletions app/src/service-worker.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
/// <reference types="@sveltejs/kit" />
import { build, files, version } from '$service-worker';

// Create a unique cache name for this deployment
const CACHE = `cache-${version}`;

const ASSETS = [
...build, // the app itself
...files // everything in `static`
];

self.addEventListener('install', (event) => {
// Create a new cache and add all files to it
async function addFilesToCache() {
const cache = await caches.open(CACHE);
await cache.addAll(ASSETS);
}

event.waitUntil(addFilesToCache());
});

self.addEventListener('activate', (event) => {
// Remove previous cached data from disk
async function deleteOldCaches() {
for (const key of await caches.keys()) {
if (key !== CACHE) await caches.delete(key);
}
}

event.waitUntil(deleteOldCaches());
});

self.addEventListener('fetch', (event) => {
// ignore POST requests etc
if (event.request.method !== 'GET') return;

async function respond() {
const url = new URL(event.request.url);
const cache = await caches.open(CACHE);

// `build`/`files` can always be served from the cache
if (ASSETS.includes(url.pathname)) {
const response = await cache.match(url.pathname);

if (response) {
return response;
}
}

// for everything else, try the network first, but
// fall back to the cache if we're offline
try {
const response = await fetch(event.request);

// if we're offline, fetch can return a value that is not a Response
// instead of throwing - and we can't pass this non-Response to respondWith
if (!(response instanceof Response)) {
throw new Error('invalid response from fetch');
}

if (response.status === 200) {
cache.put(event.request, response.clone());
}

return response;
} catch (err) {
const response = await cache.match(event.request);

if (response) {
return response;
}

// if there's no cache, then just error out
// as there is nothing we can do to respond to this request
throw err;
}
}

event.respondWith(respond());
});
33 changes: 33 additions & 0 deletions app/static/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"id": "/",
"name": "Audiora",
"short_name": "Audiora",
"description": "Listen to anything, anytime, leveraging AI",
"start_url": "/",
"display": "standalone",
"background_color": "#000000",
"theme_color": "#000000",
"icons": [
{
"src": "/apple-touch-icon.png",
"sizes": "152x152",
"type": "image/png",
"purpose": "any maskable"
}
],
"screenshots": [
{
"src": "/screenshots/desktop.png",
"sizes": "1280x800",
"type": "image/png",
"form_factor": "wide",
"label": "Audiora Desktop Experience"
},
{
"src": "/screenshots/mobile.png",
"sizes": "390x844",
"type": "image/png",
"label": "Audiora Mobile Experience"
}
]
}
Binary file added app/static/screenshots/desktop.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app/static/screenshots/mobile.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 6cbbd90

Please sign in to comment.