import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/modules/home/providers/asset.provider.dart';
import 'package:immich_mobile/modules/login/models/authentication_state.model.dart';
import 'package:immich_mobile/modules/login/providers/authentication.provider.dart';
import 'package:immich_mobile/shared/providers/backup.provider.dart';
import 'package:immich_mobile/shared/providers/websocket.provider.dart';

class ProfileDrawer extends ConsumerWidget {
  const ProfileDrawer({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    AuthenticationState _authState = ref.watch(authenticationProvider);

    return Drawer(
      shape: const RoundedRectangleBorder(
        borderRadius: BorderRadius.only(
          topRight: Radius.circular(5),
          bottomRight: Radius.circular(5),
        ),
      ),
      child: ListView(
        padding: EdgeInsets.zero,
        children: [
          DrawerHeader(
            decoration: BoxDecoration(
              color: Colors.grey[200],
            ),
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment: CrossAxisAlignment.center,
              children: [
                const Image(
                  image: AssetImage('assets/immich-logo-no-outline.png'),
                  width: 50,
                  filterQuality: FilterQuality.high,
                ),
                const Padding(padding: EdgeInsets.all(8)),
                Text(
                  _authState.userEmail,
                  style: TextStyle(color: Theme.of(context).primaryColor, fontWeight: FontWeight.bold),
                )
              ],
            ),
          ),
          ListTile(
            tileColor: Colors.grey[100],
            leading: const Icon(
              Icons.logout_rounded,
              color: Colors.black54,
            ),
            title: const Text(
              "Sign Out",
              style: TextStyle(color: Colors.black54, fontSize: 14),
            ),
            onTap: () async {
              bool res = await ref.read(authenticationProvider.notifier).logout();

              if (res) {
                ref.watch(backupProvider.notifier).cancelBackup();
                ref.watch(assetProvider.notifier).clearAllAsset();
                ref.watch(websocketProvider.notifier).disconnect();
                AutoRouter.of(context).popUntilRoot();
              }
            },
          )
        ],
      ),
    );
  }
}
