/**
 * @module ioHelpers
 * @param app
 * @param api
 * @param io
 * @param logger
 * @returns {{getBodyshopRoom: (function(*): string), getBodyshopConversationRoom: (function({bodyshopId: *, conversationId: *}): string)}}
 */
const applyIOHelpers = ({ app }) => {
  // Global Bodyshop Room
  const getBodyshopRoom = (bodyshopId) => `bodyshop-broadcast-room:${bodyshopId}`;

  // Messaging - conversation specific room to handle detailed messages when the user has a conversation open.
  const getBodyshopConversationRoom = ({ bodyshopId, conversationId }) =>
    `bodyshop-conversation-room:${bodyshopId}:${conversationId}`;

  const ioHelpersAPI = {
    getBodyshopRoom,
    getBodyshopConversationRoom
  };

  // Helper middleware
  app.use((req, res, next) => {
    req.ioHelpers = ioHelpersAPI;
    next();
  });

  return ioHelpersAPI;
};

module.exports = { applyIOHelpers };
