import time
import queue
import random
from newMarketBot import NewMarketBot
import threading
from LoggingFormatter import logger

listings_queue = queue.Queue()

def startHandleListingsQueue(all_sessions: list, webshare_ips: list) -> list:
    handle_listings_queue_threads = []
    
    for i in range(20):
        t = threading.Thread(
            target=handleListingsQueue,
            args=(
                listings_queue,
                webshare_ips,
                all_sessions
            ),
        )
        t.daemon = True
        t.name = "handleListingsQueue" + str(i)
        t.start()
        handle_listings_queue_threads.append(t)
    return handle_listings_queue_threads

def handleListingsQueue(listings_queue: queue.Queue, webshare_ips, all_sessions):
    while True:
        if listings_queue.qsize() <= 0:
            time.sleep(random.uniform(0.1, 0.2))

        else:
            bulk_list = listings_queue.get()[0]
            #current_thread_name = threading.current_thread().name
            #logger.info(f"{current_thread_name} is handling bulk list of {len(bulk_list)}")
            high_low = list(bulk_list[0].values())[0]["high_low"]
            nm = NewMarketBot(
                str(high_low),
                "Best Thread",
                webshare_ips,
                all_sessions,
                queue.Queue(),
            )
            nm.getBestOrWorstSkinsBulk(bulk_list)

