import { useEffect, useState } from 'react';
import TableTxsInfinite from 'src/components/TableTxsInfinite/TableTxsInfinite';
import { useAdviser } from 'src/features/adviser/context';
import { useMessagesByAddressQuery } from 'src/generated/graphql';
import { useRobotContext } from 'src/pages/robot/robot.context';

const limit = 10; // Use a constant for the limit

function TxsTable() {
  const { address: accountUser } = useRobotContext();
  const [hasMore, setHasMore] = useState(true);
  const { setAdviser } = useAdviser();
  const { data, loading, fetchMore, error } = useMessagesByAddressQuery({
    variables: {
      address: `{${accountUser}}`,
      limit,
      offset: 0,
      types: '{}',
    },
    notifyOnNetworkStatusChange: true,
  });

  useEffect(() => {
    setAdviser(
      <>
        the life history of one neuron, which cannot be removed or destroyed <br />
        what is written in the blockchain cannot be cut out with an axe
      </>
    );
  }, [setAdviser]);

  const fetchMoreData = () => {
    fetchMore({
      variables: {
        offset: data?.messages_by_address.length,
      },
      updateQuery: (prev, { fetchMoreResult }) => {
        if (!fetchMoreResult) {
          return prev;
        }
        setHasMore(fetchMoreResult.messages_by_address.length > 0);
        return {
          ...prev,
          messages_by_address: [
            ...prev.messages_by_address,
            ...fetchMoreResult.messages_by_address,
          ],
        };
      },
    });
  };

  return (
    <TableTxsInfinite
      response={{ data, error, loading }}
      hasMore={hasMore}
      fetchMoreData={fetchMoreData}
      accountUser={accountUser}
    />
  );
}

export default TxsTable;

Neighbours