diff options
-rw-r--r-- | CHANGELOG.md | 4 | ||||
-rw-r--r-- | client/src/app/app.module.ts | 6 | ||||
-rw-r--r-- | client/src/app/core/core.module.ts | 8 | ||||
-rw-r--r-- | client/src/main.ts | 13 | ||||
-rw-r--r-- | client/src/manifest.json | 2 | ||||
-rw-r--r-- | server/controllers/client.ts | 15 |
6 files changed, 34 insertions, 14 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 9fe96ea79..7f2e376cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md | |||
@@ -2,6 +2,10 @@ | |||
2 | 2 | ||
3 | ## v0.0.27-alpha | 3 | ## v0.0.27-alpha |
4 | 4 | ||
5 | ### Features | ||
6 | |||
7 | * Add ability for admin to inject custom JavaScript/CSS | ||
8 | |||
5 | ### Bug fixes | 9 | ### Bug fixes |
6 | 10 | ||
7 | * Fix comment reply highlighting | 11 | * Fix comment reply highlighting |
diff --git a/client/src/app/app.module.ts b/client/src/app/app.module.ts index 34114b60b..cae99786b 100644 --- a/client/src/app/app.module.ts +++ b/client/src/app/app.module.ts | |||
@@ -1,11 +1,9 @@ | |||
1 | import { NgModule } from '@angular/core' | 1 | import { NgModule } from '@angular/core' |
2 | import { BrowserModule } from '@angular/platform-browser' | 2 | import { BrowserModule } from '@angular/platform-browser' |
3 | import { ServiceWorkerModule } from '@angular/service-worker' | ||
4 | import { AboutModule } from '@app/about' | 3 | import { AboutModule } from '@app/about' |
5 | import { ResetPasswordModule } from '@app/reset-password' | 4 | import { ResetPasswordModule } from '@app/reset-password' |
6 | 5 | ||
7 | import { MetaLoader, MetaModule, MetaStaticLoader, PageTitlePositioning } from '@ngx-meta/core' | 6 | import { MetaLoader, MetaModule, MetaStaticLoader, PageTitlePositioning } from '@ngx-meta/core' |
8 | import { environment } from '../environments/environment' | ||
9 | 7 | ||
10 | import { AccountModule } from './account' | 8 | import { AccountModule } from './account' |
11 | 9 | ||
@@ -60,9 +58,7 @@ export function metaFactory (): MetaLoader { | |||
60 | MetaModule.forRoot({ | 58 | MetaModule.forRoot({ |
61 | provide: MetaLoader, | 59 | provide: MetaLoader, |
62 | useFactory: (metaFactory) | 60 | useFactory: (metaFactory) |
63 | }), | 61 | }) |
64 | |||
65 | ServiceWorkerModule.register('/ngsw-worker.js', { enabled: environment.production }) | ||
66 | ], | 62 | ], |
67 | providers: [ ] | 63 | providers: [ ] |
68 | }) | 64 | }) |
diff --git a/client/src/app/core/core.module.ts b/client/src/app/core/core.module.ts index 93c9741a7..eea6f340b 100644 --- a/client/src/app/core/core.module.ts +++ b/client/src/app/core/core.module.ts | |||
@@ -1,7 +1,7 @@ | |||
1 | import { NgModule, Optional, SkipSelf } from '@angular/core' | ||
2 | import { CommonModule } from '@angular/common' | 1 | import { CommonModule } from '@angular/common' |
3 | import { RouterModule } from '@angular/router' | 2 | import { NgModule, Optional, SkipSelf } from '@angular/core' |
4 | import { BrowserAnimationsModule } from '@angular/platform-browser/animations' | 3 | import { BrowserAnimationsModule } from '@angular/platform-browser/animations' |
4 | import { RouterModule } from '@angular/router' | ||
5 | import { LoadingBarModule } from '@ngx-loading-bar/core' | 5 | import { LoadingBarModule } from '@ngx-loading-bar/core' |
6 | import { LoadingBarHttpClientModule } from '@ngx-loading-bar/http-client' | 6 | import { LoadingBarHttpClientModule } from '@ngx-loading-bar/http-client' |
7 | 7 | ||
@@ -9,10 +9,10 @@ import { SimpleNotificationsModule } from 'angular2-notifications' | |||
9 | import { ModalModule } from 'ngx-bootstrap/modal' | 9 | import { ModalModule } from 'ngx-bootstrap/modal' |
10 | 10 | ||
11 | import { AuthService } from './auth' | 11 | import { AuthService } from './auth' |
12 | import { LoginGuard, UserRightGuard } from './routing' | ||
13 | import { ServerService } from './server' | ||
14 | import { ConfirmComponent, ConfirmService } from './confirm' | 12 | import { ConfirmComponent, ConfirmService } from './confirm' |
15 | import { throwIfAlreadyLoaded } from './module-import-guard' | 13 | import { throwIfAlreadyLoaded } from './module-import-guard' |
14 | import { LoginGuard, UserRightGuard } from './routing' | ||
15 | import { ServerService } from './server' | ||
16 | 16 | ||
17 | @NgModule({ | 17 | @NgModule({ |
18 | imports: [ | 18 | imports: [ |
diff --git a/client/src/main.ts b/client/src/main.ts index b02b6830f..9686ba4b8 100644 --- a/client/src/main.ts +++ b/client/src/main.ts | |||
@@ -12,6 +12,19 @@ if (environment.production) { | |||
12 | 12 | ||
13 | const bootstrap = () => platformBrowserDynamic() | 13 | const bootstrap = () => platformBrowserDynamic() |
14 | .bootstrapModule(AppModule) | 14 | .bootstrapModule(AppModule) |
15 | .then(bootstrapModule => { | ||
16 | // TODO: Remove when https://github.com/angular/angular-cli/issues/8779 is fixed? | ||
17 | if ('serviceWorker' in navigator && environment.production) { | ||
18 | navigator.serviceWorker.register('/ngsw-worker.js') | ||
19 | .catch(err => console.error('Cannot register service worker.', err)) | ||
20 | } | ||
21 | |||
22 | return bootstrapModule | ||
23 | }) | ||
24 | .catch(err => { | ||
25 | console.error(err) | ||
26 | return null | ||
27 | }) | ||
15 | 28 | ||
16 | if (environment.hmr) { | 29 | if (environment.hmr) { |
17 | if (module[ 'hot' ]) { | 30 | if (module[ 'hot' ]) { |
diff --git a/client/src/manifest.json b/client/src/manifest.json index 707efb973..30914e35f 100644 --- a/client/src/manifest.json +++ b/client/src/manifest.json | |||
@@ -43,5 +43,5 @@ | |||
43 | ], | 43 | ], |
44 | "name": "PeerTube", | 44 | "name": "PeerTube", |
45 | "short_name": "PeerTube", | 45 | "short_name": "PeerTube", |
46 | "start_url": "." | 46 | "start_url": "/videos/trending" |
47 | } | 47 | } |
diff --git a/server/controllers/client.ts b/server/controllers/client.ts index f5124c55b..2fcca6f76 100644 --- a/server/controllers/client.ts +++ b/server/controllers/client.ts | |||
@@ -11,8 +11,6 @@ const clientsRouter = express.Router() | |||
11 | 11 | ||
12 | const distPath = join(root(), 'client', 'dist') | 12 | const distPath = join(root(), 'client', 'dist') |
13 | const assetsImagesPath = join(root(), 'client', 'dist', 'client', 'assets', 'images') | 13 | const assetsImagesPath = join(root(), 'client', 'dist', 'client', 'assets', 'images') |
14 | const manifestPath = join(root(), 'client', 'dist', 'manifest.json') | ||
15 | const serviceWorkerPath = join(root(), 'client', 'dist', 'ngsw-worker.js') | ||
16 | const embedPath = join(distPath, 'standalone', 'videos', 'embed.html') | 14 | const embedPath = join(distPath, 'standalone', 'videos', 'embed.html') |
17 | const indexPath = join(distPath, 'index.html') | 15 | const indexPath = join(distPath, 'index.html') |
18 | 16 | ||
@@ -27,8 +25,17 @@ clientsRouter.use('/videos/embed', (req: express.Request, res: express.Response, | |||
27 | }) | 25 | }) |
28 | 26 | ||
29 | // Static HTML/CSS/JS client files | 27 | // Static HTML/CSS/JS client files |
30 | clientsRouter.use('/manifest.json', express.static(manifestPath, { maxAge: STATIC_MAX_AGE })) | 28 | |
31 | clientsRouter.use('/ngsw-worker.js', express.static(serviceWorkerPath, { maxAge: STATIC_MAX_AGE })) | 29 | const staticClientFiles = [ |
30 | 'manifest.json', | ||
31 | 'ngsw-worker.js', | ||
32 | 'ngsw.json' | ||
33 | ] | ||
34 | for (const staticClientFile of staticClientFiles) { | ||
35 | const path = join(root(), 'client', 'dist', staticClientFile) | ||
36 | clientsRouter.use('/' + staticClientFile, express.static(path, { maxAge: STATIC_MAX_AGE })) | ||
37 | } | ||
38 | |||
32 | clientsRouter.use('/client', express.static(distPath, { maxAge: STATIC_MAX_AGE })) | 39 | clientsRouter.use('/client', express.static(distPath, { maxAge: STATIC_MAX_AGE })) |
33 | clientsRouter.use('/client/assets/images', express.static(assetsImagesPath, { maxAge: STATIC_MAX_AGE })) | 40 | clientsRouter.use('/client/assets/images', express.static(assetsImagesPath, { maxAge: STATIC_MAX_AGE })) |
34 | 41 | ||