Skip to content

Commit 2bda9f8

Browse files
committed
fix[frontend]: improve error handling
1 parent 9842b47 commit 2bda9f8

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

frontend/pb.tsx

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -68,22 +68,24 @@ export function PasteBin() {
6868

6969
const [isModalOpen, setModalOpen] = useState(false)
7070
const [modalErrMsg, setModalErrMsg] = useState("")
71+
const [modalErrTitle, setModalErrTitle] = useState("")
7172

7273
const [darkModeSelect, setDarkModeSelect] = useState<DarkMode>(defaultDarkMode())
7374

7475
// when matchMedia not available (e.g. in tests), set to light mode
7576
const systemDark = window.matchMedia ? window.matchMedia("(prefers-color-scheme: dark)").matches : false
7677
const isDark = darkModeSelect === "system" ? systemDark : darkModeSelect === "dark"
7778

78-
function showErrorMsg(err: string) {
79+
function showErrorMsg(err: string, title: string) {
7980
setModalErrMsg(err)
81+
setModalErrTitle(title)
8082
setModalOpen(true)
8183
}
8284

83-
async function reportResponseError(resp: Response) {
85+
async function reportResponseError(resp: Response, title: string) {
8486
const statusText = resp.statusText === "error" ? "Unknown error" : resp.statusText
8587
const errText = (await resp.text()) || statusText
86-
reportError(errText)
88+
showErrorMsg(errText, title)
8789
}
8890

8991
const errorModal = (
@@ -98,7 +100,7 @@ export function PasteBin() {
98100
}}
99101
>
100102
<ModalContent>
101-
<ModalHeader className="flex flex-col gap-1">Error</ModalHeader>
103+
<ModalHeader className="flex flex-col gap-1">{modalErrTitle}</ModalHeader>
102104
<ModalBody>
103105
<p>{modalErrMsg}</p>
104106
</ModalBody>
@@ -130,7 +132,7 @@ export function PasteBin() {
130132

131133
const resp = await fetch(pasteUrl)
132134
if (!resp.ok) {
133-
await reportResponseError(resp)
135+
await reportResponseError(resp, `Error on fetching ${pasteUrl}`)
134136
return
135137
}
136138
const contentType = resp.headers.get("Content-Type")
@@ -176,13 +178,13 @@ export function PasteBin() {
176178
const fd = new FormData()
177179
if (editKind === "file") {
178180
if (uploadFile === null) {
179-
showErrorMsg("No file selected")
181+
showErrorMsg("No file selected", "Error on preparing upload")
180182
return
181183
}
182184
fd.append("c", uploadFile)
183185
} else {
184186
if (pasteEdit.length === 0) {
185-
showErrorMsg("Empty paste")
187+
showErrorMsg("Empty paste", "Error on preparing upload")
186188
return
187189
}
188190
fd.append("c", pasteEdit)
@@ -211,10 +213,10 @@ export function PasteBin() {
211213
const respParsed = JSON.parse(await resp.text()) as PasteResponse
212214
setPasteResponse(respParsed)
213215
} else {
214-
await reportResponseError(resp)
216+
await reportResponseError(resp, `Error ${resp.status}`)
215217
}
216218
} catch (e) {
217-
showErrorMsg((e as Error).toString())
219+
showErrorMsg((e as Error).toString(), "Error on uploading paste")
218220
console.error(e)
219221
}
220222
}
@@ -227,9 +229,10 @@ export function PasteBin() {
227229
if (resp.ok) {
228230
setPasteResponse(null)
229231
} else {
230-
await reportResponseError(resp)
232+
await reportResponseError(resp, `Error ${resp.status}`)
231233
}
232234
} catch (e) {
235+
showErrorMsg((e as Error).message, "Error on deleting paste")
233236
console.error(e)
234237
}
235238
}

0 commit comments

Comments
 (0)