import Component from '@glimmer/component'; import {inject as service} from '@ember/service'; import {task, taskGroup} from 'ember-concurrency-decorators'; import {tracked} from '@glimmer/tracking'; export default class GhMembersSegmentCountComponent extends Component { @service store; @service session; @tracked total = 0; @tracked segmentTotal = 0; @taskGroup fetchTasks; @task({group: 'fetchTasks'}) *fetchTotalsTask() { this.fetchSegmentTotalTask.perform(); const filter = this.args.enforcedFilter || undefined; const members = yield this.store.query('member', {limit: 1, filter}); this.total = members.meta.pagination.total; } @task({group: 'fetchTasks'}) *fetchSegmentTotalTask() { if (!this.args.segment) { return this.segmentTotal = 0; } let filter; if (this.args.enforcedFilter) { filter = `${this.args.enforcedFilter}+(${this.args.segment})`; } else { filter = this.args.segment; } const members = yield this.store.query('member', {limit: 1, filter}); this.segmentTotal = members.meta.pagination.total; this.args.onSegmentCountChange?.(this.segmentTotal); } }