hummingbird-me/kitsu-web

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

Summary

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

export default Route.extend(Pagination, {
  model(params) {
    return {
      taskInstance: this.queryPaginated('group', this._getRequestOptions(params)),
      paginatedRecords: []
    };
  },

  headTags() {
    const description = `Looking for a place to discuss a topic or activity?
      Check out Groups on Kitsu.`;
    return [{
      type: 'meta',
      tagId: 'meta-description',
      attrs: {
        property: 'description',
        content: description
      }
    }, {
      type: 'meta',
      tagId: 'meta-og-description',
      attrs: {
        property: 'og:description',
        content: description
      }
    }];
  },

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

  _getRequestOptions({ category, sort, query }) {
    return {
      filter: {
        category: category !== 'all' ? category : undefined,
        query: isPresent(query) ? query : undefined,
        featured: sort === 'featured' ? true : undefined
      },
      fields: {
        groups: ['slug', 'name', 'avatar', 'tagline', 'membersCount', 'category'].join(',')
      },
      sort: isPresent(query) ? undefined : this._getRealSort(sort),
      include: 'category',
      page: { limit: 20 }
    };
  },

  _getRealSort(sort) {
    switch (sort) {
      case 'newest':
        return '-created_at';
      case 'oldest':
        return 'created_at';
      default:
        return '-last_activity_at';
    }
  }
});