diff options
author | Chocobozzz <me@florianbigard.com> | 2021-04-07 17:01:29 +0200 |
---|---|---|
committer | Chocobozzz <chocobozzz@cpy.re> | 2021-04-08 10:07:53 +0200 |
commit | cdeddff142fd20f8cb8bb346625909d61c596603 (patch) | |
tree | e7b0ae302a002fb2eadc605300294a1f135c3744 /client/src/app/+my-library | |
parent | 282695e699a35b65441b548061ef0db5de9b3971 (diff) | |
download | PeerTube-cdeddff142fd20f8cb8bb346625909d61c596603.tar.gz PeerTube-cdeddff142fd20f8cb8bb346625909d61c596603.tar.zst PeerTube-cdeddff142fd20f8cb8bb346625909d61c596603.zip |
Add ability to update the banner
Diffstat (limited to 'client/src/app/+my-library')
5 files changed, 54 insertions, 8 deletions
diff --git a/client/src/app/+my-library/+my-video-channels/my-video-channel-edit.component.html b/client/src/app/+my-library/+my-video-channels/my-video-channel-edit.component.html index 735f9e3ba..7b8928907 100644 --- a/client/src/app/+my-library/+my-video-channels/my-video-channel-edit.component.html +++ b/client/src/app/+my-library/+my-video-channels/my-video-channel-edit.component.html | |||
@@ -44,10 +44,17 @@ | |||
44 | </div> | 44 | </div> |
45 | </div> | 45 | </div> |
46 | 46 | ||
47 | <my-actor-avatar-info | 47 | <h6 i18n>Banner image of your channel</h6> |
48 | |||
49 | <my-actor-banner-edit | ||
50 | *ngIf="!isCreation() && videoChannelToUpdate" | ||
51 | [actor]="videoChannelToUpdate" (bannerChange)="onBannerChange($event)" (bannerDelete)="onBannerDelete()" | ||
52 | ></my-actor-banner-edit> | ||
53 | |||
54 | <my-actor-avatar-edit | ||
48 | *ngIf="!isCreation() && videoChannelToUpdate" | 55 | *ngIf="!isCreation() && videoChannelToUpdate" |
49 | [actor]="videoChannelToUpdate" (avatarChange)="onAvatarChange($event)" (avatarDelete)="onAvatarDelete()" | 56 | [actor]="videoChannelToUpdate" (avatarChange)="onAvatarChange($event)" (avatarDelete)="onAvatarDelete()" |
50 | ></my-actor-avatar-info> | 57 | ></my-actor-avatar-edit> |
51 | 58 | ||
52 | <div class="form-group"> | 59 | <div class="form-group"> |
53 | <label i18n for="display-name">Display name</label> | 60 | <label i18n for="display-name">Display name</label> |
diff --git a/client/src/app/+my-library/+my-video-channels/my-video-channel-edit.component.scss b/client/src/app/+my-library/+my-video-channels/my-video-channel-edit.component.scss index 8f8af655c..22de103d1 100644 --- a/client/src/app/+my-library/+my-video-channels/my-video-channel-edit.component.scss +++ b/client/src/app/+my-library/+my-video-channels/my-video-channel-edit.component.scss | |||
@@ -10,11 +10,16 @@ label { | |||
10 | @include settings-big-title; | 10 | @include settings-big-title; |
11 | } | 11 | } |
12 | 12 | ||
13 | my-actor-avatar-info { | 13 | my-actor-avatar-edit, |
14 | my-actor-banner-edit { | ||
14 | display: block; | 15 | display: block; |
15 | margin-bottom: 20px; | 16 | margin-bottom: 20px; |
16 | } | 17 | } |
17 | 18 | ||
19 | my-actor-banner-edit { | ||
20 | max-width: 500px; | ||
21 | } | ||
22 | |||
18 | .input-group { | 23 | .input-group { |
19 | @include peertube-input-group(fit-content); | 24 | @include peertube-input-group(fit-content); |
20 | } | 25 | } |
diff --git a/client/src/app/+my-library/+my-video-channels/my-video-channel-edit.ts b/client/src/app/+my-library/+my-video-channels/my-video-channel-edit.ts index 3e20a27ee..0cdf2fe34 100644 --- a/client/src/app/+my-library/+my-video-channels/my-video-channel-edit.ts +++ b/client/src/app/+my-library/+my-video-channels/my-video-channel-edit.ts | |||
@@ -15,6 +15,8 @@ export abstract class MyVideoChannelEdit extends FormReactive { | |||
15 | // We need this method so angular does not complain in child template that doesn't need this | 15 | // We need this method so angular does not complain in child template that doesn't need this |
16 | onAvatarChange (formData: FormData) { /* empty */ } | 16 | onAvatarChange (formData: FormData) { /* empty */ } |
17 | onAvatarDelete () { /* empty */ } | 17 | onAvatarDelete () { /* empty */ } |
18 | onBannerChange (formData: FormData) { /* empty */ } | ||
19 | onBannerDelete () { /* empty */ } | ||
18 | 20 | ||
19 | // Should be implemented by the child | 21 | // Should be implemented by the child |
20 | isBulkUpdateVideosDisplayed () { | 22 | isBulkUpdateVideosDisplayed () { |
diff --git a/client/src/app/+my-library/+my-video-channels/my-video-channel-update.component.ts b/client/src/app/+my-library/+my-video-channels/my-video-channel-update.component.ts index 6cd1ff503..22935a87a 100644 --- a/client/src/app/+my-library/+my-video-channels/my-video-channel-update.component.ts +++ b/client/src/app/+my-library/+my-video-channels/my-video-channel-update.component.ts | |||
@@ -1,7 +1,9 @@ | |||
1 | import { Subscription } from 'rxjs' | 1 | import { Subscription } from 'rxjs' |
2 | import { HttpErrorResponse } from '@angular/common/http' | ||
2 | import { Component, OnDestroy, OnInit } from '@angular/core' | 3 | import { Component, OnDestroy, OnInit } from '@angular/core' |
3 | import { ActivatedRoute, Router } from '@angular/router' | 4 | import { ActivatedRoute, Router } from '@angular/router' |
4 | import { AuthService, Notifier, ServerService } from '@app/core' | 5 | import { AuthService, Notifier, ServerService } from '@app/core' |
6 | import { uploadErrorHandler } from '@app/helpers' | ||
5 | import { | 7 | import { |
6 | VIDEO_CHANNEL_DESCRIPTION_VALIDATOR, | 8 | VIDEO_CHANNEL_DESCRIPTION_VALIDATOR, |
7 | VIDEO_CHANNEL_DISPLAY_NAME_VALIDATOR, | 9 | VIDEO_CHANNEL_DISPLAY_NAME_VALIDATOR, |
@@ -11,8 +13,6 @@ import { FormValidatorService } from '@app/shared/shared-forms' | |||
11 | import { VideoChannel, VideoChannelService } from '@app/shared/shared-main' | 13 | import { VideoChannel, VideoChannelService } from '@app/shared/shared-main' |
12 | import { ServerConfig, VideoChannelUpdate } from '@shared/models' | 14 | import { ServerConfig, VideoChannelUpdate } from '@shared/models' |
13 | import { MyVideoChannelEdit } from './my-video-channel-edit' | 15 | import { MyVideoChannelEdit } from './my-video-channel-edit' |
14 | import { HttpErrorResponse } from '@angular/common/http' | ||
15 | import { uploadErrorHandler } from '@app/helpers' | ||
16 | 16 | ||
17 | @Component({ | 17 | @Component({ |
18 | selector: 'my-video-channel-update', | 18 | selector: 'my-video-channel-update', |
@@ -101,7 +101,7 @@ export class MyVideoChannelUpdateComponent extends MyVideoChannelEdit implements | |||
101 | } | 101 | } |
102 | 102 | ||
103 | onAvatarChange (formData: FormData) { | 103 | onAvatarChange (formData: FormData) { |
104 | this.videoChannelService.changeVideoChannelAvatar(this.videoChannelToUpdate.name, formData) | 104 | this.videoChannelService.changeVideoChannelImage(this.videoChannelToUpdate.name, formData, 'avatar') |
105 | .subscribe( | 105 | .subscribe( |
106 | data => { | 106 | data => { |
107 | this.notifier.success($localize`Avatar changed.`) | 107 | this.notifier.success($localize`Avatar changed.`) |
@@ -118,7 +118,7 @@ export class MyVideoChannelUpdateComponent extends MyVideoChannelEdit implements | |||
118 | } | 118 | } |
119 | 119 | ||
120 | onAvatarDelete () { | 120 | onAvatarDelete () { |
121 | this.videoChannelService.deleteVideoChannelAvatar(this.videoChannelToUpdate.name) | 121 | this.videoChannelService.deleteVideoChannelImage(this.videoChannelToUpdate.name, 'avatar') |
122 | .subscribe( | 122 | .subscribe( |
123 | data => { | 123 | data => { |
124 | this.notifier.success($localize`Avatar deleted.`) | 124 | this.notifier.success($localize`Avatar deleted.`) |
@@ -130,6 +130,36 @@ export class MyVideoChannelUpdateComponent extends MyVideoChannelEdit implements | |||
130 | ) | 130 | ) |
131 | } | 131 | } |
132 | 132 | ||
133 | onBannerChange (formData: FormData) { | ||
134 | this.videoChannelService.changeVideoChannelImage(this.videoChannelToUpdate.name, formData, 'banner') | ||
135 | .subscribe( | ||
136 | data => { | ||
137 | this.notifier.success($localize`Banner changed.`) | ||
138 | |||
139 | this.videoChannelToUpdate.updateBanner(data.banner) | ||
140 | }, | ||
141 | |||
142 | (err: HttpErrorResponse) => uploadErrorHandler({ | ||
143 | err, | ||
144 | name: $localize`banner`, | ||
145 | notifier: this.notifier | ||
146 | }) | ||
147 | ) | ||
148 | } | ||
149 | |||
150 | onBannerDelete () { | ||
151 | this.videoChannelService.deleteVideoChannelImage(this.videoChannelToUpdate.name, 'banner') | ||
152 | .subscribe( | ||
153 | data => { | ||
154 | this.notifier.success($localize`Banner deleted.`) | ||
155 | |||
156 | this.videoChannelToUpdate.resetBanner() | ||
157 | }, | ||
158 | |||
159 | err => this.notifier.error(err.message) | ||
160 | ) | ||
161 | } | ||
162 | |||
133 | get maxAvatarSize () { | 163 | get maxAvatarSize () { |
134 | return this.serverConfig.avatar.file.size.max | 164 | return this.serverConfig.avatar.file.size.max |
135 | } | 165 | } |
diff --git a/client/src/app/+my-library/+my-video-channels/my-video-channels.module.ts b/client/src/app/+my-library/+my-video-channels/my-video-channels.module.ts index 92b56db49..53557ca02 100644 --- a/client/src/app/+my-library/+my-video-channels/my-video-channels.module.ts +++ b/client/src/app/+my-library/+my-video-channels/my-video-channels.module.ts | |||
@@ -1,5 +1,6 @@ | |||
1 | import { ChartModule } from 'primeng/chart' | 1 | import { ChartModule } from 'primeng/chart' |
2 | import { NgModule } from '@angular/core' | 2 | import { NgModule } from '@angular/core' |
3 | import { SharedActorImageModule } from '@app/shared/shared-actor-image' | ||
3 | import { SharedFormModule } from '@app/shared/shared-forms' | 4 | import { SharedFormModule } from '@app/shared/shared-forms' |
4 | import { SharedGlobalIconModule } from '@app/shared/shared-icons' | 5 | import { SharedGlobalIconModule } from '@app/shared/shared-icons' |
5 | import { SharedMainModule } from '@app/shared/shared-main' | 6 | import { SharedMainModule } from '@app/shared/shared-main' |
@@ -16,7 +17,8 @@ import { MyVideoChannelsComponent } from './my-video-channels.component' | |||
16 | 17 | ||
17 | SharedMainModule, | 18 | SharedMainModule, |
18 | SharedFormModule, | 19 | SharedFormModule, |
19 | SharedGlobalIconModule | 20 | SharedGlobalIconModule, |
21 | SharedActorImageModule | ||
20 | ], | 22 | ], |
21 | 23 | ||
22 | declarations: [ | 24 | declarations: [ |