NEXT craftinamerica.org. Base setup for headless wordpress https://www.craftinamerica.org
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import api from '../../utils/api'
  2. const state = {
  3. all: {},
  4. loaded: false,
  5. artist: null,
  6. }
  7. const getters = {
  8. allArtists: state => state.all,
  9. allArtistsLoaded: state => state.loaded,
  10. artist: state => id => {
  11. let field = typeof id === 'number' ? 'id' : 'slug'
  12. let artist = state.all.filter(artist => artist[field] === id)
  13. return (artist[0]) ? artist[0] : false
  14. },
  15. artistContent: state => id => {
  16. let field = typeof id === 'number' ? 'id' : 'slug'
  17. let artist = state.all.filter(artist => artist[field] === id)
  18. return (artist[0]) ? artist[0].content.rendered : false
  19. },
  20. someArtists: state => limit => {
  21. if (state.all.length < 1) return false
  22. let all = [...state.all]
  23. return all.splice(0, Math.min(limit, state.all.length))
  24. },
  25. }
  26. const actions = {
  27. getAllArtists({ commit }, sortType) {
  28. commit('CLEAR_ARTISTS')
  29. api.getByType('artists', sortType, artists => {
  30. commit('STORE_FETCHED_ARTISTS', { artists })
  31. commit('ARTISTS_LOADED', true)
  32. })
  33. }
  34. }
  35. const mutations = {
  36. STORE_FETCHED_ARTISTS(state, { artists }) { state.all = artists },
  37. CLEAR_ARTISTS(state) { state.all = [] },
  38. ARTISTS_LOADED(state, val) { state.loaded = val },
  39. }
  40. export default { state, getters, actions, mutations }