Skip to content

Commit 9dd2fa8

Browse files
committed
show errors
1 parent 86228f6 commit 9dd2fa8

File tree

2 files changed

+51
-1
lines changed

2 files changed

+51
-1
lines changed

apps/learneth/src/pages/Home/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ function HomePage(): JSX.Element {
5151
}}
5252
>
5353
{selectedRepo.entities[item.id].name}
54+
{selectedRepo.entities[item.id].metadata.data.error? <p className="text-danger">{selectedRepo.entities[item.id].metadata.data.error} in {selectedRepo.entities[item.id].metadata.file}</p> : null}
5455
</span>
5556
<Link onClick={() => (window as any)._paq.push(['trackEvent', 'learneth', 'start_workshop', selectedRepo.entities[item.id].name])} to={`/list?id=${item.id}`} className="text-decoration-none float-end">
5657
<i className="fas fa-play-circle fa-lg" />

apps/learneth/src/redux/models/workshop.ts

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,56 @@ const Model: ModelType = {
5151
const { list, detail } = yield select((state) => state.workshop)
5252

5353
const url = `${apiUrl}/clone/${encodeURIComponent(payload.name)}/${payload.branch}?${Math.random()}`
54-
const { data } = yield axios.get(url)
54+
55+
let data
56+
try {
57+
const response = yield axios.get(url)
58+
data = response.data
59+
} catch (error) {
60+
console.error('Failed to load workshop:', error)
61+
62+
// Dismiss loading toast and show error
63+
toast.dismiss()
64+
65+
// Extract detailed error message from response
66+
let errorMessage = 'Failed to load workshop'
67+
if (error.response?.data) {
68+
// If the response contains plain text error details (like in the screenshot)
69+
if (typeof error.response.data === 'string') {
70+
errorMessage = error.response.data
71+
}
72+
// If the response has a structured error message
73+
else if (error.response.data.message) {
74+
errorMessage = error.response.data.message
75+
}
76+
// If the response has error details
77+
else if (error.response.data.error) {
78+
errorMessage = error.response.data.error
79+
}
80+
}
81+
// Fallback to axios error message or generic error
82+
else if (error.message) {
83+
errorMessage = error.message
84+
} else {
85+
errorMessage = 'Network error occurred'
86+
}
87+
88+
toast.error(errorMessage)
89+
90+
// Clean up loading state
91+
yield put({
92+
type: 'loading/save',
93+
payload: {
94+
screen: false,
95+
},
96+
})
97+
98+
// Track error event
99+
;(<any>window)._paq?.push(['trackEvent', 'learneth', 'load_repo_error', `${payload.name}/${payload.branch}`])
100+
101+
return // Exit early on error
102+
}
103+
55104
const repoId = `${payload.name}-${payload.branch}`
56105

57106
for (let i = 0; i < data.ids.length; i++) {

0 commit comments

Comments
 (0)