diff --git a/TeleBot/TeleBot/UI/MenuBuilder.cs b/TeleBot/TeleBot/UI/MenuBuilder.cs index d96e34d..581d955 100644 --- a/TeleBot/TeleBot/UI/MenuBuilder.cs +++ b/TeleBot/TeleBot/UI/MenuBuilder.cs @@ -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); }