X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fshared%2Fshared-main%2Fusers%2Fuser-notification.model.ts;h=a2367166eb3b1be43d0f0cdfab87fbf5a4714f66;hb=21393652621efba8a95715c6f340515d58599ec6;hp=648bb7fe02af82b620ea9b20843f454dc106987f;hpb=17119e4a546522468878cf115558b17949ab50d0;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/shared/shared-main/users/user-notification.model.ts b/client/src/app/shared/shared-main/users/user-notification.model.ts index 648bb7fe0..a2367166e 100644 --- a/client/src/app/shared/shared-main/users/user-notification.model.ts +++ b/client/src/app/shared/shared-main/users/user-notification.model.ts @@ -1,14 +1,18 @@ +import { AuthUser } from '@app/core' +import { Account } from '@app/shared/shared-main/account/account.model' +import { Actor } from '@app/shared/shared-main/account/actor.model' +import { VideoChannel } from '@app/shared/shared-main/video-channel/video-channel.model' import { AbuseState, ActorInfo, FollowState, + PluginType, UserNotification as UserNotificationServer, UserNotificationType, - VideoInfo, - UserRight + UserRight, + VideoInfo } from '@shared/models' -import { Actor } from '../account/actor.model' -import { AuthUser } from '@app/core' +import { Video } from '../video' export class UserNotification implements UserNotificationServer { id: number @@ -43,11 +47,7 @@ export class UserNotification implements UserNotificationServer { comment?: { threadId: number - video: { - id: number - uuid: string - name: string - } + video: VideoInfo } account?: ActorInfo @@ -72,20 +72,40 @@ export class UserNotification implements UserNotificationServer { } } + plugin?: { + name: string + type: PluginType + latestVersion: string + } + + peertube?: { + latestVersion: string + } + createdAt: string updatedAt: string // Additional fields videoUrl?: string commentUrl?: any[] + abuseUrl?: string abuseQueryParams?: { [id: string]: string } = {} + videoAutoBlacklistUrl?: string + accountUrl?: string + videoImportIdentifier?: string videoImportUrl?: string + instanceFollowUrl?: string + peertubeVersionLink?: string + + pluginUrl?: string + pluginQueryParams?: { [id: string]: string } = {} + constructor (hash: UserNotificationServer, user: AuthUser) { this.id = hash.id this.type = hash.type @@ -95,22 +115,25 @@ export class UserNotification implements UserNotificationServer { // To prevent a notification popup crash in case of bug, wrap it inside a try/catch try { this.video = hash.video - if (this.video) this.setAvatarUrl(this.video.channel) + if (this.video) this.setVideoChannelAvatarUrl(this.video.channel) this.videoImport = hash.videoImport this.comment = hash.comment - if (this.comment) this.setAvatarUrl(this.comment.account) + if (this.comment) this.setAccountAvatarUrl(this.comment.account) this.abuse = hash.abuse this.videoBlacklist = hash.videoBlacklist this.account = hash.account - if (this.account) this.setAvatarUrl(this.account) + if (this.account) this.setAccountAvatarUrl(this.account) this.actorFollow = hash.actorFollow - if (this.actorFollow) this.setAvatarUrl(this.actorFollow.follower) + if (this.actorFollow) this.setAccountAvatarUrl(this.actorFollow.follower) + + this.plugin = hash.plugin + this.peertube = hash.peertube this.createdAt = hash.createdAt this.updatedAt = hash.updatedAt @@ -195,6 +218,19 @@ export class UserNotification implements UserNotificationServer { case UserNotificationType.AUTO_INSTANCE_FOLLOWING: this.instanceFollowUrl = '/admin/follows/following-list' break + + case UserNotificationType.NEW_PEERTUBE_VERSION: + this.peertubeVersionLink = 'https://joinpeertube.org/news' + break + + case UserNotificationType.NEW_PLUGIN_VERSION: + this.pluginUrl = `/admin/plugins/list-installed` + this.pluginQueryParams.pluginType = this.plugin.type + '' + break + + case UserNotificationType.MY_VIDEO_STUDIO_EDITION_FINISHED: + this.videoUrl = this.buildVideoUrl(this.video) + break } } catch (err) { this.type = null @@ -203,11 +239,11 @@ export class UserNotification implements UserNotificationServer { } private buildVideoUrl (video: { uuid: string }) { - return '/videos/watch/' + video.uuid + return Video.buildWatchUrl(video) } private buildAccountUrl (account: { name: string, host: string }) { - return '/accounts/' + Actor.CREATE_BY_STRING(account.name, account.host) + return '/a/' + Actor.CREATE_BY_STRING(account.name, account.host) } private buildVideoImportUrl () { @@ -222,7 +258,11 @@ export class UserNotification implements UserNotificationServer { return [ this.buildVideoUrl(comment.video), { threadId: comment.threadId } ] } - private setAvatarUrl (actor: { avatarUrl?: string, avatar?: { url?: string, path: string } }) { - actor.avatarUrl = Actor.GET_ACTOR_AVATAR_URL(actor) + private setAccountAvatarUrl (actor: { avatarUrl?: string, avatars: { width: number, url?: string, path: string }[] }) { + actor.avatarUrl = VideoChannel.GET_ACTOR_AVATAR_URL(actor, 48) || Account.GET_DEFAULT_AVATAR_URL(48) + } + + private setVideoChannelAvatarUrl (actor: { avatarUrl?: string, avatars: { width: number, url?: string, path: string }[] }) { + actor.avatarUrl = VideoChannel.GET_ACTOR_AVATAR_URL(actor, 48) || VideoChannel.GET_DEFAULT_AVATAR_URL(48) } }