Skip to content

Commit 0e2ee08

Browse files
authored
Merge pull request #342 from KTH/issues/KUI-1776-user-friendly-error-handling
fix(KUI-1776): end-user-frindly-error-messages
2 parents e6ce59d + fac9cd7 commit 0e2ee08

File tree

4 files changed

+19
-9
lines changed

4 files changed

+19
-9
lines changed

i18n/messages.en.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,5 +132,8 @@ module.exports = {
132132
round_type: 'Type of round',
133133
round_time_slots: 'Planned timeslots',
134134
round_application_link: 'Application link'
135-
}
135+
},
136+
syllabusErrorMessages: {
137+
syllabus_fetching_error: ({ code, semester, time_stamp }) => `Could not create syllabus for ${code}-${semester}. Time: ${time_stamp}. Please try again later and contact IT support with this error message if the problem persists.`,
138+
},
136139
}

i18n/messages.se.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module.exports = {
2-
shortNames: [ 'sv', 'se' ],
2+
shortNames: ['sv', 'se'],
33
longNameSe: 'Svenska',
44
longNameEn: 'Swedish',
55
messages: {
@@ -131,6 +131,8 @@ module.exports = {
131131
round_application_link: 'Anmälningslänk',
132132
round_type: 'Typ av kurstillfälle',
133133
round_time_slots: 'Planerade moduler'
134-
}
135-
134+
},
135+
syllabusErrorMessages: {
136+
syllabus_fetching_error: ({ code, semester, time_stamp }) => `Kunde inte skapa kursplan för ${code}-${semester}. Tidpunkt: ${time_stamp}. Försök igen om ett tag och kontakta IT-support med detta felmeddelande om problemet kvarstår.`,
137+
},
136138
}

server/controllers/pdfCtrl.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
const log = require('@kth/log')
44

5+
const i18n = require('../../i18n')
56
const { getLadokSyllabus } = require('../ladokApi')
67
const { createPdf } = require('../libs/pdfRenderer.js')
78

@@ -21,7 +22,7 @@ async function _getSyllabus(req, res, next) {
2122
try {
2223
const syllabus = await getLadokSyllabus(courseCode, semester, language)
2324

24-
if (syllabus == null) {
25+
if (!syllabus) {
2526
log.debug(`Could not get a syllabus for ${courseCode}, ${semester}, ${language}.`)
2627
res.sendStatus(404)
2728
return
@@ -43,7 +44,11 @@ async function _getSyllabus(req, res, next) {
4344
)
4445
} catch (err) {
4546
log.error('getSyllabus: Failed request for PDF, error:', { err })
46-
next(err)
47+
const languageIndex = language === 'en' ? 0 : 1
48+
const status = err.response?.status || 500
49+
const message = i18n.messages[languageIndex].syllabusErrorMessages.syllabus_fetching_error({ code: courseCode, semester, time_stamp: new Date().toISOString() })
50+
const error = new Error(`${status}: ${message}`)
51+
next(error)
4752
}
4853
}
4954

server/ladokApi.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
'use strict'
22

3+
const i18n = require('../i18n')
4+
35
const { createApiClient } = require('@kth/om-kursen-ladok-client')
46
const { server: serverConfig } = require('./configuration')
57

68
const client = createApiClient(serverConfig.ladokMellanlagerApi)
79

810
async function getLadokSyllabus(courseCode, semester, lang) {
911
try {
10-
const course = await client.getCourseSyllabus(courseCode, semester, lang)
11-
12-
return course
12+
return client.getCourseSyllabus(courseCode, semester, lang)
1313
} catch (error) {
1414
throw new Error(error.message)
1515
}

0 commit comments

Comments
 (0)