diff --git a/ui/actions/invitations/invitation.ts b/ui/actions/invitations/invitation.ts index a572e9148f..28ef77c9e2 100644 --- a/ui/actions/invitations/invitation.ts +++ b/ui/actions/invitations/invitation.ts @@ -4,7 +4,7 @@ import { revalidatePath } from "next/cache"; import { redirect } from "next/navigation"; import { auth } from "@/auth.config"; -import { getErrorMessage, parseStringify, wait } from "@/lib"; +import { getErrorMessage, parseStringify } from "@/lib"; export const getInvitations = async ({ page = 1, @@ -189,9 +189,14 @@ export const getInvitationInfoById = async (invitationId: string) => { export const revokeInvite = async (formData: FormData) => { const session = await auth(); const keyServer = process.env.API_BASE_URL; - const invitationId = formData.get("invitationId"); + + if (!invitationId) { + return { error: "Invitation ID is required" }; + } + const url = new URL(`${keyServer}/tenants/invitations/${invitationId}`); + try { const response = await fetch(url.toString(), { method: "DELETE", @@ -199,13 +204,28 @@ export const revokeInvite = async (formData: FormData) => { Authorization: `Bearer ${session?.accessToken}`, }, }); - const data = await response.json(); - await wait(1000); + + if (!response.ok) { + try { + const errorData = await response.json(); + throw new Error( + errorData?.message || "Failed to revoke the invitation", + ); + } catch { + throw new Error("Failed to revoke the invitation"); + } + } + + let data = null; + if (response.status !== 204) { + data = await response.json(); + } + revalidatePath("/invitations"); - return parseStringify(data); + return data || { success: true }; } catch (error) { - return { - error: getErrorMessage(error), - }; + // eslint-disable-next-line no-console + console.error("Error revoking invitation:", error); + return { error: getErrorMessage(error) }; } }; diff --git a/ui/actions/manage-groups/manage-groups.ts b/ui/actions/manage-groups/manage-groups.ts index 7f0927f63a..13b29534ae 100644 --- a/ui/actions/manage-groups/manage-groups.ts +++ b/ui/actions/manage-groups/manage-groups.ts @@ -4,7 +4,7 @@ import { revalidatePath } from "next/cache"; import { redirect } from "next/navigation"; import { auth } from "@/auth.config"; -import { getErrorMessage, parseStringify, wait } from "@/lib"; +import { getErrorMessage, parseStringify } from "@/lib"; import { ManageGroupPayload, ProviderGroupsResponse } from "@/types/components"; export const getProviderGroups = async ({ @@ -210,8 +210,12 @@ export const updateProviderGroup = async ( export const deleteProviderGroup = async (formData: FormData) => { const session = await auth(); const keyServer = process.env.API_BASE_URL; - const providerGroupId = formData.get("id"); + + if (!providerGroupId) { + return { error: "Provider Group ID is required" }; + } + const url = new URL(`${keyServer}/provider-groups/${providerGroupId}`); try { @@ -221,13 +225,28 @@ export const deleteProviderGroup = async (formData: FormData) => { Authorization: `Bearer ${session?.accessToken}`, }, }); - const data = await response.json(); - await wait(2000); + + if (!response.ok) { + try { + const errorData = await response.json(); + throw new Error( + errorData?.message || "Failed to delete the provider group", + ); + } catch { + throw new Error("Failed to delete the provider group"); + } + } + + let data = null; + if (response.status !== 204) { + data = await response.json(); + } + revalidatePath("/manage-groups"); - return parseStringify(data); + return data || { success: true }; } catch (error) { - return { - error: getErrorMessage(error), - }; + // eslint-disable-next-line no-console + console.error("Error deleting provider group:", error); + return { error: getErrorMessage(error) }; } }; diff --git a/ui/actions/providers/providers.ts b/ui/actions/providers/providers.ts index 03ac58ab15..0ac39db2d6 100644 --- a/ui/actions/providers/providers.ts +++ b/ui/actions/providers/providers.ts @@ -380,6 +380,11 @@ export const checkConnectionProvider = async (formData: FormData) => { export const deleteCredentials = async (secretId: string) => { const session = await auth(); const keyServer = process.env.API_BASE_URL; + + if (!secretId) { + return { error: "Secret ID is required" }; + } + const url = new URL(`${keyServer}/providers/secrets/${secretId}`); try { @@ -389,21 +394,41 @@ export const deleteCredentials = async (secretId: string) => { Authorization: `Bearer ${session?.accessToken}`, }, }); - const data = await response.json(); + + if (!response.ok) { + try { + const errorData = await response.json(); + throw new Error( + errorData?.message || "Failed to delete the credentials", + ); + } catch { + throw new Error("Failed to delete the credentials"); + } + } + + let data = null; + if (response.status !== 204) { + data = await response.json(); + } + revalidatePath("/providers"); - return parseStringify(data); + return data || { success: true }; } catch (error) { - return { - error: getErrorMessage(error), - }; + // eslint-disable-next-line no-console + console.error("Error deleting credentials:", error); + return { error: getErrorMessage(error) }; } }; export const deleteProvider = async (formData: FormData) => { const session = await auth(); const keyServer = process.env.API_BASE_URL; - const providerId = formData.get("id"); + + if (!providerId) { + return { error: "Provider ID is required" }; + } + const url = new URL(`${keyServer}/providers/${providerId}`); try { @@ -413,13 +438,26 @@ export const deleteProvider = async (formData: FormData) => { Authorization: `Bearer ${session?.accessToken}`, }, }); - const data = await response.json(); - await wait(1000); + + if (!response.ok) { + try { + const errorData = await response.json(); + throw new Error(errorData?.message || "Failed to delete the provider"); + } catch { + throw new Error("Failed to delete the provider"); + } + } + + let data = null; + if (response.status !== 204) { + data = await response.json(); + } + revalidatePath("/providers"); - return parseStringify(data); + return data || { success: true }; } catch (error) { - return { - error: getErrorMessage(error), - }; + // eslint-disable-next-line no-console + console.error("Error deleting provider:", error); + return { error: getErrorMessage(error) }; } }; diff --git a/ui/actions/roles/roles.ts b/ui/actions/roles/roles.ts index 6bd92e8034..a371fd74ea 100644 --- a/ui/actions/roles/roles.ts +++ b/ui/actions/roles/roles.ts @@ -222,16 +222,24 @@ export const deleteRole = async (roleId: string) => { }); if (!response.ok) { - const errorData = await response.json(); - throw new Error(errorData?.message || "Failed to delete the role"); + try { + const errorData = await response.json(); + throw new Error(errorData?.message || "Failed to delete the role"); + } catch { + throw new Error("Failed to delete the role"); + } + } + + let data = null; + if (response.status !== 204) { + data = await response.json(); } - const data = await response.json(); revalidatePath("/roles"); - return data; + return data || { success: true }; } catch (error) { - return { - error: getErrorMessage(error), - }; + // eslint-disable-next-line no-console + console.error("Error deleting role:", error); + return { error: getErrorMessage(error) }; } }; diff --git a/ui/actions/users/users.ts b/ui/actions/users/users.ts index ce80221da3..f77e7c3ab1 100644 --- a/ui/actions/users/users.ts +++ b/ui/actions/users/users.ts @@ -157,9 +157,14 @@ export const updateUserRole = async (formData: FormData) => { export const deleteUser = async (formData: FormData) => { const session = await auth(); const keyServer = process.env.API_BASE_URL; - const userId = formData.get("userId"); + + if (!userId) { + return { error: "User ID is required" }; + } + const url = new URL(`${keyServer}/users/${userId}`); + try { const response = await fetch(url.toString(), { method: "DELETE", @@ -167,14 +172,27 @@ export const deleteUser = async (formData: FormData) => { Authorization: `Bearer ${session?.accessToken}`, }, }); - const data = await response.json(); - await wait(1000); + + if (!response.ok) { + try { + const errorData = await response.json(); + throw new Error(errorData?.message || "Failed to delete the user"); + } catch { + throw new Error("Failed to delete the user"); + } + } + + let data = null; + if (response.status !== 204) { + data = await response.json(); + } + revalidatePath("/users"); - return parseStringify(data); + return data || { success: true }; } catch (error) { - return { - error: getErrorMessage(error), - }; + // eslint-disable-next-line no-console + console.error("Error deleting user:", error); + return { error: getErrorMessage(error) }; } };