98 lines
3.1 KiB
JavaScript
98 lines
3.1 KiB
JavaScript
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,
|
|
};
|