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

import '../utils/locator.dart';
import '../common/extensions/scaffold_messenger_state_extension.dart';
import '../common/components/shimmer_loader/settings_shimmer_loader.dart';

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

  @override
  State<StatefulWidget> createState() => _SettingPage();
}

class _SettingPage extends State<SettingsPage> {
  final _seosMobileKeysPlugin = locator.get<SeosMobileKeysPlugin>();
  bool _isUnregistering = false;

  @override
  Widget build(BuildContext context) => Scaffold(
    appBar: AppBar(
      title: const Text(
        'Settings',
      ),
    ),
    body: ListView(
      children: _menuList(context),
    ),
  );

  List<Widget> _menuList(BuildContext context) => [
    ListTile(
      title: Text(
        'Unregister device',
        style: Theme.of(context).textTheme.titleMedium,
      ),
      leading: const Icon(
        Icons.logout_sharp,
      ),
      trailing: _isUnregistering ? const SettingsShimmerLoader() : null,
      onTap: _isUnregistering ? null : _unregister,
    ),
  ];

  void _unregister() async {
    if (!mounted) return;
    setState(() {
      _isUnregistering = true;
    });
    try {
      await _seosMobileKeysPlugin.terminateEndpoint();
      if (!mounted) return;
      Navigator.pop(context);
    } catch (e) {
      ScaffoldMessenger.of(context).showActionSnackBar(
        content: Text('Unable to unregister: ${e.toString()}'),
        label: 'Retry',
        onPressed: _unregister,
      );
    }
  }
}