This commit is contained in:
leejinho 2020-02-14 17:28:47 +09:00
commit 3f43eb802a
5 changed files with 90 additions and 74 deletions

View File

@ -228,9 +228,18 @@ export class CommonApiService {
): Promise<{ accept: boolean; rejected: string[] }> { ): Promise<{ accept: boolean; rejected: string[] }> {
return new Promise<{ accept: boolean; rejected: string[] }>( return new Promise<{ accept: boolean; rejected: string[] }>(
async (resolve, reject) => { async (resolve, reject) => {
const mediaFiles = this.mediaFiles(files);
if (!mediaFiles) {
resolve({
accept: true,
rejected: undefined
});
return;
}
let accept = true; let accept = true;
const rejected: string[] = []; const rejected: string[] = [];
for (const file of files) { for (const file of mediaFiles) {
const info = await MimeUtil.getMimeFromBlob(file); const info = await MimeUtil.getMimeFromBlob(file);
// console.log('mime info', info); // console.log('mime info', info);
if ( if (

View File

@ -1140,41 +1140,35 @@ export class MessagesComponent implements OnInit, OnDestroy, AfterViewInit {
return; return;
} }
const mediaFiles = this.commonApiService.mediaFiles( const fakeMedia = await this.commonApiService.checkInvalidMediaMimeForFileTalk(
fileUploadItems.map(fui => fui.file) fileUploadItems.map(fui => fui.file)
); );
if (!fakeMedia.accept) {
if (!!mediaFiles) { if (!!this.fileUploadQueue) {
const fakeMedia = await this.commonApiService.checkInvalidMediaMimeForFileTalk( this.fileUploadQueue.onUploadComplete();
fileUploadItems.map(fui => fui.file)
);
if (!fakeMedia.accept) {
if (!!this.fileUploadQueue) {
this.fileUploadQueue.onUploadComplete();
}
this.snackBarService.openFromComponent<
AlertSnackbarComponent,
AlertSnackbarData
>(AlertSnackbarComponent, {
duration: 3000,
verticalPosition: 'bottom',
horizontalPosition: 'center',
data: {
html: this.translateService.instant(
'common.file.errors.notAcceptableMime',
{
supporedType:
fakeMedia.rejected.length > 0
? fakeMedia.rejected.join(',')
: ''
}
)
}
});
return;
} }
this.snackBarService.openFromComponent<
AlertSnackbarComponent,
AlertSnackbarData
>(AlertSnackbarComponent, {
duration: 3000,
verticalPosition: 'bottom',
horizontalPosition: 'center',
data: {
html: this.translateService.instant(
'common.file.errors.notAcceptableMime',
{
supporedType:
fakeMedia.rejected.length > 0
? fakeMedia.rejected.join(',')
: ''
}
)
}
});
return;
} }
for (const fileUploadItem of fileUploadItems) { for (const fileUploadItem of fileUploadItems) {

View File

@ -34,7 +34,8 @@
> >
{{ {{
'group.errors.bannedWords' 'group.errors.bannedWords'
| translate: { bannedWords: bannedWords.join(',') } | translate
: { bannedWords: appService.bannedGroupNames.join(',') }
}} }}
</mat-error> </mat-error>
<mat-error <mat-error

View File

@ -4,7 +4,8 @@ import {
OnInit, OnInit,
OnDestroy, OnDestroy,
Inject, Inject,
ChangeDetectorRef ChangeDetectorRef,
NgZone
} from '@angular/core'; } from '@angular/core';
import { import {
FormGroup, FormGroup,
@ -73,6 +74,7 @@ import {
import { TranslateService, TranslateParser } from '@ngx-translate/core'; import { TranslateService, TranslateParser } from '@ngx-translate/core';
import { environment } from '../../../../../environments/environment'; import { environment } from '../../../../../environments/environment';
import { StringUtil } from '@ucap-webmessenger/core'; import { StringUtil } from '@ucap-webmessenger/core';
import { AppService } from '@app/services/app.service';
export interface CreateChatDialogData { export interface CreateChatDialogData {
type?: string; type?: string;
@ -124,44 +126,13 @@ export class CreateChatDialogComponent implements OnInit, OnDestroy {
private logger: NGXLogger, private logger: NGXLogger,
private dialogService: DialogService, private dialogService: DialogService,
private translateService: TranslateService, private translateService: TranslateService,
private translateParser: TranslateParser, public appService: AppService,
private changeDetectorRef: ChangeDetectorRef private changeDetectorRef: ChangeDetectorRef,
private ngZone: NgZone
) { ) {
this.sessionVerinfo = this.sessionStorageService.get<VersionInfo2Response>( this.sessionVerinfo = this.sessionStorageService.get<VersionInfo2Response>(
KEY_VER_INFO KEY_VER_INFO
); );
const banKeys: string[] = [
'group.nameFavorite',
'group.nameMyDept',
'group.nameDefault'
];
const currentLang = this.translateService.currentLang;
const langs = ['ko', 'en'];
const translationObservables: Observable<any>[] = [];
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; currentTabIndex: number;
@ -205,8 +176,6 @@ export class CreateChatDialogComponent implements OnInit, OnDestroy {
inputForm: FormGroup; inputForm: FormGroup;
bannedWords: string[] = [];
groupTreeActivatedSubject = new BehaviorSubject<boolean>(false); groupTreeActivatedSubject = new BehaviorSubject<boolean>(false);
ngOnInit() { ngOnInit() {
@ -356,7 +325,10 @@ export class CreateChatDialogComponent implements OnInit, OnDestroy {
return null; return null;
} }
const ban = 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; return ban ? { groupNameBanned: { value: control.value } } : null;
}; };
} }

View File

@ -7,20 +7,25 @@ import { NativeService, UCAP_NATIVE_SERVICE } from '@ucap-webmessenger/native';
import { AppNativeService } from './native.service'; import { AppNativeService } from './native.service';
import { TranslateService as UCapTranslateService } from '@ucap-webmessenger/ui'; import { TranslateService as UCapTranslateService } from '@ucap-webmessenger/ui';
import { DateService as UCapDateService } 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 { EnviromentsService } from '@ucap-webmessenger/enviroments';
import { NGXLogger, NgxLoggerLevel } from 'ngx-logger'; import { NGXLogger, NgxLoggerLevel } from 'ngx-logger';
import { environment } from '../../environments/environment'; import { environment } from '../../environments/environment';
import { Observable, forkJoin } from 'rxjs';
import { take } from 'rxjs/operators';
@Injectable() @Injectable()
export class AppService { export class AppService {
bannedGroupNames: string[] = [];
constructor( constructor(
private enviromentsService: EnviromentsService, private enviromentsService: EnviromentsService,
private sessionStorageService: SessionStorageService, private sessionStorageService: SessionStorageService,
private appNotificationService: AppNotificationService, private appNotificationService: AppNotificationService,
private appNativeService: AppNativeService, private appNativeService: AppNativeService,
private translateService: TranslateService, private translateService: TranslateService,
private translateParser: TranslateParser,
private ucapTranslateService: UCapTranslateService, private ucapTranslateService: UCapTranslateService,
private ucapDateService: UCapDateService, private ucapDateService: UCapDateService,
@Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService, @Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService,
@ -42,6 +47,41 @@ export class AppService {
} }
public postInit(): Promise<any> { public postInit(): Promise<any> {
const bannedGroupNamesPromise = new Promise<void>((resolve, reject) => {
const banKeys: string[] = [
'group.nameFavorite',
'group.nameMyDept',
'group.nameDefault'
];
const currentLang = this.translateService.currentLang;
const langs = ['ko', 'en'];
const translationObservables: Observable<any>[] = [];
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<void>((resolve, reject) => { const initPromise = new Promise<void>((resolve, reject) => {
try { try {
let deviceType: DeviceType; let deviceType: DeviceType;
@ -71,6 +111,6 @@ export class AppService {
} }
}); });
return Promise.all([initPromise]); return Promise.all([initPromise, bannedGroupNamesPromise]);
} }
} }