import { Account, AccountService, VideoChannel, VideoChannelService } from '@app/shared/shared-main'
import { NGX_LOADING_BAR_IGNORED } from '@ngx-loading-bar/http-client'
import {
+ CachedVideoExistInPlaylist,
+ CachedVideosExistInPlaylists,
ResultList,
VideoExistInPlaylist,
VideoPlaylist as VideoPlaylistServerModel,
// Use a replay subject because we "next" a value before subscribing
private videoExistsInPlaylistNotifier = new ReplaySubject<number>(1)
- private videoExistsInPlaylistCacheSubject = new Subject<VideosExistInPlaylists>()
- private readonly videoExistsInPlaylistObservable: Observable<VideosExistInPlaylists>
+ private videoExistsInPlaylistCacheSubject = new Subject<CachedVideosExistInPlaylists>()
+ private readonly videoExistsInPlaylistObservable: Observable<CachedVideosExistInPlaylists>
- private videoExistsObservableCache: { [ id: number ]: Observable<VideoExistInPlaylist[]> } = {}
- private videoExistsCache: { [ id: number ]: VideoExistInPlaylist[] } = {}
+ private videoExistsObservableCache: { [ id: number ]: Observable<CachedVideoExistInPlaylist[]> } = {}
+ private videoExistsCache: { [ id: number ]: CachedVideoExistInPlaylist[] } = {}
private myAccountPlaylistCache: ResultList<CachedPlaylist> = undefined
private myAccountPlaylistCacheRunning: Observable<ResultList<CachedPlaylist>>
stopTimestamp: body.stopTimestamp
})
- this.runPlaylistCheck(body.videoId)
+ this.runVideoExistsInPlaylistCheck(body.videoId)
+
+ if (this.myAccountPlaylistCache) {
+ const playlist = this.myAccountPlaylistCache.data.find(p => p.id === playlistId)
+ if (!playlist) return
+
+ const otherPlaylists = this.myAccountPlaylistCache.data.filter(p => p !== playlist)
+ this.myAccountPlaylistCache.data = [ playlist, ...otherPlaylists ]
+ }
}),
catchError(err => this.restExtractor.handleError(err))
)
elem.stopTimestamp = body.stopTimestamp
}
- this.runPlaylistCheck(videoId)
+ this.runVideoExistsInPlaylistCheck(videoId)
}),
catchError(err => this.restExtractor.handleError(err))
)
.filter(e => e.playlistElementId !== playlistElementId)
}
- this.runPlaylistCheck(videoId)
+ this.runVideoExistsInPlaylistCheck(videoId)
}),
catchError(err => this.restExtractor.handleError(err))
)
return obs
}
- runPlaylistCheck (videoId: number) {
+ runVideoExistsInPlaylistCheck (videoId: number) {
debugLogger('Running playlist check.')
if (this.videoExistsCache[videoId]) {
)
}
- private doVideosExistInPlaylist (videoIds: number[]): Observable<VideosExistInPlaylists> {
+ doVideosExistInPlaylist (videoIds: number[]): Observable<VideosExistInPlaylists> {
const url = VideoPlaylistService.MY_VIDEO_PLAYLIST_URL + 'videos-exist'
let params = new HttpParams()