diff options
author | Chocobozzz <me@florianbigard.com> | 2020-08-12 10:40:04 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2020-08-14 10:28:30 +0200 |
commit | 66357162f8e1227495f09bd4f68446aad7071c6d (patch) | |
tree | 7d4429506deb512b2fe1d0267f38a28cda20af55 /client/src/app/shared/shared-moderation | |
parent | 8c360747995e17eb5520e22fc3d7bd4c3d26eeee (diff) | |
download | PeerTube-66357162f8e1227495f09bd4f68446aad7071c6d.tar.gz PeerTube-66357162f8e1227495f09bd4f68446aad7071c6d.tar.zst PeerTube-66357162f8e1227495f09bd4f68446aad7071c6d.zip |
Migrate to $localize
* Remove i18n polyfill to translate things in components
* Reduce bundle sizes
* Improve runtime perf
* Reduce a lot the time to make a full client build
* Reduce client build complexity
* We don't need a service to translate things anymore (so we will be able to translate title pages etc)
Unfortunately we may loose some translations in the migration process.
I'll put a message on weblate to notify translators
Diffstat (limited to 'client/src/app/shared/shared-moderation')
10 files changed, 90 insertions, 113 deletions
diff --git a/client/src/app/shared/shared-moderation/abuse.service.ts b/client/src/app/shared/shared-moderation/abuse.service.ts index 06b236d1e..bf98d4b36 100644 --- a/client/src/app/shared/shared-moderation/abuse.service.ts +++ b/client/src/app/shared/shared-moderation/abuse.service.ts | |||
@@ -5,7 +5,6 @@ import { catchError, map } from 'rxjs/operators' | |||
5 | import { HttpClient, HttpParams } from '@angular/common/http' | 5 | import { HttpClient, HttpParams } from '@angular/common/http' |
6 | import { Injectable } from '@angular/core' | 6 | import { Injectable } from '@angular/core' |
7 | import { RestExtractor, RestPagination, RestService } from '@app/core' | 7 | import { RestExtractor, RestPagination, RestService } from '@app/core' |
8 | import { I18n } from '@ngx-translate/i18n-polyfill' | ||
9 | import { | 8 | import { |
10 | AbuseCreate, | 9 | AbuseCreate, |
11 | AbuseFilter, | 10 | AbuseFilter, |
@@ -25,7 +24,6 @@ export class AbuseService { | |||
25 | private static BASE_MY_ABUSE_URL = environment.apiUrl + '/api/v1/users/me/abuses' | 24 | private static BASE_MY_ABUSE_URL = environment.apiUrl + '/api/v1/users/me/abuses' |
26 | 25 | ||
27 | constructor ( | 26 | constructor ( |
28 | private i18n: I18n, | ||
29 | private authHttp: HttpClient, | 27 | private authHttp: HttpClient, |
30 | private restService: RestService, | 28 | private restService: RestService, |
31 | private restExtractor: RestExtractor | 29 | private restExtractor: RestExtractor |
@@ -138,33 +136,33 @@ export class AbuseService { | |||
138 | let reasons: { id: AbusePredefinedReasonsString, label: string, description?: string, help?: string }[] = [ | 136 | let reasons: { id: AbusePredefinedReasonsString, label: string, description?: string, help?: string }[] = [ |
139 | { | 137 | { |
140 | id: 'violentOrRepulsive', | 138 | id: 'violentOrRepulsive', |
141 | label: this.i18n('Violent or repulsive'), | 139 | label: $localize`Violent or repulsive`, |
142 | help: this.i18n('Contains offensive, violent, or coarse language or iconography.') | 140 | help: $localize`Contains offensive, violent, or coarse language or iconography.` |
143 | }, | 141 | }, |
144 | { | 142 | { |
145 | id: 'hatefulOrAbusive', | 143 | id: 'hatefulOrAbusive', |
146 | label: this.i18n('Hateful or abusive'), | 144 | label: $localize`Hateful or abusive`, |
147 | help: this.i18n('Contains abusive, racist or sexist language or iconography.') | 145 | help: $localize`Contains abusive, racist or sexist language or iconography.` |
148 | }, | 146 | }, |
149 | { | 147 | { |
150 | id: 'spamOrMisleading', | 148 | id: 'spamOrMisleading', |
151 | label: this.i18n('Spam, ad or false news'), | 149 | label: $localize`Spam, ad or false news`, |
152 | help: this.i18n('Contains marketing, spam, purposefully deceitful news, or otherwise misleading thumbnail/text/tags. Please provide reputable sources to report hoaxes.') | 150 | help: $localize`Contains marketing, spam, purposefully deceitful news, or otherwise misleading thumbnail/text/tags. Please provide reputable sources to report hoaxes.` |
153 | }, | 151 | }, |
154 | { | 152 | { |
155 | id: 'privacy', | 153 | id: 'privacy', |
156 | label: this.i18n('Privacy breach or doxxing'), | 154 | label: $localize`Privacy breach or doxxing`, |
157 | help: this.i18n('Contains personal information that could be used to track, identify, contact or impersonate someone (e.g. name, address, phone number, email, or credit card details).') | 155 | help: $localize`Contains personal information that could be used to track, identify, contact or impersonate someone (e.g. name, address, phone number, email, or credit card details).` |
158 | }, | 156 | }, |
159 | { | 157 | { |
160 | id: 'rights', | 158 | id: 'rights', |
161 | label: this.i18n('Copyright'), | 159 | label: $localize`Copyright`, |
162 | help: this.i18n('Infringes your copyright wrt. the regional laws with which the server must comply.') | 160 | help: $localize`Infringes your copyright wrt. the regional laws with which the server must comply.` |
163 | }, | 161 | }, |
164 | { | 162 | { |
165 | id: 'serverRules', | 163 | id: 'serverRules', |
166 | label: this.i18n('Breaks server rules'), | 164 | label: $localize`Breaks server rules`, |
167 | description: this.i18n('Anything not included in the above that breaks the terms of service, code of conduct, or general rules in place on the server.') | 165 | description: $localize`Anything not included in the above that breaks the terms of service, code of conduct, or general rules in place on the server.` |
168 | } | 166 | } |
169 | ] | 167 | ] |
170 | 168 | ||
@@ -172,13 +170,13 @@ export class AbuseService { | |||
172 | reasons = reasons.concat([ | 170 | reasons = reasons.concat([ |
173 | { | 171 | { |
174 | id: 'thumbnails', | 172 | id: 'thumbnails', |
175 | label: this.i18n('Thumbnails'), | 173 | label: $localize`Thumbnails`, |
176 | help: this.i18n('The above can only be seen in thumbnails.') | 174 | help: $localize`The above can only be seen in thumbnails.` |
177 | }, | 175 | }, |
178 | { | 176 | { |
179 | id: 'captions', | 177 | id: 'captions', |
180 | label: this.i18n('Captions'), | 178 | label: $localize`Captions`, |
181 | help: this.i18n('The above can only be seen in captions (please describe which).') | 179 | help: $localize`The above can only be seen in captions (please describe which).` |
182 | } | 180 | } |
183 | ]) | 181 | ]) |
184 | } | 182 | } |
diff --git a/client/src/app/shared/shared-moderation/account-blocklist.component.ts b/client/src/app/shared/shared-moderation/account-blocklist.component.ts index a5a3c27cd..68928a2c2 100644 --- a/client/src/app/shared/shared-moderation/account-blocklist.component.ts +++ b/client/src/app/shared/shared-moderation/account-blocklist.component.ts | |||
@@ -1,8 +1,7 @@ | |||
1 | import { SortMeta } from 'primeng/api' | 1 | import { SortMeta } from 'primeng/api' |
2 | import { OnInit, Directive } from '@angular/core' | 2 | import { Directive, OnInit } from '@angular/core' |
3 | import { Notifier, RestPagination, RestTable } from '@app/core' | 3 | import { Notifier, RestPagination, RestTable } from '@app/core' |
4 | import { Actor } from '@app/shared/shared-main' | 4 | import { Actor } from '@app/shared/shared-main' |
5 | import { I18n } from '@ngx-translate/i18n-polyfill' | ||
6 | import { AccountBlock } from './account-block.model' | 5 | import { AccountBlock } from './account-block.model' |
7 | import { BlocklistComponentType, BlocklistService } from './blocklist.service' | 6 | import { BlocklistComponentType, BlocklistService } from './blocklist.service' |
8 | 7 | ||
@@ -19,8 +18,7 @@ export class GenericAccountBlocklistComponent extends RestTable implements OnIni | |||
19 | 18 | ||
20 | constructor ( | 19 | constructor ( |
21 | private notifier: Notifier, | 20 | private notifier: Notifier, |
22 | private blocklistService: BlocklistService, | 21 | private blocklistService: BlocklistService |
23 | private i18n: I18n | ||
24 | ) { | 22 | ) { |
25 | super() | 23 | super() |
26 | } | 24 | } |
@@ -46,8 +44,8 @@ export class GenericAccountBlocklistComponent extends RestTable implements OnIni | |||
46 | () => { | 44 | () => { |
47 | this.notifier.success( | 45 | this.notifier.success( |
48 | this.mode === BlocklistComponentType.Account | 46 | this.mode === BlocklistComponentType.Account |
49 | ? this.i18n('Account {{nameWithHost}} unmuted.', { nameWithHost: blockedAccount.nameWithHost }) | 47 | ? $localize`Account ${blockedAccount.nameWithHost} unmuted.` |
50 | : this.i18n('Account {{nameWithHost}} unmuted by your instance.', { nameWithHost: blockedAccount.nameWithHost }) | 48 | : $localize`Account ${blockedAccount.nameWithHost} unmuted by your instance.` |
51 | ) | 49 | ) |
52 | 50 | ||
53 | this.loadData() | 51 | this.loadData() |
diff --git a/client/src/app/shared/shared-moderation/batch-domains-modal.component.ts b/client/src/app/shared/shared-moderation/batch-domains-modal.component.ts index fdd4a79a9..7193ccb1b 100644 --- a/client/src/app/shared/shared-moderation/batch-domains-modal.component.ts +++ b/client/src/app/shared/shared-moderation/batch-domains-modal.component.ts | |||
@@ -2,7 +2,6 @@ import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angu | |||
2 | import { BatchDomainsValidatorsService, FormReactive, FormValidatorService } from '@app/shared/shared-forms' | 2 | import { BatchDomainsValidatorsService, FormReactive, FormValidatorService } from '@app/shared/shared-forms' |
3 | import { NgbModal } from '@ng-bootstrap/ng-bootstrap' | 3 | import { NgbModal } from '@ng-bootstrap/ng-bootstrap' |
4 | import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' | 4 | import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' |
5 | import { I18n } from '@ngx-translate/i18n-polyfill' | ||
6 | 5 | ||
7 | @Component({ | 6 | @Component({ |
8 | selector: 'my-batch-domains-modal', | 7 | selector: 'my-batch-domains-modal', |
@@ -20,14 +19,13 @@ export class BatchDomainsModalComponent extends FormReactive implements OnInit { | |||
20 | constructor ( | 19 | constructor ( |
21 | protected formValidatorService: FormValidatorService, | 20 | protected formValidatorService: FormValidatorService, |
22 | private modalService: NgbModal, | 21 | private modalService: NgbModal, |
23 | private batchDomainsValidatorsService: BatchDomainsValidatorsService, | 22 | private batchDomainsValidatorsService: BatchDomainsValidatorsService |
24 | private i18n: I18n | ||
25 | ) { | 23 | ) { |
26 | super() | 24 | super() |
27 | } | 25 | } |
28 | 26 | ||
29 | ngOnInit () { | 27 | ngOnInit () { |
30 | if (!this.action) this.action = this.i18n('Process domains') | 28 | if (!this.action) this.action = $localize`Process domains` |
31 | 29 | ||
32 | this.buildForm({ | 30 | this.buildForm({ |
33 | domains: this.batchDomainsValidatorsService.DOMAINS | 31 | domains: this.batchDomainsValidatorsService.DOMAINS |
diff --git a/client/src/app/shared/shared-moderation/report-modals/account-report.component.ts b/client/src/app/shared/shared-moderation/report-modals/account-report.component.ts index 08dbe9538..8ab2fe940 100644 --- a/client/src/app/shared/shared-moderation/report-modals/account-report.component.ts +++ b/client/src/app/shared/shared-moderation/report-modals/account-report.component.ts | |||
@@ -5,7 +5,6 @@ import { AbuseValidatorsService, FormReactive, FormValidatorService } from '@app | |||
5 | import { Account } from '@app/shared/shared-main' | 5 | import { Account } from '@app/shared/shared-main' |
6 | import { NgbModal } from '@ng-bootstrap/ng-bootstrap' | 6 | import { NgbModal } from '@ng-bootstrap/ng-bootstrap' |
7 | import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' | 7 | import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' |
8 | import { I18n } from '@ngx-translate/i18n-polyfill' | ||
9 | import { abusePredefinedReasonsMap } from '@shared/core-utils/abuse' | 8 | import { abusePredefinedReasonsMap } from '@shared/core-utils/abuse' |
10 | import { AbusePredefinedReasonsString } from '@shared/models' | 9 | import { AbusePredefinedReasonsString } from '@shared/models' |
11 | import { AbuseService } from '../abuse.service' | 10 | import { AbuseService } from '../abuse.service' |
@@ -31,8 +30,7 @@ export class AccountReportComponent extends FormReactive implements OnInit { | |||
31 | private modalService: NgbModal, | 30 | private modalService: NgbModal, |
32 | private abuseValidatorsService: AbuseValidatorsService, | 31 | private abuseValidatorsService: AbuseValidatorsService, |
33 | private abuseService: AbuseService, | 32 | private abuseService: AbuseService, |
34 | private notifier: Notifier, | 33 | private notifier: Notifier |
35 | private i18n: I18n | ||
36 | ) { | 34 | ) { |
37 | super() | 35 | super() |
38 | } | 36 | } |
@@ -50,7 +48,7 @@ export class AccountReportComponent extends FormReactive implements OnInit { | |||
50 | } | 48 | } |
51 | 49 | ||
52 | ngOnInit () { | 50 | ngOnInit () { |
53 | this.modalTitle = this.i18n('Report {{displayName}}', { displayName: this.account.displayName }) | 51 | this.modalTitle = $localize`Report ${this.account.displayName}` |
54 | 52 | ||
55 | this.buildForm({ | 53 | this.buildForm({ |
56 | reason: this.abuseValidatorsService.ABUSE_REASON, | 54 | reason: this.abuseValidatorsService.ABUSE_REASON, |
@@ -81,7 +79,7 @@ export class AccountReportComponent extends FormReactive implements OnInit { | |||
81 | } | 79 | } |
82 | }).subscribe( | 80 | }).subscribe( |
83 | () => { | 81 | () => { |
84 | this.notifier.success(this.i18n('Account reported.')) | 82 | this.notifier.success($localize`Account reported.`) |
85 | this.hide() | 83 | this.hide() |
86 | }, | 84 | }, |
87 | 85 | ||
diff --git a/client/src/app/shared/shared-moderation/report-modals/comment-report.component.ts b/client/src/app/shared/shared-moderation/report-modals/comment-report.component.ts index 2769874d9..d75f4d717 100644 --- a/client/src/app/shared/shared-moderation/report-modals/comment-report.component.ts +++ b/client/src/app/shared/shared-moderation/report-modals/comment-report.component.ts | |||
@@ -5,7 +5,6 @@ import { AbuseValidatorsService, FormReactive, FormValidatorService } from '@app | |||
5 | import { VideoComment } from '@app/shared/shared-video-comment' | 5 | import { VideoComment } from '@app/shared/shared-video-comment' |
6 | import { NgbModal } from '@ng-bootstrap/ng-bootstrap' | 6 | import { NgbModal } from '@ng-bootstrap/ng-bootstrap' |
7 | import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' | 7 | import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' |
8 | import { I18n } from '@ngx-translate/i18n-polyfill' | ||
9 | import { abusePredefinedReasonsMap } from '@shared/core-utils/abuse' | 8 | import { abusePredefinedReasonsMap } from '@shared/core-utils/abuse' |
10 | import { AbusePredefinedReasonsString } from '@shared/models' | 9 | import { AbusePredefinedReasonsString } from '@shared/models' |
11 | import { AbuseService } from '../abuse.service' | 10 | import { AbuseService } from '../abuse.service' |
@@ -31,8 +30,7 @@ export class CommentReportComponent extends FormReactive implements OnInit { | |||
31 | private modalService: NgbModal, | 30 | private modalService: NgbModal, |
32 | private abuseValidatorsService: AbuseValidatorsService, | 31 | private abuseValidatorsService: AbuseValidatorsService, |
33 | private abuseService: AbuseService, | 32 | private abuseService: AbuseService, |
34 | private notifier: Notifier, | 33 | private notifier: Notifier |
35 | private i18n: I18n | ||
36 | ) { | 34 | ) { |
37 | super() | 35 | super() |
38 | } | 36 | } |
@@ -50,7 +48,7 @@ export class CommentReportComponent extends FormReactive implements OnInit { | |||
50 | } | 48 | } |
51 | 49 | ||
52 | ngOnInit () { | 50 | ngOnInit () { |
53 | this.modalTitle = this.i18n('Report comment') | 51 | this.modalTitle = $localize`Report comment` |
54 | 52 | ||
55 | this.buildForm({ | 53 | this.buildForm({ |
56 | reason: this.abuseValidatorsService.ABUSE_REASON, | 54 | reason: this.abuseValidatorsService.ABUSE_REASON, |
@@ -81,7 +79,7 @@ export class CommentReportComponent extends FormReactive implements OnInit { | |||
81 | } | 79 | } |
82 | }).subscribe( | 80 | }).subscribe( |
83 | () => { | 81 | () => { |
84 | this.notifier.success(this.i18n('Comment reported.')) | 82 | this.notifier.success($localize`Comment reported.`) |
85 | this.hide() | 83 | this.hide() |
86 | }, | 84 | }, |
87 | 85 | ||
diff --git a/client/src/app/shared/shared-moderation/report-modals/video-report.component.ts b/client/src/app/shared/shared-moderation/report-modals/video-report.component.ts index 794dd54bb..edff6d325 100644 --- a/client/src/app/shared/shared-moderation/report-modals/video-report.component.ts +++ b/client/src/app/shared/shared-moderation/report-modals/video-report.component.ts | |||
@@ -1,12 +1,11 @@ | |||
1 | import { mapValues, pickBy } from 'lodash-es' | 1 | import { mapValues, pickBy } from 'lodash-es' |
2 | import { buildVideoOrPlaylistEmbed, buildVideoLink } from 'src/assets/player/utils' | 2 | import { buildVideoLink, buildVideoOrPlaylistEmbed } from 'src/assets/player/utils' |
3 | import { Component, Input, OnInit, ViewChild } from '@angular/core' | 3 | import { Component, Input, OnInit, ViewChild } from '@angular/core' |
4 | import { DomSanitizer, SafeHtml } from '@angular/platform-browser' | 4 | import { DomSanitizer, SafeHtml } from '@angular/platform-browser' |
5 | import { Notifier } from '@app/core' | 5 | import { Notifier } from '@app/core' |
6 | import { AbuseValidatorsService, FormReactive, FormValidatorService } from '@app/shared/shared-forms' | 6 | import { AbuseValidatorsService, FormReactive, FormValidatorService } from '@app/shared/shared-forms' |
7 | import { NgbModal } from '@ng-bootstrap/ng-bootstrap' | 7 | import { NgbModal } from '@ng-bootstrap/ng-bootstrap' |
8 | import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' | 8 | import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' |
9 | import { I18n } from '@ngx-translate/i18n-polyfill' | ||
10 | import { abusePredefinedReasonsMap } from '@shared/core-utils/abuse' | 9 | import { abusePredefinedReasonsMap } from '@shared/core-utils/abuse' |
11 | import { AbusePredefinedReasonsString } from '@shared/models' | 10 | import { AbusePredefinedReasonsString } from '@shared/models' |
12 | import { Video } from '../../shared-main' | 11 | import { Video } from '../../shared-main' |
@@ -34,8 +33,7 @@ export class VideoReportComponent extends FormReactive implements OnInit { | |||
34 | private abuseValidatorsService: AbuseValidatorsService, | 33 | private abuseValidatorsService: AbuseValidatorsService, |
35 | private abuseService: AbuseService, | 34 | private abuseService: AbuseService, |
36 | private notifier: Notifier, | 35 | private notifier: Notifier, |
37 | private sanitizer: DomSanitizer, | 36 | private sanitizer: DomSanitizer |
38 | private i18n: I18n | ||
39 | ) { | 37 | ) { |
40 | super() | 38 | super() |
41 | } | 39 | } |
@@ -109,7 +107,7 @@ export class VideoReportComponent extends FormReactive implements OnInit { | |||
109 | } | 107 | } |
110 | }).subscribe( | 108 | }).subscribe( |
111 | () => { | 109 | () => { |
112 | this.notifier.success(this.i18n('Video reported.')) | 110 | this.notifier.success($localize`Video reported.`) |
113 | this.hide() | 111 | this.hide() |
114 | }, | 112 | }, |
115 | 113 | ||
diff --git a/client/src/app/shared/shared-moderation/server-blocklist.component.ts b/client/src/app/shared/shared-moderation/server-blocklist.component.ts index 8f65cdb71..546fd53c3 100644 --- a/client/src/app/shared/shared-moderation/server-blocklist.component.ts +++ b/client/src/app/shared/shared-moderation/server-blocklist.component.ts | |||
@@ -2,7 +2,6 @@ import { SortMeta } from 'primeng/api' | |||
2 | import { Directive, OnInit, ViewChild } from '@angular/core' | 2 | import { Directive, OnInit, ViewChild } from '@angular/core' |
3 | import { Notifier, RestPagination, RestTable } from '@app/core' | 3 | import { Notifier, RestPagination, RestTable } from '@app/core' |
4 | import { BatchDomainsModalComponent } from '@app/shared/shared-moderation/batch-domains-modal.component' | 4 | import { BatchDomainsModalComponent } from '@app/shared/shared-moderation/batch-domains-modal.component' |
5 | import { I18n } from '@ngx-translate/i18n-polyfill' | ||
6 | import { ServerBlock } from '@shared/models' | 5 | import { ServerBlock } from '@shared/models' |
7 | import { BlocklistComponentType, BlocklistService } from './blocklist.service' | 6 | import { BlocklistComponentType, BlocklistService } from './blocklist.service' |
8 | 7 | ||
@@ -21,8 +20,7 @@ export class GenericServerBlocklistComponent extends RestTable implements OnInit | |||
21 | 20 | ||
22 | constructor ( | 21 | constructor ( |
23 | protected notifier: Notifier, | 22 | protected notifier: Notifier, |
24 | protected blocklistService: BlocklistService, | 23 | protected blocklistService: BlocklistService |
25 | protected i18n: I18n | ||
26 | ) { | 24 | ) { |
27 | super() | 25 | super() |
28 | } | 26 | } |
@@ -44,8 +42,8 @@ export class GenericServerBlocklistComponent extends RestTable implements OnInit | |||
44 | () => { | 42 | () => { |
45 | this.notifier.success( | 43 | this.notifier.success( |
46 | this.mode === BlocklistComponentType.Account | 44 | this.mode === BlocklistComponentType.Account |
47 | ? this.i18n('Instance {{host}} unmuted.', { host }) | 45 | ? $localize`Instance ${host} unmuted.` |
48 | : this.i18n('Instance {{host}} unmuted by your instance.', { host }) | 46 | : $localize`Instance ${host} unmuted by your instance.` |
49 | ) | 47 | ) |
50 | 48 | ||
51 | this.loadData() | 49 | this.loadData() |
@@ -67,8 +65,8 @@ export class GenericServerBlocklistComponent extends RestTable implements OnInit | |||
67 | () => { | 65 | () => { |
68 | this.notifier.success( | 66 | this.notifier.success( |
69 | this.mode === BlocklistComponentType.Account | 67 | this.mode === BlocklistComponentType.Account |
70 | ? this.i18n('Instance {{domain}} muted.', { domain }) | 68 | ? $localize`Instance ${domain} muted.` |
71 | : this.i18n('Instance {{domain}} muted by your instance.', { domain }) | 69 | : $localize`Instance ${domain} muted by your instance.` |
72 | ) | 70 | ) |
73 | 71 | ||
74 | this.loadData() | 72 | this.loadData() |
diff --git a/client/src/app/shared/shared-moderation/user-ban-modal.component.ts b/client/src/app/shared/shared-moderation/user-ban-modal.component.ts index 124e58669..f9a0381c5 100644 --- a/client/src/app/shared/shared-moderation/user-ban-modal.component.ts +++ b/client/src/app/shared/shared-moderation/user-ban-modal.component.ts | |||
@@ -3,7 +3,6 @@ import { Notifier, UserService } from '@app/core' | |||
3 | import { FormReactive, FormValidatorService, UserValidatorsService } from '@app/shared/shared-forms' | 3 | import { FormReactive, FormValidatorService, UserValidatorsService } from '@app/shared/shared-forms' |
4 | import { NgbModal } from '@ng-bootstrap/ng-bootstrap' | 4 | import { NgbModal } from '@ng-bootstrap/ng-bootstrap' |
5 | import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' | 5 | import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' |
6 | import { I18n } from '@ngx-translate/i18n-polyfill' | ||
7 | import { User } from '@shared/models' | 6 | import { User } from '@shared/models' |
8 | 7 | ||
9 | @Component({ | 8 | @Component({ |
@@ -23,8 +22,7 @@ export class UserBanModalComponent extends FormReactive implements OnInit { | |||
23 | private modalService: NgbModal, | 22 | private modalService: NgbModal, |
24 | private notifier: Notifier, | 23 | private notifier: Notifier, |
25 | private userService: UserService, | 24 | private userService: UserService, |
26 | private userValidatorsService: UserValidatorsService, | 25 | private userValidatorsService: UserValidatorsService |
27 | private i18n: I18n | ||
28 | ) { | 26 | ) { |
29 | super() | 27 | super() |
30 | } | 28 | } |
@@ -52,8 +50,8 @@ export class UserBanModalComponent extends FormReactive implements OnInit { | |||
52 | .subscribe( | 50 | .subscribe( |
53 | () => { | 51 | () => { |
54 | const message = Array.isArray(this.usersToBan) | 52 | const message = Array.isArray(this.usersToBan) |
55 | ? this.i18n('{{num}} users banned.', { num: this.usersToBan.length }) | 53 | ? $localize`${this.usersToBan.length} users banned.` |
56 | : this.i18n('User {{username}} banned.', { username: this.usersToBan.username }) | 54 | : $localize`User ${this.usersToBan.username} banned.` |
57 | 55 | ||
58 | this.notifier.success(message) | 56 | this.notifier.success(message) |
59 | 57 | ||
diff --git a/client/src/app/shared/shared-moderation/user-moderation-dropdown.component.ts b/client/src/app/shared/shared-moderation/user-moderation-dropdown.component.ts index 34fa7366c..44aefa853 100644 --- a/client/src/app/shared/shared-moderation/user-moderation-dropdown.component.ts +++ b/client/src/app/shared/shared-moderation/user-moderation-dropdown.component.ts | |||
@@ -1,7 +1,6 @@ | |||
1 | import { Component, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild } from '@angular/core' | 1 | import { Component, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild } from '@angular/core' |
2 | import { AuthService, ConfirmService, Notifier, ServerService, UserService } from '@app/core' | 2 | import { AuthService, ConfirmService, Notifier, ServerService, UserService } from '@app/core' |
3 | import { Account, DropdownAction } from '@app/shared/shared-main' | 3 | import { Account, DropdownAction } from '@app/shared/shared-main' |
4 | import { I18n } from '@ngx-translate/i18n-polyfill' | ||
5 | import { BulkRemoveCommentsOfBody, ServerConfig, User, UserRight } from '@shared/models' | 4 | import { BulkRemoveCommentsOfBody, ServerConfig, User, UserRight } from '@shared/models' |
6 | import { BlocklistService } from './blocklist.service' | 5 | import { BlocklistService } from './blocklist.service' |
7 | import { BulkService } from './bulk.service' | 6 | import { BulkService } from './bulk.service' |
@@ -37,8 +36,7 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges { | |||
37 | private serverService: ServerService, | 36 | private serverService: ServerService, |
38 | private userService: UserService, | 37 | private userService: UserService, |
39 | private blocklistService: BlocklistService, | 38 | private blocklistService: BlocklistService, |
40 | private bulkService: BulkService, | 39 | private bulkService: BulkService |
41 | private i18n: I18n | ||
42 | ) { } | 40 | ) { } |
43 | 41 | ||
44 | get requiresEmailVerification () { | 42 | get requiresEmailVerification () { |
@@ -57,7 +55,7 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges { | |||
57 | 55 | ||
58 | openBanUserModal (user: User) { | 56 | openBanUserModal (user: User) { |
59 | if (user.username === 'root') { | 57 | if (user.username === 'root') { |
60 | this.notifier.error(this.i18n('You cannot ban root.')) | 58 | this.notifier.error($localize`You cannot ban root.`) |
61 | return | 59 | return |
62 | } | 60 | } |
63 | 61 | ||
@@ -69,15 +67,13 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges { | |||
69 | } | 67 | } |
70 | 68 | ||
71 | async unbanUser (user: User) { | 69 | async unbanUser (user: User) { |
72 | const message = this.i18n('Do you really want to unban {{username}}?', { username: user.username }) | 70 | const res = await this.confirmService.confirm($localize`Do you really want to unban ${user.username}?`, $localize`Unban`) |
73 | const res = await this.confirmService.confirm(message, this.i18n('Unban')) | ||
74 | if (res === false) return | 71 | if (res === false) return |
75 | 72 | ||
76 | this.userService.unbanUsers(user) | 73 | this.userService.unbanUsers(user) |
77 | .subscribe( | 74 | .subscribe( |
78 | () => { | 75 | () => { |
79 | this.notifier.success(this.i18n('User {{username}} unbanned.', { username: user.username })) | 76 | this.notifier.success($localize`User ${user.username} unbanned.`) |
80 | |||
81 | this.userChanged.emit() | 77 | this.userChanged.emit() |
82 | }, | 78 | }, |
83 | 79 | ||
@@ -87,17 +83,17 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges { | |||
87 | 83 | ||
88 | async removeUser (user: User) { | 84 | async removeUser (user: User) { |
89 | if (user.username === 'root') { | 85 | if (user.username === 'root') { |
90 | this.notifier.error(this.i18n('You cannot delete root.')) | 86 | this.notifier.error($localize`You cannot delete root.`) |
91 | return | 87 | return |
92 | } | 88 | } |
93 | 89 | ||
94 | const message = this.i18n('If you remove this user, you will not be able to create another with the same username!') | 90 | const message = $localize`If you remove this user, you will not be able to create another with the same username!` |
95 | const res = await this.confirmService.confirm(message, this.i18n('Delete')) | 91 | const res = await this.confirmService.confirm(message, $localize`Delete`) |
96 | if (res === false) return | 92 | if (res === false) return |
97 | 93 | ||
98 | this.userService.removeUser(user).subscribe( | 94 | this.userService.removeUser(user).subscribe( |
99 | () => { | 95 | () => { |
100 | this.notifier.success(this.i18n('User {{username}} deleted.', { username: user.username })) | 96 | this.notifier.success($localize`User ${user.username} deleted.`) |
101 | this.userDeleted.emit() | 97 | this.userDeleted.emit() |
102 | }, | 98 | }, |
103 | 99 | ||
@@ -108,8 +104,7 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges { | |||
108 | setEmailAsVerified (user: User) { | 104 | setEmailAsVerified (user: User) { |
109 | this.userService.updateUser(user.id, { emailVerified: true }).subscribe( | 105 | this.userService.updateUser(user.id, { emailVerified: true }).subscribe( |
110 | () => { | 106 | () => { |
111 | this.notifier.success(this.i18n('User {{username}} email set as verified', { username: user.username })) | 107 | this.notifier.success($localize`User ${user.username} email set as verified`) |
112 | |||
113 | this.userChanged.emit() | 108 | this.userChanged.emit() |
114 | }, | 109 | }, |
115 | 110 | ||
@@ -121,7 +116,7 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges { | |||
121 | this.blocklistService.blockAccountByUser(account) | 116 | this.blocklistService.blockAccountByUser(account) |
122 | .subscribe( | 117 | .subscribe( |
123 | () => { | 118 | () => { |
124 | this.notifier.success(this.i18n('Account {{nameWithHost}} muted.', { nameWithHost: account.nameWithHost })) | 119 | this.notifier.success($localize`Account ${account.nameWithHost} muted.`) |
125 | 120 | ||
126 | this.account.mutedByUser = true | 121 | this.account.mutedByUser = true |
127 | this.userChanged.emit() | 122 | this.userChanged.emit() |
@@ -135,7 +130,7 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges { | |||
135 | this.blocklistService.unblockAccountByUser(account) | 130 | this.blocklistService.unblockAccountByUser(account) |
136 | .subscribe( | 131 | .subscribe( |
137 | () => { | 132 | () => { |
138 | this.notifier.success(this.i18n('Account {{nameWithHost}} unmuted.', { nameWithHost: account.nameWithHost })) | 133 | this.notifier.success($localize`Account ${account.nameWithHost} unmuted.`) |
139 | 134 | ||
140 | this.account.mutedByUser = false | 135 | this.account.mutedByUser = false |
141 | this.userChanged.emit() | 136 | this.userChanged.emit() |
@@ -149,7 +144,7 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges { | |||
149 | this.blocklistService.blockServerByUser(host) | 144 | this.blocklistService.blockServerByUser(host) |
150 | .subscribe( | 145 | .subscribe( |
151 | () => { | 146 | () => { |
152 | this.notifier.success(this.i18n('Instance {{host}} muted.', { host })) | 147 | this.notifier.success($localize`Instance ${host} muted.`) |
153 | 148 | ||
154 | this.account.mutedServerByUser = true | 149 | this.account.mutedServerByUser = true |
155 | this.userChanged.emit() | 150 | this.userChanged.emit() |
@@ -163,7 +158,7 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges { | |||
163 | this.blocklistService.unblockServerByUser(host) | 158 | this.blocklistService.unblockServerByUser(host) |
164 | .subscribe( | 159 | .subscribe( |
165 | () => { | 160 | () => { |
166 | this.notifier.success(this.i18n('Instance {{host}} unmuted.', { host })) | 161 | this.notifier.success($localize`Instance ${host} unmuted.`) |
167 | 162 | ||
168 | this.account.mutedServerByUser = false | 163 | this.account.mutedServerByUser = false |
169 | this.userChanged.emit() | 164 | this.userChanged.emit() |
@@ -177,7 +172,7 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges { | |||
177 | this.blocklistService.blockAccountByInstance(account) | 172 | this.blocklistService.blockAccountByInstance(account) |
178 | .subscribe( | 173 | .subscribe( |
179 | () => { | 174 | () => { |
180 | this.notifier.success(this.i18n('Account {{nameWithHost}} muted by the instance.', { nameWithHost: account.nameWithHost })) | 175 | this.notifier.success($localize`Account ${account.nameWithHost} muted by the instance.`) |
181 | 176 | ||
182 | this.account.mutedByInstance = true | 177 | this.account.mutedByInstance = true |
183 | this.userChanged.emit() | 178 | this.userChanged.emit() |
@@ -191,7 +186,7 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges { | |||
191 | this.blocklistService.unblockAccountByInstance(account) | 186 | this.blocklistService.unblockAccountByInstance(account) |
192 | .subscribe( | 187 | .subscribe( |
193 | () => { | 188 | () => { |
194 | this.notifier.success(this.i18n('Account {{nameWithHost}} unmuted by the instance.', { nameWithHost: account.nameWithHost })) | 189 | this.notifier.success($localize`Account ${account.nameWithHost} unmuted by the instance.`) |
195 | 190 | ||
196 | this.account.mutedByInstance = false | 191 | this.account.mutedByInstance = false |
197 | this.userChanged.emit() | 192 | this.userChanged.emit() |
@@ -205,7 +200,7 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges { | |||
205 | this.blocklistService.blockServerByInstance(host) | 200 | this.blocklistService.blockServerByInstance(host) |
206 | .subscribe( | 201 | .subscribe( |
207 | () => { | 202 | () => { |
208 | this.notifier.success(this.i18n('Instance {{host}} muted by the instance.', { host })) | 203 | this.notifier.success($localize`Instance ${host} muted by the instance.`) |
209 | 204 | ||
210 | this.account.mutedServerByInstance = true | 205 | this.account.mutedServerByInstance = true |
211 | this.userChanged.emit() | 206 | this.userChanged.emit() |
@@ -219,7 +214,7 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges { | |||
219 | this.blocklistService.unblockServerByInstance(host) | 214 | this.blocklistService.unblockServerByInstance(host) |
220 | .subscribe( | 215 | .subscribe( |
221 | () => { | 216 | () => { |
222 | this.notifier.success(this.i18n('Instance {{host}} unmuted by the instance.', { host })) | 217 | this.notifier.success($localize`Instance ${host} unmuted by the instance.`) |
223 | 218 | ||
224 | this.account.mutedServerByInstance = false | 219 | this.account.mutedServerByInstance = false |
225 | this.userChanged.emit() | 220 | this.userChanged.emit() |
@@ -230,14 +225,14 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges { | |||
230 | } | 225 | } |
231 | 226 | ||
232 | async bulkRemoveCommentsOf (body: BulkRemoveCommentsOfBody) { | 227 | async bulkRemoveCommentsOf (body: BulkRemoveCommentsOfBody) { |
233 | const message = this.i18n('Are you sure you want to remove all the comments of this account?') | 228 | const message = $localize`Are you sure you want to remove all the comments of this account?` |
234 | const res = await this.confirmService.confirm(message, this.i18n('Delete account comments')) | 229 | const res = await this.confirmService.confirm(message, $localize`Delete account comments`) |
235 | if (res === false) return | 230 | if (res === false) return |
236 | 231 | ||
237 | this.bulkService.removeCommentsOf(body) | 232 | this.bulkService.removeCommentsOf(body) |
238 | .subscribe( | 233 | .subscribe( |
239 | () => { | 234 | () => { |
240 | this.notifier.success(this.i18n('Will remove comments of this account (may take several minutes).')) | 235 | this.notifier.success($localize`Will remove comments of this account (may take several minutes).`) |
241 | }, | 236 | }, |
242 | 237 | ||
243 | err => this.notifier.error(err.message) | 238 | err => this.notifier.error(err.message) |
@@ -265,29 +260,29 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges { | |||
265 | if (this.user && authUser.hasRight(UserRight.MANAGE_USERS) && authUser.canManage(this.user)) { | 260 | if (this.user && authUser.hasRight(UserRight.MANAGE_USERS) && authUser.canManage(this.user)) { |
266 | this.userActions.push([ | 261 | this.userActions.push([ |
267 | { | 262 | { |
268 | label: this.i18n('Edit user'), | 263 | label: $localize`Edit user`, |
269 | description: this.i18n('Change quota, role, and more.'), | 264 | description: $localize`Change quota, role, and more.`, |
270 | linkBuilder: ({ user }) => this.getRouterUserEditLink(user) | 265 | linkBuilder: ({ user }) => this.getRouterUserEditLink(user) |
271 | }, | 266 | }, |
272 | { | 267 | { |
273 | label: this.i18n('Delete user'), | 268 | label: $localize`Delete user`, |
274 | description: this.i18n('Videos will be deleted, comments will be tombstoned.'), | 269 | description: $localize`Videos will be deleted, comments will be tombstoned.`, |
275 | handler: ({ user }) => this.removeUser(user) | 270 | handler: ({ user }) => this.removeUser(user) |
276 | }, | 271 | }, |
277 | { | 272 | { |
278 | label: this.i18n('Ban'), | 273 | label: $localize`Ban`, |
279 | description: this.i18n('User won\'t be able to login anymore, but videos and comments will be kept as is.'), | 274 | description: $localize`User won't be able to login anymore, but videos and comments will be kept as is.`, |
280 | handler: ({ user }) => this.openBanUserModal(user), | 275 | handler: ({ user }) => this.openBanUserModal(user), |
281 | isDisplayed: ({ user }) => !user.blocked | 276 | isDisplayed: ({ user }) => !user.blocked |
282 | }, | 277 | }, |
283 | { | 278 | { |
284 | label: this.i18n('Unban user'), | 279 | label: $localize`Unban user`, |
285 | description: this.i18n('Allow the user to login and create videos/comments again'), | 280 | description: $localize`Allow the user to login and create videos/comments again`, |
286 | handler: ({ user }) => this.unbanUser(user), | 281 | handler: ({ user }) => this.unbanUser(user), |
287 | isDisplayed: ({ user }) => user.blocked | 282 | isDisplayed: ({ user }) => user.blocked |
288 | }, | 283 | }, |
289 | { | 284 | { |
290 | label: this.i18n('Set Email as Verified'), | 285 | label: $localize`Set Email as Verified`, |
291 | handler: ({ user }) => this.setEmailAsVerified(user), | 286 | handler: ({ user }) => this.setEmailAsVerified(user), |
292 | isDisplayed: ({ user }) => this.requiresEmailVerification && !user.blocked && user.emailVerified === false | 287 | isDisplayed: ({ user }) => this.requiresEmailVerification && !user.blocked && user.emailVerified === false |
293 | } | 288 | } |
@@ -299,32 +294,32 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges { | |||
299 | // User actions | 294 | // User actions |
300 | this.userActions.push([ | 295 | this.userActions.push([ |
301 | { | 296 | { |
302 | label: this.i18n('Mute this account'), | 297 | label: $localize`Mute this account`, |
303 | description: this.i18n('Hide any content from that user for you.'), | 298 | description: $localize`Hide any content from that user for you.`, |
304 | isDisplayed: ({ account }) => account.mutedByUser === false, | 299 | isDisplayed: ({ account }) => account.mutedByUser === false, |
305 | handler: ({ account }) => this.blockAccountByUser(account) | 300 | handler: ({ account }) => this.blockAccountByUser(account) |
306 | }, | 301 | }, |
307 | { | 302 | { |
308 | label: this.i18n('Unmute this account'), | 303 | label: $localize`Unmute this account`, |
309 | description: this.i18n('Show back content from that user for you.'), | 304 | description: $localize`Show back content from that user for you.`, |
310 | isDisplayed: ({ account }) => account.mutedByUser === true, | 305 | isDisplayed: ({ account }) => account.mutedByUser === true, |
311 | handler: ({ account }) => this.unblockAccountByUser(account) | 306 | handler: ({ account }) => this.unblockAccountByUser(account) |
312 | }, | 307 | }, |
313 | { | 308 | { |
314 | label: this.i18n('Mute the instance'), | 309 | label: $localize`Mute the instance`, |
315 | description: this.i18n('Hide any content from that instance for you.'), | 310 | description: $localize`Hide any content from that instance for you.`, |
316 | isDisplayed: ({ account }) => !account.userId && account.mutedServerByInstance === false, | 311 | isDisplayed: ({ account }) => !account.userId && account.mutedServerByInstance === false, |
317 | handler: ({ account }) => this.blockServerByUser(account.host) | 312 | handler: ({ account }) => this.blockServerByUser(account.host) |
318 | }, | 313 | }, |
319 | { | 314 | { |
320 | label: this.i18n('Unmute the instance'), | 315 | label: $localize`Unmute the instance`, |
321 | description: this.i18n('Show back content from that instance for you.'), | 316 | description: $localize`Show back content from that instance for you.`, |
322 | isDisplayed: ({ account }) => !account.userId && account.mutedServerByInstance === true, | 317 | isDisplayed: ({ account }) => !account.userId && account.mutedServerByInstance === true, |
323 | handler: ({ account }) => this.unblockServerByUser(account.host) | 318 | handler: ({ account }) => this.unblockServerByUser(account.host) |
324 | }, | 319 | }, |
325 | { | 320 | { |
326 | label: this.i18n('Remove comments from your videos'), | 321 | label: $localize`Remove comments from your videos`, |
327 | description: this.i18n('Remove comments of this account from your videos.'), | 322 | description: $localize`Remove comments of this account from your videos.`, |
328 | handler: ({ account }) => this.bulkRemoveCommentsOf({ accountName: account.nameWithHost, scope: 'my-videos' }) | 323 | handler: ({ account }) => this.bulkRemoveCommentsOf({ accountName: account.nameWithHost, scope: 'my-videos' }) |
329 | } | 324 | } |
330 | ]) | 325 | ]) |
@@ -335,14 +330,14 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges { | |||
335 | if (authUser.hasRight(UserRight.MANAGE_ACCOUNTS_BLOCKLIST)) { | 330 | if (authUser.hasRight(UserRight.MANAGE_ACCOUNTS_BLOCKLIST)) { |
336 | instanceActions = instanceActions.concat([ | 331 | instanceActions = instanceActions.concat([ |
337 | { | 332 | { |
338 | label: this.i18n('Mute this account by your instance'), | 333 | label: $localize`Mute this account by your instance`, |
339 | description: this.i18n('Hide any content from that user for you, your instance and its users.'), | 334 | description: $localize`Hide any content from that user for you, your instance and its users.`, |
340 | isDisplayed: ({ account }) => account.mutedByInstance === false, | 335 | isDisplayed: ({ account }) => account.mutedByInstance === false, |
341 | handler: ({ account }) => this.blockAccountByInstance(account) | 336 | handler: ({ account }) => this.blockAccountByInstance(account) |
342 | }, | 337 | }, |
343 | { | 338 | { |
344 | label: this.i18n('Unmute this account by your instance'), | 339 | label: $localize`Unmute this account by your instance`, |
345 | description: this.i18n('Show back content from that user for you, your instance and its users.'), | 340 | description: $localize`Show back content from that user for you, your instance and its users.`, |
346 | isDisplayed: ({ account }) => account.mutedByInstance === true, | 341 | isDisplayed: ({ account }) => account.mutedByInstance === true, |
347 | handler: ({ account }) => this.unblockAccountByInstance(account) | 342 | handler: ({ account }) => this.unblockAccountByInstance(account) |
348 | } | 343 | } |
@@ -353,14 +348,14 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges { | |||
353 | if (authUser.hasRight(UserRight.MANAGE_SERVERS_BLOCKLIST)) { | 348 | if (authUser.hasRight(UserRight.MANAGE_SERVERS_BLOCKLIST)) { |
354 | instanceActions = instanceActions.concat([ | 349 | instanceActions = instanceActions.concat([ |
355 | { | 350 | { |
356 | label: this.i18n('Mute the instance by your instance'), | 351 | label: $localize`Mute the instance by your instance`, |
357 | description: this.i18n('Hide any content from that instance for you, your instance and its users.'), | 352 | description: $localize`Hide any content from that instance for you, your instance and its users.`, |
358 | isDisplayed: ({ account }) => !account.userId && account.mutedServerByInstance === false, | 353 | isDisplayed: ({ account }) => !account.userId && account.mutedServerByInstance === false, |
359 | handler: ({ account }) => this.blockServerByInstance(account.host) | 354 | handler: ({ account }) => this.blockServerByInstance(account.host) |
360 | }, | 355 | }, |
361 | { | 356 | { |
362 | label: this.i18n('Unmute the instance by your instance'), | 357 | label: $localize`Unmute the instance by your instance`, |
363 | description: this.i18n('Show back content from that instance for you, your instance and its users.'), | 358 | description: $localize`Show back content from that instance for you, your instance and its users.`, |
364 | isDisplayed: ({ account }) => !account.userId && account.mutedServerByInstance === true, | 359 | isDisplayed: ({ account }) => !account.userId && account.mutedServerByInstance === true, |
365 | handler: ({ account }) => this.unblockServerByInstance(account.host) | 360 | handler: ({ account }) => this.unblockServerByInstance(account.host) |
366 | } | 361 | } |
@@ -370,8 +365,8 @@ export class UserModerationDropdownComponent implements OnInit, OnChanges { | |||
370 | if (authUser.hasRight(UserRight.REMOVE_ANY_VIDEO_COMMENT)) { | 365 | if (authUser.hasRight(UserRight.REMOVE_ANY_VIDEO_COMMENT)) { |
371 | instanceActions = instanceActions.concat([ | 366 | instanceActions = instanceActions.concat([ |
372 | { | 367 | { |
373 | label: this.i18n('Remove comments from your instance'), | 368 | label: $localize`Remove comments from your instance`, |
374 | description: this.i18n('Remove comments of this account from your instance.'), | 369 | description: $localize`Remove comments of this account from your instance.`, |
375 | handler: ({ account }) => this.bulkRemoveCommentsOf({ accountName: account.nameWithHost, scope: 'instance' }) | 370 | handler: ({ account }) => this.bulkRemoveCommentsOf({ accountName: account.nameWithHost, scope: 'instance' }) |
376 | } | 371 | } |
377 | ]) | 372 | ]) |
diff --git a/client/src/app/shared/shared-moderation/video-block.component.ts b/client/src/app/shared/shared-moderation/video-block.component.ts index 054651e71..2bef9efdd 100644 --- a/client/src/app/shared/shared-moderation/video-block.component.ts +++ b/client/src/app/shared/shared-moderation/video-block.component.ts | |||
@@ -4,7 +4,6 @@ import { FormReactive, FormValidatorService, VideoBlockValidatorsService } from | |||
4 | import { Video } from '@app/shared/shared-main' | 4 | import { Video } from '@app/shared/shared-main' |
5 | import { NgbModal } from '@ng-bootstrap/ng-bootstrap' | 5 | import { NgbModal } from '@ng-bootstrap/ng-bootstrap' |
6 | import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' | 6 | import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' |
7 | import { I18n } from '@ngx-translate/i18n-polyfill' | ||
8 | import { VideoBlockService } from './video-block.service' | 7 | import { VideoBlockService } from './video-block.service' |
9 | 8 | ||
10 | @Component({ | 9 | @Component({ |
@@ -28,8 +27,7 @@ export class VideoBlockComponent extends FormReactive implements OnInit { | |||
28 | private modalService: NgbModal, | 27 | private modalService: NgbModal, |
29 | private videoBlockValidatorsService: VideoBlockValidatorsService, | 28 | private videoBlockValidatorsService: VideoBlockValidatorsService, |
30 | private videoBlocklistService: VideoBlockService, | 29 | private videoBlocklistService: VideoBlockService, |
31 | private notifier: Notifier, | 30 | private notifier: Notifier |
32 | private i18n: I18n | ||
33 | ) { | 31 | ) { |
34 | super() | 32 | super() |
35 | } | 33 | } |
@@ -59,7 +57,7 @@ export class VideoBlockComponent extends FormReactive implements OnInit { | |||
59 | this.videoBlocklistService.blockVideo(this.video.id, reason, unfederate) | 57 | this.videoBlocklistService.blockVideo(this.video.id, reason, unfederate) |
60 | .subscribe( | 58 | .subscribe( |
61 | () => { | 59 | () => { |
62 | this.notifier.success(this.i18n('Video blocked.')) | 60 | this.notifier.success($localize`Video blocked.`) |
63 | this.hide() | 61 | this.hide() |
64 | 62 | ||
65 | this.video.blacklisted = true | 63 | this.video.blacklisted = true |