
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

import '../../constants.dart';
import '../../dialog/logout_dialog.dart';
import '../../generated/l10n.dart';
import '../../models/user.dart';
import '../../routes.dart';
import '../../store/store.dart';
import '../../widgets/general/navigationbar_logo.dart';
import '../../widgets/general/text_link.dart';

class DesktopAppBarMenu extends StatelessWidget {
  User? _user;

  @override
  Widget build(BuildContext context) {
    _user = store.state.user;
    String currentRoute = ModalRoute.of(context)?.settings.name ?? '';
    Widget menuBar = Container(
      height: 56.0,
      padding: EdgeInsets.only(left: 10.0, right: 10.0, top: 5.0, bottom: 5.0),
      color: Colors.blue,
      child: Row(
        mainAxisAlignment: MainAxisAlignment.start,
        children: [
          NavigationBarLogo(),
          Expanded(
            child: Container(
              alignment: Alignment.centerRight,
              padding: EdgeInsets.only(left: 8.0, right: 16.0),
              child: SingleChildScrollView(
                scrollDirection: Axis.horizontal,
                child: Row(
                  mainAxisSize: MainAxisSize.min,
                  children: [
                    SizedBox(width: 20.0,),
                    TextLink(
                      S.of(context).home,
                      '/',
                      color: Colors.white60,
                      hoverColor: Colors.white,
                      selected: currentRoute == '/',
                      clearStack: true,
                    ),
                    SizedBox(width: 15.0,),
                    TextLink(
                      S.of(context).download,
                      '/download',
                      color: Colors.white60,
                      hoverColor: Colors.white,
                      selected: currentRoute == '/download',
                    ),
                    SizedBox(width: 15.0,),
                    TextLink(
                      S.of(context).tutorials,
                      Constants.TUTORIAL_URL,
                      color: Colors.white60,
                      hoverColor: Colors.white,
                      selected: currentRoute == '/tutorials',
                      isLink: true,
                    ),
                    SizedBox(width: 15.0,),
                    TextLink(
                      S.of(context).support,
                      '/my-support/${Constants.BUSINESS_ID}',
                      color: Colors.white60,
                      hoverColor: Colors.white,
                      selected: currentRoute == '/my-support/${Constants.BUSINESS_ID}',
                    ),
                    SizedBox(width: 15.0,),
                    TextLink(
                      S.of(context).shop,
                      '/shop',
                      color: Colors.white60,
                      hoverColor: Colors.white,
                      selected: currentRoute == '/shop',
                    ),
                    SizedBox(width: 15.0,),
                    TextLink(
                      S.of(context).blog,
                      '/blog/${Constants.BUSINESS_ID}',
                      color: Colors.white60,
                      hoverColor: Colors.white,
                      selected: currentRoute == '/blog/${Constants.BUSINESS_ID}',
                    ),
                    SizedBox(width: 15.0,),
                    _user != null ?
                    (currentRoute == '/me') ?
                    MouseRegion(
                      cursor: SystemMouseCursors.click,
                      child: GestureDetector(
                        child: Row(
                          mainAxisAlignment: MainAxisAlignment.start,
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: [
                            Container(
                              padding: EdgeInsets.only(right: 4.0),
                              child: Text(
                                S.of(context).logout,
                                style: TextStyle(
                                  color: Colors.white,
                                ),
                              ),
                            ),
                            Icon(
                              Icons.logout,
                              color: Colors.white,
                              size: 16.0,
                            )
                          ],
                        ),
                        onTap: () {
                          showDialog(
                              context: context,
                              builder: (BuildContext context) {
                                return logoutDialog(context);
                              }
                          );
                        },
                      ),
                    ) : IconButton(
                      icon: Icon(
                        Icons.account_circle,
                        color: Colors.white,
                      ),
                      onPressed: () {
                        Routes.router.navigateTo(context, '/me');
                      },
                    ) :
                    TextLink(
                      S.of(context).login,
                      '/login',
                      color: Colors.white60,
                      hoverColor: Colors.white,
                      selected: currentRoute == '/login',
                    ),
                  ],
                ),
              ),
            ),
          ),
        ],
      ),
    );
    return menuBar;
  }

}