} from '@angular/core'
import { AuthService, ScreenService, ServerService, User } from '@app/core'
import { I18n } from '@ngx-translate/i18n-polyfill'
-import { ServerConfig, VideoPlaylistType, VideoPrivacy, VideoState } from '../../../../../shared'
+import { ServerConfig, VideoPlaylistType, VideoPrivacy, VideoState } from '@shared/models'
import { Video } from '../shared-main'
import { VideoPlaylistService } from '../shared-video-playlist'
import { VideoActionsDisplayType } from './video-actions-dropdown.component'
blacklistInfo?: boolean
nsfw?: boolean
}
+export type VideoLinkType = 'internal' | 'lazy-load' | 'external'
@Component({
selector: 'my-video-miniature',
@Input() displayVideoActions = true
@Input() fitWidth = false
- @Input() useLazyLoadUrl = false
+ @Input() videoLinkType: VideoLinkType = 'internal'
@Output() videoBlocked = new EventEmitter()
@Output() videoUnblocked = new EventEmitter()
playlistElementId?: number
}
- videoLink: any[] = []
+ videoRouterLink: any[] = []
+ videoHref: string
+ videoTarget: string
private ownerDisplayTypeChosen: 'account' | 'videoChannel'
}
buildVideoLink () {
- if (this.useLazyLoadUrl && this.video.url) {
- const remoteUriConfig = this.serverConfig.search.remoteUri
-
- // Redirect on the external instance if not allowed to fetch remote data
- const externalRedirect = (!this.authService.isLoggedIn() && !remoteUriConfig.anonymous) || !remoteUriConfig.users
- const fromPath = window.location.pathname + window.location.search
+ if (this.videoLinkType === 'internal' || !this.video.url) {
+ this.videoRouterLink = [ '/videos/watch', this.video.uuid ]
+ return
+ }
- this.videoLink = [ '/search/lazy-load-video', { url: this.video.url, externalRedirect, fromPath } ]
+ if (this.videoLinkType === 'external') {
+ this.videoRouterLink = null
+ this.videoHref = this.video.url
+ this.videoTarget = '_blank'
return
}
- this.videoLink = [ '/videos/watch', this.video.uuid ]
+ // Lazy load
+ this.videoRouterLink = [ '/search/lazy-load-video', { url: this.video.url } ]
}
displayOwnerAccount () {