"Fix-Use-short-IDs-for-product-buttons-and-simplify-to-Buy-button"
This commit is contained in:
parent
694ce15549
commit
8fb8c56d9b
@ -97,7 +97,11 @@ namespace TeleBot.Handlers
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case "product":
|
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;
|
break;
|
||||||
|
|
||||||
case "qty":
|
case "qty":
|
||||||
|
|||||||
@ -30,20 +30,23 @@ namespace TeleBot.Services
|
|||||||
private readonly ILogger<ProductCarouselService> _logger;
|
private readonly ILogger<ProductCarouselService> _logger;
|
||||||
private readonly HttpClient _httpClient;
|
private readonly HttpClient _httpClient;
|
||||||
private readonly MenuBuilder _menuBuilder;
|
private readonly MenuBuilder _menuBuilder;
|
||||||
|
private readonly CallbackDataMapper _mapper;
|
||||||
private readonly string _imageCachePath;
|
private readonly string _imageCachePath;
|
||||||
|
|
||||||
public ProductCarouselService(
|
public ProductCarouselService(
|
||||||
IConfiguration configuration,
|
IConfiguration configuration,
|
||||||
ILogger<ProductCarouselService> logger,
|
ILogger<ProductCarouselService> logger,
|
||||||
HttpClient httpClient,
|
HttpClient httpClient,
|
||||||
MenuBuilder menuBuilder)
|
MenuBuilder menuBuilder,
|
||||||
|
CallbackDataMapper mapper)
|
||||||
{
|
{
|
||||||
_configuration = configuration;
|
_configuration = configuration;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_menuBuilder = menuBuilder;
|
_menuBuilder = menuBuilder;
|
||||||
|
_mapper = mapper;
|
||||||
_httpClient = httpClient;
|
_httpClient = httpClient;
|
||||||
_imageCachePath = Path.Combine(Environment.CurrentDirectory, "image_cache");
|
_imageCachePath = Path.Combine(Environment.CurrentDirectory, "image_cache");
|
||||||
|
|
||||||
// Ensure cache directory exists
|
// Ensure cache directory exists
|
||||||
Directory.CreateDirectory(_imageCachePath);
|
Directory.CreateDirectory(_imageCachePath);
|
||||||
}
|
}
|
||||||
@ -97,13 +100,13 @@ namespace TeleBot.Services
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add button for this product
|
// Add Buy button for this product (simplified - just "Buy" since product info is in caption)
|
||||||
productButtons.Add(new[]
|
productButtons.Add(new[]
|
||||||
{
|
{
|
||||||
InlineKeyboardButton.WithCallbackData(
|
InlineKeyboardButton.WithCallbackData(
|
||||||
$"🛒 {product.Name} - ${product.Price:F2}",
|
$"🛒 Buy {product.Name}",
|
||||||
$"product:{product.Id}"
|
_mapper.BuildCallback("product", product.Id)
|
||||||
)
|
)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -23,7 +23,7 @@ namespace TeleBot
|
|||||||
var mapper = new TeleBot.Services.CallbackDataMapper();
|
var mapper = new TeleBot.Services.CallbackDataMapper();
|
||||||
var menuBuilder = new TeleBot.UI.MenuBuilder(mapper);
|
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
|
// Test image URL validation
|
||||||
var validUrls = new[]
|
var validUrls = new[]
|
||||||
@ -48,7 +48,7 @@ namespace TeleBot
|
|||||||
var mapper = new TeleBot.Services.CallbackDataMapper();
|
var mapper = new TeleBot.Services.CallbackDataMapper();
|
||||||
var menuBuilder = new TeleBot.UI.MenuBuilder(mapper);
|
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
|
// Create a test product with image
|
||||||
var testProduct = new Product
|
var testProduct = new Product
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user