hummingbird-me/kitsu-web

View on GitHub
app/routes/groups/group/dashboard/settings.js

Summary

Maintainability
A
0 mins
Test Coverage
F
0%
import Route from '@ember/routing/route';
import { get, set } from '@ember/object';
import { inject as service } from '@ember/service';
import { CanMixin } from 'ember-can';
import RSVP from 'rsvp';

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

  beforeModel() {
    const model = this.modelFor('groups.group.dashboard');
    const membership = get(model, 'membership');
    if (!this.can('manage settings for group', { membership })) {
      return this.transitionTo('groups.group.dashboard.index');
    }
  },

  model() {
    const model = this.modelFor('groups.group.dashboard');
    return RSVP.hash({
      group: get(model, 'group'),
      category: get(model, 'group').belongsTo('category').load(),
      categories: get(this, 'store').findAll('group-category')
    });
  },

  setupController(controller, model) {
    this._super(...arguments);
    set(controller, 'records', []);
    set(controller, 'savedNeighbors', []);
    set(controller, '_neighbors', []);
    get(controller, 'records').addObject(get(model, 'group'));

    const options = get(model, 'group.isClosed') ? ['closed'] : ['open', 'closed', 'restricted'];
    set(controller, 'privacyOptions', options);

    const category = get(model, 'category');
    set(controller, 'selectedCategory', {
      id: get(category, 'id'),
      name: get(category, 'name'),
      slug: get(category, 'slug')
    });
  },

  titleToken(model) {
    const group = get(model, 'group.name');
    return get(this, 'intl').t('titles.groups.group.dashboard.settings', { group });
  }
});