import 'package:comwell_key_app/common/components/comwell_app_bar.dart';
import 'package:comwell_key_app/presentation/navigation/transitions/slide_in_transition.dart';
import 'package:comwell_key_app/routing/app_routes.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';
import 'package:payment_plugin/payment_plugin.dart';

import '../../../utils/locator.dart';

part '../../../.generated/presentation/screens/payment_processing/payment_processing_route.g.dart';

@TypedGoRoute<PaymentCardsRoute>(path: AppRoutes.paymentCards)
class PaymentCardsRoute extends GoRouteData with $PaymentCardsRoute {
  final bool needsScaffold;

  const PaymentCardsRoute({this.needsScaffold = false});

  @override
  Page<void> buildPage(BuildContext context, GoRouterState state) {
    return SlideInTransition(
      state: state,
      child: BlocProvider(
        create: (context) => PaymentCardsCubit(adyenRepository: locator()),
        child: Builder(
          builder: (context) {
            return PaymentCardsPage(
              needScaffold: needsScaffold,
              appBar: const ComwellAppBar(shouldShowProfileButton: false),
            );
          },
        ),
      ),
    );
  }
}

@TypedGoRoute<PaymentProcessingRoute>(path: AppRoutes.paymentProcessing)
class PaymentProcessingRoute extends GoRouteData with $PaymentProcessingRoute {
  @override
  Page<void> buildPage(BuildContext context, GoRouterState state) {
    return const NoTransitionPage(child: PaymentProcessingPage());
  }
}