@swan-io/shared-business 2.7.35 → 2.7.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swan-io/shared-business",
3
- "version": "2.7.35",
3
+ "version": "2.7.36",
4
4
  "engines": {
5
5
  "node": ">=18.0.0",
6
6
  "yarn": "^1.22.0"
@@ -41,6 +41,7 @@
41
41
  "react-ux-form": "^1.5.0",
42
42
  "rifm": "^0.12.1",
43
43
  "ts-pattern": "^5.0.5",
44
+ "urql": "^4.0.5",
44
45
  "uuid": "^9.0.1"
45
46
  },
46
47
  "devDependencies": {
@@ -103,6 +103,7 @@
103
103
  "datePicker.month.november": "November",
104
104
  "datePicker.month.october": "Oktober",
105
105
  "datePicker.month.september": "September",
106
+ "error.generic": "Es ist ein Fehler aufgetreten",
106
107
  "error.network.500": "Interner Serverfehler",
107
108
  "error.network.503": "Dienst nicht verfügbar",
108
109
  "error.requiredField": "Das ist ein Pflichtfeld",
@@ -265,4 +266,4 @@
265
266
  "uploadArea.noValue": "Keine Datei",
266
267
  "uploadArea.unknownFileName": "unbekannter Dateiname",
267
268
  "uploadArea.uploading": "Hochladen…"
268
- }
269
+ }
@@ -103,6 +103,7 @@
103
103
  "datePicker.month.november": "November",
104
104
  "datePicker.month.october": "October",
105
105
  "datePicker.month.september": "September",
106
+ "error.generic": "An error occurred",
106
107
  "error.network.500": "Internal server error",
107
108
  "error.network.503": "Service unavailable",
108
109
  "error.requiredField": "This field is required",
@@ -265,4 +266,4 @@
265
266
  "uploadArea.noValue": "No file",
266
267
  "uploadArea.unknownFileName": "unknown filename",
267
268
  "uploadArea.uploading": "Uploading…"
268
- }
269
+ }
@@ -103,6 +103,7 @@
103
103
  "datePicker.month.november": "Noviembre",
104
104
  "datePicker.month.october": "Octubre",
105
105
  "datePicker.month.september": "Septiembre",
106
+ "error.generic": "Ha ocurrido un error",
106
107
  "error.network.500": "Error de servidor interno",
107
108
  "error.network.503": "Servicio no disponible",
108
109
  "error.requiredField": "Este campo es obligatorio",
@@ -265,4 +266,4 @@
265
266
  "uploadArea.noValue": "No hay ningún archivo",
266
267
  "uploadArea.unknownFileName": "nombre de archivo desconocido",
267
268
  "uploadArea.uploading": "Subiendo…"
268
- }
269
+ }
@@ -103,6 +103,7 @@
103
103
  "datePicker.month.november": "Novembre",
104
104
  "datePicker.month.october": "Octobre",
105
105
  "datePicker.month.september": "Septembre",
106
+ "error.generic": "Une erreur est survenue",
106
107
  "error.network.500": "Erreur de serveur interne",
107
108
  "error.network.503": "Service indisponible",
108
109
  "error.requiredField": "Ce champ est requis",
@@ -265,4 +266,4 @@
265
266
  "uploadArea.noValue": "Aucun fichier",
266
267
  "uploadArea.unknownFileName": "nom du fichier inconnu",
267
268
  "uploadArea.uploading": "téléchargement…"
268
- }
269
+ }
@@ -103,6 +103,7 @@
103
103
  "datePicker.month.november": "Novembre",
104
104
  "datePicker.month.october": "Ottobre",
105
105
  "datePicker.month.september": "Settembre",
106
+ "error.generic": "Si è verificato un errore",
106
107
  "error.network.500": "Errore interno del server",
107
108
  "error.network.503": "Servizio non disponibile",
108
109
  "error.requiredField": "Questo campo è obbligatorio",
@@ -265,4 +266,4 @@
265
266
  "uploadArea.noValue": "Nessun file",
266
267
  "uploadArea.unknownFileName": "nome del file sconosciuto",
267
268
  "uploadArea.uploading": "Caricamento…"
268
- }
269
+ }
@@ -103,6 +103,7 @@
103
103
  "datePicker.month.november": "November",
104
104
  "datePicker.month.october": "Oktober",
105
105
  "datePicker.month.september": "September",
106
+ "error.generic": "Er is een fout opgetreden",
106
107
  "error.network.500": "Interne Server Fout",
107
108
  "error.network.503": "Dienst niet beschikbaar",
108
109
  "error.requiredField": "Dit veld is verplicht",
@@ -265,4 +266,4 @@
265
266
  "uploadArea.noValue": "Geen bestand",
266
267
  "uploadArea.unknownFileName": "onbekende bestandsnaam",
267
268
  "uploadArea.uploading": "Bezig met uploaden…"
268
- }
269
+ }
@@ -103,6 +103,7 @@
103
103
  "datePicker.month.november": "Novembro",
104
104
  "datePicker.month.october": "Outubro",
105
105
  "datePicker.month.september": "Setembro",
106
+ "error.generic": "Ocorreu um erro",
106
107
  "error.network.500": "Erro interno do servidor",
107
108
  "error.network.503": "Serviço indisponível",
108
109
  "error.requiredField": "Este campo é obrigatório",
@@ -265,4 +266,4 @@
265
266
  "uploadArea.noValue": "Nenhum ficheiro",
266
267
  "uploadArea.unknownFileName": "nome do ficheiro desconhecido",
267
268
  "uploadArea.uploading": "Carregando…"
268
- }
269
+ }
@@ -19,4 +19,5 @@ export declare const locale: Locale;
19
19
  export declare const t: (key: TranslationKey, params?: TranslationParams) => string;
20
20
  export declare const formatNestedMessage: (key: TranslationKey, params: Record<string, string | number | ReactElement<any, string | import("react").JSXElementConstructor<any>> | ((children: ReactNode) => ReactNode)>) => (string | ReactElement<any, string | import("react").JSXElementConstructor<any>>)[];
21
21
  export declare const rifmDateProps: RifmProps;
22
+ export declare const translateError: (error: unknown) => string;
22
23
  export {};
package/src/utils/i18n.js CHANGED
@@ -13,6 +13,8 @@ import localizedFormat from "dayjs/plugin/localizedFormat";
13
13
  import relativeTime from "dayjs/plugin/relativeTime";
14
14
  import utc from "dayjs/plugin/utc";
15
15
  import { cloneElement, isValidElement } from "react";
16
+ import { P, match } from "ts-pattern";
17
+ import { CombinedError } from "urql";
16
18
  import translationDE from "../locales/de.json";
17
19
  import translationEN from "../locales/en.json";
18
20
  import translationES from "../locales/es.json";
@@ -113,3 +115,17 @@ export const rifmDateProps = getRifmProps({
113
115
  charMap: { 2: "/", 4: "/" },
114
116
  maxLength: 8,
115
117
  });
118
+ const translationKeys = Object.keys(translationEN);
119
+ const isTranslationKey = (key) => translationKeys.includes(key);
120
+ export const translateError = (error) => {
121
+ const key = match(error)
122
+ .returnType()
123
+ .with({ __typename: P.select(P.string) }, __typename => `rejection.${__typename}`)
124
+ .with(P.string, __typename => `rejection.${__typename}`)
125
+ .with(P.instanceOf(CombinedError), ({ response }) => match(response)
126
+ .with({ response: { status: P.select(P.number) } }, status => `error.network.${status}`)
127
+ .otherwise(() => "error.generic"))
128
+ .with(P.instanceOf(Error), ({ message }) => `rejection.${message}`)
129
+ .otherwise(() => "error.generic");
130
+ return t(isTranslationKey(key) ? key : "error.generic");
131
+ };