X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fshared%2Fshared-main%2Fusers%2Fuser-notification.model.ts;h=96e7b4dd04430a5dbac9ab4d505c9185dbb5b24e;hb=dec437aa46a644fb1b3cedc9afe4503c44e15308;hp=b1df4a584c31f06d2d34acea4cbdd1ab7faa3802;hpb=c418d483004dfbae9ea38d54aa1577db46d34a8a;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 b1df4a584..96e7b4dd0 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,19 @@ +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 { logger } from '@root-helpers/logger' import { AbuseState, ActorInfo, FollowState, + PluginType, UserNotification as UserNotificationServer, UserNotificationType, - VideoInfo, - UserRight + UserRight, + VideoInfo } from '@shared/models' -import { Account, Actor, VideoChannel } from '@app/shared/shared-main' -import { AuthUser } from '@app/core' +import { Video } from '../video' export class UserNotification implements UserNotificationServer { id: number @@ -43,11 +48,7 @@ export class UserNotification implements UserNotificationServer { comment?: { threadId: number - video: { - id: number - uuid: string - name: string - } + video: VideoInfo } account?: ActorInfo @@ -72,20 +73,47 @@ export class UserNotification implements UserNotificationServer { } } + plugin?: { + name: string + type: PluginType + latestVersion: string + } + + peertube?: { + latestVersion: string + } + + registration?: { + id: number + username: string + } + createdAt: string updatedAt: string // Additional fields videoUrl?: string commentUrl?: any[] + abuseUrl?: string abuseQueryParams?: { [id: string]: string } = {} + videoAutoBlacklistUrl?: string + accountUrl?: string + + registrationsUrl?: 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 @@ -112,6 +140,10 @@ export class UserNotification implements UserNotificationServer { this.actorFollow = hash.actorFollow if (this.actorFollow) this.setAccountAvatarUrl(this.actorFollow.follower) + this.plugin = hash.plugin + this.peertube = hash.peertube + this.registration = hash.registration + this.createdAt = hash.createdAt this.updatedAt = hash.updatedAt @@ -184,6 +216,10 @@ export class UserNotification implements UserNotificationServer { this.accountUrl = this.buildAccountUrl(this.account) break + case UserNotificationType.NEW_USER_REGISTRATION_REQUEST: + this.registrationsUrl = '/admin/moderation/registrations/list' + break + case UserNotificationType.NEW_FOLLOW: this.accountUrl = this.buildAccountUrl(this.actorFollow.follower) break @@ -195,19 +231,32 @@ 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 - console.error(err) + logger.error(err) } } 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,11 +271,11 @@ export class UserNotification implements UserNotificationServer { return [ this.buildVideoUrl(comment.video), { threadId: comment.threadId } ] } - private setAccountAvatarUrl (actor: { avatarUrl?: string, avatar?: { url?: string, path: string } }) { - actor.avatarUrl = Account.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, avatar?: { url?: string, path: string } }) { - actor.avatarUrl = VideoChannel.GET_ACTOR_AVATAR_URL(actor) + 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) } }