"use client"
import { fetchUsers } from "@/network/apis/dashboard/userManagment/users/users.apis";
import { useInfiniteQuery, useQuery } from "@tanstack/react-query";


export interface User {
    id: number;
    email: string;
    first_name: string;
    last_name: string;
    phone: string;
    brand_name: string;
    credit: number;
    requests_balance: number;
    search_balance: number;
    country: {
        id: string;
        name: string;
    };
    account_type_id: number;
    account_type: string;
    email_verified: boolean;
    is_activated: boolean;
    profile_id: number | null;
    roles: [];
    permissions_routes_map: [];
    reports: string;
    pptx_downloads: number;
    competitor_insights: number;
    competitor_analysis: number;
    is_paid_subscription: boolean;
    paid_subscription: null;
}

export interface UsersResponse {
    items: User[];
    pagination: {
        current_page: number;
        per_page: number;
        total: number;
        last_page: number;
    }
}

export const useUsers = ({ page }: { page: number }) => {
    return useQuery({
        queryKey: ["users", page],
        queryFn: () => fetchUsers({ page }),
    });
};

export const useUsersInfinite = () => {
    return useInfiniteQuery({
        queryKey: ["users-infinite"],
        queryFn: ({ pageParam = 1 }) => fetchUsers({ page: pageParam }),
        getNextPageParam: (lastPage) => {
            if (lastPage.pagination && lastPage.pagination.current_page < lastPage.pagination.last_page) {
                return lastPage.pagination.current_page + 1;
            }
            return undefined;
        },
        initialPageParam: 1,
    });
};