Skip to content

Commit 2308de6

Browse files
committed
Updated NylasService & UserMeetingSettingsService methods.
The method 'getPrimaryCalendar' has been made asynchronous. And refactored 'getUserMeetingSettingsByUserId' method.
1 parent 8af12b8 commit 2308de6

File tree

2 files changed

+17
-18
lines changed

2 files changed

+17
-18
lines changed

src/services/NylasService.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ async function patchSchedulingPage (pageId, accessToken, changes) {
168168
* @param {Array<Object>} calendars list of Nylas calendars
169169
* @returns
170170
*/
171-
function getPrimaryCalendar (calendars) {
171+
async function getPrimaryCalendar (calendars) {
172172
const primaryCalendar = _.find(calendars, { is_primary: true, read_only: false })
173173

174174
if (primaryCalendar) {

src/services/UserMeetingSettingsService.js

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,7 @@ const {
1717
const UserMeetingSettings = models.UserMeetingSettings
1818
const { Interviews: InterviewConstants } = require('../../app-constants')
1919
const esClient = helper.getESClient()
20-
const {
21-
getAvailableTimeFromSchedulingPage,
22-
getTimezoneFromSchedulingPage,
23-
getAccessToken,
24-
getExistingCalendars,
25-
getPrimaryCalendar
26-
} = require('./NylasService')
20+
const NylasService = require('./NylasService')
2721
const jwt = require('jsonwebtoken')
2822

2923
/**
@@ -63,9 +57,11 @@ function handleUserMeetingSettingsData (data, shouldNotStripUnwantedData) {
6357
* @param {Object} currentUser the user who perform this operation.
6458
* @param {String} userId the user id
6559
* @param {Boolean} fromDb flag if query db for data or not
60+
* @param {object} options { shouldNotStripUnwantedData: false }
61+
* shouldNotStripUnwantedData - flag indicating if unwanted data should be stripped or not
6662
* @returns {Object} the userMeetingSetting object
6763
*/
68-
async function getUserMeetingSettingsByUserId (currentUser, userId, fromDb, shouldNotStripUnwantedData) {
64+
async function getUserMeetingSettingsByUserId (currentUser, userId, fromDb, options = { shouldNotStripUnwantedData: false }) {
6965
// check permission
7066
await ensureUserIsPermitted(currentUser, userId)
7167
if (!fromDb) {
@@ -78,7 +74,7 @@ async function getUserMeetingSettingsByUserId (currentUser, userId, fromDb, shou
7874
// extract interviews from ES object
7975
const userMeetingSettings = _.get(userMeetingSettingsES, 'body._source', [])
8076
if (userMeetingSettings) {
81-
return handleUserMeetingSettingsData(userMeetingSettings, shouldNotStripUnwantedData)
77+
return handleUserMeetingSettingsData(userMeetingSettings, options.shouldNotStripUnwantedData)
8278
}
8379
throw new errors.NotFoundError(`The userMeetingSettings for userId=${userId} not found.`)
8480
} catch (err) {
@@ -89,6 +85,7 @@ async function getUserMeetingSettingsByUserId (currentUser, userId, fromDb, shou
8985
throw err
9086
}
9187
}
88+
9289
// either ES query failed or `fromDb` is set - fallback to DB
9390
logger.info({ component: 'InterviewService', context: 'getUserMeetingSettingsByUserId', message: 'try to query db for data' })
9491

@@ -98,13 +95,15 @@ async function getUserMeetingSettingsByUserId (currentUser, userId, fromDb, shou
9895
throw new errors.NotFoundError(`The userMeetingSettings for userId=${userId} not found.`)
9996
}
10097

101-
return handleUserMeetingSettingsData(userMeetingSettings, shouldNotStripUnwantedData)
98+
return handleUserMeetingSettingsData(userMeetingSettings, options.shouldNotStripUnwantedData)
10299
}
103100
getUserMeetingSettingsByUserId.schema = Joi.object().keys({
104101
currentUser: Joi.object().required(),
105102
userId: Joi.string().uuid().required(),
106103
fromDb: Joi.boolean(),
107-
shouldNotStripUnwantedData: Joi.boolean()
104+
options: Joi.object().keys({
105+
shouldNotStripUnwantedData: Joi.boolean()
106+
})
108107
}).required()
109108

110109
// TODO document
@@ -116,8 +115,8 @@ async function createUserMeetingSettingsIfNotExisting (currentUser, userId, cale
116115

117116
const payload = {
118117
id: userId,
119-
defaultAvailableTime: await getAvailableTimeFromSchedulingPage(schedulingPage),
120-
defaultTimezone: await getTimezoneFromSchedulingPage(schedulingPage),
118+
defaultAvailableTime: await NylasService.getAvailableTimeFromSchedulingPage(schedulingPage),
119+
defaultTimezone: await NylasService.getTimezoneFromSchedulingPage(schedulingPage),
121120
createdBy: await helper.getUserId(currentUser.userId),
122121
nylasCalendars: [].concat({
123122
accessToken: calendar.accessToken,
@@ -191,19 +190,19 @@ async function handleConnectCalendarCallback (reqQuery) {
191190

192191
try {
193192
// getting user's accessToken from Nylas using 'code' found in request query
194-
const { accessToken, accountId, provider } = await getAccessToken(reqQuery.code)
193+
const { accessToken, accountId, provider } = await NylasService.getAccessToken(reqQuery.code)
195194
// view https://developer.nylas.com/docs/api/#post/oauth/token for error response schema
196195
if (!accessToken || !accountId) {
197196
throw new errors.BadRequestError('Error during getting access token for the calendar.')
198197
}
199198

200199
// getting user's all existing calendars
201-
const calendars = await getExistingCalendars(accessToken)
200+
const calendars = await NylasService.getExistingCalendars(accessToken)
202201
if (!Array.isArray(calendars) || calendars.length < 1) {
203202
throw new errors.BadRequestError('Error getting calendar data for the user.')
204203
}
205204

206-
const primaryCalendar = getPrimaryCalendar(calendars)
205+
const primaryCalendar = await NylasService.getPrimaryCalendar(calendars)
207206
if (!primaryCalendar) {
208207
throw new errors.NotFoundError('Could not find any writable calendar.')
209208
}
@@ -286,7 +285,7 @@ async function deleteUserCalendar (currentUser, reqParams) {
286285
await ensureUserIsPermitted(currentUser, reqParams.userId)
287286

288287
try {
289-
const userMeetingSettings = await getUserMeetingSettingsByUserId(currentUser, reqParams.userId, false, true)
288+
const userMeetingSettings = await getUserMeetingSettingsByUserId(currentUser, reqParams.userId, false, { shouldNotStripUnwantedData: true })
290289

291290
// error if no calendar found with the given id in request param
292291
if (

0 commit comments

Comments
 (0)