const db = require('../models'); // require our models for syncing
const logger = require('winston');

module.exports = {
  populateLocalsDotUser (req, res, next) {
    if (req.user) {
      res.locals.user = {
        id            : req.user.id,
        userName      : req.user.userName,
        channelName   : req.user.channelName,
        channelClaimId: req.user.channelClaimId,
        shortChannelId: req.user.shortChannelId,
      };
    }
    next();
  },
  serializeSpeechUser (user, done) {
    done(null, user.id);
  },
  deserializeSpeechUser (id, done) {
    let userInfo = {};
    db.User.findOne({ where: { id } })
    .then(user => {
      userInfo['id'] = user.id;
      userInfo['userName'] = user.userName;
      return user.getChannel();
    })
    .then(channel => {
      userInfo['channelName'] = channel.channelName;
      userInfo['channelClaimId'] = channel.channelClaimId;
      return db.Certificate.getShortChannelIdFromLongChannelId(channel.channelClaimId, channel.channelName);
    })
    .then(shortChannelId => {
      userInfo['shortChannelId'] = shortChannelId;
      // return done(null, userInfo);
      done(null, userInfo);
      return null;
    })
    .catch(error => {
      logger.error(error);
      done(error, null);
    });
  },
};