import { getSessionOptions } from "@/lib/cookies";
import { createCoreAPIClient } from "@/lib/features/coreClient";
import type { UpdateUserAccessListPayload } from "./types";

const coreClient = createCoreAPIClient();

export async function updateUserAccessList(
  id: string,
  payload: UpdateUserAccessListPayload,
  request: Request,
) {
  try {
    const options = getSessionOptions(request);
    const response = await coreClient(
      `/v2/admin/console-user-access-list/${id}`,
      {
        method: "PUT",
        body: JSON.stringify({ ...payload }),
        headers: { ...options },
      },
    );
    return response;
  } catch (error) {
    return {
      message: (error as Error).message ?? "Failed updating user access list",
      data: null,
    };
  }
}

export async function addUserToAccessList(id: string, request: Request) {
  try {
    const options = getSessionOptions(request);
    const response = await coreClient(
      `/v2/admin/console-user-access-list/members/${id}`,
      {
        method: "POST",
        headers: { ...options },
      },
    );
    return response;
  } catch (error) {
    return {
      message: (error as Error).message ?? "Failed adding user to access list",
      data: null,
    };
  }
}

export async function removeUserFromAccessList(id: string, request: Request) {
  try {
    const options = getSessionOptions(request);
    const response = await coreClient(
      `/v2/admin/console-user-access-list/members/${id}`,
      {
        method: "DELETE",
        headers: { ...options },
      },
    );
    return response;
  } catch (error) {
    return {
      message:
        (error as Error).message ?? "Failed removing user from access list",
      data: null,
    };
  }
}
