import 'package:comwell_key_app/my_booking/cubit/my_booking_cubit.dart';
import 'package:comwell_key_app/my_booking/my_booking_page.dart';
import 'package:comwell_key_app/overview/models/booking.dart';
import 'package:comwell_key_app/routing/app_routes.dart';
import 'package:comwell_key_app/utils/locator.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';

final myBookingRoute = ShellRoute(
  pageBuilder: (context, state, child) {
    return CustomTransitionPage(
      transitionsBuilder: (context, animation, secondaryAnimation, child) {
        return SlideTransition(
          position:
              Tween<Offset>(
                begin: const Offset(1.0, 0.0),
                end: Offset.zero,
              ).animate(
                CurvedAnimation(
                  parent: animation,
                  curve: Curves.easeInOut,
                ),
              ),
          child: child,
        );
      },
      child: BlocProvider(
        create: (context) => MyBookingCubit(
          locator(),
          context.read(),
          initialBooking: state.extra as Booking,
        ),
        child: child,
      ),
    );
  },
  routes: [
    GoRoute(
      path: AppRoutes.myBooking,
      builder: (context, state) {
        return MyBookingPage(booking: state.extra as Booking);
      },
    ),
  ],
);