Преглед на файлове

:recycle: grabbing random from endpoint instead of rng

tags/0.9.0
J преди 4 години
родител
ревизия
57d0db3690
променени са 5 файла, в които са добавени 43 реда и са изтрити 13 реда
  1. 3
    10
      vue-theme/src/pages/index.vue
  2. 14
    1
      vue-theme/src/store/actions.js
  3. 4
    1
      vue-theme/src/store/getters.js
  4. 11
    0
      vue-theme/src/store/index.js
  5. 11
    1
      vue-theme/src/utils/api.js

+ 3
- 10
vue-theme/src/pages/index.vue Целия файл

@@ -71,6 +71,8 @@ export default {
71 71
                 }
72 72
             }
73 73
         }
74
+        this.$store.dispatch('getRandom', ['episode', 'exhibition', 'event', 'artist', 'post'])
75
+        
74 76
         this.checkAndSetHero('welcome')
75 77
     },
76 78
     methods: {
@@ -93,16 +95,7 @@ export default {
93 95
         },
94 96
         firstPostOfType(type) {
95 97
             return Object.values(this[`all${convertTitleCase(type)}s`])[0]
96
-        },
97
-        randomPostOfType(type) {
98
-            const postsOfType = Object.values(
99
-                this[`all${convertTitleCase(type)}s`],
100
-            )
101
-            // console.log(postsOfType)
102
-            const max = postsOfType.length
103
-            const rand = Math.floor(Math.random() * max)
104
-            return postsOfType[rand]
105
-        },
98
+        }
106 99
     },
107 100
 }
108 101
 </script>

+ 14
- 1
vue-theme/src/store/actions.js Целия файл

@@ -1,2 +1,15 @@
1
+import api from '../utils/api'
2
+
1 3
 // for global actions
2
-export default () => {}
4
+export default () => {
5
+    getRandom({ commit }, types) {
6
+        commit('CLEAR_RANDOM')
7
+        commit('RANDOM_LOADED', false)
8
+        return api.getRandom(types, sortType, randomPosts => {
9
+            console.log('randomPosts')
10
+            console.log(randomPosts)
11
+            commit('STORE_FETCHED_RANDOM', { randomPosts })
12
+            commit('RANDOM_LOADED', true)
13
+        })
14
+    }
15
+}

+ 4
- 1
vue-theme/src/store/getters.js Целия файл

@@ -1,2 +1,5 @@
1 1
 // For global getters
2
-export default () => {}
2
+export default () => {
3
+    randomPosts: state => state.randomPosts,
4
+    randomPostsLoaded: state => state.randomPostsLoaded,
5
+}

+ 11
- 0
vue-theme/src/store/index.js Целия файл

@@ -29,6 +29,8 @@ const state = {
29 29
     },
30 30
     currentGallery: null,
31 31
     view: 'list',
32
+    randomPostsLoaded: false,
33
+    randomPosts: []
32 34
 }
33 35
 
34 36
 const mutations = {
@@ -64,6 +66,15 @@ const mutations = {
64 66
     CLEAR_GALLERY(state) {
65 67
         state.gallery = null
66 68
     },
69
+    STORE_FETCHED_RANDOM(state, { randomPosts }) {
70
+        state.randomPosts = randomPosts
71
+    },
72
+    CLEAR_RANDOM(state) {
73
+        state.randomPosts = []
74
+    },
75
+    RANDOM_LOADED(state, val) {
76
+        state.randomPostsLoaded = val
77
+    },
67 78
 }
68 79
 
69 80
 const store = new Vuex.Store({

+ 11
- 1
vue-theme/src/utils/api.js Целия файл

@@ -51,7 +51,17 @@ export default {
51 51
                 cb(e)
52 52
             })
53 53
     },
54
-
54
+    getRandom(types, cb) {
55
+        const randomPosts = []
56
+        for(type in types) {
57
+            axios
58
+                .get(SETTINGS.API_BASE_PATH + `${type}?orderby=rand&limit=1`)
59
+                .then(response => {
60
+                    randomPosts.push(response.data)
61
+                })
62
+        }
63
+        cb(randomPosts)
64
+    },
55 65
     getSticky(cb) {
56 66
         axios
57 67
             .get(SETTINGS.API_BASE_PATH + 'sticky')

Loading…
Отказ
Запис