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[] }> {
return new Promise<{ accept: boolean; rejected: string[] }>(
async (resolve, reject) => {
const mediaFiles = this.mediaFiles(files);
if (!mediaFiles) {
resolve({
accept: true,
rejected: undefined
});
return;
}
let accept = true;
const rejected: string[] = [];
for (const file of files) {
for (const file of mediaFiles) {
const info = await MimeUtil.getMimeFromBlob(file);
// console.log('mime info', info);
if (

View File

@ -1140,41 +1140,35 @@ export class MessagesComponent implements OnInit, OnDestroy, AfterViewInit {
return;
}
const mediaFiles = this.commonApiService.mediaFiles(
const fakeMedia = await this.commonApiService.checkInvalidMediaMimeForFileTalk(
fileUploadItems.map(fui => fui.file)
);
if (!!mediaFiles) {
const fakeMedia = await this.commonApiService.checkInvalidMediaMimeForFileTalk(
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;
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;
}
for (const fileUploadItem of fileUploadItems) {

View File

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

View File

@ -4,7 +4,8 @@ import {
OnInit,
OnDestroy,
Inject,
ChangeDetectorRef
ChangeDetectorRef,
NgZone
} from '@angular/core';
import {
FormGroup,
@ -73,6 +74,7 @@ import {
import { TranslateService, TranslateParser } from '@ngx-translate/core';
import { environment } from '../../../../../environments/environment';
import { StringUtil } from '@ucap-webmessenger/core';
import { AppService } from '@app/services/app.service';
export interface CreateChatDialogData {
type?: string;
@ -124,44 +126,13 @@ export class CreateChatDialogComponent implements OnInit, OnDestroy {
private logger: NGXLogger,
private dialogService: DialogService,
private translateService: TranslateService,
private translateParser: TranslateParser,
private changeDetectorRef: ChangeDetectorRef
public appService: AppService,
private changeDetectorRef: ChangeDetectorRef,
private ngZone: NgZone
) {
this.sessionVerinfo = this.sessionStorageService.get<VersionInfo2Response>(
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;
@ -205,8 +176,6 @@ export class CreateChatDialogComponent implements OnInit, OnDestroy {
inputForm: FormGroup;
bannedWords: string[] = [];
groupTreeActivatedSubject = new BehaviorSubject<boolean>(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;
};
}

View File

@ -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<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) => {
try {
let deviceType: DeviceType;
@ -71,6 +111,6 @@ export class AppService {
}
});
return Promise.all([initPromise]);
return Promise.all([initPromise, bannedGroupNamesPromise]);
}
}