import 'package:InvenTree/api.dart';
import 'package:InvenTree/settings/release.dart';

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:package_info/package_info.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';

import 'package:package_info/package_info.dart';

class InvenTreeAboutWidget extends StatelessWidget {

  final PackageInfo info;

  InvenTreeAboutWidget(this.info) : super();

  void _releaseNotes(BuildContext context) async {

    // Load release notes from external file
    String notes = await rootBundle.loadString("assets/release_notes.md");

    Navigator.push(
        context,
        MaterialPageRoute(builder: (context) => ReleaseNotesWidget(notes))
    );
  }

  @override
  Widget build(BuildContext context) {

    List<Widget> tiles = [];

    tiles.add(
      ListTile(
        title: Text(
          I18N.of(context).serverDetails,
          style: TextStyle(fontWeight: FontWeight.bold),
        ),
      )
    );

    if (InvenTreeAPI().isConnected()) {
      tiles.add(
          ListTile(
            title: Text(I18N.of(context).address),
            subtitle: Text(InvenTreeAPI().baseUrl.isNotEmpty ? InvenTreeAPI().baseUrl : I18N.of(context).notConnected),
            leading: FaIcon(FontAwesomeIcons.globe),
          )
      );

      tiles.add(
        ListTile(
          title: Text(I18N.of(context).version),
          subtitle: Text(InvenTreeAPI().version.isNotEmpty ? InvenTreeAPI().version : I18N.of(context).notConnected),
          leading: FaIcon(FontAwesomeIcons.infoCircle),
        )
      );

      tiles.add(
        ListTile(
          title: Text(I18N.of(context).serverInstance),
          subtitle: Text(InvenTreeAPI().instance.isNotEmpty ? InvenTreeAPI().instance : I18N.of(context).notConnected),
          leading: FaIcon(FontAwesomeIcons.server),
        )
      );
    } else {
      tiles.add(
        ListTile(
          title: Text(I18N.of(context).notConnected),
          subtitle: Text(
            I18N.of(context).serverNotConnected,
            style: TextStyle(fontStyle: FontStyle.italic),
          ),
          leading: FaIcon(FontAwesomeIcons.exclamationCircle)
        )
      );
    }

    tiles.add(
      ListTile(
        title: Text(
          I18N.of(context).appDetails,
          style: TextStyle(fontWeight: FontWeight.bold),
        ),
      )
    );

    tiles.add(
      ListTile(
        title: Text(I18N.of(context).packageName),
        subtitle: Text("${info.packageName}"),
        leading: FaIcon(FontAwesomeIcons.box)
      )
    );

    tiles.add(
      ListTile(
        title: Text(I18N.of(context).version),
        subtitle: Text("${info.version}"),
        leading: FaIcon(FontAwesomeIcons.infoCircle)
      )
    );

    tiles.add(
      ListTile(
        title: Text(I18N.of(context).releaseNotes),
        subtitle: Text("Display app release notes"),
        leading: FaIcon(FontAwesomeIcons.fileAlt),
        onTap: () {
          _releaseNotes(context);
        },
      )
    );

    return Scaffold(
      appBar: AppBar(
        title: Text(I18N.of(context).appAbout),
      ),
      body: ListView(
        children: ListTile.divideTiles(
          context: context,
          tiles: tiles,
        ).toList(),
      )
    );
  }
}