"use server"; // import { serverFetchJson, serverFetchWithNoContent } from "@/app/utils/fetchUtil"; // import { BASE_API_URL } from "@/config/api"; import { serverFetchJson, serverFetchWithNoContent, } from "../../utils/fetchUtil"; import { BASE_API_URL } from "../../../config/api"; import { revalidateTag } from "next/cache"; import { UserDetail, UserResult } from "."; import { cache } from "react"; export interface UserInputs { username: string; // name: string; addAuthIds?: number[]; removeAuthIds?: number[]; password?: string; } export interface PasswordInputs { password: string; newPassword: string; newPasswordCheck: string; } export interface NameList { id: number; name: string; } export const fetchUserDetails = cache(async (id: number) => { return serverFetchJson(`${BASE_API_URL}/user/${id}`, { next: { tags: ["user"] }, }); }); export const fetchNameList = cache(async () => { return serverFetchJson(`${BASE_API_URL}/user/name-list`, { next: { tags: ["user"] }, }); }); export const editUser = async (id: number, data: UserInputs) => { const newUser = serverFetchWithNoContent(`${BASE_API_URL}/user/${id}`, { method: "PUT", body: JSON.stringify(data), headers: { "Content-Type": "application/json" }, }); revalidateTag("user"); return newUser; }; export const createUser = async (data: UserInputs) => { const newUser = serverFetchWithNoContent(`${BASE_API_URL}/user/save`, { method: "POST", body: JSON.stringify(data), headers: { "Content-Type": "application/json" }, }); revalidateTag("user"); return newUser; }; export const deleteUser = async (id: number) => { const newUser = serverFetchWithNoContent(`${BASE_API_URL}/user/${id}`, { method: "DELETE", headers: { "Content-Type": "application/json" }, }); revalidateTag("user"); return newUser; }; export const changePassword = async (data: any) => { return serverFetchWithNoContent(`${BASE_API_URL}/user/change-password`, { method: "PATCH", body: JSON.stringify(data), headers: { "Content-Type": "application/json" }, }); }; export const adminChangePassword = async (data: any) => { return serverFetchWithNoContent( `${BASE_API_URL}/user/admin-change-password`, { method: "PATCH", body: JSON.stringify(data), headers: { "Content-Type": "application/json" }, }, ); };