hummingbird-me/kitsu-web

View on GitHub
app/routes/users/groups.js

Summary

Maintainability
A
0 mins
Test Coverage
F
0%
import Route from '@ember/routing/route';
import { get } from '@ember/object';
import { inject as service } from '@ember/service';
import { isPresent } from '@ember/utils';
import Pagination from 'kitsu-shared/mixins/pagination';

export default Route.extend(Pagination, {
  intl: service(),

  model({ category, sort, query }) {
    const user = this.modelFor('users');
    return {
      taskInstance: this.queryPaginated('group-member', {
        filter: {
          query_user: get(user, 'id'),
          group_name: isPresent(query) ? query : undefined,
          group_category: category !== 'all' ? category : undefined,
        },
        fields: {
          groups: ['slug', 'name', 'avatar', 'tagline', 'membersCount', 'category'].join(',')
        },
        sort: isPresent(query) ? undefined : this._getSortingKey(sort),
        include: 'group.category',
        page: { limit: 20 }
      }),
      paginatedRecords: []
    };
  },

  titleToken() {
    const model = this.modelFor('users');
    const name = get(model, 'name');
    return get(this, 'intl').t('titles.users.groups', { user: name });
  },

  actions: {
    refreshModel() {
      this.refresh();
    }
  },

  _getSortingKey(sort) {
    switch (sort) {
      case 'oldest':
        return 'created_at';
      default:
        return '-created_at';
    }
  }
});