NEXT craftinamerica.org. Base setup for headless wordpress https://www.craftinamerica.org
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

artist.js 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import api from '../../utils/api'
  2. const state = {
  3. all: [],
  4. loaded: false,
  5. singleArtist: null,
  6. }
  7. const getters = {
  8. allArtists: state => state.all,
  9. allArtistsBySlug: state =>
  10. Object.values(state.all).reduce((bySlug, artist) => {
  11. bySlug[artist.slug] = artist
  12. return bySlug
  13. }, {}),
  14. allArtistsLoaded: state => state.loaded,
  15. }
  16. const actions = {
  17. getAllArtists({ commit }, sortType) {
  18. commit('CLEAR_ARTISTS')
  19. commit('ARTISTS_LOADED', false)
  20. return api.getByType('artists', sortType, artists => {
  21. commit('STORE_FETCHED_ARTISTS', { artists })
  22. commit('ARTISTS_LOADED', true)
  23. })
  24. },
  25. getSingleArtist({ commit }, id) {
  26. console.log('getting single Artist...')
  27. commit('CLEAR_SINGLE_ARTIST')
  28. commit('ARTISTS_LOADED', false)
  29. api.getSingleType('artists', id, artist => {
  30. commit('STORE_FETCHED_SINGLE_ARTIST', artist)
  31. commit('ARTISTS_LOADED', true)
  32. })
  33. },
  34. }
  35. const mutations = {
  36. STORE_FETCHED_ARTISTS(state, { artists }) {
  37. state.all = artists
  38. },
  39. STORE_FETCHED_SINGLE_ARTIST(state, artist) {
  40. state.singleArtist = artist
  41. },
  42. CLEAR_ARTISTS(state) {
  43. state.all = []
  44. },
  45. CLEAR_SINGLE_ARTIST(state) {
  46. state.singleArtist = null
  47. },
  48. ARTISTS_LOADED(state, val) {
  49. state.loaded = val
  50. },
  51. }
  52. export default { state, getters, actions, mutations }