diff options
author | Chocobozzz <me@florianbigard.com> | 2021-07-01 17:28:47 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2021-07-01 17:28:47 +0200 |
commit | 8b61dcaf23a66d508c05641c9c09747bf03cdb48 (patch) | |
tree | a210b181fcda749a7ede6a81aeb7492ca0370f0d | |
parent | c171d852532d9858a6e4a08ce528e16918c6725d (diff) | |
download | PeerTube-8b61dcaf23a66d508c05641c9c09747bf03cdb48.tar.gz PeerTube-8b61dcaf23a66d508c05641c9c09747bf03cdb48.tar.zst PeerTube-8b61dcaf23a66d508c05641c9c09747bf03cdb48.zip |
Homepage error handling
4 files changed, 47 insertions, 36 deletions
diff --git a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/channel-miniature-markup.component.ts b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/channel-miniature-markup.component.ts index a91debbef..7043a7ec9 100644 --- a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/channel-miniature-markup.component.ts +++ b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/channel-miniature-markup.component.ts | |||
@@ -1,6 +1,7 @@ | |||
1 | import { map, switchMap } from 'rxjs/operators' | 1 | import { from } from 'rxjs' |
2 | import { finalize, map, switchMap, tap } from 'rxjs/operators' | ||
2 | import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core' | 3 | import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core' |
3 | import { MarkdownService, UserService } from '@app/core' | 4 | import { MarkdownService, Notifier, UserService } from '@app/core' |
4 | import { Video, VideoSortField } from '@shared/models/videos' | 5 | import { Video, VideoSortField } from '@shared/models/videos' |
5 | import { VideoChannel, VideoChannelService, VideoService } from '../../shared-main' | 6 | import { VideoChannel, VideoChannelService, VideoService } from '../../shared-main' |
6 | import { CustomMarkupComponent } from './shared' | 7 | import { CustomMarkupComponent } from './shared' |
@@ -30,25 +31,33 @@ export class ChannelMiniatureMarkupComponent implements CustomMarkupComponent, O | |||
30 | private markdown: MarkdownService, | 31 | private markdown: MarkdownService, |
31 | private channelService: VideoChannelService, | 32 | private channelService: VideoChannelService, |
32 | private videoService: VideoService, | 33 | private videoService: VideoService, |
33 | private userService: UserService | 34 | private userService: UserService, |
35 | private notifier: Notifier | ||
34 | ) { } | 36 | ) { } |
35 | 37 | ||
36 | ngOnInit () { | 38 | ngOnInit () { |
37 | this.channelService.getVideoChannel(this.name) | 39 | this.channelService.getVideoChannel(this.name) |
38 | .subscribe(async channel => { | 40 | .pipe( |
39 | this.channel = channel | 41 | tap(channel => this.channel = channel), |
40 | 42 | switchMap(() => from(this.markdown.textMarkdownToHTML(this.channel.description))), | |
41 | this.descriptionHTML = await this.markdown.textMarkdownToHTML(channel.description) | 43 | tap(html => this.descriptionHTML = html), |
44 | switchMap(() => this.loadVideosObservable()), | ||
45 | finalize(() => this.loaded.emit(true)) | ||
46 | ).subscribe( | ||
47 | ({ total, data }) => { | ||
48 | this.totalVideos = total | ||
49 | this.video = data[0] | ||
50 | }, | ||
42 | 51 | ||
43 | this.loadVideos() | 52 | err => this.notifier.error('Error in channel miniature component: ' + err.message) |
44 | }) | 53 | ) |
45 | } | 54 | } |
46 | 55 | ||
47 | getVideoChannelLink () { | 56 | getVideoChannelLink () { |
48 | return [ '/c', this.channel.nameWithHost ] | 57 | return [ '/c', this.channel.nameWithHost ] |
49 | } | 58 | } |
50 | 59 | ||
51 | private loadVideos () { | 60 | private loadVideosObservable () { |
52 | const videoOptions = { | 61 | const videoOptions = { |
53 | videoChannel: this.channel, | 62 | videoChannel: this.channel, |
54 | videoPagination: { | 63 | videoPagination: { |
@@ -59,18 +68,10 @@ export class ChannelMiniatureMarkupComponent implements CustomMarkupComponent, O | |||
59 | count: 1 | 68 | count: 1 |
60 | } | 69 | } |
61 | 70 | ||
62 | this.userService.getAnonymousOrLoggedUser() | 71 | return this.userService.getAnonymousOrLoggedUser() |
63 | .pipe( | 72 | .pipe( |
64 | map(user => user.nsfwPolicy), | 73 | map(user => user.nsfwPolicy), |
65 | switchMap(nsfwPolicy => this.videoService.getVideoChannelVideos({ ...videoOptions, nsfwPolicy })) | 74 | switchMap(nsfwPolicy => this.videoService.getVideoChannelVideos({ ...videoOptions, nsfwPolicy })) |
66 | ) | 75 | ) |
67 | .subscribe({ | ||
68 | next: ({ total, data }) => { | ||
69 | this.totalVideos = total | ||
70 | this.video = data[0] | ||
71 | }, | ||
72 | |||
73 | complete: () => this.loaded.emit(true) | ||
74 | }) | ||
75 | } | 76 | } |
76 | } | 77 | } |
diff --git a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/playlist-miniature-markup.component.ts b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/playlist-miniature-markup.component.ts index 42a42d711..ff8cc01db 100644 --- a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/playlist-miniature-markup.component.ts +++ b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/playlist-miniature-markup.component.ts | |||
@@ -1,4 +1,6 @@ | |||
1 | import { finalize } from 'rxjs/operators' | ||
1 | import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core' | 2 | import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core' |
3 | import { Notifier } from '@app/core' | ||
2 | import { MiniatureDisplayOptions } from '../../shared-video-miniature' | 4 | import { MiniatureDisplayOptions } from '../../shared-video-miniature' |
3 | import { VideoPlaylist, VideoPlaylistService } from '../../shared-video-playlist' | 5 | import { VideoPlaylist, VideoPlaylistService } from '../../shared-video-playlist' |
4 | import { CustomMarkupComponent } from './shared' | 6 | import { CustomMarkupComponent } from './shared' |
@@ -31,15 +33,17 @@ export class PlaylistMiniatureMarkupComponent implements CustomMarkupComponent, | |||
31 | } | 33 | } |
32 | 34 | ||
33 | constructor ( | 35 | constructor ( |
34 | private playlistService: VideoPlaylistService | 36 | private playlistService: VideoPlaylistService, |
37 | private notifier: Notifier | ||
35 | ) { } | 38 | ) { } |
36 | 39 | ||
37 | ngOnInit () { | 40 | ngOnInit () { |
38 | this.playlistService.getVideoPlaylist(this.uuid) | 41 | this.playlistService.getVideoPlaylist(this.uuid) |
39 | .subscribe({ | 42 | .pipe(finalize(() => this.loaded.emit(true))) |
40 | next: playlist => this.playlist = playlist, | 43 | .subscribe( |
44 | playlist => this.playlist = playlist, | ||
41 | 45 | ||
42 | complete: () => this.loaded.emit(true) | 46 | err => this.notifier.error('Error in playlist miniature component: ' + err.message) |
43 | }) | 47 | ) |
44 | } | 48 | } |
45 | } | 49 | } |
diff --git a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/video-miniature-markup.component.ts b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/video-miniature-markup.component.ts index 6ee5123e0..47518abfd 100644 --- a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/video-miniature-markup.component.ts +++ b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/video-miniature-markup.component.ts | |||
@@ -1,5 +1,6 @@ | |||
1 | import { finalize } from 'rxjs/operators' | ||
1 | import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core' | 2 | import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core' |
2 | import { AuthService } from '@app/core' | 3 | import { AuthService, Notifier } from '@app/core' |
3 | import { Video, VideoService } from '../../shared-main' | 4 | import { Video, VideoService } from '../../shared-main' |
4 | import { MiniatureDisplayOptions } from '../../shared-video-miniature' | 5 | import { MiniatureDisplayOptions } from '../../shared-video-miniature' |
5 | import { CustomMarkupComponent } from './shared' | 6 | import { CustomMarkupComponent } from './shared' |
@@ -34,7 +35,8 @@ export class VideoMiniatureMarkupComponent implements CustomMarkupComponent, OnI | |||
34 | 35 | ||
35 | constructor ( | 36 | constructor ( |
36 | private auth: AuthService, | 37 | private auth: AuthService, |
37 | private videoService: VideoService | 38 | private videoService: VideoService, |
39 | private notifier: Notifier | ||
38 | ) { } | 40 | ) { } |
39 | 41 | ||
40 | getUser () { | 42 | getUser () { |
@@ -49,10 +51,11 @@ export class VideoMiniatureMarkupComponent implements CustomMarkupComponent, OnI | |||
49 | } | 51 | } |
50 | 52 | ||
51 | this.videoService.getVideo({ videoId: this.uuid }) | 53 | this.videoService.getVideo({ videoId: this.uuid }) |
52 | .subscribe({ | 54 | .pipe(finalize(() => this.loaded.emit(true))) |
53 | next: video => this.video = video, | 55 | .subscribe( |
56 | video => this.video = video, | ||
54 | 57 | ||
55 | complete: () => this.loaded.emit(true) | 58 | err => this.notifier.error('Error in video miniature component: ' + err.message) |
56 | }) | 59 | ) |
57 | } | 60 | } |
58 | } | 61 | } |
diff --git a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts index 02738022e..afa4f4799 100644 --- a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts +++ b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts | |||
@@ -1,5 +1,6 @@ | |||
1 | import { finalize } from 'rxjs/operators' | ||
1 | import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core' | 2 | import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core' |
2 | import { AuthService } from '@app/core' | 3 | import { AuthService, Notifier } from '@app/core' |
3 | import { VideoFilter, VideoSortField } from '@shared/models' | 4 | import { VideoFilter, VideoSortField } from '@shared/models' |
4 | import { Video, VideoService } from '../../shared-main' | 5 | import { Video, VideoService } from '../../shared-main' |
5 | import { MiniatureDisplayOptions } from '../../shared-video-miniature' | 6 | import { MiniatureDisplayOptions } from '../../shared-video-miniature' |
@@ -40,7 +41,8 @@ export class VideosListMarkupComponent implements CustomMarkupComponent, OnInit | |||
40 | 41 | ||
41 | constructor ( | 42 | constructor ( |
42 | private auth: AuthService, | 43 | private auth: AuthService, |
43 | private videoService: VideoService | 44 | private videoService: VideoService, |
45 | private notifier: Notifier | ||
44 | ) { } | 46 | ) { } |
45 | 47 | ||
46 | getUser () { | 48 | getUser () { |
@@ -76,10 +78,11 @@ export class VideosListMarkupComponent implements CustomMarkupComponent, OnInit | |||
76 | } | 78 | } |
77 | 79 | ||
78 | this.videoService.getVideos(options) | 80 | this.videoService.getVideos(options) |
79 | .subscribe({ | 81 | .pipe(finalize(() => this.loaded.emit(true))) |
80 | next: ({ data }) => this.videos = data, | 82 | .subscribe( |
83 | ({ data }) => this.videos = data, | ||
81 | 84 | ||
82 | complete: () => this.loaded.emit(true) | 85 | err => this.notifier.error('Error in videos list component: ' + err.message) |
83 | }) | 86 | ) |
84 | } | 87 | } |
85 | } | 88 | } |