import { throwError as observableThrowError } from 'rxjs'
-import { Injectable } from '@angular/core'
+import { Inject, Injectable, LOCALE_ID } from '@angular/core'
import { Router } from '@angular/router'
-import { dateToHuman } from '@app/helpers'
-import { HttpStatusCode, ResultList } from '@shared/models'
+import { DateFormat, dateToHuman } from '@app/helpers'
import { logger } from '@root-helpers/logger'
+import { HttpStatusCode, ResultList } from '@shared/models'
+import { HttpHeaderResponse } from '@angular/common/http'
@Injectable()
export class RestExtractor {
- constructor (private router: Router) { }
+ constructor (
+ @Inject(LOCALE_ID) private localeId: string,
+ private router: Router
+ ) { }
applyToResultListData <T, A, U> (
result: ResultList<T>,
}
}
- convertResultListDateToHuman <T> (result: ResultList<T>, fieldsToConvert: string[] = [ 'createdAt' ]): ResultList<T> {
- return this.applyToResultListData(result, this.convertDateToHuman, [ fieldsToConvert ])
+ convertResultListDateToHuman <T> (
+ result: ResultList<T>,
+ fieldsToConvert: string[] = [ 'createdAt' ],
+ format?: DateFormat
+ ): ResultList<T> {
+ return this.applyToResultListData(result, this.convertDateToHuman, [ fieldsToConvert, format ])
}
- convertDateToHuman (target: any, fieldsToConvert: string[]) {
+ convertDateToHuman (target: any, fieldsToConvert: string[], format?: DateFormat) {
fieldsToConvert.forEach(field => {
- target[field] = dateToHuman(target[field])
+ if (!target[field]) return
+
+ target[field] = dateToHuman(this.localeId, new Date(target[field]), format)
})
return target
handleError (err: any) {
const errorMessage = this.buildErrorMessage(err)
- const errorObj: { message: string, status: string, body: string } = {
+ const errorObj: { message: string, status: string, body: string, headers: HttpHeaderResponse } = {
message: errorMessage,
status: undefined,
- body: undefined
+ body: undefined,
+ headers: err.headers
}
if (err.status) {