feat(profile): enhance ChargeCreditWallet with return URL handling and continue shopping button
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 22m27s
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 22m27s
- Added support for return URL handling in ChargeCreditWallet to improve user experience after payment. - Introduced a "Continue Shopping" button that allows users to navigate back to their previous shopping session after successfully charging their wallet. - Updated the component to manage pending return URLs and ensure they are saved and retrieved correctly. These changes enhance the functionality of the ChargeCreditWallet page, providing a smoother transition for users post-transaction.
This commit is contained in:
@@ -13,7 +13,16 @@
|
||||
Class="rounded-lg" Variant="Variant.Filled">
|
||||
@if (_paymentResult == "success")
|
||||
{
|
||||
<span>شارژ کیف پول اصلی با موفقیت انجام شد! ✅</span>
|
||||
<MudStack Spacing="2">
|
||||
<span>شارژ کیف پول اصلی با موفقیت انجام شد! ✅</span>
|
||||
<MudButton Variant="Variant.Filled"
|
||||
Color="Color.Primary"
|
||||
Size="Size.Small"
|
||||
StartIcon="@Icons.Material.Filled.ShoppingCart"
|
||||
OnClick="ContinueShoppingAsync">
|
||||
ادامه خرید
|
||||
</MudButton>
|
||||
</MudStack>
|
||||
}
|
||||
else if (_paymentResult == "cancelled")
|
||||
{
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using FrontOffice.Main.Utilities;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.JSInterop;
|
||||
using MudBlazor;
|
||||
|
||||
namespace FrontOffice.Main.Pages.Profile;
|
||||
@@ -9,15 +10,38 @@ public partial class ChargeCreditWallet : ComponentBase
|
||||
private bool _isProcessing;
|
||||
private long _chargeAmount;
|
||||
private string? _paymentResult;
|
||||
private string? _pendingReturnUrl;
|
||||
|
||||
private readonly long[] _presetAmounts = { 500_000, 1_000_000, 5_000_000, 10_000_000, 20_000_000, 50_000_000 };
|
||||
|
||||
[SupplyParameterFromQuery(Name = "payment")]
|
||||
public string? PaymentQueryParam { get; set; }
|
||||
|
||||
[SupplyParameterFromQuery(Name = "amount")]
|
||||
public long? AmountQueryParam { get; set; }
|
||||
|
||||
[SupplyParameterFromQuery(Name = "returnUrl")]
|
||||
public string? ReturnUrlQueryParam { get; set; }
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
_paymentResult = PaymentQueryParam;
|
||||
|
||||
if (AmountQueryParam is > 0)
|
||||
_chargeAmount = CreditChargeNavigation.NormalizeChargeAmount(AmountQueryParam.Value);
|
||||
|
||||
if (CreditChargeNavigation.IsValidReturnUrl(ReturnUrlQueryParam))
|
||||
_pendingReturnUrl = ReturnUrlQueryParam;
|
||||
}
|
||||
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
{
|
||||
if (firstRender && !string.IsNullOrEmpty(_pendingReturnUrl))
|
||||
{
|
||||
await CreditChargeNavigation.SaveReturnUrlAsync(jsRuntime, _pendingReturnUrl);
|
||||
}
|
||||
|
||||
await base.OnAfterRenderAsync(firstRender);
|
||||
}
|
||||
|
||||
private async Task StartCreditCharge()
|
||||
@@ -29,6 +53,15 @@ public partial class ChargeCreditWallet : ComponentBase
|
||||
|
||||
try
|
||||
{
|
||||
if (!string.IsNullOrEmpty(_pendingReturnUrl))
|
||||
await CreditChargeNavigation.SaveReturnUrlAsync(jsRuntime, _pendingReturnUrl);
|
||||
else
|
||||
{
|
||||
var storedReturnUrl = await CreditChargeNavigation.GetReturnUrlAsync(jsRuntime);
|
||||
if (CreditChargeNavigation.IsValidReturnUrl(storedReturnUrl))
|
||||
_pendingReturnUrl = storedReturnUrl;
|
||||
}
|
||||
|
||||
var (success, gatewayUrl, error) = await WalletService.InitiateCreditChargeAsync(_chargeAmount);
|
||||
|
||||
if (success && !string.IsNullOrEmpty(gatewayUrl))
|
||||
@@ -51,6 +84,15 @@ public partial class ChargeCreditWallet : ComponentBase
|
||||
}
|
||||
}
|
||||
|
||||
private async Task ContinueShoppingAsync()
|
||||
{
|
||||
var returnUrl = await CreditChargeNavigation.GetReturnUrlAsync(jsRuntime);
|
||||
await CreditChargeNavigation.ClearReturnUrlAsync(jsRuntime);
|
||||
|
||||
if (CreditChargeNavigation.IsValidReturnUrl(returnUrl))
|
||||
Navigation.NavigateTo(returnUrl!);
|
||||
}
|
||||
|
||||
private static string FormatToman(long toman)
|
||||
=> string.Format("{0:N0} تومان", toman);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user