Fix: VariantSelectionMenu now uses CallbackDataMapper for all callback data to prevent GUID parsing errors
This commit is contained in:
parent
0801fb004c
commit
f1d8bfc317
@ -344,15 +344,15 @@ namespace TeleBot.UI
|
||||
|
||||
if (product.Variants?.Any(v => v.IsActive) != true)
|
||||
{
|
||||
// No variants, just add to cart
|
||||
// No variants, just add to cart - use mapper for short IDs
|
||||
var callbackData = multiBuyId != null
|
||||
? $"add:{product.Id}:{quantity}:{multiBuyId}"
|
||||
: $"add:{product.Id}:{quantity}";
|
||||
? _mapper.BuildCallback("add", product.Id, quantity, Guid.Parse(multiBuyId))
|
||||
: _mapper.BuildCallback("add", product.Id, quantity);
|
||||
|
||||
buttons.Add(new[] {
|
||||
InlineKeyboardButton.WithCallbackData($"🛒 Add to Cart", callbackData)
|
||||
});
|
||||
buttons.Add(new[] { InlineKeyboardButton.WithCallbackData("⬅️ Back", $"product:{product.Id}") });
|
||||
buttons.Add(new[] { InlineKeyboardButton.WithCallbackData("⬅️ Back", _mapper.BuildCallback("product", product.Id)) });
|
||||
return new InlineKeyboardMarkup(buttons);
|
||||
}
|
||||
|
||||
@ -435,9 +435,12 @@ namespace TeleBot.UI
|
||||
? $"{variant.Name} ({count}){variantInfo}"
|
||||
: $"{variant.Name}{variantInfo}";
|
||||
|
||||
// Build callback with mapper for short IDs
|
||||
var callbackData = $"addvariant:{_mapper.GetShortId(product.Id, "p")}:{quantity}:{variant.Name}:{multiBuyId ?? "null"}";
|
||||
|
||||
variantButtons.Add(InlineKeyboardButton.WithCallbackData(
|
||||
buttonText,
|
||||
$"addvariant:{product.Id}:{quantity}:{variant.Name}:{multiBuyId ?? "null"}"
|
||||
callbackData
|
||||
));
|
||||
}
|
||||
else
|
||||
@ -448,9 +451,12 @@ namespace TeleBot.UI
|
||||
? $"✅ {variant.Name}{variantInfo}"
|
||||
: $"{variant.Name}{variantInfo}";
|
||||
|
||||
// Build callback with mapper for short IDs
|
||||
var callbackData = $"setvariant:{_mapper.GetShortId(product.Id, "p")}:{variant.Name}";
|
||||
|
||||
variantButtons.Add(InlineKeyboardButton.WithCallbackData(
|
||||
buttonText,
|
||||
$"setvariant:{product.Id}:{variant.Name}"
|
||||
callbackData
|
||||
));
|
||||
}
|
||||
}
|
||||
@ -468,9 +474,10 @@ namespace TeleBot.UI
|
||||
if (canConfirm)
|
||||
{
|
||||
var variantString = string.Join(",", selectedVariants);
|
||||
var shortProductId = _mapper.GetShortId(product.Id, "p");
|
||||
var callbackData = multiBuyId != null
|
||||
? $"confirmvar:{product.Id}:{quantity}:{multiBuyId}:{variantString}"
|
||||
: $"confirmvar:{product.Id}:{quantity}:null:{variantString}";
|
||||
? $"confirmvar:{shortProductId}:{quantity}:{multiBuyId}:{variantString}"
|
||||
: $"confirmvar:{shortProductId}:{quantity}:null:{variantString}";
|
||||
|
||||
buttons.Add(new[] {
|
||||
InlineKeyboardButton.WithCallbackData(
|
||||
@ -483,15 +490,16 @@ namespace TeleBot.UI
|
||||
// Clear selection button for multi-buy
|
||||
if (quantity > 1 && selectedVariants.Any())
|
||||
{
|
||||
var shortProductId = _mapper.GetShortId(product.Id, "p");
|
||||
buttons.Add(new[] {
|
||||
InlineKeyboardButton.WithCallbackData(
|
||||
"🔄 Clear Selections",
|
||||
$"selectvar:{product.Id}:{quantity}:{multiBuyId ?? "null"}"
|
||||
$"selectvar:{shortProductId}:{quantity}:{multiBuyId ?? "null"}"
|
||||
)
|
||||
});
|
||||
}
|
||||
|
||||
buttons.Add(new[] { InlineKeyboardButton.WithCallbackData("⬅️ Back", $"product:{product.Id}") });
|
||||
buttons.Add(new[] { InlineKeyboardButton.WithCallbackData("⬅️ Back", _mapper.BuildCallback("product", product.Id)) });
|
||||
|
||||
return new InlineKeyboardMarkup(buttons);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user