import { isArray } from 'lodash' const setRoomProps = (room) => { if (room.users) { room.users.forEach((user) => { user._id = user.id }) } if (room.lastMessage) { room.lastMessage._id = room.lastMessage.id } } const setMessageProps = (message, context) => { message._id = message.id if (message.senderId !== context.user.id) { message.distributed = true } } const roomProperties = async (resolve, root, args, context, info) => { const resolved = await resolve(root, args, context, info) if (resolved) { if (isArray(resolved)) { resolved.forEach((room) => { setRoomProps(room) }) } else { setRoomProps(resolved) } } return resolved } const messageProperties = async (resolve, root, args, context, info) => { const resolved = await resolve(root, args, context, info) if (resolved) { if (isArray(resolved)) { resolved.forEach((message) => { setMessageProps(message, context) }) } else { setMessageProps(resolved, context) } } return resolved } export default { Query: { Room: roomProperties, Message: messageProperties, }, Mutation: { CreateRoom: roomProperties, }, Subscription: { chatMessageAdded: messageProperties, }, }