## v0.0.27-alpha
+### Features
+
+ * Add ability for admin to inject custom JavaScript/CSS
+
### Bug fixes
* Fix comment reply highlighting
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'
MetaModule.forRoot({
provide: MetaLoader,
useFactory: (metaFactory)
- }),
-
- ServiceWorkerModule.register('/ngsw-worker.js', { enabled: environment.production })
+ })
],
providers: [ ]
})
-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'
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: [
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' ]) {
],
"name": "PeerTube",
"short_name": "PeerTube",
- "start_url": "."
+ "start_url": "/videos/trending"
}
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')
})
// 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 }))