]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - client/src/app/shared/forms/form-validators/custom-config-validators.service.ts
First implem global search
[github/Chocobozzz/PeerTube.git] / client / src / app / shared / forms / form-validators / custom-config-validators.service.ts
CommitLineData
e309822b
C
1import { Validators } from '@angular/forms'
2import { I18n } from '@ngx-translate/i18n-polyfill'
3import { BuildFormValidator } from '@app/shared'
4import { Injectable } from '@angular/core'
5
6@Injectable()
7export class CustomConfigValidatorsService {
8 readonly INSTANCE_NAME: BuildFormValidator
9 readonly INSTANCE_SHORT_DESCRIPTION: BuildFormValidator
10 readonly SERVICES_TWITTER_USERNAME: BuildFormValidator
11 readonly CACHE_PREVIEWS_SIZE: BuildFormValidator
40e87e9e 12 readonly CACHE_CAPTIONS_SIZE: BuildFormValidator
e309822b
C
13 readonly SIGNUP_LIMIT: BuildFormValidator
14 readonly ADMIN_EMAIL: BuildFormValidator
15 readonly TRANSCODING_THREADS: BuildFormValidator
e1b49ee5 16 readonly INDEX_URL: BuildFormValidator
5fb2e288 17 readonly SEARCH_INDEX_URL: BuildFormValidator
e309822b
C
18
19 constructor (private i18n: I18n) {
20 this.INSTANCE_NAME = {
21 VALIDATORS: [ Validators.required ],
22 MESSAGES: {
23 'required': this.i18n('Instance name is required.')
24 }
25 }
26
27 this.INSTANCE_SHORT_DESCRIPTION = {
28 VALIDATORS: [ Validators.max(250) ],
29 MESSAGES: {
30 'max': this.i18n('Short description should not be longer than 250 characters.')
31 }
32 }
33
34 this.SERVICES_TWITTER_USERNAME = {
35 VALIDATORS: [ Validators.required ],
36 MESSAGES: {
37 'required': this.i18n('Twitter username is required.')
38 }
39 }
40
41 this.CACHE_PREVIEWS_SIZE = {
42 VALIDATORS: [ Validators.required, Validators.min(1), Validators.pattern('[0-9]+') ],
43 MESSAGES: {
44 'required': this.i18n('Previews cache size is required.'),
45 'min': this.i18n('Previews cache size must be greater than 1.'),
46 'pattern': this.i18n('Previews cache size must be a number.')
47 }
48 }
49
40e87e9e
C
50 this.CACHE_CAPTIONS_SIZE = {
51 VALIDATORS: [ Validators.required, Validators.min(1), Validators.pattern('[0-9]+') ],
52 MESSAGES: {
53 'required': this.i18n('Captions cache size is required.'),
54 'min': this.i18n('Captions cache size must be greater than 1.'),
55 'pattern': this.i18n('Captions cache size must be a number.')
56 }
57 }
58
e309822b 59 this.SIGNUP_LIMIT = {
e40afb5b 60 VALIDATORS: [ Validators.required, Validators.min(-1), Validators.pattern('-?[0-9]+') ],
e309822b
C
61 MESSAGES: {
62 'required': this.i18n('Signup limit is required.'),
63 'min': this.i18n('Signup limit must be greater than 1.'),
64 'pattern': this.i18n('Signup limit must be a number.')
65 }
66 }
67
68 this.ADMIN_EMAIL = {
69 VALIDATORS: [ Validators.required, Validators.email ],
70 MESSAGES: {
71 'required': this.i18n('Admin email is required.'),
72 'email': this.i18n('Admin email must be valid.')
73 }
74 }
75
76 this.TRANSCODING_THREADS = {
9e912376 77 VALIDATORS: [ Validators.required, Validators.min(0) ],
e309822b
C
78 MESSAGES: {
79 'required': this.i18n('Transcoding threads is required.'),
9e912376 80 'min': this.i18n('Transcoding threads must be greater or equal to 0.')
e309822b
C
81 }
82 }
e1b49ee5
C
83
84 this.INDEX_URL = {
92128fff 85 VALIDATORS: [ Validators.pattern(/^https:\/\//) ],
e1b49ee5 86 MESSAGES: {
e1b49ee5
C
87 'pattern': this.i18n('Index URL should be a URL')
88 }
89 }
5fb2e288
C
90
91 this.SEARCH_INDEX_URL = {
92 VALIDATORS: [ Validators.pattern(/^https?:\/\//) ],
93 MESSAGES: {
94 'pattern': this.i18n('Search index URL should be a URL')
95 }
96 }
e309822b
C
97 }
98}