const state = { users: [], loading: false, // Estado para controlar o carregamento error: null, // Estado para capturar erros }; const getters = { allUsers: (state) => state.users, isLoading: (state) => state.loading, // Getter para o estado de carregamento error: (state) => state.error, // Getter para o erro }; const actions = { async fetchUsers({ commit }) { commit('SET_LOADING', true); // Marca o início do carregamento commit('SET_ERROR', null); // Limpa qualquer erro anterior try { // Simula uma chamada de API com um atraso const mockUsers = [ { id: 1, name: 'João Silva', group: 'Admin', permission: 'Full Access' }, { id: 2, name: 'Maria Oliveira', group: 'User', permission: 'Limited Access' }, ]; // Simulando um atraso na resposta da API com Promise await new Promise((resolve) => setTimeout(resolve, 1000)); // Simula 1 segundo de atraso commit('SET_USERS', mockUsers); // Atualiza os usuários commit('SET_LOADING', false); // Marca o carregamento como completo } catch (error) { console.error('Erro ao carregar os usuários:', error); // Log detalhado do erro commit('SET_LOADING', false); commit('SET_ERROR', 'Falha ao carregar os usuários'); } }, async addUser({ commit }, user) { commit('SET_LOADING', true); // Marca o início do carregamento try { // Simula uma chamada de API para adicionar um novo usuário const newUser = { ...user, id: Date.now() }; // Gerando um ID único com base no timestamp // Simulando um atraso para a adição do usuário await new Promise((resolve) => setTimeout(resolve, 500)); // Simula 500ms de atraso commit('ADD_USER', newUser); // Adiciona o novo usuário commit('SET_LOADING', false); // Marca o carregamento como completo } catch (error) { console.error('Erro ao adicionar o usuário:', error); // Log detalhado do erro commit('SET_LOADING', false); commit('SET_ERROR', 'Falha ao adicionar o usuário'); } }, async deleteUser({ commit }, userId) { commit('SET_LOADING', true); // Marca o início do carregamento try { // Simula uma chamada de API para deletar um usuário await new Promise((resolve) => setTimeout(resolve, 500)); // Simula 500ms de atraso commit('REMOVE_USER', userId); // Remove o usuário commit('SET_LOADING', false); // Marca o carregamento como completo } catch (error) { console.error('Erro ao deletar o usuário:', error); // Log detalhado do erro commit('SET_LOADING', false); commit('SET_ERROR', 'Falha ao deletar o usuário'); } }, }; const mutations = { SET_USERS(state, users) { state.users = users; }, ADD_USER(state, user) { state.users.push(user); }, REMOVE_USER(state, userId) { state.users = state.users.filter(user => user.id !== userId); }, SET_LOADING(state, loading) { state.loading = loading; }, SET_ERROR(state, error) { state.error = error; }, }; export default { namespaced: true, state, getters, actions, mutations, };