Skip to content

Commit 4c7dfcd

Browse files
committed
Refactored UserMeetingSettings controller & service 'handleConnectCalendarCallback' methods.
Minor changes were also implemented to throw better error messages.
1 parent 07aeb62 commit 4c7dfcd

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

src/controllers/UserMeetingSettingsController.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ async function getUserMeetingSettingsByUserId (req, res) {
2222
* @param res the response
2323
*/
2424
async function handleConnectCalendarCallback (req, res) {
25-
const result = await service.handleConnectCalendarCallback(req.query)
26-
res.redirect(result.redirectTo)
25+
const redirectUrl = await service.handleConnectCalendarCallback(req.query)
26+
res.redirect(redirectUrl)
2727
}
2828

2929
/**

src/services/UserMeetingSettingsService.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,8 @@ createUserMeetingSettingsIfNotExisting.schema = Joi.object().keys({
157157
/**
158158
* Handle connect calendar callback
159159
*
160+
* @param {*} reqQuery containing state, code &/or error
161+
* @returns The url that the user should be redirected to
160162
*/
161163
async function handleConnectCalendarCallback (reqQuery) {
162164
// verifying jwt token for request query param - 'state'
@@ -166,13 +168,12 @@ async function handleConnectCalendarCallback (reqQuery) {
166168
const { userId, redirectTo } = verifyQueryStateJwt
167169

168170
let errorReason = reqQuery.error
169-
let result
171+
let urlToRedirect
170172

171173
// if Nylas sent error when connecting calendar
172174
if (errorReason) {
173-
return {
174-
redirectTo: `${redirectTo}&calendarConnected=false&error=${errorReason}`
175-
}
175+
urlToRedirect = `${redirectTo}&calendarConnected=false&error=${errorReason}`
176+
return urlToRedirect
176177
}
177178

178179
try {
@@ -181,17 +182,20 @@ async function handleConnectCalendarCallback (reqQuery) {
181182

182183
// view https://developer.nylas.com/docs/api/#post/oauth/token for error response schema
183184
if (!accessToken || !accountId) {
184-
throw new Error('Error during getting access token for the calendar.')
185+
throw new errors.BadRequestError('Error during getting access token for the calendar.')
185186
}
186187

187188
// getting user's all existing calendars
188189
const calendars = await NylasService.getExistingCalendars(accessToken)
189190

190191
if (!Array.isArray(calendars) || calendars.length < 1) {
191-
throw new Error('Error getting calendar data for the user.')
192+
throw new errors.BadRequestError('Error getting calendar data for the user.')
192193
}
193194

194195
const primaryCalendar = calendars.find(c => c.is_primary)
196+
if (!primaryCalendar) {
197+
throw new errors.NotFoundError('Could not find any primary calendar in Nylas backend server.')
198+
}
195199

196200
const calendarDetails = {
197201
accessToken,
@@ -247,18 +251,14 @@ async function handleConnectCalendarCallback (reqQuery) {
247251
} catch (err) {
248252
errorReason = encodeURIComponent(err.message)
249253
} finally {
254+
urlToRedirect = `${redirectTo}&calendarConnected=true`
255+
250256
if (errorReason) {
251-
result = {
252-
redirectTo: `${redirectTo}&calendarConnected=false&error=${errorReason}`
253-
}
254-
} else {
255-
result = {
256-
redirectTo: `${redirectTo}&calendarConnected=true`
257-
}
257+
urlToRedirect = `${redirectTo}&calendarConnected=false&error=${errorReason}`
258258
}
259259
}
260260

261-
return result
261+
return urlToRedirect
262262
}
263263

264264
handleConnectCalendarCallback.schema = Joi.object().keys({

0 commit comments

Comments
 (0)