mirror of
https://github.com/zammad/zammad
synced 2026-05-24 09:48:36 +00:00
37 lines
990 B
TypeScript
37 lines
990 B
TypeScript
// Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
|
|
|
|
import type { UserErrors, UserFieldError } from '@shared/types/error'
|
|
|
|
export default class UserError extends Error {
|
|
public errors: UserErrors
|
|
|
|
public generalErrors: ReadonlyArray<string>
|
|
|
|
public fieldErrors: ReadonlyArray<UserFieldError>
|
|
|
|
constructor(errors: UserErrors) {
|
|
super()
|
|
|
|
this.errors = errors
|
|
this.generalErrors = errors
|
|
.filter((error) => !error.field)
|
|
.map((error) => error.message)
|
|
this.fieldErrors = errors.filter(
|
|
(error) => error.field,
|
|
) as ReadonlyArray<UserFieldError>
|
|
|
|
// Set the prototype explicitly.
|
|
Object.setPrototypeOf(this, new.target.prototype)
|
|
}
|
|
|
|
public getFieldErrorList(): Record<string, string> {
|
|
return this.fieldErrors.reduce(
|
|
(fieldErrorList: Record<string, string>, fieldError) => {
|
|
fieldErrorList[fieldError.field] = fieldError.message
|
|
|
|
return fieldErrorList
|
|
},
|
|
{},
|
|
)
|
|
}
|
|
}
|