@@ -157,6 +157,8 @@ createUserMeetingSettingsIfNotExisting.schema = Joi.object().keys({
157
157
/**
158
158
* Handle connect calendar callback
159
159
*
160
+ * @param {* } reqQuery containing state, code &/or error
161
+ * @returns The url that the user should be redirected to
160
162
*/
161
163
async function handleConnectCalendarCallback ( reqQuery ) {
162
164
// verifying jwt token for request query param - 'state'
@@ -166,13 +168,12 @@ async function handleConnectCalendarCallback (reqQuery) {
166
168
const { userId, redirectTo } = verifyQueryStateJwt
167
169
168
170
let errorReason = reqQuery . error
169
- let result
171
+ let urlToRedirect
170
172
171
173
// if Nylas sent error when connecting calendar
172
174
if ( errorReason ) {
173
- return {
174
- redirectTo : `${ redirectTo } &calendarConnected=false&error=${ errorReason } `
175
- }
175
+ urlToRedirect = `${ redirectTo } &calendarConnected=false&error=${ errorReason } `
176
+ return urlToRedirect
176
177
}
177
178
178
179
try {
@@ -181,17 +182,20 @@ async function handleConnectCalendarCallback (reqQuery) {
181
182
182
183
// view https://developer.nylas.com/docs/api/#post/oauth/token for error response schema
183
184
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.' )
185
186
}
186
187
187
188
// getting user's all existing calendars
188
189
const calendars = await NylasService . getExistingCalendars ( accessToken )
189
190
190
191
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.' )
192
193
}
193
194
194
195
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
+ }
195
199
196
200
const calendarDetails = {
197
201
accessToken,
@@ -247,18 +251,14 @@ async function handleConnectCalendarCallback (reqQuery) {
247
251
} catch ( err ) {
248
252
errorReason = encodeURIComponent ( err . message )
249
253
} finally {
254
+ urlToRedirect = `${ redirectTo } &calendarConnected=true`
255
+
250
256
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 } `
258
258
}
259
259
}
260
260
261
- return result
261
+ return urlToRedirect
262
262
}
263
263
264
264
handleConnectCalendarCallback . schema = Joi . object ( ) . keys ( {
0 commit comments