import 'package:flutter/material.dart';

import 'package:extera_next/generated/l10n/l10n.dart';
import 'package:go_router/go_router.dart';

import 'package:extera_next/pages/settings_password/settings_password.dart';
import 'package:extera_next/widgets/layouts/max_width_body.dart';

class SettingsPasswordView extends StatelessWidget {
  final SettingsPasswordController controller;
  const SettingsPasswordView(this.controller, {super.key});

  @override
  Widget build(BuildContext context) {
    final theme = Theme.of(context);

    return Scaffold(
      appBar: AppBar(
        title: Text(L10n.of(context).changePassword),
      ),
      body: ListTileTheme(
        iconColor: theme.colorScheme.onSurface,
        child: MaxWidthBody(
          child: Padding(
            padding: const EdgeInsets.all(16.0),
            child: Column(
              children: [
                const SizedBox(height: 16),
                TextField(
                  controller: controller.oldPasswordController,
                  obscureText: true,
                  autocorrect: false,
                  autofocus: true,
                  readOnly: controller.loading,
                  decoration: InputDecoration(
                    prefixIcon: const Icon(Icons.lock_outlined),
                    hintText: '********',
                    labelText: L10n.of(context).pleaseEnterYourCurrentPassword,
                    errorText: controller.oldPasswordError,
                  ),
                ),
                const Divider(height: 64),
                TextField(
                  controller: controller.newPassword1Controller,
                  obscureText: true,
                  autocorrect: false,
                  readOnly: controller.loading,
                  decoration: InputDecoration(
                    prefixIcon: const Icon(Icons.lock_reset_outlined),
                    hintText: '********',
                    labelText: L10n.of(context).newPassword,
                    errorText: controller.newPassword1Error,
                  ),
                ),
                const SizedBox(height: 16),
                TextField(
                  controller: controller.newPassword2Controller,
                  obscureText: true,
                  autocorrect: false,
                  readOnly: controller.loading,
                  decoration: InputDecoration(
                    prefixIcon: const Icon(Icons.repeat_outlined),
                    hintText: '********',
                    labelText: L10n.of(context).repeatPassword,
                    errorText: controller.newPassword2Error,
                  ),
                ),
                const SizedBox(height: 32),
                SizedBox(
                  width: double.infinity,
                  child: ElevatedButton(
                    onPressed:
                        controller.loading ? null : controller.changePassword,
                    child: controller.loading
                        ? const LinearProgressIndicator()
                        : Text(L10n.of(context).changePassword),
                  ),
                ),
                const SizedBox(height: 16),
                TextButton(
                  child: Text(L10n.of(context).passwordRecoverySettings),
                  onPressed: () => context.go('/rooms/settings/security/3pid'),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}
