// Copyright (C) 2022 WYATT GROUP
// Please see the AUTHORS file for details.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.

import 'package:example_router/presentation/features/edit_profile/edit_profile_page.dart';
import 'package:example_router/presentation/features/sub/sub_page.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';
import 'package:wyatt_authentication_bloc/wyatt_authentication_bloc.dart';

class HomePage extends StatelessWidget {
  const HomePage({Key? key}) : super(key: key);

  static String pageName = 'Home';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Home'),
        actions: [
          IconButton(
              onPressed: () =>
                  context.read<AuthenticationCubit<int>>().signOut(),
              icon: const Icon(Icons.logout_rounded))
        ],
      ),
      body: Padding(
        padding: const EdgeInsets.all(8),
        child: SingleChildScrollView(
          child: Column(
            children: [
              AuthenticationBuilder<int>(
                authenticated: (context, accountWrapper) => Text(
                    'Logged as ${accountWrapper.account?.email} | GeneratedId is ${accountWrapper.data}'),
                unauthenticated: (context) =>
                    const Text('Not logged (unauthenticated)'),
                unknown: (context) => const Text('Not logged (unknown)'),
              ),
              const SizedBox(
                height: 8,
              ),
              ElevatedButton(
                onPressed: () => context.pushNamed(SubPage.pageName),
                child: const Text('Go to sub page'),
              ),
              ElevatedButton(
                onPressed: () => context.pushNamed(EditProfilePage.pageName),
                child: const Text('Go to edit profile page'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
