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)