mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-31 02:57:57 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import Vue from 'vue';
 | |
| import { getMostReadArticles } from 'widget/api/article';
 | |
| 
 | |
| const state = {
 | |
|   records: [],
 | |
|   uiFlags: {
 | |
|     isError: false,
 | |
|     hasFetched: false,
 | |
|     isFetching: false,
 | |
|   },
 | |
| };
 | |
| 
 | |
| export const getters = {
 | |
|   uiFlags: $state => $state.uiFlags,
 | |
|   popularArticles: $state => $state.records,
 | |
| };
 | |
| 
 | |
| export const actions = {
 | |
|   fetch: async ({ commit }, { slug, locale }) => {
 | |
|     commit('setIsFetching', true);
 | |
|     commit('setError', false);
 | |
| 
 | |
|     try {
 | |
|       const { data } = await getMostReadArticles(slug, locale);
 | |
|       const { payload = [] } = data;
 | |
|       if (payload.length) {
 | |
|         commit('setArticles', payload);
 | |
|       }
 | |
|     } catch (error) {
 | |
|       commit('setError', true);
 | |
|     } finally {
 | |
|       commit('setIsFetching', false);
 | |
|     }
 | |
|   },
 | |
| };
 | |
| 
 | |
| export const mutations = {
 | |
|   setArticles($state, data) {
 | |
|     Vue.set($state, 'records', data);
 | |
|   },
 | |
|   setError($state, value) {
 | |
|     Vue.set($state.uiFlags, 'isError', value);
 | |
|   },
 | |
|   setIsFetching($state, value) {
 | |
|     Vue.set($state.uiFlags, 'isFetching', value);
 | |
|   },
 | |
| };
 | |
| 
 | |
| export default {
 | |
|   namespaced: true,
 | |
|   state,
 | |
|   getters,
 | |
|   actions,
 | |
|   mutations,
 | |
| };
 | 
