~cytrogen/masto-fe

dab8d97f08108c2d71680e0462542953b54c6220 — Cytrogen 4 days ago f16b04f
[feature] PWA installability (mobile)

Add manifest icons (192, 512, maskable) and apple-touch-icon for iOS.
Remove me gate on SW registration (unnecessary in standalone mode).
M app/javascript/flavours/glitch/main.jsx => app/javascript/flavours/glitch/main.jsx +1 -1
@@ 21,7 21,7 @@ function main() {
    root.render(<Mastodon {...props} />);
    store.dispatch(setupBrowserNotifications());

    if (process.env.NODE_ENV === "production" && me && "serviceWorker" in navigator) {
    if (process.env.NODE_ENV === "production" && "serviceWorker" in navigator) {
      const { Workbox } = await import("workbox-window");
      const wb = new Workbox("/sw.js");
      /** @type {ServiceWorkerRegistration} */

M app/javascript/mastodon/main.jsx => app/javascript/mastodon/main.jsx +1 -1
@@ 21,7 21,7 @@ function main() {
    root.render(<Mastodon {...props} />);
    store.dispatch(setupBrowserNotifications());

    if (process.env.NODE_ENV === "production" && me && "serviceWorker" in navigator) {
    if (process.env.NODE_ENV === "production" && "serviceWorker" in navigator) {
      const { Workbox } = await import("workbox-window");
      const wb = new Workbox("/sw.js");
      /** @type {ServiceWorkerRegistration} */

A public/icon-180.png => public/icon-180.png +0 -0
A public/icon-192.png => public/icon-192.png +0 -0
A public/icon-512.png => public/icon-512.png +0 -0
A public/icon-maskable-512.png => public/icon-maskable-512.png +0 -0
M public/index.html => public/index.html +17 -0
@@ 5,10 5,27 @@
    <meta content='width=device-width, initial-scale=1' name='viewport'>
    <title>Masto-FE (🦥 flavour)</title>
    <link rel="manifest" type="applicaton/manifest+json" href="/manifest.json" />
    <link rel="apple-touch-icon" href="/icon-180.png" />

    <meta name="theme-color" content="#282c37" />
    <meta content='/getting-started' name='initialPath' />

    <script>
    // Set lang attribute from user preference before app loads
    (function() {
      var available = ["af","an","ar","ast","be","bg","bn","br","bs","ca","ckb","co","cs","cy","da","de","el","en-GB","en","eo","es-AR","es","es-MX","et","eu","fa","fi","fo","fr","fr-QC","fy","ga","gd","gl","he","hi","hr","hu","hy","id","ig","io","is","it","ja","ka","kab","kk","kn","ko","ku","kw","la","lt","lv","mk","ml","mr","ms","my","nl","nn","no","oc","pa","pl","pt-BR","pt-PT","ro","ru","sa","sc","sco","si","sk","sl","sq","sr","sr-Latn","sv","szl","ta","tai","te","th","tr","tt","ug","uk","ur","uz","vi","zgh","zh-CN","zh-HK","zh-TW"];
      var raw = localStorage.getItem('masto-fe-locale') || navigator.language || 'en';
      var locale = 'en';
      if (available.indexOf(raw) !== -1) { locale = raw; }
      else {
        var base = raw.split('-')[0];
        if (base === 'zh') { locale = raw.indexOf('TW') !== -1 || raw.indexOf('HK') !== -1 || raw.indexOf('Hant') !== -1 ? 'zh-TW' : 'zh-CN'; }
        else if (base === 'pt') { locale = raw.indexOf('BR') !== -1 ? 'pt-BR' : 'pt-PT'; }
        else if (available.indexOf(base) !== -1) { locale = base; }
      }
      document.documentElement.lang = locale;
    })();
    </script>
    <link rel='preload' as='script' href='/packs/js/locales/glitch/en-json.js' />
    <link rel='preload' as='script' href='/packs/js/flavours/glitch/async/getting_started.js' />
    <link rel='preload' as='script' href='/packs/js/flavours/glitch/async/compose.js' />

M public/manifest.json => public/manifest.json +19 -0
@@ 3,7 3,26 @@
  "categories": ["social"],
  "description": "Masto-FE (🦥 flavour)",
  "display": "standalone",
  "icons": [
    {
      "src": "/icon-192.png",
      "sizes": "192x192",
      "type": "image/png"
    },
    {
      "src": "/icon-512.png",
      "sizes": "512x512",
      "type": "image/png"
    },
    {
      "src": "/icon-maskable-512.png",
      "sizes": "512x512",
      "type": "image/png",
      "purpose": "maskable"
    }
  ],
  "name": "Masto-FE (🦥 flavour)",
  "short_name": "Masto-FE",
  "serviceworker": {
    "src": "/sw.js"
  },