import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';

import 'package:awale/common/config/screen.dart';
import 'package:awale/common/cubit/nav/nav_cubit_pages.dart';
import 'package:awale/common/cubit/nav/nav_cubit_screens.dart';

import 'package:awale/cubit/activity/activity_cubit.dart';
import 'package:awale/models/activity/activity.dart';

class GlobalAppBar extends StatelessWidget implements PreferredSizeWidget {
  const GlobalAppBar({super.key});

  @override
  Widget build(BuildContext context) {
    return BlocBuilder<ActivityCubit, ActivityState>(
      builder: (BuildContext context, ActivityState activityState) {
        return BlocBuilder<NavCubitScreen, int>(
          builder: (BuildContext context, int pageIndex) {
            final Activity currentActivity = activityState.currentActivity;

            final List<Widget> menuActions = [];

            if (currentActivity.isRunning && !currentActivity.isFinished) {
              menuActions.add(StyledButton(
                color: Colors.red,
                onPressed: () {},
                onLongPress: () {
                  BlocProvider.of<ActivityCubit>(context).quitActivity();
                  BlocProvider.of<NavCubitPage>(context).goToPageHome();
                },
                child: const Image(
                  image: AssetImage('assets/ui/button_back.png'),
                  fit: BoxFit.fill,
                ),
              ));
            } else {
              if (pageIndex == Screen.indexActivity) {
                // go to Settings page
                menuActions.add(ElevatedButton(
                  onPressed: () {
                    BlocProvider.of<NavCubitScreen>(context).goToScreenSettings();
                  },
                  style: ElevatedButton.styleFrom(
                    shape: const CircleBorder(),
                  ),
                  child: Screen.screenSettings.icon,
                ));

                // go to About page
                menuActions.add(ElevatedButton(
                  onPressed: () {
                    BlocProvider.of<NavCubitScreen>(context).goToScreenAbout();
                  },
                  style: ElevatedButton.styleFrom(
                    shape: const CircleBorder(),
                  ),
                  child: Screen.screenAbout.icon,
                ));
              } else {
                // back to Home page
                menuActions.add(ElevatedButton(
                  onPressed: () {
                    BlocProvider.of<NavCubitScreen>(context).goToScreenActivity();
                  },
                  style: ElevatedButton.styleFrom(
                    shape: const CircleBorder(),
                  ),
                  child: Screen.screenActivity.icon,
                ));
              }
            }

            return AppBar(
              title: const AppHeader(text: 'app_name'),
              actions: menuActions,
            );
          },
        );
      },
    );
  }

  @override
  Size get preferredSize => const Size.fromHeight(50);
}