def record_product_subscription()

in chat-client/main.py [0:0]


def record_product_subscription(space_id, products, categories):
    try:
        subscriptions_ref = DB.collection("product_space_subscriptions")
        space_doc_ref = subscriptions_ref.document(space_id.replace("/", "_"))
        if space_doc_ref.get().exists:
            previous_products = (
                space_doc_ref.get().to_dict().get("products_subscribed", [])
            )
            previous_categories = (
                space_doc_ref.get().to_dict().get("categories_subscribed", [])
            )
            if (len(previous_products) > len(products)) or (
                len(previous_categories) > len(categories)
            ):
                unsubscribed_products = list(set(previous_products) - set(products))
                unsubscribed_categories = list(
                    set(previous_categories) - set(categories)
                )
                with futures.ThreadPoolExecutor() as executor:
                    unsubscribe_space_product_futures = [
                        executor.submit(
                            unsubscribe_space_product,
                            space_id,
                            DB.collection("space_product_subscriptions"),
                            product,
                        )
                        for product in unsubscribed_products
                    ]
                    unsubscribe_space_blogs_futures = [
                        executor.submit(
                            unsubscribe_space_blogs,
                            space_id,
                            DB.collection("space_blog_subscriptions"),
                            category,
                        )
                        for category in unsubscribed_categories
                    ]
                futures.wait(
                    unsubscribe_space_product_futures + unsubscribe_space_blogs_futures
                )
        space_doc_ref.set(
            {"products_subscribed": products, "categories_subscribed": categories}
        )
    except Exception as e:
        print(f"Error recording subscription: {e}", exc_info=True)