@@ -17,13 +17,7 @@ const {
17
17
const UserMeetingSettings = models . UserMeetingSettings
18
18
const { Interviews : InterviewConstants } = require ( '../../app-constants' )
19
19
const esClient = helper . getESClient ( )
20
- const {
21
- getAvailableTimeFromSchedulingPage,
22
- getTimezoneFromSchedulingPage,
23
- getAccessToken,
24
- getExistingCalendars,
25
- getPrimaryCalendar
26
- } = require ( './NylasService' )
20
+ const NylasService = require ( './NylasService' )
27
21
const jwt = require ( 'jsonwebtoken' )
28
22
29
23
/**
@@ -63,9 +57,11 @@ function handleUserMeetingSettingsData (data, shouldNotStripUnwantedData) {
63
57
* @param {Object } currentUser the user who perform this operation.
64
58
* @param {String } userId the user id
65
59
* @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
66
62
* @returns {Object } the userMeetingSetting object
67
63
*/
68
- async function getUserMeetingSettingsByUserId ( currentUser , userId , fromDb , shouldNotStripUnwantedData ) {
64
+ async function getUserMeetingSettingsByUserId ( currentUser , userId , fromDb , options = { shouldNotStripUnwantedData : false } ) {
69
65
// check permission
70
66
await ensureUserIsPermitted ( currentUser , userId )
71
67
if ( ! fromDb ) {
@@ -78,7 +74,7 @@ async function getUserMeetingSettingsByUserId (currentUser, userId, fromDb, shou
78
74
// extract interviews from ES object
79
75
const userMeetingSettings = _ . get ( userMeetingSettingsES , 'body._source' , [ ] )
80
76
if ( userMeetingSettings ) {
81
- return handleUserMeetingSettingsData ( userMeetingSettings , shouldNotStripUnwantedData )
77
+ return handleUserMeetingSettingsData ( userMeetingSettings , options . shouldNotStripUnwantedData )
82
78
}
83
79
throw new errors . NotFoundError ( `The userMeetingSettings for userId=${ userId } not found.` )
84
80
} catch ( err ) {
@@ -89,6 +85,7 @@ async function getUserMeetingSettingsByUserId (currentUser, userId, fromDb, shou
89
85
throw err
90
86
}
91
87
}
88
+
92
89
// either ES query failed or `fromDb` is set - fallback to DB
93
90
logger . info ( { component : 'InterviewService' , context : 'getUserMeetingSettingsByUserId' , message : 'try to query db for data' } )
94
91
@@ -98,13 +95,15 @@ async function getUserMeetingSettingsByUserId (currentUser, userId, fromDb, shou
98
95
throw new errors . NotFoundError ( `The userMeetingSettings for userId=${ userId } not found.` )
99
96
}
100
97
101
- return handleUserMeetingSettingsData ( userMeetingSettings , shouldNotStripUnwantedData )
98
+ return handleUserMeetingSettingsData ( userMeetingSettings , options . shouldNotStripUnwantedData )
102
99
}
103
100
getUserMeetingSettingsByUserId . schema = Joi . object ( ) . keys ( {
104
101
currentUser : Joi . object ( ) . required ( ) ,
105
102
userId : Joi . string ( ) . uuid ( ) . required ( ) ,
106
103
fromDb : Joi . boolean ( ) ,
107
- shouldNotStripUnwantedData : Joi . boolean ( )
104
+ options : Joi . object ( ) . keys ( {
105
+ shouldNotStripUnwantedData : Joi . boolean ( )
106
+ } )
108
107
} ) . required ( )
109
108
110
109
// TODO document
@@ -116,8 +115,8 @@ async function createUserMeetingSettingsIfNotExisting (currentUser, userId, cale
116
115
117
116
const payload = {
118
117
id : userId ,
119
- defaultAvailableTime : await getAvailableTimeFromSchedulingPage ( schedulingPage ) ,
120
- defaultTimezone : await getTimezoneFromSchedulingPage ( schedulingPage ) ,
118
+ defaultAvailableTime : await NylasService . getAvailableTimeFromSchedulingPage ( schedulingPage ) ,
119
+ defaultTimezone : await NylasService . getTimezoneFromSchedulingPage ( schedulingPage ) ,
121
120
createdBy : await helper . getUserId ( currentUser . userId ) ,
122
121
nylasCalendars : [ ] . concat ( {
123
122
accessToken : calendar . accessToken ,
@@ -191,19 +190,19 @@ async function handleConnectCalendarCallback (reqQuery) {
191
190
192
191
try {
193
192
// 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 )
195
194
// view https://developer.nylas.com/docs/api/#post/oauth/token for error response schema
196
195
if ( ! accessToken || ! accountId ) {
197
196
throw new errors . BadRequestError ( 'Error during getting access token for the calendar.' )
198
197
}
199
198
200
199
// getting user's all existing calendars
201
- const calendars = await getExistingCalendars ( accessToken )
200
+ const calendars = await NylasService . getExistingCalendars ( accessToken )
202
201
if ( ! Array . isArray ( calendars ) || calendars . length < 1 ) {
203
202
throw new errors . BadRequestError ( 'Error getting calendar data for the user.' )
204
203
}
205
204
206
- const primaryCalendar = getPrimaryCalendar ( calendars )
205
+ const primaryCalendar = await NylasService . getPrimaryCalendar ( calendars )
207
206
if ( ! primaryCalendar ) {
208
207
throw new errors . NotFoundError ( 'Could not find any writable calendar.' )
209
208
}
@@ -286,7 +285,7 @@ async function deleteUserCalendar (currentUser, reqParams) {
286
285
await ensureUserIsPermitted ( currentUser , reqParams . userId )
287
286
288
287
try {
289
- const userMeetingSettings = await getUserMeetingSettingsByUserId ( currentUser , reqParams . userId , false , true )
288
+ const userMeetingSettings = await getUserMeetingSettingsByUserId ( currentUser , reqParams . userId , false , { shouldNotStripUnwantedData : true } )
290
289
291
290
// error if no calendar found with the given id in request param
292
291
if (
0 commit comments