+import { HttpErrorResponse } from '@angular/common/http'
import { Injectable } from '@angular/core'
+import { dateToHuman } from '@app/shared/misc/utils'
import { Observable } from 'rxjs/Observable'
-import { HttpErrorResponse } from '@angular/common/http'
-
-import { Utils } from '../utils'
import { ResultList } from '../../../../../shared'
@Injectable()
const data: T[] = result.data
const newData: T[] = []
- data.forEach(d => newData.push(fun.call(this, d, additionalArgs)))
+ data.forEach(d => newData.push(fun.apply(this, [ d ].concat(additionalArgs))))
return {
total: result.total,
}
convertDateToHuman (target: object, fieldsToConvert: string[]) {
- const source = {}
- fieldsToConvert.forEach(field => {
- source[field] = Utils.dateToHuman(target[field])
- })
+ fieldsToConvert.forEach(field => target[field] = dateToHuman(target[field]))
- return Object.assign(target, source)
+ return target
}
handleError (err: HttpErrorResponse) {
errorMessage = err.error.message
console.error('An error occurred:', errorMessage)
} else if (err.status !== undefined) {
- // The backend returned an unsuccessful response code.
- // The response body may contain clues as to what went wrong,
- errorMessage = err.error
+ // A server-side error occurred.
+ if (err.error) {
+ if (err.error.errors) {
+ const errors = err.error.errors
+ const errorsArray: string[] = []
+
+ Object.keys(errors).forEach(key => {
+ errorsArray.push(errors[key].msg)
+ })
+
+ errorMessage = errorsArray.join('. ')
+ } else if (err.error.error) {
+ errorMessage = err.error.error
+ }
+ } else if (err.status === 413) {
+ errorMessage = 'Request is too large for the server. Please contact you administrator if you want to increase the limit size.'
+ }
+
+ errorMessage = errorMessage ? errorMessage : 'Unknown error.'
console.error(`Backend returned code ${err.status}, body was: ${errorMessage}`)
} else {
errorMessage = err
}
- return Observable.throw(errorMessage)
+ const errorObj = {
+ message: errorMessage,
+ status: undefined,
+ body: undefined
+ }
+
+ if (err.status) {
+ errorObj.status = err.status
+ errorObj.body = err.error
+ }
+
+ return Observable.throw(errorObj)
}
}