Register service worker
authorChocobozzz <me@florianbigard.com>
Thu, 22 Feb 2018 13:15:23 +0000 (14:15 +0100)
committerChocobozzz <me@florianbigard.com>
Thu, 22 Feb 2018 13:15:23 +0000 (14:15 +0100)
CHANGELOG.md
client/src/app/app.module.ts
client/src/app/core/core.module.ts
client/src/main.ts
client/src/manifest.json
server/controllers/client.ts

index 9fe96ea79e167078b1ca614ec8305c61dfa9d506..7f2e376cf61cad988aabf8e9e4f01bdf71c8b4a4 100644 (file)
@@ -2,6 +2,10 @@
 
 ## v0.0.27-alpha
 
+### Features
+
+ * Add ability for admin to inject custom JavaScript/CSS
+
 ### Bug fixes
 
  * Fix comment reply highlighting
index 34114b60b3ced65c3b902967f35c4e47eb7c0110..cae99786b32911c9d7f67700a72793709f03b50e 100644 (file)
@@ -1,11 +1,9 @@
 import { NgModule } from '@angular/core'
 import { BrowserModule } from '@angular/platform-browser'
-import { ServiceWorkerModule } from '@angular/service-worker'
 import { AboutModule } from '@app/about'
 import { ResetPasswordModule } from '@app/reset-password'
 
 import { MetaLoader, MetaModule, MetaStaticLoader, PageTitlePositioning } from '@ngx-meta/core'
-import { environment } from '../environments/environment'
 
 import { AccountModule } from './account'
 
@@ -60,9 +58,7 @@ export function metaFactory (): MetaLoader {
     MetaModule.forRoot({
       provide: MetaLoader,
       useFactory: (metaFactory)
-    }),
-
-    ServiceWorkerModule.register('/ngsw-worker.js', { enabled: environment.production })
+    })
   ],
   providers: [ ]
 })
index 93c9741a7194839b8916e952a8fdf49f3c2b330e..eea6f340b125a61fd815a1f97e04fae68b0c9ccd 100644 (file)
@@ -1,7 +1,7 @@
-import { NgModule, Optional, SkipSelf } from '@angular/core'
 import { CommonModule } from '@angular/common'
-import { RouterModule } from '@angular/router'
+import { NgModule, Optional, SkipSelf } from '@angular/core'
 import { BrowserAnimationsModule } from '@angular/platform-browser/animations'
+import { RouterModule } from '@angular/router'
 import { LoadingBarModule } from '@ngx-loading-bar/core'
 import { LoadingBarHttpClientModule } from '@ngx-loading-bar/http-client'
 
@@ -9,10 +9,10 @@ import { SimpleNotificationsModule } from 'angular2-notifications'
 import { ModalModule } from 'ngx-bootstrap/modal'
 
 import { AuthService } from './auth'
-import { LoginGuard, UserRightGuard } from './routing'
-import { ServerService } from './server'
 import { ConfirmComponent, ConfirmService } from './confirm'
 import { throwIfAlreadyLoaded } from './module-import-guard'
+import { LoginGuard, UserRightGuard } from './routing'
+import { ServerService } from './server'
 
 @NgModule({
   imports: [
index b02b6830f4c1f0f9c722f045b81d02356d076594..9686ba4b863ac0c71d8a13e246a3ecc92b1bce7d 100644 (file)
@@ -12,6 +12,19 @@ if (environment.production) {
 
 const bootstrap = () => platformBrowserDynamic()
   .bootstrapModule(AppModule)
+  .then(bootstrapModule => {
+    // TODO: Remove when https://github.com/angular/angular-cli/issues/8779 is fixed?
+    if ('serviceWorker' in navigator && environment.production) {
+      navigator.serviceWorker.register('/ngsw-worker.js')
+        .catch(err => console.error('Cannot register service worker.', err))
+    }
+
+    return bootstrapModule
+  })
+  .catch(err => {
+    console.error(err)
+    return null
+  })
 
 if (environment.hmr) {
   if (module[ 'hot' ]) {
index 707efb973023b81a0a1f5a54ef7a1ba1ad2f2cf6..30914e35fb164de759c4ac61e61c8bde90fa0a52 100644 (file)
@@ -43,5 +43,5 @@
   ],
   "name": "PeerTube",
   "short_name": "PeerTube",
-  "start_url": "."
+  "start_url": "/videos/trending"
 }
index f5124c55bed6b0b6c61ded93371988c4befbe1fd..2fcca6f761227ffd4d8774eb19ec88c928aa2c1b 100644 (file)
@@ -11,8 +11,6 @@ const clientsRouter = express.Router()
 
 const distPath = join(root(), 'client', 'dist')
 const assetsImagesPath = join(root(), 'client', 'dist', 'client', 'assets', 'images')
-const manifestPath = join(root(), 'client', 'dist', 'manifest.json')
-const serviceWorkerPath = join(root(), 'client', 'dist', 'ngsw-worker.js')
 const embedPath = join(distPath, 'standalone', 'videos', 'embed.html')
 const indexPath = join(distPath, 'index.html')
 
@@ -27,8 +25,17 @@ clientsRouter.use('/videos/embed', (req: express.Request, res: express.Response,
 })
 
 // Static HTML/CSS/JS client files
-clientsRouter.use('/manifest.json', express.static(manifestPath, { maxAge: STATIC_MAX_AGE }))
-clientsRouter.use('/ngsw-worker.js', express.static(serviceWorkerPath, { maxAge: STATIC_MAX_AGE }))
+
+const staticClientFiles = [
+  'manifest.json',
+  'ngsw-worker.js',
+  'ngsw.json'
+]
+for (const staticClientFile of staticClientFiles) {
+  const path = join(root(), 'client', 'dist', staticClientFile)
+  clientsRouter.use('/' + staticClientFile, express.static(path, { maxAge: STATIC_MAX_AGE }))
+}
+
 clientsRouter.use('/client', express.static(distPath, { maxAge: STATIC_MAX_AGE }))
 clientsRouter.use('/client/assets/images', express.static(assetsImagesPath, { maxAge: STATIC_MAX_AGE }))