monolito_djanco_poonto/src/store/modules/users.js
Thaís Ferreira f3317dc54f 11h33
2025-01-30 11:33:58 -03:00

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,
};