import 'package:comwell_key_app/presentation/app/app_event_listener.dart';
import 'package:comwell_key_app/utils/locator.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';
import 'package:comwell_key_app/presentation/screens/login/bloc/login_cubit.dart';
import 'package:comwell_key_app/presentation/screens/login/login_screen.dart';

import '../../../routing/app_routes.dart';

part '../../../.generated/presentation/screens/login/login_route.g.dart';

@TypedGoRoute<LoginRoute>(path: AppRoutes.login)
class LoginRoute extends GoRouteData with $LoginRoute {
  final bool forced;
  final String redirectAfterLogin;

  const LoginRoute({this.forced = false, this.redirectAfterLogin = ""});

  @override
  Widget build(BuildContext context, GoRouterState state) {
    return BlocProvider(
      key: UniqueKey(),
      create: (context) {
        return LoginCubit(
          locator.get(),
          context.read(),
          redirectAfterLogin: redirectAfterLogin,
          forced: forced,
        );
      },
      lazy: false,
      child: const AppEventListener(child: LoginPage()),
    );
  }
}