Skip to content

Commit

Permalink
Update api error handling (#1626)
Browse files Browse the repository at this point in the history
* implement error handling changes

* whoops missed one

* lingui extract

* lingui extract

* resolve linting

* fix TS error

* lingui extract

* lingui extract

* fix package version

* fix package versions

* update create folder modal error

* lingui extract

* lingui extract

* revert change from preview branch

* lingui extract

* make error handling safer

* update comment for consistency

* more safety added

* fix linting

Co-authored-by: GitHub Actions <actions@github.com>
Co-authored-by: Thibaut Sardan <33178835+Tbaut@users.noreply.github.com>
  • Loading branch information
3 people authored Oct 18, 2021
1 parent a3ad4c8 commit d23d305
Show file tree
Hide file tree
Showing 20 changed files with 87 additions and 90 deletions.
2 changes: 1 addition & 1 deletion packages/files-ui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"@babel/core": "^7.12.10",
"@babel/runtime": "^7.0.0",
"@chainsafe/browser-storage-hooks": "^1.0.1",
"@chainsafe/files-api-client": "^1.18.11",
"@chainsafe/files-api-client": "1.18.15",
"@chainsafe/web3-context": "1.1.4",
"@lingui/core": "^3.7.2",
"@lingui/react": "^3.7.2",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,12 +99,12 @@ const CreateFolderModal = ({ modalOpen, close }: ICreateFolderModalProps) => {
setCreatingFolder(false)
helpers.resetForm()
onCancel()
} catch (errors: any) {
} catch (error: any) {
setCreatingFolder(false)
if (errors[0].message.includes("Entry with such name can")) {
if (error?.error?.code === 409) {
helpers.setFieldError("name", t`Folder name is already in use`)
} else {
helpers.setFieldError("name", errors[0].message)
helpers.setFieldError("name", t`There was an error creating the folder ${error?.message}`)
}
helpers.setSubmitting(false)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,12 +102,8 @@ const UploadFileModule = ({ modalOpen, close }: IUploadFileModuleProps) => {
})
refreshContents && refreshContents()
helpers.resetForm()
} catch (errors: any) {
if (errors[0].message.includes("conflict with existing")) {
helpers.setFieldError("files", "File/Folder exists")
} else {
helpers.setFieldError("files", errors[0].message)
}
} catch (error: any) {
console.error(error)
}
helpers.setSubmitting(false)
}, [close, currentPath, uploadFiles, refreshContents, bucket])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -205,27 +205,23 @@ const InitialScreen = ({ className }: IInitialScreen) => {
setLoginMode(loginType)
try {
await login(loginType)
} catch (error) {
} catch (error: any) {
let errorMessage = t`There was an error authenticating`
console.log(error)

if (Array.isArray(error) && error[0]) {
if (
error[0].type === "signature" &&
error[0].message === "Invalid signature"
) {
errorMessage = t`Failed to validate signature.
// Invalid signature, or contract wallet not deployed
if (error?.error?.code === 403 && error?.error?.message?.includes("Invalid signature")) {
errorMessage = t`Failed to validate signature.
If you are using a contract wallet, please make
sure you have activated your wallet.`
}
}

// WalletConnect be sassy
if ((error instanceof Error && error.message === "Just nope") || ((error as any).code === 4001)) {
// User rejected the signature request (WalletConnect be sassy)
if (error?.message === "Just nope" || error?.code === 4001) {
errorMessage = t`Failed to get signature`
}

if (error instanceof Error && error?.message === "user closed popup") {
// DirectAuth popup was closed
if (error?.message === "user closed popup") {
errorMessage = t`The authentication popup was closed`
}

Expand Down
7 changes: 4 additions & 3 deletions packages/files-ui/src/Contexts/FilesContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -418,13 +418,12 @@ const FilesProvider = ({ children }: FilesContextProps) => {
setUploadsInProgress(false)
// setting error
let errorMessage = t`Something went wrong. We couldn't upload your file`

// uploads cancelled through button
if (axios.isCancel(error)) {
errorMessage = t`Uploads cancelled`
}
// we will need a method to parse server errors
if (Array.isArray(error) && error[0].message.includes("conflict")) {
if (error?.error?.code === 409) {
errorMessage = t`A file with the same name already exists`
}
updateToast(toastId, {
Expand Down Expand Up @@ -663,7 +662,7 @@ const FilesProvider = ({ children }: FilesContextProps) => {
return Promise.resolve()
} catch (error: any) {
console.error(error)
let errorMessage = `${t`An error occurred: `} ${typeof(error) === "string" ? error : error.length ? error[0].message : ""}`
let errorMessage = `${t`An error occurred: `} ${typeof(error) === "string" ? error : error.error.message ? error.error.message : ""}`
if (axios.isCancel(error)) {
errorMessage = t`Downloads cancelled`
}
Expand Down Expand Up @@ -868,6 +867,8 @@ const FilesProvider = ({ children }: FilesContextProps) => {
}
}).catch((error) => {
console.error(error)
}).finally(() => {
refreshBuckets()
})
}, [getFileContent, encryptAndUploadFiles, filesApiClient, refreshBuckets, addToast, updateToast, getFileList])

Expand Down
13 changes: 8 additions & 5 deletions packages/files-ui/src/Contexts/UserContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { useCallback, useEffect } from "react"
import { useFilesApi } from "./FilesApiContext"
import { useState } from "react"
import { t } from "@lingui/macro"
import { Details } from "@chainsafe/files-api-client"

type UserContextProps = {
children: React.ReactNode | React.ReactNode[]
Expand Down Expand Up @@ -133,10 +134,11 @@ const UserProvider = ({ children }: UserContextProps) => {
})
return Promise.resolve()
} catch (error: any) {
console.error(error)
return Promise.reject(
Array.isArray(error) && error[0]
? error[0].message
: "There was an error updating profile."
Array.isArray(error.error.details)
? error.error.details.map((e: Details) => e.message).join(",")
: t`There was an error when setting username.`
)
}
}
Expand All @@ -160,9 +162,10 @@ const UserProvider = ({ children }: UserContextProps) => {
})
return Promise.resolve()
} catch (error: any) {
console.error(error)
return Promise.reject(
Array.isArray(error) && error[0]
? error[0].message
Array.isArray(error.error.details)
? error.error.details.map((e: Details) => e.message).join(",")
: t`There was an error when setting username.`
)
}
Expand Down
7 changes: 5 additions & 2 deletions packages/files-ui/src/locales/de/messages.po
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ msgid "Create"
msgstr "Erstellen"

msgid "Create Folder"
msgstr "Ordner erstellen"
msgstr ""

msgid "Create Shared Folder"
msgstr ""
Expand Down Expand Up @@ -446,7 +446,7 @@ msgid "Number of copies (Replication Factor)"
msgstr "Anzahl der Kopien (Replikationsfaktor)"

msgid "OK"
msgstr "OK"
msgstr ""

msgid "One sec, getting files ready…"
msgstr "Eine Sekunde, die Dateien werden vorbereitet …"
Expand Down Expand Up @@ -715,6 +715,9 @@ msgstr "Es gab einen Fehler bei der Authentifizierung"
msgid "There was an error connecting your wallet"
msgstr ""

msgid "There was an error creating the folder {0}"
msgstr ""

msgid "There was an error deleting your data"
msgstr ""

Expand Down
3 changes: 3 additions & 0 deletions packages/files-ui/src/locales/en/messages.po
Original file line number Diff line number Diff line change
Expand Up @@ -718,6 +718,9 @@ msgstr "There was an error authenticating"
msgid "There was an error connecting your wallet"
msgstr "There was an error connecting your wallet"

msgid "There was an error creating the folder {0}"
msgstr "There was an error creating the folder {0}"

msgid "There was an error deleting your data"
msgstr "There was an error deleting your data"

Expand Down
7 changes: 5 additions & 2 deletions packages/files-ui/src/locales/es/messages.po
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ msgid "Create"
msgstr "Crear"

msgid "Create Folder"
msgstr "Crear Carpeta"
msgstr ""

msgid "Create Shared Folder"
msgstr ""
Expand Down Expand Up @@ -450,7 +450,7 @@ msgid "Number of copies (Replication Factor)"
msgstr "Número de copias (factor de replicación)"

msgid "OK"
msgstr "OK"
msgstr ""

msgid "One sec, getting files ready…"
msgstr ""
Expand Down Expand Up @@ -719,6 +719,9 @@ msgstr "Hubo un error de autenticación."
msgid "There was an error connecting your wallet"
msgstr "Hubo un error al conectar su billetera"

msgid "There was an error creating the folder {0}"
msgstr ""

msgid "There was an error deleting your data"
msgstr ""

Expand Down
9 changes: 6 additions & 3 deletions packages/files-ui/src/locales/fr/messages.po
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ msgid "Create"
msgstr "Créer"

msgid "Create Folder"
msgstr "Créer un dossier"
msgstr ""

msgid "Create Shared Folder"
msgstr "Créer un dossier partagé"
Expand Down Expand Up @@ -285,7 +285,7 @@ msgid "First name"
msgstr "Prénom"

msgid "Folder name is already in use"
msgstr "Le nom du dossier est déjà utilisé"
msgstr ""

msgid "Folder uploads are not supported currently"
msgstr "Le téléversement de dossiers n'est pas actuellement pris en charge"
Expand Down Expand Up @@ -450,7 +450,7 @@ msgid "Number of copies (Replication Factor)"
msgstr "Nombre de copies (facteur de réplication)"

msgid "OK"
msgstr "OK"
msgstr ""

msgid "One sec, getting files ready…"
msgstr "Un instant, nous préparons les fichiers…"
Expand Down Expand Up @@ -719,6 +719,9 @@ msgstr "Une erreur s’est produite lors de l’authentification"
msgid "There was an error connecting your wallet"
msgstr "Une erreur s’est produite lors de la connexion de votre wallet"

msgid "There was an error creating the folder {0}"
msgstr ""

msgid "There was an error deleting your data"
msgstr "Une erreur s'est produite lors de la suppression de vos données"

Expand Down
7 changes: 5 additions & 2 deletions packages/files-ui/src/locales/no/messages.po
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ msgid "Create"
msgstr "Opprett"

msgid "Create Folder"
msgstr "Opprett mappe"
msgstr ""

msgid "Create Shared Folder"
msgstr ""
Expand Down Expand Up @@ -446,7 +446,7 @@ msgid "Number of copies (Replication Factor)"
msgstr ""

msgid "OK"
msgstr "OK"
msgstr ""

msgid "One sec, getting files ready…"
msgstr ""
Expand Down Expand Up @@ -715,6 +715,9 @@ msgstr ""
msgid "There was an error connecting your wallet"
msgstr ""

msgid "There was an error creating the folder {0}"
msgstr ""

msgid "There was an error deleting your data"
msgstr ""

Expand Down
2 changes: 1 addition & 1 deletion packages/gaming-ui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"@babel/core": "^7.12.10",
"@babel/runtime": "^7.0.0",
"@chainsafe/browser-storage-hooks": "^1.0.1",
"@chainsafe/files-api-client": "^1.18.10",
"@chainsafe/files-api-client": "1.18.15",
"@chainsafe/web3-context": "1.1.4",
"@lingui/core": "^3.7.2",
"@lingui/react": "^3.7.2",
Expand Down
17 changes: 8 additions & 9 deletions packages/gaming-ui/src/Components/Modules/LoginModule.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -176,21 +176,20 @@ const LoginModule = ({ className }: IInitialScreen) => {
await login(loginType)
} catch (error: any) {
let errorMessage = t`There was an error authenticating`
console.log(error)
if (Array.isArray(error) && error[0]) {
if (
error[0].type === "signature" &&
error[0].message === "Invalid signature"
) {
errorMessage = t`Failed to validate signature.

// Invalid signature, or contract wallet not deployed
if (error?.error?.code === 403 && error?.error?.message?.includes("Invalid signature")) {
errorMessage = t`Failed to validate signature.
If you are using a contract wallet, please make
sure you have activated your wallet.`
}
}
// WalletConnect be sassy

// User rejected the signature request (WalletConnect be sassy)
if (error?.message === "Just nope" || error?.code === 4001) {
errorMessage = t`Failed to get signature`
}

// DirectAuth popup was closed
if (error?.message === "user closed popup") {
errorMessage = t`The authentication popup was closed`
}
Expand Down
2 changes: 1 addition & 1 deletion packages/storage-ui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"@babel/core": "^7.12.10",
"@babel/runtime": "^7.0.0",
"@chainsafe/browser-storage-hooks": "^1.0.1",
"@chainsafe/files-api-client": "^1.18.10",
"@chainsafe/files-api-client": "1.18.15",
"@chainsafe/web3-context": "1.1.4",
"@lingui/core": "^3.7.2",
"@lingui/react": "^3.7.2",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,13 +110,14 @@ const CreateFolderModal = ({ modalOpen, close }: ICreateFolderModalProps) => {
setCreatingFolder(false)
helpers.resetForm()
close()
} catch (errors: any) {
} catch (error: any) {
setCreatingFolder(false)
if (errors[0].message.includes("Entry with such name can")) {
if (error?.error?.code === 409) {
helpers.setFieldError("name", t`Folder name is already in use`)
} else {
helpers.setFieldError("name", errors[0].message)
helpers.setFieldError("name", t`There was an error creating the folder ${error?.message}`)
}
helpers.setSubmitting(false)
}
helpers.setSubmitting(false)
}}
Expand Down
24 changes: 12 additions & 12 deletions packages/storage-ui/src/Components/Modules/LoginModule.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -203,26 +203,26 @@ const LoginModule = ({ className }: IInitialScreen) => {
setLoginMode(loginType)
try {
await login(loginType)
} catch (error) {
} catch (error: any) {
let errorMessage = t`There was an error authenticating`
console.log(error)
if (Array.isArray(error) && error[0]) {
if (
error[0].type === "signature" &&
error[0].message === "Invalid signature"
) {
errorMessage = t`Failed to validate signature.

// Invalid signature, or contract wallet not deployed
if (error?.error?.code === 403 && error?.error?.message?.includes("Invalid signature")) {
errorMessage = t`Failed to validate signature.
If you are using a contract wallet, please make
sure you have activated your wallet.`
}
}
// WalletConnect be sassy
if ((error instanceof Error && error.message === "Just nope") || ((error as any).code === 4001)) {

// User rejected the signature request (WalletConnect be sassy)
if (error?.message === "Just nope" || error?.code === 4001) {
errorMessage = t`Failed to get signature`
}
if (error instanceof Error && error.message === "user closed popup") {

// DirectAuth popup was closed
if (error?.message === "user closed popup") {
errorMessage = t`The authentication popup was closed`
}

setError(errorMessage)
}
setIsConnecting(false)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,12 +94,8 @@ const UploadFileModal = ({ modalOpen, close }: IUploadFileModuleProps) => {
await uploadFiles(bucket.id, values.files, currentPath)
refreshContents && refreshContents()
helpers.resetForm()
} catch (errors: any) {
if (errors[0].message.includes("conflict with existing")) {
helpers.setFieldError("files", t`File/Folder already exists`)
} else {
helpers.setFieldError("files", errors[0].message)
}
} catch (error: any) {
console.error(error)
}
helpers.setSubmitting(false)
}, [close, currentPath, uploadFiles, refreshContents, bucket])
Expand Down
Loading

0 comments on commit d23d305

Please sign in to comment.