-import { peertubeLocalStorage } from '@app/shared/misc/peertube-web-storage'
-import { UserRight } from '../../../../../shared/models/users/user-right.enum'
-import { MyUser as ServerMyUserModel, User as ServerUserModel, MyUserSpecialPlaylist } from '../../../../../shared/models/users/user.model'
-// Do not use the barrel (dependency loop)
-import { hasUserRight, UserRole } from '../../../../../shared/models/users/user-role'
-import { User } from '../../shared/users/user.model'
-import { NSFWPolicyType } from '../../../../../shared/models/videos/nsfw-policy.type'
+import { Observable, of } from 'rxjs'
+import { map } from 'rxjs/operators'
+import { User } from '@app/core/users/user.model'
+import { peertubeLocalStorage } from '@app/helpers/peertube-web-storage'
+import {
+ hasUserRight,
+ MyUser as ServerMyUserModel,
+ MyUserSpecialPlaylist,
+ NSFWPolicyType,
+ User as ServerUserModel,
+ UserRight,
+ UserRole,
+ UserVideoQuota
+} from '@shared/models'
export type TokenOptions = {
accessToken: string
tokens: Tokens
specialPlaylists: MyUserSpecialPlaylist[]
+ canSeeVideosLink = true
+
static load () {
const usernameLocalStorage = peertubeLocalStorage.getItem(this.KEYS.USERNAME)
if (usernameLocalStorage) {
peertubeLocalStorage.setItem(AuthUser.KEYS.AUTO_PLAY_VIDEO, JSON.stringify(this.autoPlayVideo))
this.tokens.save()
}
+
+ computeCanSeeVideosLink (quotaObservable: Observable<UserVideoQuota>): Observable<boolean> {
+ if (!this.isUploadDisabled()) {
+ this.canSeeVideosLink = true
+ return of(this.canSeeVideosLink)
+ }
+
+ // Check if the user has videos
+ return quotaObservable.pipe(
+ map(({ videoQuotaUsed }) => {
+ if (videoQuotaUsed !== 0) {
+ // User already uploaded videos, so it can see the link
+ this.canSeeVideosLink = true
+ } else {
+ // No videos, no upload so the user don't need to see the videos link
+ this.canSeeVideosLink = false
+ }
+
+ return this.canSeeVideosLink
+ })
+ )
+ }
}