import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:concierge/presentation/navigation/app_routes.dart';
import 'package:go_router/go_router.dart';
import 'package:concierge/presentation/screens/payment/bloc/payment_cubit.dart';
import 'package:concierge/presentation/screens/payment/payment_screen.dart';
import 'package:payment_plugin/presentation/app/bloc/payment_cubit.dart' as payment_plugin;

import '../../navigation/transitions/slide_in_transition.dart';

part '../../../_generated/presentation/screens/payment/payment_route.g.dart';

@TypedGoRoute<PaymentRoute>(path: AppRoutes.payment)
class PaymentRoute extends GoRouteData with $PaymentRoute {
  @override
  Page<void> buildPage(BuildContext context, GoRouterState state) {
    return slideInTransition(
      state: state,
      child: MultiBlocProvider(
        providers: [
          BlocProvider(
            create: (context) => payment_plugin.PaymentCubit(adyenRepository: context.read()),
          ),
          BlocProvider(
            create: (context) => PaymentCubit(
              context.read(),
              context.read(),
              context.read(),
              context.read(),
              context.read(),
            ),
          ),
        ],
        child: PaymentScreen(),
      ),
    );
  }
}