feat(preferences): section langues a telecharger (defaut fr+en), transcripts filtres cote serveur et watch
CI / build-and-test (push) Successful in 13m50s
CI / build-and-test (push) Successful in 13m50s
This commit is contained in:
@@ -21,10 +21,40 @@ export class VideoCardComponent {
|
||||
buildQueryParams(v: VideoItem): Record<string, any> {
|
||||
const qp: any = { p: v.provider };
|
||||
if (v.provider === 'odysee' && v.slug) qp.slug = v.slug;
|
||||
if (v.provider === 'twitch' && v.channel) qp.channel = v.channel;
|
||||
// Twitch : chaînes/lives via ?channel=<login>, clips via ?clip=<slug>.
|
||||
if (v.provider === 'twitch') {
|
||||
const kind = String((v as any)?.type || '').toLowerCase();
|
||||
const clipKind = String((v as any)?.kind || '').toLowerCase();
|
||||
if (clipKind === 'clip') qp.clip = v.id;
|
||||
else if ((kind === 'live' || kind === 'channel') && v.channel) qp.channel = v.channel;
|
||||
}
|
||||
return qp;
|
||||
}
|
||||
|
||||
get isTwitchLive(): boolean {
|
||||
const v: any = this.video;
|
||||
return v?.provider === 'twitch' && (v?.isLive === true || String(v?.type || '').toLowerCase() === 'live');
|
||||
}
|
||||
|
||||
get isTwitchChannel(): boolean {
|
||||
const v: any = this.video;
|
||||
return v?.provider === 'twitch' && String(v?.type || '').toLowerCase() === 'channel' && v?.isLive !== true;
|
||||
}
|
||||
|
||||
get isTwitchClip(): boolean {
|
||||
const v: any = this.video;
|
||||
return v?.provider === 'twitch' && String(v?.kind || '').toLowerCase() === 'clip';
|
||||
}
|
||||
|
||||
get showDuration(): boolean {
|
||||
const d = Number((this.video as any)?.durationSec ?? NaN);
|
||||
return Number.isFinite(d) && d > 0;
|
||||
}
|
||||
|
||||
get providerId(): string {
|
||||
return String((this.video as any)?.provider || '');
|
||||
}
|
||||
|
||||
get channelProviderId(): ProviderId | null {
|
||||
const map: Record<VideoItem['provider'], ProviderId> = {
|
||||
youtube: 'yt',
|
||||
|
||||
Reference in New Issue
Block a user