loomio/loomio

View on GitHub
vue/src/shared/services/announcement_service.js

Summary

Maintainability
D
2 days
Test Coverage
import EventBus       from '@/shared/services/event_bus';
import AbilityService from '@/shared/services/ability_service';
import Session from '@/shared/services/session';
import Records from '@/shared/services/records';

const user = () => Session.user();
export default new class AnnouncementService {
  audiencesFor(model) {
    const audiences = [];

    if (model.discussion && model.discussion().id && model.discussion().membersCount) {
      model.adminsInclude(user()) ||
       (model.group().membersCanAnnounce && model.membersInclude(user()));
      audiences.push('discussion_group');
    }

    if (model.poll && model.poll().id && model.poll().votersCount) {
      model.adminsInclude(user()) ||
       (model.group().membersCanAnnounce && model.membersInclude(user()));
      audiences.push('voters');
    }

    if (model.poll && model.poll().id && model.poll().decidedVotersCount && model.poll().undecidedVotersCount) {
      model.adminsInclude(user()) ||
       (model.group().membersCanAnnounce && model.membersInclude(user()));
      audiences.push('decided_voters');
    }

    if (model.poll && model.poll().id && model.poll().decidedVotersCount && model.poll().undecidedVotersCount) {
      model.adminsInclude(user()) ||
       (model.group().membersCanAnnounce && model.membersInclude(user()));
      audiences.push('undecided_voters');
    }

    return audiences;
  }
};