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

import '../../../../api/mhsl/server/feedback/addFeedback.dart';
import '../../../../api/mhsl/server/feedback/addFeedbackParams.dart';
import '../../../../model/accountData.dart';
import '../../../../widget/infoDialog.dart';

class FeedbackDialog extends StatefulWidget {
  const FeedbackDialog({super.key});

  @override
  State<FeedbackDialog> createState() => _FeedbackDialogState();
}

class _FeedbackDialogState extends State<FeedbackDialog> {
  final TextEditingController _feedbackInput = TextEditingController();
  String? _error;

  @override
  Widget build(BuildContext context) {
    return AlertDialog(

      title: const Text("Feedback"),
      content: Column(
        mainAxisSize: MainAxisSize.min,
        children: [
          const Text("Feedback, Anregungen, Ideen, Fehler und Verbesserungen"),
          const SizedBox(height: 10),
          const Text("Bitte gib keine geheimen Daten wie z.B. Passwörter weiter.", style: TextStyle(fontSize: 10)),
          const SizedBox(height: 10),
          TextField(
            controller: _feedbackInput,
            autofocus: true,
            decoration: const InputDecoration(
              border: OutlineInputBorder(),
              label: Text("Feedback und Verbesserungen")
            ),
            // style: TextStyle(),
            // expands: true,
            minLines: 3,
            maxLines: 5,
          ),
          Visibility(
            visible: _error != null,
            child: Text("Senden fehlgeschlagen: $_error", style: const TextStyle(color: Colors.red))
          )
        ],
      ),
      actions: [
        TextButton(onPressed: () => Navigator.of(context).pop(), child: const Text("Abbrechen")),
        TextButton(
          onPressed: () async {
            AddFeedback(
              AddFeedbackParams(
                user: AccountData().getUserSecret(),
                feedback: _feedbackInput.text,
                appVersion: int.parse((await PackageInfo.fromPlatform()).buildNumber)
              )
            )
            .run()
            .then((value) {
              Navigator.of(context).pop();
              InfoDialog.show(context, "Danke für dein Feedback!");
            })
            .catchError((error, trace) {
                setState(() {
                  _error = error.toString();
                });
            });
          },
          child: const Text("Senden"),
        )
      ],
    );
  }
}
