diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/chat/create-chat.dialog.component.html b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/chat/create-chat.dialog.component.html index 39ccb89a..3cbfa33e 100644 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/chat/create-chat.dialog.component.html +++ b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/chat/create-chat.dialog.component.html @@ -34,7 +34,8 @@ > {{ 'group.errors.bannedWords' - | translate: { bannedWords: bannedWords.join(',') } + | translate + : { bannedWords: appService.bannedGroupNames.join(',') } }} ( KEY_VER_INFO ); - - const banKeys: string[] = [ - 'group.nameFavorite', - 'group.nameMyDept', - 'group.nameDefault' - ]; - - const currentLang = this.translateService.currentLang; - const langs = ['ko', 'en']; - const translationObservables: Observable[] = []; - - langs.forEach(lang => { - translationObservables.push(this.translateService.getTranslation(lang)); - }); - - forkJoin(translationObservables) - .pipe(take(1)) - .subscribe( - translations => { - for (const translation of translations) { - banKeys.forEach(banKey => { - this.bannedWords.push( - this.translateParser.getValue(translation, banKey) - ); - }); - } - }, - error => {}, - () => { - this.translateService.use(currentLang); - } - ); } currentTabIndex: number; @@ -205,8 +176,6 @@ export class CreateChatDialogComponent implements OnInit, OnDestroy { inputForm: FormGroup; - bannedWords: string[] = []; - groupTreeActivatedSubject = new BehaviorSubject(false); ngOnInit() { @@ -356,7 +325,10 @@ export class CreateChatDialogComponent implements OnInit, OnDestroy { return null; } const ban = - -1 < this.bannedWords.indexOf((control.value as string).trim()); + -1 < + this.appService.bannedGroupNames.indexOf( + (control.value as string).trim() + ); return ban ? { groupNameBanned: { value: control.value } } : null; }; } diff --git a/projects/ucap-webmessenger-app/src/app/services/app.service.ts b/projects/ucap-webmessenger-app/src/app/services/app.service.ts index 3b62e016..7097b7ae 100644 --- a/projects/ucap-webmessenger-app/src/app/services/app.service.ts +++ b/projects/ucap-webmessenger-app/src/app/services/app.service.ts @@ -7,20 +7,25 @@ import { NativeService, UCAP_NATIVE_SERVICE } from '@ucap-webmessenger/native'; import { AppNativeService } from './native.service'; import { TranslateService as UCapTranslateService } from '@ucap-webmessenger/ui'; import { DateService as UCapDateService } from '@ucap-webmessenger/ui'; -import { TranslateService } from '@ngx-translate/core'; +import { TranslateService, TranslateParser } from '@ngx-translate/core'; import { EnviromentsService } from '@ucap-webmessenger/enviroments'; import { NGXLogger, NgxLoggerLevel } from 'ngx-logger'; import { environment } from '../../environments/environment'; +import { Observable, forkJoin } from 'rxjs'; +import { take } from 'rxjs/operators'; @Injectable() export class AppService { + bannedGroupNames: string[] = []; + constructor( private enviromentsService: EnviromentsService, private sessionStorageService: SessionStorageService, private appNotificationService: AppNotificationService, private appNativeService: AppNativeService, private translateService: TranslateService, + private translateParser: TranslateParser, private ucapTranslateService: UCapTranslateService, private ucapDateService: UCapDateService, @Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService, @@ -42,6 +47,41 @@ export class AppService { } public postInit(): Promise { + const bannedGroupNamesPromise = new Promise((resolve, reject) => { + const banKeys: string[] = [ + 'group.nameFavorite', + 'group.nameMyDept', + 'group.nameDefault' + ]; + + const currentLang = this.translateService.currentLang; + const langs = ['ko', 'en']; + const translationObservables: Observable[] = []; + + langs.forEach(lang => { + translationObservables.push(this.translateService.getTranslation(lang)); + }); + + forkJoin(translationObservables) + .pipe(take(1)) + .subscribe( + translations => { + for (const translation of translations) { + banKeys.forEach(banKey => { + this.bannedGroupNames.push( + this.translateParser.getValue(translation, banKey) + ); + }); + } + }, + error => {}, + () => { + this.translateService.use(currentLang); + resolve(); + } + ); + }); + const initPromise = new Promise((resolve, reject) => { try { let deviceType: DeviceType; @@ -71,6 +111,6 @@ export class AppService { } }); - return Promise.all([initPromise]); + return Promise.all([initPromise, bannedGroupNamesPromise]); } }