notificatiosn error handling

This commit is contained in:
Henry Jameson 2026-06-22 20:18:59 +03:00
commit f8a8951233
2 changed files with 14 additions and 17 deletions

View file

@ -13,9 +13,10 @@ function humanizeErrors(errors) {
export function StatusCodeError(statusCode, body, options, response) {
this.name = 'StatusCodeError'
this.statusCode = statusCode
this.statusText = body.error.error || body.error
this.details = JSON && JSON.stringify ? JSON.stringify(body) : body
this.errorData = body.error
this.message = statusCode + ' - ' + body.error.error || body.error
this.message = statusCode + ' - ' + statusText
this.error = body // legacy attribute
this.options = options
this.response = response

View file

@ -83,27 +83,23 @@ const fetchAndUpdate = ({ store, credentials, older = false, sinceId }) => {
const fetchNotifications = ({ store, args, older }) => {
return fetchTimeline(args)
.then((response) => {
if (response.errors) {
if (
response.status === 400 &&
response.statusText.includes('Invalid value for enum')
) {
response.statusText
.matchAll(/(\w+) - Invalid value for enum./g)
.toArray()
.map((x) => x[1])
.forEach((x) => mastoApiNotificationTypes.delete(x))
return fetchNotifications({ store, args, older })
} else {
throw new Error(`${response.status} ${response.statusText}`)
}
}
const notifications = response.data
update({ store, notifications, older })
return notifications
})
.catch((error) => {
if (
error.statusCode === 400 &&
error.statusText.includes('Invalid value for enum')
) {
error.statusText
.matchAll(/(\w+) - Invalid value for enum./g)
.toArray()
.map((x) => x[1])
.forEach((x) => mastoApiNotificationTypes.delete(x))
return fetchNotifications({ store, args, older })
}
useInterfaceStore().pushGlobalNotice({
level: 'error',
messageKey: 'notifications.error',