const { callbackify } = require('util')
const metrics = require('@overleaf/metrics')
const UserUpdater = require('../User/UserUpdater')

async function optIn(userId) {
  await UserUpdater.promises.updateUser(userId, { $set: { betaProgram: true } })
  metrics.inc('beta-program.opt-in')
}

async function optOut(userId) {
  await UserUpdater.promises.updateUser(userId, {
    $set: { betaProgram: false }
  })
  metrics.inc('beta-program.opt-out')
}

const BetaProgramHandler = {
  optIn: callbackify(optIn),

  optOut: callbackify(optOut)
}

BetaProgramHandler.promises = {
  optIn,
  optOut
}

module.exports = BetaProgramHandler
