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)
|
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
|
var callbackData = multiBuyId != null
|
||||||
? $"add:{product.Id}:{quantity}:{multiBuyId}"
|
? _mapper.BuildCallback("add", product.Id, quantity, Guid.Parse(multiBuyId))
|
||||||
: $"add:{product.Id}:{quantity}";
|
: _mapper.BuildCallback("add", product.Id, quantity);
|
||||||
|
|
||||||
buttons.Add(new[] {
|
buttons.Add(new[] {
|
||||||
InlineKeyboardButton.WithCallbackData($"🛒 Add to Cart", callbackData)
|
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);
|
return new InlineKeyboardMarkup(buttons);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -435,9 +435,12 @@ namespace TeleBot.UI
|
|||||||
? $"{variant.Name} ({count}){variantInfo}"
|
? $"{variant.Name} ({count}){variantInfo}"
|
||||||
: $"{variant.Name}{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(
|
variantButtons.Add(InlineKeyboardButton.WithCallbackData(
|
||||||
buttonText,
|
buttonText,
|
||||||
$"addvariant:{product.Id}:{quantity}:{variant.Name}:{multiBuyId ?? "null"}"
|
callbackData
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -448,9 +451,12 @@ namespace TeleBot.UI
|
|||||||
? $"✅ {variant.Name}{variantInfo}"
|
? $"✅ {variant.Name}{variantInfo}"
|
||||||
: $"{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(
|
variantButtons.Add(InlineKeyboardButton.WithCallbackData(
|
||||||
buttonText,
|
buttonText,
|
||||||
$"setvariant:{product.Id}:{variant.Name}"
|
callbackData
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -468,9 +474,10 @@ namespace TeleBot.UI
|
|||||||
if (canConfirm)
|
if (canConfirm)
|
||||||
{
|
{
|
||||||
var variantString = string.Join(",", selectedVariants);
|
var variantString = string.Join(",", selectedVariants);
|
||||||
|
var shortProductId = _mapper.GetShortId(product.Id, "p");
|
||||||
var callbackData = multiBuyId != null
|
var callbackData = multiBuyId != null
|
||||||
? $"confirmvar:{product.Id}:{quantity}:{multiBuyId}:{variantString}"
|
? $"confirmvar:{shortProductId}:{quantity}:{multiBuyId}:{variantString}"
|
||||||
: $"confirmvar:{product.Id}:{quantity}:null:{variantString}";
|
: $"confirmvar:{shortProductId}:{quantity}:null:{variantString}";
|
||||||
|
|
||||||
buttons.Add(new[] {
|
buttons.Add(new[] {
|
||||||
InlineKeyboardButton.WithCallbackData(
|
InlineKeyboardButton.WithCallbackData(
|
||||||
@ -483,15 +490,16 @@ namespace TeleBot.UI
|
|||||||
// Clear selection button for multi-buy
|
// Clear selection button for multi-buy
|
||||||
if (quantity > 1 && selectedVariants.Any())
|
if (quantity > 1 && selectedVariants.Any())
|
||||||
{
|
{
|
||||||
|
var shortProductId = _mapper.GetShortId(product.Id, "p");
|
||||||
buttons.Add(new[] {
|
buttons.Add(new[] {
|
||||||
InlineKeyboardButton.WithCallbackData(
|
InlineKeyboardButton.WithCallbackData(
|
||||||
"🔄 Clear Selections",
|
"🔄 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);
|
return new InlineKeyboardMarkup(buttons);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user