1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-11-27 12:36:14 +01:00

format multiple error messages when validating

This commit is contained in:
Kyle Spearrin 2018-08-02 08:46:08 -04:00
parent 6f64c5cb5a
commit 49d3f22704

View File

@ -1,12 +1,21 @@
import { Injectable } from '@angular/core';
import {
Injectable,
SecurityContext,
} from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { ToasterService } from 'angular2-toaster';
import {
BodyOutputType,
Toast,
ToasterService,
} from 'angular2-toaster';
import { I18nService } from '../../abstractions/i18n.service';
@Injectable()
export class ValidationService {
constructor(private toasterService: ToasterService, private i18nService: I18nService) { }
constructor(private toasterService: ToasterService, private i18nService: I18nService,
private sanitizer: DomSanitizer) { }
showError(data: any): string[] {
const defaultErrorMessage = this.i18nService.t('unexpectedError');
@ -25,13 +34,29 @@ export class ValidationService {
}
data.validationErrors[key].forEach((item: string) => {
errors.push(item);
let prefix = '';
if (key.indexOf('[') > -1 && key.indexOf(']') > -1) {
const lastSep = key.lastIndexOf('.');
prefix = key.substr(0, lastSep > -1 ? lastSep : key.length) + ': ';
}
errors.push(prefix + item);
});
}
}
if (errors.length > 0) {
if (errors.length === 1) {
this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'), errors[0]);
} else if (errors.length > 1) {
let errorMessage = '';
errors.forEach((e) => errorMessage += ('<p>' + this.sanitizer.sanitize(SecurityContext.HTML, e) + '</p>'));
const toast: Toast = {
type: 'error',
title: this.i18nService.t('errorOccurred'),
body: errorMessage,
bodyOutputType: BodyOutputType.TrustedHtml,
timeout: 5000 * errors.length,
};
this.toasterService.popAsync(toast);
}
return errors;