/
aprogrammer
/
blazor-workshop
Обзор
Документация
Войти
/
aprogrammer
/
blazor-workshop
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/BlazingPizza.Client/Pages/Checkout.razor
72 строки
2 KB
Ed Charbeneau
Nullable (#365)
29 ноя 2023, 23:47
Не верифицирован
29 ноя 2023, 23:47
bb345a1
Код
Авторство
О чём код?
@page "/checkout" @attribute [Authorize] @inject OrderState OrderState @inject OrdersClient OrdersClient @inject NavigationManager NavigationManager @inject IJSRuntime JSRuntime <PageTitle>Blazing Pizza - Checkout</PageTitle> <div class="main"> <EditForm Model="OrderState.Order.DeliveryAddress" OnValidSubmit="PlaceOrder"> <div class="checkout-cols"> <div class="checkout-order-details"> <h4>Review order</h4> <OrderReview Order="OrderState.Order" /> </div> <div class="checkout-delivery-address"> <h4>Deliver to...</h4> <AddressEditor Address="OrderState.Order.DeliveryAddress" /> </div> </div> <button type="submit" class="checkout-button btn btn-warning" disabled="@isSubmitting"> Place order </button> <DataAnnotationsValidator /> </EditForm> </div> @code { bool isSubmitting; protected override void OnInitialized() { // In the background, ask if they want to be notified about order updates _ = RequestNotificationSubscriptionAsync(); } async Task RequestNotificationSubscriptionAsync() { var subscription = await JSRuntime.InvokeAsync<NotificationSubscription>("blazorPushNotifications.requestSubscription"); if (subscription is not null) { try { await OrdersClient.SubscribeToNotifications(subscription); } catch (AccessTokenNotAvailableException ex) { ex.Redirect(); } } } async Task PlaceOrder() { isSubmitting = true; try { var newOrderId = await OrdersClient.PlaceOrder(OrderState.Order); OrderState.ResetOrder(); NavigationManager.NavigateTo($"myorders/{newOrderId}"); } catch (AccessTokenNotAvailableException ex) { ex.Redirect(); } } }