1
0
Fork 0

Filter videos by live in custom markup

This commit is contained in:
Chocobozzz 2021-08-02 16:50:56 +02:00
parent 3da38d6e9f
commit ff4de38385
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
8 changed files with 31 additions and 30 deletions

View File

@ -191,6 +191,8 @@ export class CustomMarkupService {
accountHandle: data.accountHandle || undefined,
channelHandle: data.channelHandle || undefined,
isLive: this.buildBoolean(data.isLive),
filter: this.buildBoolean(data.onlyLocal) ? 'local' as VideoFilter : undefined
}

View File

@ -50,7 +50,7 @@ export class ChannelMiniatureMarkupComponent implements CustomMarkupComponent, O
this.video = data[0]
},
err => this.notifier.error('Error in channel miniature component: ' + err.message)
err => this.notifier.error($localize`Error in channel miniature component: ${err.message}`)
)
}

View File

@ -44,7 +44,7 @@ export class PlaylistMiniatureMarkupComponent implements CustomMarkupComponent,
.subscribe(
playlist => this.playlist = playlist,
err => this.notifier.error('Error in playlist miniature component: ' + err.message)
err => this.notifier.error($localize`Error in playlist miniature component: ${err.message}`)
)
}
}

View File

@ -56,7 +56,7 @@ export class VideoMiniatureMarkupComponent implements CustomMarkupComponent, OnI
.subscribe(
video => this.video = video,
err => this.notifier.error('Error in video miniature component: ' + err.message)
err => this.notifier.error($localize`Error in video miniature component: ${err.message}`)
)
}
}

View File

@ -22,6 +22,7 @@ export class VideosListMarkupComponent implements CustomMarkupComponent, OnInit
@Input() count: number
@Input() onlyDisplayTitle: boolean
@Input() filter: VideoFilter
@Input() isLive: boolean
@Input() maxRows: number
@Input() channelHandle: string
@Input() accountHandle: string
@ -73,7 +74,7 @@ export class VideosListMarkupComponent implements CustomMarkupComponent, OnInit
.subscribe(
({ data }) => this.videos = data,
err => this.notifier.error('Error in videos list component: ' + err.message)
err => this.notifier.error($localize`Error in videos list component: ${err.message}`)
)
}
@ -86,6 +87,7 @@ export class VideosListMarkupComponent implements CustomMarkupComponent, OnInit
categoryOneOf: this.categoryOneOf,
languageOneOf: this.languageOneOf,
filter: this.filter,
isLive: this.isLive,
sort: this.sort as VideoSortField,
account: { nameWithHost: this.accountHandle },
videoChannel: { nameWithHost: this.channelHandle }

View File

@ -210,15 +210,16 @@ export class VideoService implements VideosProvider {
}
getVideos (parameters: {
videoPagination: ComponentPaginationLight,
sort: VideoSortField,
filter?: VideoFilter,
categoryOneOf?: number[],
languageOneOf?: string[],
skipCount?: boolean,
videoPagination: ComponentPaginationLight
sort: VideoSortField
filter?: VideoFilter
categoryOneOf?: number[]
languageOneOf?: string[]
isLive?: boolean
skipCount?: boolean
nsfwPolicy?: NSFWPolicyType
}): Observable<ResultList<Video>> {
const { videoPagination, sort, filter, categoryOneOf, languageOneOf, skipCount, nsfwPolicy } = parameters
const { videoPagination, sort, filter, categoryOneOf, languageOneOf, skipCount, nsfwPolicy, isLive } = parameters
const pagination = this.restService.componentPaginationToRestPagination(videoPagination)
@ -228,21 +229,10 @@ export class VideoService implements VideosProvider {
if (filter) params = params.set('filter', filter)
if (skipCount) params = params.set('skipCount', skipCount + '')
if (nsfwPolicy) {
params = params.set('nsfw', this.nsfwPolicyToParam(nsfwPolicy))
}
if (languageOneOf) {
for (const l of languageOneOf) {
params = params.append('languageOneOf[]', l)
}
}
if (categoryOneOf) {
for (const c of categoryOneOf) {
params = params.append('categoryOneOf[]', c + '')
}
}
if (isLive) params = params.set('isLive', isLive)
if (nsfwPolicy) params = params.set('nsfw', this.nsfwPolicyToParam(nsfwPolicy))
if (languageOneOf) this.restService.addArrayParams(params, 'languageOneOf', languageOneOf)
if (categoryOneOf) this.restService.addArrayParams(params, 'categoryOneOf', categoryOneOf)
return this.authHttp
.get<ResultList<Video>>(VideoService.BASE_VIDEO_URL, { params })

View File

@ -1,6 +1,6 @@
import * as debug from 'debug'
import { Observable, Subject } from 'rxjs'
import { map } from 'rxjs/operators'
import { Observable, Subject, throwError } from 'rxjs'
import { first, map } from 'rxjs/operators'
import { Injectable, NgZone } from '@angular/core'
import { buildBulkObservable } from '@app/helpers'
import { ResultList } from '@shared/models/common'
@ -71,12 +71,17 @@ export class FindInBulkService {
return new Observable<R>(obs => {
observableObject.result
.pipe(
first(),
map(({ data }) => data),
map(data => data.find(finder))
)
.subscribe(result => {
obs.next(result)
obs.complete()
if (!result) {
obs.error(new Error($localize`Element ${param} not found`))
} else {
obs.next(result)
obs.complete()
}
})
observableObject.notifier.next(param)

View File

@ -36,6 +36,8 @@ export type VideosListMarkupData = {
channelHandle?: string
accountHandle?: string
isLive?: string // number
onlyLocal?: string // boolean
}