update address, cancel order

This commit is contained in:
Phuoc Nguyen
2025-11-25 16:39:29 +07:00
parent 039dfb9fb5
commit 84669ac89c
11 changed files with 584 additions and 194 deletions

View File

@@ -189,3 +189,51 @@ Future<OrderDetail> orderDetail(Ref ref, String orderId) async {
final repository = await ref.watch(orderRepositoryProvider.future);
return await repository.getOrderDetail(orderId);
}
/// Update Order Address Action
///
/// Updates the shipping and billing addresses for an order.
@Riverpod(keepAlive: true)
class UpdateOrderAddress extends _$UpdateOrderAddress {
@override
FutureOr<void> build() {
// No initial state needed
}
/// Update order address
Future<void> updateAddress({
required String orderId,
required String shippingAddressName,
required String customerAddress,
}) async {
state = const AsyncValue.loading();
state = await AsyncValue.guard(() async {
final repository = await ref.read(orderRepositoryProvider.future);
await repository.updateOrderAddress(
orderId: orderId,
shippingAddressName: shippingAddressName,
customerAddress: customerAddress,
);
});
}
}
/// Cancel Order Action
///
/// Cancels an order (only allowed for "Chờ phê duyệt" status).
@Riverpod(keepAlive: true)
class CancelOrder extends _$CancelOrder {
@override
FutureOr<void> build() {
// No initial state needed
}
/// Cancel order
Future<void> cancel(String orderId) async {
state = const AsyncValue.loading();
state = await AsyncValue.guard(() async {
final repository = await ref.read(orderRepositoryProvider.future);
await repository.cancelOrder(orderId);
});
}
}

View File

@@ -492,3 +492,122 @@ final class OrderDetailFamily extends $Family
@override
String toString() => r'orderDetailProvider';
}
/// Update Order Address Action
///
/// Updates the shipping and billing addresses for an order.
@ProviderFor(UpdateOrderAddress)
const updateOrderAddressProvider = UpdateOrderAddressProvider._();
/// Update Order Address Action
///
/// Updates the shipping and billing addresses for an order.
final class UpdateOrderAddressProvider
extends $AsyncNotifierProvider<UpdateOrderAddress, void> {
/// Update Order Address Action
///
/// Updates the shipping and billing addresses for an order.
const UpdateOrderAddressProvider._()
: super(
from: null,
argument: null,
retry: null,
name: r'updateOrderAddressProvider',
isAutoDispose: false,
dependencies: null,
$allTransitiveDependencies: null,
);
@override
String debugGetCreateSourceHash() => _$updateOrderAddressHash();
@$internal
@override
UpdateOrderAddress create() => UpdateOrderAddress();
}
String _$updateOrderAddressHash() =>
r'1913c2ccc2ba232debb4368f350f64c3d08cccec';
/// Update Order Address Action
///
/// Updates the shipping and billing addresses for an order.
abstract class _$UpdateOrderAddress extends $AsyncNotifier<void> {
FutureOr<void> build();
@$mustCallSuper
@override
void runBuild() {
build();
final ref = this.ref as $Ref<AsyncValue<void>, void>;
final element =
ref.element
as $ClassProviderElement<
AnyNotifier<AsyncValue<void>, void>,
AsyncValue<void>,
Object?,
Object?
>;
element.handleValue(ref, null);
}
}
/// Cancel Order Action
///
/// Cancels an order (only allowed for "Chờ phê duyệt" status).
@ProviderFor(CancelOrder)
const cancelOrderProvider = CancelOrderProvider._();
/// Cancel Order Action
///
/// Cancels an order (only allowed for "Chờ phê duyệt" status).
final class CancelOrderProvider
extends $AsyncNotifierProvider<CancelOrder, void> {
/// Cancel Order Action
///
/// Cancels an order (only allowed for "Chờ phê duyệt" status).
const CancelOrderProvider._()
: super(
from: null,
argument: null,
retry: null,
name: r'cancelOrderProvider',
isAutoDispose: false,
dependencies: null,
$allTransitiveDependencies: null,
);
@override
String debugGetCreateSourceHash() => _$cancelOrderHash();
@$internal
@override
CancelOrder create() => CancelOrder();
}
String _$cancelOrderHash() => r'201624156f3ae3c05fe438ea7e266cb8fa2a5bd6';
/// Cancel Order Action
///
/// Cancels an order (only allowed for "Chờ phê duyệt" status).
abstract class _$CancelOrder extends $AsyncNotifier<void> {
FutureOr<void> build();
@$mustCallSuper
@override
void runBuild() {
build();
final ref = this.ref as $Ref<AsyncValue<void>, void>;
final element =
ref.element
as $ClassProviderElement<
AnyNotifier<AsyncValue<void>, void>,
AsyncValue<void>,
Object?,
Object?
>;
element.handleValue(ref, null);
}
}