hummingbird-me/kitsu-web

View on GitHub
app/controllers/manga/index.js

Summary

Maintainability
C
1 day
Test Coverage
F
7%
import MediaIndexController, { MEDIA_QUERY_PARAMS } from 'client/controllers/media/index';
import QueryParams from 'ember-parachute';
import { isEmpty } from '@ember/utils';
import { serializeArray, deserializeArray } from 'client/utils/queryable';
import { moment } from 'client/utils/moment';
import { minYearManga } from 'client/utils/media-minyear';

const queryParams = new QueryParams(MEDIA_QUERY_PARAMS, {
  year: {
    defaultValue: [minYearManga, moment().year() + 2],
    refresh: true,
    serialize(value) {
      const [lower, upper] = value;
      if (lower === minYearManga && upper === (moment().year() + 2)) {
        return undefined;
      } if (upper === (moment().year() + 2)) {
        return serializeArray([lower, null]);
      }
      return serializeArray(value);
    },
    deserialize(value = []) {
      const [lower, upper] = deserializeArray(value);
      if (isEmpty(upper)) {
        return [lower, moment().year() + 2];
      }
      return [lower, upper];
    }
  }
});

export default MediaIndexController.extend(queryParams.Mixin, {
  mediaType: 'manga',
  availableSubtypes: ['manga', 'novel', 'manhua', 'oneshot', 'doujin', 'manhwa', 'oel'],

  queryParamsDidChange({ shouldRefresh }) {
    if (shouldRefresh) {
      this.send('refresh');
    }
  }
});