UNPKG

nuxt-users

Version:

A comprehensive user management module for Nuxt 3 and Nuxt 4 applications with authentication, authorization, database support, and CLI tools

56 lines (55 loc) 1.77 kB
import { useState, useRuntimeConfig } from "#imports"; const usersState = useState("users", () => []); const paginationState = useState("users-pagination", () => null); export const useUsers = () => { const { public: { nuxtUsers } } = useRuntimeConfig(); const loading = useState("users-loading", () => false); const error = useState("users-error", () => null); const fetchUsers = async (page = 1, limit = 100) => { if (loading.value) return; loading.value = true; error.value = null; try { const response = await $fetch(`${nuxtUsers.apiBasePath}?page=${page}&limit=${limit}`); usersState.value = response.users; paginationState.value = response.pagination; } catch (err) { error.value = err instanceof Error ? err.message : "Failed to fetch users"; usersState.value = []; paginationState.value = null; } finally { loading.value = false; } }; const updateUser = (updatedUser) => { const index = usersState.value.findIndex((u) => u.id === updatedUser.id); if (index !== -1) { usersState.value[index] = updatedUser; } }; const addUser = (newUser) => { usersState.value.unshift(newUser); }; const removeUser = async (userId) => { loading.value = true; error.value = null; try { await $fetch(`${nuxtUsers.apiBasePath}/${userId}`, { method: "DELETE" }); usersState.value = usersState.value.filter((u) => u.id !== userId); } catch (err) { error.value = err instanceof Error ? err.message : "Failed to delete user"; } finally { loading.value = false; } }; return { users: usersState, pagination: paginationState, loading, error, fetchUsers, updateUser, addUser, removeUser }; };