6177214e-ce7c-49e3-99de-ff9721b26f63 — Commit 9e7b22fd
Changed files
concierge/lib/concierge_route.dart | 6 ++--- .../domain/repositories/property_repository.dart | 5 ++--- concierge/lib/flavors.dart | 4 ++-- .../lib/presentation/app/concierge_cubit.dart | 7 ++++-- .../screens/payment/bloc/payment_cubit.dart | 4 ++++ .../screens/payment/payment_route.dart | 1 + .../screens/payment/payment_screen.dart | 2 +- .../bloc/product_details_cubit.dart | 26 +++++++++++++++------- .../product_details/product_details_screen.dart | 4 ++-- .../receipt/widgets/receipt_action_bar.dart | 5 ++++- 10 files changed, 42 insertions(+), 22 deletions(-)
Diff
diff --git a/concierge/lib/concierge_route.dart b/concierge/lib/concierge_route.dart
index b99f2d10..7cb64421 100644
--- a/concierge/lib/concierge_route.dart
+++ b/concierge/lib/concierge_route.dart
@@ -21,11 +21,12 @@ import 'data/remote/api/concierge_interceptor.dart';
import 'data/remote/api/concierge_service.dart';
import 'domain/repositories/property_repository.dart';
import 'flavors.dart';
-final _rootNavigatorKey = GlobalKey<NavigatorState>();
+final _rootNavigatorKey = GlobalKey<NavigatorState>();
final conciergeShellRoute = StatefulShellRoute.indexedStack(
redirect: (context, state) {
+ if(state.matchedLocation == "/exit") context.pop();
return null;
},
branches: [
@@ -44,8 +45,7 @@ final conciergeShellRoute = StatefulShellRoute.indexedStack(
],
builder: (context, state, child) {
Future<(ConciergeService, ConciergeSecureStorage, Dio)> getDependencies() async {
- final storage = ConciergeSecureStorage(
- );
+ final storage = ConciergeSecureStorage();
final dio = Dio(BaseOptions(baseUrl: F.baseConciergeUrl));
dio.interceptors.addAll([
ConciergeInterceptor(storage),
diff --git a/concierge/lib/domain/repositories/property_repository.dart b/concierge/lib/domain/repositories/property_repository.dart
index 93b69baf..22abc23b 100644
--- a/concierge/lib/domain/repositories/property_repository.dart
+++ b/concierge/lib/domain/repositories/property_repository.dart
@@ -31,6 +31,7 @@ class PropertyRepository {
required int areaId,
required String locationCode,
required bool isDelivery,
+ required String roomNumber,
required String readyTime,
required String comment,
required bool chargeToRoom,
@@ -43,11 +44,9 @@ class PropertyRepository {
"requested_delivery_time": readyTime.isEmpty ? "ASAP" : readyTime,
"payment_type": chargeToRoom ? "ROOM" : "PAYMENT_SERVICE",
"customer_comment": comment,
- "order_type": "PRODUCT",
- "ga_client_id": "GA1.2.1247178081.1736166148",
};
if (deliveryLocation is Room) {
- body["room"] = "106";
+ body["room"] = roomNumber;
} else if (deliveryLocation is Area) {
body["location_code"] = locationCode;
}
diff --git a/concierge/lib/flavors.dart b/concierge/lib/flavors.dart
index 8896b424..5f641493 100644
--- a/concierge/lib/flavors.dart
+++ b/concierge/lib/flavors.dart
@@ -38,7 +38,7 @@ class F {
};
static String get baseApimUrl => switch(appFlavor) {
- Flavor.stage => "https://apim-comwell-net-services-stage.azure-api.net/api",
- Flavor.production => "https://apim-comwell-net-services-prod.azure-api.net/api",
+ Flavor.stage => "https://apim-comwell-net-services-stage.azure-api.net/api/",
+ Flavor.production => "https://apim-comwell-net-services-prod.azure-api.net/api/",
};
}
diff --git a/concierge/lib/presentation/app/concierge_cubit.dart b/concierge/lib/presentation/app/concierge_cubit.dart
index a5e00910..7f403ff2 100644
--- a/concierge/lib/presentation/app/concierge_cubit.dart
+++ b/concierge/lib/presentation/app/concierge_cubit.dart
@@ -18,7 +18,9 @@ class ConciergeCubit extends BaseCubit<ConciergeState> {
this._propertyRepository,
this._storage, {
required this.launchParameters,
- }) : super(const ConciergeState());
+ }) : super(const ConciergeState()) {
+ init();
+ }
Future<void> init() async {
final flavorName = launchParameters["flavor"] ?? "";
@@ -56,12 +58,13 @@ class ConciergeCubit extends BaseCubit<ConciergeState> {
}
void _updateProductDataState(int pId, DataState dataState) {
- print("qqq set [$pId]=${dataState.runtimeType}");
final copy = Map.of(state.products);
copy[pId] = dataState;
safeEmit(state.copyWith(products: copy));
}
+ String get roomNumber => launchParameters["room-number"] ?? "0";
+
@override
Future<void> close() async {
await _storage.dispose();
diff --git a/concierge/lib/presentation/screens/payment/bloc/payment_cubit.dart b/concierge/lib/presentation/screens/payment/bloc/payment_cubit.dart
index 27285b78..2da65ed0 100644
--- a/concierge/lib/presentation/screens/payment/bloc/payment_cubit.dart
+++ b/concierge/lib/presentation/screens/payment/bloc/payment_cubit.dart
@@ -1,6 +1,7 @@
import 'package:concierge/domain/models/app_error.dart';
import 'package:concierge/domain/repositories/property_repository.dart';
import 'package:concierge/presentation/app/cart_cubit.dart';
+import 'package:concierge/presentation/app/concierge_cubit.dart';
import 'package:concierge/presentation/base/base_cubit.dart';
import 'package:concierge/presentation/screens/payment/bloc/payment_state.dart';
import 'package:payment_plugin/payment_plugin.dart';
@@ -9,12 +10,14 @@ import 'package:payment_plugin/presentation/app/bloc/payment_cubit.dart' as paym
class PaymentCubit extends BaseCubit<PaymentState> {
final CartCubit _cartCubit;
+ final ConciergeCubit _conciergeCubit;
final PropertyRepository _propertyRepository;
final PaymentPlugin _paymentPlugin;
final payment_plugin.PaymentCubit _paymentCubit;
PaymentCubit(
this._cartCubit,
+ this._conciergeCubit,
this._propertyRepository,
this._paymentPlugin,
this._paymentCubit,
@@ -53,6 +56,7 @@ class PaymentCubit extends BaseCubit<PaymentState> {
final orderResponse = await _propertyRepository.createOrder(
products: products.toList(),
areaId: area.id,
+ roomNumber: _conciergeCubit.roomNumber,
isDelivery: _cartCubit.state.isDelivery,
locationCode: _cartCubit.state.deliveryLocationCode,
deliveryLocation: _cartCubit.state.deliveryLocation,
diff --git a/concierge/lib/presentation/screens/payment/payment_route.dart b/concierge/lib/presentation/screens/payment/payment_route.dart
index e03e2368..d0a35f9c 100644
--- a/concierge/lib/presentation/screens/payment/payment_route.dart
+++ b/concierge/lib/presentation/screens/payment/payment_route.dart
@@ -27,6 +27,7 @@ class PaymentRoute extends GoRouteData with $PaymentRoute {
context.read(),
context.read(),
context.read(),
+ context.read(),
),
),
],
diff --git a/concierge/lib/presentation/screens/payment/payment_screen.dart b/concierge/lib/presentation/screens/payment/payment_screen.dart
index 6f314edf..f0ad7c4e 100644
--- a/concierge/lib/presentation/screens/payment/payment_screen.dart
+++ b/concierge/lib/presentation/screens/payment/payment_screen.dart
@@ -28,7 +28,7 @@ class PaymentScreen extends StatelessWidget {
BlocListener<PaymentCubit, PaymentState>(
listenWhen: (prev, curr) => !prev.paymentSuccess && curr.paymentSuccess,
listener: (context, state) {
- ReceiptRoute(orderId: state.orderId).pushReplacement(context);
+ ReceiptRoute(orderId: state.orderId).go(context);
},
),
],
diff --git a/concierge/lib/presentation/screens/product_details/bloc/product_details_cubit.dart b/concierge/lib/presentation/screens/product_details/bloc/product_details_cubit.dart
index c6a6802c..a3376d16 100644
--- a/concierge/lib/presentation/screens/product_details/bloc/product_details_cubit.dart
+++ b/concierge/lib/presentation/screens/product_details/bloc/product_details_cubit.dart
@@ -12,11 +12,10 @@ class ProductDetailsCubit extends BaseCubit<ProductDetailsState> {
final ConciergeCubit _conciergeCubit;
final CartCubit _cartCubit;
- ProductDetailsCubit(
- this._conciergeCubit,
- this._cartCubit, {
- required this.productId,
- }) : super(ProductDetailsState()) {
+ ProductDetailsCubit(this._conciergeCubit,
+ this._cartCubit, {
+ required this.productId,
+ }) : super(ProductDetailsState()) {
init();
}
@@ -25,7 +24,7 @@ class ProductDetailsCubit extends BaseCubit<ProductDetailsState> {
bool get isEdit => _cartCubit.getProduct(productId) != null;
- void handleProductDataState(DataState dataState) {
+ void _handleProductDataState(DataState dataState) {
switch (dataState) {
case Initial _:
case Loading _:
@@ -55,11 +54,22 @@ class ProductDetailsCubit extends BaseCubit<ProductDetailsState> {
selectedVariant: productInCart.variant,
),
);
+ } else {
+ _handleProductDataState(_conciergeCubit.getProductState(productId));
}
- handleProductDataState(_conciergeCubit.getProductState(productId));
+ if (state.selectedVariant.isEmpty) {
+ final selectedOptions = <int,int>{};
+ for (final option in state.requireProduct.options) {
+ if(option.answers.isNotEmpty) {
+ selectedOptions[option.id] = option.answers.first.id;
+ }
+ }
+ safeEmit(state.copyWith(selectedVariant: selectedOptions));
+ }
+
conciergeStateStream = _conciergeCubit.stream.listen((conciergeState) {
final dataState = _conciergeCubit.getProductState(productId);
- handleProductDataState(dataState);
+ _handleProductDataState(dataState);
});
}
diff --git a/concierge/lib/presentation/screens/product_details/product_details_screen.dart b/concierge/lib/presentation/screens/product_details/product_details_screen.dart
index 0aba8b28..91c09ee2 100644
--- a/concierge/lib/presentation/screens/product_details/product_details_screen.dart
+++ b/concierge/lib/presentation/screens/product_details/product_details_screen.dart
@@ -82,7 +82,7 @@ class ProductDetailsScreen extends StatelessWidget {
const Gap(16),
Html(data: state.requireProduct.body),
Gap(48),
- ...buildVariants(context, state.requireProduct),
+ ..._buildVariants(context, state.requireProduct),
Gap(100),
],
),
@@ -100,7 +100,7 @@ class ProductDetailsScreen extends StatelessWidget {
);
}
- Iterable<Widget> buildVariants(BuildContext context, Product product) sync* {
+ Iterable<Widget> _buildVariants(BuildContext context, Product product) sync* {
final cubit = context.read<ProductDetailsCubit>();
for (final option in product.options) {
yield Text(option.name, style: TextStyle(fontSize: 20));
diff --git a/concierge/lib/presentation/screens/receipt/widgets/receipt_action_bar.dart b/concierge/lib/presentation/screens/receipt/widgets/receipt_action_bar.dart
index b7ec6a66..3fc27a0c 100644
--- a/concierge/lib/presentation/screens/receipt/widgets/receipt_action_bar.dart
+++ b/concierge/lib/presentation/screens/receipt/widgets/receipt_action_bar.dart
@@ -1,5 +1,6 @@
import 'package:common/localization/l10n_utils.dart';
import 'package:flutter/material.dart';
+import 'package:go_router/go_router.dart';
class ReceiptActionBar extends StatelessWidget {
const ReceiptActionBar({super.key});
@@ -10,7 +11,9 @@ class ReceiptActionBar extends StatelessWidget {
child: Padding(
padding: EdgeInsets.all(16),
child: TextButton(
- onPressed: () {},
+ onPressed: () {
+ context.go("/exit");
+ },
style: ButtonStyle(
minimumSize: WidgetStatePropertyAll(Size(0, 50)),
backgroundColor: WidgetStatePropertyAll(Colors.white),