NEXT craftinamerica.org. Base setup for headless wordpress https://www.craftinamerica.org
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

artist.js 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import api from '../../utils/api'
  2. import { sortTypes } from '../../utils/helpers'
  3. import { repackBySort } from './arrangements'
  4. const state = {
  5. all: [],
  6. loaded: false,
  7. singleArtist: null,
  8. seenTitles: []
  9. }
  10. const getters = {
  11. allArtists: state => state.all,
  12. allArtistsBySlug: state =>
  13. Object.values(state.all).reduce((bySlug, artist) => {
  14. bySlug[artist.slug] = artist
  15. return bySlug
  16. }, {}),
  17. allArtistsLoaded: state => state.loaded,
  18. }
  19. const actions = {
  20. getAllArtists({ commit }, { sortType, params }) {
  21. commit('CLEAR_ARTISTS')
  22. commit('ARTISTS_LOADED', false)
  23. const storeFetch = (artists => {
  24. let repacked = repackBySort(artists, sortType)
  25. commit('STORE_FETCHED_ARTISTS', { artists: repacked })
  26. commit('ARTISTS_LOADED', true)
  27. })
  28. return api.getByType({ type: 'artist', sort: sortType, params, cb: storeFetch })
  29. },
  30. getMoreArtists({ commit }, { sortType, params }) {
  31. const storeFetch = (artists => {
  32. let repacked = artists
  33. if(sortType == sortTypes.alpha) {
  34. repacked = repackBySort(artists, sortType)
  35. }
  36. commit('ADD_TO_FETCHED_ARTISTS', { artists: repacked })
  37. commit('ARTISTS_LOADED', true)
  38. })
  39. return api.getByType({ type: 'artist', sort: sortType, params, cb: storeFetch })
  40. },
  41. getSingleArtist({ commit }, id) {
  42. commit('CLEAR_SINGLE_ARTISTS')
  43. commit('ARTISTS_LOADED', false)
  44. api.getSingleType('artist', id, artist => {
  45. commit('STORE_FETCHED_SINGLE_ARTIST', artist)
  46. commit('ARTISTS_LOADED', true)
  47. })
  48. },
  49. }
  50. const mutations = {
  51. ADD_TO_FETCHED_ARTISTS(state, { artists }) {
  52. state.all = [...state.all, ...artists]
  53. },
  54. STORE_FETCHED_ARTISTS(state, { artists }) {
  55. state.all = artists
  56. },
  57. STORE_FETCHED_SINGLE_ARTIST(state, artist) {
  58. state.singleArtist = artist
  59. },
  60. CLEAR_ARTISTS(state) {
  61. state.all = []
  62. },
  63. CLEAR_ARTISTS_SEEN(state) {
  64. state.seenTitles = []
  65. },
  66. CLEAR_SINGLE_ARTISTS(state) {
  67. state.singleArtist = null
  68. },
  69. ARTISTS_LOADED(state, val) {
  70. state.loaded = val
  71. },
  72. }
  73. export default { state, getters, actions, mutations }