diff --git a/TeleBot/TeleBot/Handlers/CallbackHandler.cs b/TeleBot/TeleBot/Handlers/CallbackHandler.cs index bb83fe7..dffbac7 100644 --- a/TeleBot/TeleBot/Handlers/CallbackHandler.cs +++ b/TeleBot/TeleBot/Handlers/CallbackHandler.cs @@ -97,7 +97,11 @@ namespace TeleBot.Handlers break; case "product": - await HandleProductDetail(bot, callbackQuery.Message, session, Guid.Parse(data[1])); + { + var (_, productId, _, _) = _mapper.ParseCallback(callbackQuery.Data); + if (productId.HasValue) + await HandleProductDetail(bot, callbackQuery.Message, session, productId.Value); + } break; case "qty": diff --git a/TeleBot/TeleBot/Services/ProductCarouselService.cs b/TeleBot/TeleBot/Services/ProductCarouselService.cs index fe33207..cfb82f4 100644 --- a/TeleBot/TeleBot/Services/ProductCarouselService.cs +++ b/TeleBot/TeleBot/Services/ProductCarouselService.cs @@ -30,20 +30,23 @@ namespace TeleBot.Services private readonly ILogger _logger; private readonly HttpClient _httpClient; private readonly MenuBuilder _menuBuilder; + private readonly CallbackDataMapper _mapper; private readonly string _imageCachePath; public ProductCarouselService( IConfiguration configuration, ILogger logger, HttpClient httpClient, - MenuBuilder menuBuilder) + MenuBuilder menuBuilder, + CallbackDataMapper mapper) { _configuration = configuration; _logger = logger; _menuBuilder = menuBuilder; + _mapper = mapper; _httpClient = httpClient; _imageCachePath = Path.Combine(Environment.CurrentDirectory, "image_cache"); - + // Ensure cache directory exists Directory.CreateDirectory(_imageCachePath); } @@ -97,13 +100,13 @@ namespace TeleBot.Services ); } - // Add button for this product - productButtons.Add(new[] - { + // Add Buy button for this product (simplified - just "Buy" since product info is in caption) + productButtons.Add(new[] + { InlineKeyboardButton.WithCallbackData( - $"🛒 {product.Name} - ${product.Price:F2}", - $"product:{product.Id}" - ) + $"🛒 Buy {product.Name}", + _mapper.BuildCallback("product", product.Id) + ) }); } diff --git a/TeleBot/TeleBot/TestCarousel.cs b/TeleBot/TeleBot/TestCarousel.cs index 26e441c..9f5e316 100644 --- a/TeleBot/TeleBot/TestCarousel.cs +++ b/TeleBot/TeleBot/TestCarousel.cs @@ -23,7 +23,7 @@ namespace TeleBot var mapper = new TeleBot.Services.CallbackDataMapper(); var menuBuilder = new TeleBot.UI.MenuBuilder(mapper); - var carouselService = new ProductCarouselService(config, logger, httpClient, menuBuilder); + var carouselService = new ProductCarouselService(config, logger, httpClient, menuBuilder, mapper); // Test image URL validation var validUrls = new[] @@ -48,7 +48,7 @@ namespace TeleBot var mapper = new TeleBot.Services.CallbackDataMapper(); var menuBuilder = new TeleBot.UI.MenuBuilder(mapper); - var carouselService = new ProductCarouselService(config, logger, httpClient, menuBuilder); + var carouselService = new ProductCarouselService(config, logger, httpClient, menuBuilder, mapper); // Create a test product with image var testProduct = new Product