import 'dart:async';
import 'package:comwell_key_app/utils/templates/share_booking_base_template.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:comwell_key_app/share/cubit/share_booking_cubit.dart';

class ShareBookingPage extends StatefulWidget {
  const ShareBookingPage({super.key});

  @override
  State<ShareBookingPage> createState() => _ShareBookingPageState();
}

class _ShareBookingPageState extends State<ShareBookingPage> {
  Timer? _errorTimer;

  @override
  void dispose() {
    _errorTimer?.cancel();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return BlocListener<ShareBookingCubit, ShareBookingState>(
      listener: (context, state) {
        if (state.error != null) {
          _errorTimer?.cancel();
          _errorTimer = Timer(const Duration(seconds: 5), () {
            if (mounted) {
              context.read<ShareBookingCubit>().clearSelection();
            }
          });
        } else {
          _errorTimer?.cancel();
        }
      },
      child: BlocBuilder<ShareBookingCubit, ShareBookingState>(
        builder: (context, state) {
          final cubit = context.read<ShareBookingCubit>();
          return ShareBookingBaseTemplate(
            booking: cubit.booking,
            onClicked: () {
              cubit.createRoomSharingLink(context, cubit.booking);
            },
            isShared: false,
            isLoading: state.isLoading,
            error: state.error,
          );
        },
      ),
    );
  }
}