forked from tangled.org/core
Monorepo for Tangled — https://tangled.org

appview/state,appview/pages/templates: add installable pwa support for tangled

Signed-off-by: afterlifepro <vielle.dev@proton.me>

vielle.dev 73f294fa b85c323d

verified
Changed files
+30
appview
+3
appview/pages/templates/layouts/base.html
··· 15 15 <link rel="preconnect" href="https://avatar.tangled.sh" /> 16 16 <link rel="preconnect" href="https://camo.tangled.sh" /> 17 17 18 + <!-- pwa manifest --> 19 + <link rel="manifest" href="/pwa-manifest.json" /> 20 + 18 21 <!-- preload main font --> 19 22 <link rel="preload" href="/static/fonts/InterVariable.woff2" as="font" type="font/woff2" crossorigin /> 20 23
+1
appview/pages/templates/user/completeSignup.html
··· 20 20 content="complete your signup for tangled" 21 21 /> 22 22 <script src="/static/htmx.min.js"></script> 23 + <link rel="manifest" href="/pwa-manifest.json" /> 23 24 <link 24 25 rel="stylesheet" 25 26 href="/static/tw.css?{{ cssContentHash }}"
+1
appview/pages/templates/user/login.html
··· 8 8 <meta property="og:url" content="https://tangled.org/login" /> 9 9 <meta property="og:description" content="login to for tangled" /> 10 10 <script src="/static/htmx.min.js"></script> 11 + <link rel="manifest" href="/pwa-manifest.json" /> 11 12 <link rel="stylesheet" href="/static/tw.css?{{ cssContentHash }}" type="text/css" /> 12 13 <title>login &middot; tangled</title> 13 14 </head>
+1
appview/pages/templates/user/signup.html
··· 8 8 <meta property="og:url" content="https://tangled.org/signup" /> 9 9 <meta property="og:description" content="sign up for tangled" /> 10 10 <script src="/static/htmx.min.js"></script> 11 + <link rel="manifest" href="/pwa-manifest.json" /> 11 12 <link rel="stylesheet" href="/static/tw.css?{{ cssContentHash }}" type="text/css" /> 12 13 <title>sign up &middot; tangled</title> 13 14
+1
appview/state/router.go
··· 34 34 35 35 router.Get("/favicon.svg", s.Favicon) 36 36 router.Get("/favicon.ico", s.Favicon) 37 + router.Get("/pwa-manifest.json", s.PWAManifest) 37 38 router.Get("/robots.txt", s.RobotsTxt) 38 39 39 40 userRouter := s.UserRouter(&middleware)
+23
appview/state/state.go
··· 219 219 w.Write([]byte(robotsTxt)) 220 220 } 221 221 222 + // https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Manifest 223 + const manifestJson = `{ 224 + "name": "tangled", 225 + "description": "tightly-knit social coding.", 226 + "icons": [ 227 + { 228 + "src": "/favicon.svg", 229 + "sizes": "144x144" 230 + } 231 + ], 232 + "start_url": "/", 233 + "id": "org.tangled", 234 + 235 + "display": "standalone", 236 + "background_color": "#111827", 237 + "theme_color": "#111827" 238 + }` 239 + 240 + func (p *State) PWAManifest(w http.ResponseWriter, r *http.Request) { 241 + w.Header().Set("Content-Type", "application/json") 242 + w.Write([]byte(manifestJson)) 243 + } 244 + 222 245 func (s *State) TermsOfService(w http.ResponseWriter, r *http.Request) { 223 246 user := s.oauth.GetUser(r) 224 247 s.pages.TermsOfService(w, pages.TermsOfServiceParams{