diff options
author | Chocobozzz <me@florianbigard.com> | 2021-07-26 14:12:39 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2021-07-26 14:12:50 +0200 |
commit | 9162fdd36300d2478f13d6ad346ec2c323f40faa (patch) | |
tree | dea0ca43f3ea2fb72a73ca77338f5b7c990acdd7 /client/src/app/shared | |
parent | 764b1a14fc494f2cfd7ea590d2f07b01df65c7ad (diff) | |
download | PeerTube-9162fdd36300d2478f13d6ad346ec2c323f40faa.tar.gz PeerTube-9162fdd36300d2478f13d6ad346ec2c323f40faa.tar.zst PeerTube-9162fdd36300d2478f13d6ad346ec2c323f40faa.zip |
Refactor video links building
Diffstat (limited to 'client/src/app/shared')
5 files changed, 34 insertions, 28 deletions
diff --git a/client/src/app/shared/shared-abuse-list/abuse-list-table.component.ts b/client/src/app/shared/shared-abuse-list/abuse-list-table.component.ts index 67aa0e399..393108ac9 100644 --- a/client/src/app/shared/shared-abuse-list/abuse-list-table.component.ts +++ b/client/src/app/shared/shared-abuse-list/abuse-list-table.component.ts | |||
@@ -1,7 +1,7 @@ | |||
1 | import * as debug from 'debug' | 1 | import * as debug from 'debug' |
2 | import truncate from 'lodash-es/truncate' | 2 | import truncate from 'lodash-es/truncate' |
3 | import { SortMeta } from 'primeng/api' | 3 | import { SortMeta } from 'primeng/api' |
4 | import { buildVideoLink, buildVideoOrPlaylistEmbed } from 'src/assets/player/utils' | 4 | import { buildVideoEmbedLink, buildVideoOrPlaylistEmbed, decorateVideoLink } from 'src/assets/player/utils' |
5 | import { environment } from 'src/environments/environment' | 5 | import { environment } from 'src/environments/environment' |
6 | import { Component, Input, OnInit, ViewChild } from '@angular/core' | 6 | import { Component, Input, OnInit, ViewChild } from '@angular/core' |
7 | import { DomSanitizer } from '@angular/platform-browser' | 7 | import { DomSanitizer } from '@angular/platform-browser' |
@@ -129,8 +129,8 @@ export class AbuseListTableComponent extends RestTable implements OnInit { | |||
129 | 129 | ||
130 | getVideoEmbed (abuse: AdminAbuse) { | 130 | getVideoEmbed (abuse: AdminAbuse) { |
131 | return buildVideoOrPlaylistEmbed( | 131 | return buildVideoOrPlaylistEmbed( |
132 | buildVideoLink({ | 132 | decorateVideoLink({ |
133 | baseUrl: `${environment.originServerUrl}/videos/embed/${abuse.video.uuid}`, | 133 | url: buildVideoEmbedLink(abuse.video, environment.originServerUrl), |
134 | title: false, | 134 | title: false, |
135 | warningTitle: false, | 135 | warningTitle: false, |
136 | startTime: abuse.video.startAt, | 136 | startTime: abuse.video.startAt, |
diff --git a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/embed-markup.component.ts b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/embed-markup.component.ts index 4462903db..ba8969d5b 100644 --- a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/embed-markup.component.ts +++ b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/embed-markup.component.ts | |||
@@ -1,4 +1,4 @@ | |||
1 | import { buildPlaylistLink, buildVideoLink, buildVideoOrPlaylistEmbed } from 'src/assets/player/utils' | 1 | import { buildPlaylistEmbedLink, buildVideoEmbedLink, buildVideoOrPlaylistEmbed } from 'src/assets/player/utils' |
2 | import { environment } from 'src/environments/environment' | 2 | import { environment } from 'src/environments/environment' |
3 | import { Component, ElementRef, Input, OnInit } from '@angular/core' | 3 | import { Component, ElementRef, Input, OnInit } from '@angular/core' |
4 | import { CustomMarkupComponent } from './shared' | 4 | import { CustomMarkupComponent } from './shared' |
@@ -17,8 +17,8 @@ export class EmbedMarkupComponent implements CustomMarkupComponent, OnInit { | |||
17 | 17 | ||
18 | ngOnInit () { | 18 | ngOnInit () { |
19 | const link = this.type === 'video' | 19 | const link = this.type === 'video' |
20 | ? buildVideoLink({ baseUrl: `${environment.originServerUrl}/videos/embed/${this.uuid}` }) | 20 | ? buildVideoEmbedLink({ uuid: this.uuid }, environment.originServerUrl) |
21 | : buildPlaylistLink({ baseUrl: `${environment.originServerUrl}/video-playlists/embed/${this.uuid}` }) | 21 | : buildPlaylistEmbedLink({ uuid: this.uuid }, environment.originServerUrl) |
22 | 22 | ||
23 | this.el.nativeElement.innerHTML = buildVideoOrPlaylistEmbed(link, this.uuid) | 23 | this.el.nativeElement.innerHTML = buildVideoOrPlaylistEmbed(link, this.uuid) |
24 | } | 24 | } |
diff --git a/client/src/app/shared/shared-forms/markdown-textarea.component.ts b/client/src/app/shared/shared-forms/markdown-textarea.component.ts index a233a4205..8f51d47df 100644 --- a/client/src/app/shared/shared-forms/markdown-textarea.component.ts +++ b/client/src/app/shared/shared-forms/markdown-textarea.component.ts | |||
@@ -6,6 +6,7 @@ import { Component, ElementRef, forwardRef, Input, OnInit, ViewChild } from '@an | |||
6 | import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms' | 6 | import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms' |
7 | import { SafeHtml } from '@angular/platform-browser' | 7 | import { SafeHtml } from '@angular/platform-browser' |
8 | import { MarkdownService, ScreenService } from '@app/core' | 8 | import { MarkdownService, ScreenService } from '@app/core' |
9 | import { Video } from '@shared/models' | ||
9 | 10 | ||
10 | @Component({ | 11 | @Component({ |
11 | selector: 'my-markdown-textarea', | 12 | selector: 'my-markdown-textarea', |
@@ -33,7 +34,7 @@ export class MarkdownTextareaComponent implements ControlValueAccessor, OnInit { | |||
33 | @Input() markdownType: 'text' | 'enhanced' = 'text' | 34 | @Input() markdownType: 'text' | 'enhanced' = 'text' |
34 | @Input() customMarkdownRenderer?: (text: string) => Promise<string | HTMLElement> | 35 | @Input() customMarkdownRenderer?: (text: string) => Promise<string | HTMLElement> |
35 | 36 | ||
36 | @Input() markdownVideo = false | 37 | @Input() markdownVideo: Video |
37 | 38 | ||
38 | @Input() name = 'description' | 39 | @Input() name = 'description' |
39 | 40 | ||
@@ -147,7 +148,7 @@ export class MarkdownTextareaComponent implements ControlValueAccessor, OnInit { | |||
147 | } | 148 | } |
148 | 149 | ||
149 | if (this.markdownVideo) { | 150 | if (this.markdownVideo) { |
150 | html = this.markdownService.processVideoTimestamps(html) | 151 | html = this.markdownService.processVideoTimestamps(this.markdownVideo.shortUUID, html) |
151 | } | 152 | } |
152 | 153 | ||
153 | return html | 154 | return html |
diff --git a/client/src/app/shared/shared-moderation/report-modals/video-report.component.ts b/client/src/app/shared/shared-moderation/report-modals/video-report.component.ts index 4ca6f52ad..41f4fa30d 100644 --- a/client/src/app/shared/shared-moderation/report-modals/video-report.component.ts +++ b/client/src/app/shared/shared-moderation/report-modals/video-report.component.ts | |||
@@ -1,5 +1,5 @@ | |||
1 | import { mapValues, pickBy } from 'lodash-es' | 1 | import { mapValues, pickBy } from 'lodash-es' |
2 | import { buildVideoLink, buildVideoOrPlaylistEmbed } from 'src/assets/player/utils' | 2 | import { buildVideoOrPlaylistEmbed, decorateVideoLink } from 'src/assets/player/utils' |
3 | import { Component, Input, OnInit, ViewChild } from '@angular/core' | 3 | import { Component, Input, OnInit, ViewChild } from '@angular/core' |
4 | import { DomSanitizer, SafeHtml } from '@angular/platform-browser' | 4 | import { DomSanitizer, SafeHtml } from '@angular/platform-browser' |
5 | import { Notifier } from '@app/core' | 5 | import { Notifier } from '@app/core' |
@@ -57,11 +57,12 @@ export class VideoReportComponent extends FormReactive implements OnInit { | |||
57 | getVideoEmbed () { | 57 | getVideoEmbed () { |
58 | return this.sanitizer.bypassSecurityTrustHtml( | 58 | return this.sanitizer.bypassSecurityTrustHtml( |
59 | buildVideoOrPlaylistEmbed( | 59 | buildVideoOrPlaylistEmbed( |
60 | buildVideoLink({ | 60 | decorateVideoLink({ |
61 | baseUrl: this.video.embedUrl, | 61 | url: this.video.embedUrl, |
62 | title: false, | 62 | title: false, |
63 | warningTitle: false | 63 | warningTitle: false |
64 | }), | 64 | }), |
65 | |||
65 | this.video.name | 66 | this.video.name |
66 | ) | 67 | ) |
67 | ) | 68 | ) |
diff --git a/client/src/app/shared/shared-share-modal/video-share.component.ts b/client/src/app/shared/shared-share-modal/video-share.component.ts index a41ff248b..cdfe50836 100644 --- a/client/src/app/shared/shared-share-modal/video-share.component.ts +++ b/client/src/app/shared/shared-share-modal/video-share.component.ts | |||
@@ -1,9 +1,15 @@ | |||
1 | import { Component, ElementRef, Input, ViewChild } from '@angular/core' | 1 | import { Component, ElementRef, Input, ViewChild } from '@angular/core' |
2 | import { Video, VideoDetails } from '@app/shared/shared-main' | 2 | import { VideoDetails } from '@app/shared/shared-main' |
3 | import { VideoPlaylist } from '@app/shared/shared-video-playlist' | 3 | import { VideoPlaylist } from '@app/shared/shared-video-playlist' |
4 | import { NgbModal } from '@ng-bootstrap/ng-bootstrap' | 4 | import { NgbModal } from '@ng-bootstrap/ng-bootstrap' |
5 | import { VideoCaption } from '@shared/models' | 5 | import { VideoCaption } from '@shared/models' |
6 | import { buildPlaylistLink, buildVideoLink, buildVideoOrPlaylistEmbed } from '../../../assets/player/utils' | 6 | import { |
7 | buildPlaylistLink, | ||
8 | buildVideoLink, | ||
9 | buildVideoOrPlaylistEmbed, | ||
10 | decoratePlaylistLink, | ||
11 | decorateVideoLink | ||
12 | } from '../../../assets/player/utils' | ||
7 | 13 | ||
8 | type Customizations = { | 14 | type Customizations = { |
9 | startAtCheckbox: boolean | 15 | startAtCheckbox: boolean |
@@ -83,34 +89,34 @@ export class VideoShareComponent { | |||
83 | } | 89 | } |
84 | 90 | ||
85 | getVideoIframeCode () { | 91 | getVideoIframeCode () { |
86 | const options = this.getVideoOptions(this.video.embedUrl) | 92 | const embedUrl = decorateVideoLink({ url: this.video.embedUrl, ...this.getVideoOptions() }) |
87 | 93 | ||
88 | const embedUrl = buildVideoLink(options) | ||
89 | return buildVideoOrPlaylistEmbed(embedUrl, this.video.name) | 94 | return buildVideoOrPlaylistEmbed(embedUrl, this.video.name) |
90 | } | 95 | } |
91 | 96 | ||
92 | getPlaylistIframeCode () { | 97 | getPlaylistIframeCode () { |
93 | const options = this.getPlaylistOptions(this.playlist.embedUrl) | 98 | const embedUrl = decoratePlaylistLink({ url: this.playlist.embedUrl, ...this.getPlaylistOptions() }) |
94 | 99 | ||
95 | const embedUrl = buildPlaylistLink(options) | ||
96 | return buildVideoOrPlaylistEmbed(embedUrl, this.playlist.displayName) | 100 | return buildVideoOrPlaylistEmbed(embedUrl, this.playlist.displayName) |
97 | } | 101 | } |
98 | 102 | ||
99 | getVideoUrl () { | 103 | getVideoUrl () { |
100 | let baseUrl = this.customizations.originUrl ? this.video.originInstanceUrl : window.location.origin | 104 | const baseUrl = this.customizations.originUrl |
101 | baseUrl += Video.buildWatchUrl(this.video) | 105 | ? this.video.originInstanceUrl |
106 | : window.location.origin | ||
102 | 107 | ||
103 | const options = this.getVideoOptions(baseUrl) | 108 | return decorateVideoLink({ |
109 | url: buildVideoLink(this.video, baseUrl), | ||
104 | 110 | ||
105 | return buildVideoLink(options) | 111 | ...this.getVideoOptions() |
112 | }) | ||
106 | } | 113 | } |
107 | 114 | ||
108 | getPlaylistUrl () { | 115 | getPlaylistUrl () { |
109 | const base = window.location.origin + VideoPlaylist.buildWatchUrl(this.playlist) | 116 | const url = buildPlaylistLink(this.playlist) |
117 | if (!this.includeVideoInPlaylist) return url | ||
110 | 118 | ||
111 | if (!this.includeVideoInPlaylist) return base | 119 | return decoratePlaylistLink({ url, playlistPosition: this.playlistPosition }) |
112 | |||
113 | return base + '?playlistPosition=' + this.playlistPosition | ||
114 | } | 120 | } |
115 | 121 | ||
116 | notSecure () { | 122 | notSecure () { |
@@ -133,10 +139,8 @@ export class VideoShareComponent { | |||
133 | } | 139 | } |
134 | } | 140 | } |
135 | 141 | ||
136 | private getVideoOptions (baseUrl?: string) { | 142 | private getVideoOptions () { |
137 | return { | 143 | return { |
138 | baseUrl, | ||
139 | |||
140 | startTime: this.customizations.startAtCheckbox ? this.customizations.startAt : undefined, | 144 | startTime: this.customizations.startAtCheckbox ? this.customizations.startAt : undefined, |
141 | stopTime: this.customizations.stopAtCheckbox ? this.customizations.stopAt : undefined, | 145 | stopTime: this.customizations.stopAtCheckbox ? this.customizations.stopAt : undefined, |
142 | 146 | ||