mirror of
https://github.com/overleaf/overleaf.git
synced 2024-10-31 21:21:03 -04:00
51 lines
1.4 KiB
JavaScript
51 lines
1.4 KiB
JavaScript
|
const Queues = require('../../infrastructure/Queues')
|
||
|
const UserGetter = require('./UserGetter')
|
||
|
const {
|
||
|
promises: InstitutionsAPIPromises,
|
||
|
} = require('../Institutions/InstitutionsAPI')
|
||
|
const AnalyticsManager = require('../Analytics/AnalyticsManager')
|
||
|
|
||
|
const ONE_DAY_MS = 24 * 60 * 60 * 1000
|
||
|
|
||
|
class UserPostRegistrationAnalyticsManager {
|
||
|
constructor() {
|
||
|
this.queue = Queues.getPostRegistrationAnalyticsQueue()
|
||
|
this.queue.process(async job => {
|
||
|
const { userId } = job.data
|
||
|
await postRegistrationAnalytics(userId)
|
||
|
})
|
||
|
}
|
||
|
|
||
|
async schedulePostRegistrationAnalytics(user) {
|
||
|
await this.queue.add({ userId: user._id }, { delay: ONE_DAY_MS })
|
||
|
}
|
||
|
}
|
||
|
|
||
|
async function postRegistrationAnalytics(userId) {
|
||
|
const user = await UserGetter.promises.getUser({ _id: userId }, { email: 1 })
|
||
|
if (!user) {
|
||
|
return
|
||
|
}
|
||
|
await checkAffiliations(userId)
|
||
|
}
|
||
|
|
||
|
async function checkAffiliations(userId) {
|
||
|
const affiliationsData = await InstitutionsAPIPromises.getUserAffiliations(
|
||
|
userId
|
||
|
)
|
||
|
const hasCommonsAccountAffiliation = affiliationsData.some(
|
||
|
affiliationData =>
|
||
|
affiliationData.institution && affiliationData.institution.commonsAccount
|
||
|
)
|
||
|
|
||
|
if (hasCommonsAccountAffiliation) {
|
||
|
await AnalyticsManager.setUserProperty(
|
||
|
userId,
|
||
|
'registered-from-commons-account',
|
||
|
true
|
||
|
)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = new UserPostRegistrationAnalyticsManager()
|