6177214e-ce7c-49e3-99de-ff9721b26f63 — Commit f2df6cd7

AuthorMikkel Thygesen<mikkelet@gmail.com>
Date2026-02-15 14:26:11 +0100
removed unused feature

Changed files

.../lib/redeem_debug/bloc/redeem_cubit.dart        | 35 ----------
 comwell_key_app/lib/redeem_debug/redeem_page.dart  | 80 ----------------------
 comwell_key_app/lib/redeem_debug/redeem_route.dart |  9 ---
 .../widgets/invitation_code_formatter.dart         | 40 -----------
 .../widgets/invitation_code_textfield.dart         | 41 -----------
 comwell_key_app/lib/routing/app_router.dart        |  2 -
 comwell_key_app/lib/services/api.dart              | 77 ---------------------
 7 files changed, 284 deletions(-)

Diff

diff --git a/comwell_key_app/lib/redeem_debug/bloc/redeem_cubit.dart b/comwell_key_app/lib/redeem_debug/bloc/redeem_cubit.dart
deleted file mode 100644
index 1b46d18a..00000000
--- a/comwell_key_app/lib/redeem_debug/bloc/redeem_cubit.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-import 'package:comwell_key_app/base/base_cubit.dart';
-import 'package:comwell_key_app/utils/secure_storage.dart';
-import 'package:comwell_key_app/utils/seos_repository.dart';
-import 'package:flutter/material.dart';
-import 'package:freezed_annotation/freezed_annotation.dart';
-
-part '../../.generated/redeem_debug/bloc/redeem_cubit.freezed.dart';
-
-class RedeemCubit extends BaseCubit<RedeemScreenState> {
- RedeemCubit(this._seosRepository, this._secureStorage) : super(const RedeemScreenState());
-
- final SeosRepository _seosRepository;
- final SecureStorage _secureStorage;
- final invitationCodeFieldController = TextEditingController();
-
- Future<void> onRedeem() async {
- try {
- safeEmit(state.copyWith(isLoading: true));
- final code = invitationCodeFieldController.value.toString();
- await _seosRepository.setupEndpoint(code);
- await _secureStorage.write("invitation", code);
- } catch (e, st) {
- logError(e, st);
- } finally {
- safeEmit(state.copyWith(isLoading: false));
- }
- }
-}
-
-@freezed
-abstract class RedeemScreenState with _$RedeemScreenState {
- const factory RedeemScreenState({
- @Default(false) bool isLoading,
- }) = _RedeemScreenState;
-}
diff --git a/comwell_key_app/lib/redeem_debug/redeem_page.dart b/comwell_key_app/lib/redeem_debug/redeem_page.dart
deleted file mode 100644
index 43fbb0e0..00000000
--- a/comwell_key_app/lib/redeem_debug/redeem_page.dart
+++ /dev/null
@@ -1,80 +0,0 @@
-import 'package:comwell_key_app/common/components/comwell_app_bar.dart';
-import 'package:comwell_key_app/redeem_debug/bloc/redeem_cubit.dart';
-import 'package:comwell_key_app/routing/app_routes.dart';
-import 'package:flutter/material.dart';
-import 'package:flutter_bloc/flutter_bloc.dart';
-import 'package:go_router/go_router.dart';
-import 'widgets/invitation_code_textfield.dart';
-import '../common/extensions/scaffold_messenger_state_extension.dart';
-
-class RedeemPage extends StatelessWidget {
- const RedeemPage({super.key});
-
- @override
- Widget build(BuildContext context) {
- final cubit = context.read<RedeemCubit>();
- return BlocBuilder<RedeemCubit, RedeemScreenState>(
- builder: (context, state) {
- return Scaffold(
- extendBodyBehindAppBar: true,
- appBar: const ComwellAppBar(shouldShowAppBar: true),
- body: SafeArea(
- child: Center(
- child: Padding(
- padding: const EdgeInsets.all(15.0),
- child: Column(
- mainAxisAlignment: MainAxisAlignment.center,
- crossAxisAlignment: CrossAxisAlignment.stretch,
- children: [
- Text(
- 'Invitation Code:',
- style: Theme.of(context).textTheme.titleMedium,
- ),
- const SizedBox(height: 10.0),
- InvitationCodeTextField(
- valueController: cubit.invitationCodeFieldController,
- ),
- const SizedBox(height: 15.0),
- ElevatedButton(
- onPressed: state.isLoading
- ? null
- : () {
- _onTapRedeem(context);
- },
- child: Builder(
- builder: (context) {
- if (state.isLoading) {
- return const CircularProgressIndicator(color: Colors.white);
- }
- return Text(
- 'Register',
- style: Theme.of(context).textTheme.titleLarge,
- );
- },
- ),
- ),
- ],
- ),
- ),
- ),
- ),
- );
- },
- );
- }
-
- void _onTapRedeem(BuildContext context) async {
- final cubit = context.read<RedeemCubit>();
- try {
- cubit.onRedeem();
- if (!context.mounted) return;
- context.goNamed(AppRoutes.bookingDetails.name);
- } catch (e) {
- ScaffoldMessenger.of(context).showActionSnackBar(
- content: Text('Unable to redeem - ${e.toString()}'),
- label: 'Retry',
- onPressed: () => _onTapRedeem(context),
- );
- }
- }
-}
diff --git a/comwell_key_app/lib/redeem_debug/redeem_route.dart b/comwell_key_app/lib/redeem_debug/redeem_route.dart
deleted file mode 100644
index 08aaa421..00000000
--- a/comwell_key_app/lib/redeem_debug/redeem_route.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-import 'package:comwell_key_app/redeem_debug/redeem_page.dart';
-import 'package:go_router/go_router.dart';
-
-import '../routing/app_routes.dart';
-
-final redeemRoute = GoRoute(
- path: AppRoutes.redeem,
- builder: (context, state) => const RedeemPage(),
-);
diff --git a/comwell_key_app/lib/redeem_debug/widgets/invitation_code_formatter.dart b/comwell_key_app/lib/redeem_debug/widgets/invitation_code_formatter.dart
deleted file mode 100644
index 7d10efe6..00000000
--- a/comwell_key_app/lib/redeem_debug/widgets/invitation_code_formatter.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:flutter/services.dart';
-
-class InvitationCodeFormatter extends TextInputFormatter {
- final String sample;
- final String separator;
-
- InvitationCodeFormatter({
- required this.sample,
- required this.separator,
- });
-
- @override
- TextEditingValue formatEditUpdate(
- TextEditingValue oldValue,
- TextEditingValue newValue
- ) {
- if (newValue.text.length > oldValue.text.length) {
- if (newValue.text.characters.last == separator ||
- newValue.text.length > sample.length) {
- return oldValue;
- }
- if (newValue.text.length < sample.length &&
- sample[newValue.text.length - 1] == separator) {
- return TextEditingValue(
- text:
- '${oldValue.text}$separator${newValue.text.substring(newValue.text.length - 1)}'
- .toUpperCase(),
- selection:
- TextSelection.collapsed(
- offset: newValue.selection.end + 1)
- );
- }
- }
- return TextEditingValue(
- text: newValue.text.toUpperCase(),
- selection: newValue.selection,
- );
- }
-}
\ No newline at end of file
diff --git a/comwell_key_app/lib/redeem_debug/widgets/invitation_code_textfield.dart b/comwell_key_app/lib/redeem_debug/widgets/invitation_code_textfield.dart
deleted file mode 100644
index 08ff9137..00000000
--- a/comwell_key_app/lib/redeem_debug/widgets/invitation_code_textfield.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:flutter/services.dart';
-
-import 'invitation_code_formatter.dart';
-
-class InvitationCodeTextField extends StatelessWidget {
- InvitationCodeTextField({super.key, required this.valueController});
-
- String? get invitationCode =>
- _formKey.currentState?.validate() == true ? valueController.text : null;
-
- final _formKey = GlobalKey<FormState>();
- final TextEditingController valueController;
-
- @override
- Widget build(BuildContext context) => Form(
- key: _formKey,
- child: TextFormField(
- autofocus: true,
- controller: valueController,
- inputFormatters: [
- FilteringTextInputFormatter.allow(RegExp(r'[0-9a-zA-Z-]')),
- InvitationCodeFormatter(sample: 'xxxx-xxxx-xxxx-xxxx', separator: '-'),
- ],
- decoration: const InputDecoration(
- border: OutlineInputBorder(),
- hintText: 'XXXX-XXXX-XXXX-XXXX',
- contentPadding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 10.0),
- ),
- validator: (value) {
- if (value == null || value.isEmpty) {
- return 'Please enter an invitation code';
- } else if (value.replaceAll('-', '').length != 16) {
- return 'Please enter a valid invitation code';
- } else {
- return null;
- }
- },
- ),
- );
-}
diff --git a/comwell_key_app/lib/routing/app_router.dart b/comwell_key_app/lib/routing/app_router.dart
index 3b95cbe3..ae275b09 100644
--- a/comwell_key_app/lib/routing/app_router.dart
+++ b/comwell_key_app/lib/routing/app_router.dart
@@ -46,7 +46,6 @@ import 'package:comwell_key_app/received_shared_booking/cubit/received_shared_bo
import 'package:comwell_key_app/received_shared_booking/received_shared_booking_page.dart';
import 'package:comwell_key_app/received_shared_room/cubit/received_shared_room_cubit.dart';
import 'package:comwell_key_app/received_shared_room/received_shared_room_page.dart';
-import 'package:comwell_key_app/redeem_debug/redeem_route.dart';
import 'package:comwell_key_app/routing/app_routes.dart';
import 'package:comwell_key_app/routing/go_router_observer.dart';
import 'package:comwell_key_app/share/cubit/share_booking_cubit.dart';
@@ -125,7 +124,6 @@ final router = GoRouter(
notificationsPermissionRoute,
usageTrackingPermissionRoute,
overviewRoute,
- redeemRoute,
ShellRoute(
navigatorKey: _shellNavigatorKey,
parentNavigatorKey: _rootNavigatorKey,
diff --git a/comwell_key_app/lib/services/api.dart b/comwell_key_app/lib/services/api.dart
index 5c00efdd..dc1cc59c 100644
--- a/comwell_key_app/lib/services/api.dart
+++ b/comwell_key_app/lib/services/api.dart
@@ -67,83 +67,6 @@ class Api {
return response.data!.map((e) => BookingDTO.fromJson(e as Json)).toList();
}
- /* Future<StoredPaymentsResponse?> getPaymentMethods() async {
- final response = await dio.get<Json>(ApiEndpoints.storedPaymentMethods);
- return StoredPaymentsResponse.fromJson(response.data!);
- } */
-
- /* Future<dynamic> createAdyenSession(String bookingId, bool usePoints, String hotelCode) async {
- final body = {
- "hotelCode": hotelCode,
- "bookingConfirmationNumber": bookingId,
- "returnUrl": ApiEndpoints.returnUrl,
- "usePoints": usePoints,
- };
- final json = jsonEncode(body);
- final response =
- await dio.post<dynamic>(ApiEndpoints.createAdyenSession, data: json);
-
- return response.data;
- }
-
- Future<dynamic> createAdyenSessionForCards() async {
- final body = {
- "returnUrl": ApiEndpoints.returnUrl,
- };
- final json = jsonEncode(body);
- final response = await dio
- .post<dynamic>(ApiEndpoints.createAdyenSessionForCards, data: json);
- return response.data;
- }
-
- Future<dynamic> listAvailablePaymentMethods() async {
- final response =
- await dio.get<dynamic>(ApiEndpoints.listAvailablePaymentMethods);
- return response.data;
- }
-
- Future<dynamic> storePaymentMethod(PaymentMethod paymentMethod) async {
- final body = {
- "paymentMethod": paymentMethod,
- };
- final json = jsonEncode(body);
- final response =
- await dio.post<dynamic>(ApiEndpoints.storedPaymentMethods, data: json);
- return response.data;
- }
-
- Future<dynamic> removePaymentMethod(String cardId) async {
- final response = await dio
- .delete<dynamic>("${ApiEndpoints.storedPaymentMethods}/$cardId");
- return response.data;
- }
-
- Future<Json> submitPayment(Json paymentResult, String shopperReference,
- String merchantAccount) async {
- final Json headers = {
- "content-type": "application/json",
- "x-API-key": dotenv.env["ADYEN_TEST_KEY"]
- };
- final Map<String, dynamic> data = {
- "shopperReference": shopperReference,
- "amount": {"value:": 0, "currency": "DKK"},
- "countryCode": "DK",
- "merchantAccount": merchantAccount,
- "returnUrl": "comwell://",
- "reference": "flutter-test_${DateTime.now().millisecondsSinceEpoch}",
- "channel": "iOS",
- };
- data.addAll(paymentResult);
- data.remove("storePaymentMethod");
- debugPrint("Data: $data");
- final response = await dio.post<Json>(ApiEndpoints.adyenPayments,
- data: data,
- options: Options(
- headers: headers,
- ));
- return response.data!;
- }
- */
Future<Response<dynamic>> fetchProfileSettings() async {
final response = await dio.get<dynamic>(ApiEndpoints.getGuestProfile);
return response;