-
Pedro Beschorner Marin authoredPedro Beschorner Marin authored
service.js 1.33 KiB
import ConnectionStatus from '/imports/api/connection-status';
import Users from '/imports/api/users';
import Auth from '/imports/ui/services/auth';
import { makeCall } from '/imports/ui/services/api';
const STATS = Meteor.settings.public.stats;
const ROLE_MODERATOR = Meteor.settings.public.user.role_moderator;
const addConnectionStatus = (level) => makeCall('addConnectionStatus', level);
const getConnectionStatus = () => {
const connectionStatus = ConnectionStatus.find(
{ meetingId: Auth.meetingID },
).fetch().map(status => {
const { userId, level } = status;
return { userId, level };
});
return Users.find(
{
meetingId: Auth.meetingID,
connectionStatus: 'online',
},
{ fields:
{
userId: 1,
name: 1,
role: 1,
},
},
).fetch().reduce((result, user) => {
const {
userId,
role,
name,
} = user;
const status = connectionStatus.find(status => status.userId === userId);
if (status) {
result.push({
name,
you: Auth.userID === userId,
moderator: role === ROLE_MODERATOR,
level: status.level,
timestamp: status.timestamp,
});
}
return result;
}, []);
};
const isEnabled = () => STATS.enabled;
export default {
addConnectionStatus,
getConnectionStatus,
isEnabled,
};