import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:url_launcher/url_launcher.dart';

class TosScreen extends StatelessWidget {
  const TosScreen({super.key});


  final String tosText = """
### 1. Статус и отношения
1.1. «Komet» (далее — «Приложение») — неофициальное стороннее приложение, не имеющее отношения к ООО «Коммуникационная платформа» (правообладатель сервиса «MAX»).

1.2. Разработчики Приложения не являются партнёрами, сотрудниками или аффилированными лицами ООО «Коммуникационная платформа».

1.3. Все упоминания торговых марок «MAX» и связанных сервисов принадлежат их правообладателям.

### 2. Условия использования
2.1. Используя Приложение «Komet», вы:
- Автоматически подтверждаете согласие с официальным Пользовательским соглашением «MAX» (https://legal.max.ru/ps)
- Осознаёте, что использование неофициального клиента может привести к блокировке аккаунта со стороны ООО «Коммуникационная платформа»;
- Принимаете на себя все риски, связанные с использованием Приложения.

2.2. Строго запрещено:
- Использовать Приложение «Komet» для распространения запрещённого контента;
- Осуществлять массовые рассылки (спам);
- Нарушать законодательство РФ и международное право;
- Предпринимать попытки взлома или нарушения работы оригинального сервиса «MAX».

2.3. Техническая реализация соответствует принципу добросовестного использования (fair use) и не нарушает исключительные права правообладателя в соответствии с статьёй 1273 ГК РФ.

2.4. Особенности технического взаимодействия:
- Приложение «Komet» использует публично доступные методы взаимодействия с сервисом «MAX», аналогичные веб-версии (https://web.max.ru)
- Все запросы выполняются в рамках добросовестного использования для обеспечения совместимости;
- Разработчики не осуществляют обход технических средств защиты и не декомпилируют оригинальное ПО.

### 3. Технические аспекты
3.1. Приложение «Komet» использует только публично доступные методы взаимодействия с сервисом «MAX» через официальные конечные точки.

3.2. Все запросы выполняются в рамках добросовестного использования (fair use) для обеспечения совместимости.

3.3. Разработчики не несут ответственности за:
- Изменения в API оригинального сервиса;
- Блокировку аккаунтов пользователей;
- Функциональные ограничения, вызванные действиями ООО «Коммуникационная платформа».

### 4. Конфиденциальность
4.1. Приложение «Komet» не хранит и не обрабатывает персональные данные пользователей.

4.2. Все данные авторизации передаются напрямую серверам ООО «Коммуникационная платформа».

4.3. Разработчики не имеют доступа к логинам, паролям, переписке и другим персональным данным пользователей.

### 5. Ответственность и ограничения
5.1. Приложение «Komet» предоставляется «как есть» (as is) без гарантий работоспособности.

5.2. Разработчики вправе прекратить поддержку Приложения в любой момент без объяснения причин.

5.3. Пользователь обязуется не использовать Приложение «Komet» в коммерческих целях.

### 6. Правовые основания
6.1. Разработка и распространение Приложения «Komet» осуществляются в соответствии с:
- Статья 1280.1 ГК РФ — декомпилирование программы для обеспечения совместимости;
- Статья 1229 ГК РФ — ограничения исключительного права в информационных целях;
- Федеральный закон № 149-ФЗ «Об информации» — использование общедоступной информации;
- Право на межоперабельность (Directive (EU) 2019/790) — обеспечение взаимодействия программ.

6.2. Взаимодействие с сервисом «MAX» осуществляется исключительно через:
- Публичные API-интерфейсы, доступные через веб-версию сервиса;
- Методы обратной разработки, разрешённые ст. 1280.1 ГК РФ для целей совместимости;
- Открытые протоколы взаимодействия, не защищённые техническими средствами охраны.

6.3. Приложение «Komet» не обходит технические средства защиты и не нарушает нормальную работу оригинального сервиса, что соответствует требованиям статьи 1299 ГК РФ.

### 7. Заключительные положения
7.1. Используя Приложение «Komet», вы соглашаетесь с тем, что:
- Единственным правомочным способом использования сервиса «MAX» является применение официальных клиентов;
- Все претензии по работе сервиса должны направляться в ООО «Коммуникационная платформа»;
- Разработчики Приложения не несут ответственности за любые косвенные или прямые убытки.

7.2. Настоящее соглашение может быть изменено без предварительного уведомления пользователей.

### 8. Функции безопасности и конфиденциальности
8.1. Приложение «Komet» включает инструменты защиты приватности:
- Подмена данных сессии — для предотвращения отслеживания пользователя;
- Система прокси-подключений — для обеспечения безопасности сетевого взаимодействия;
- Ограничение телеметрии — для минимизации передачи диагностических данных.

8.2. Данные функции:
- Направлены исключительно на защиту конфиденциальности пользователей;
- Не используются для обхода систем безопасности оригинального сервиса;
- Реализованы в рамках статьи 152.1 ГК РФ о защите частной жизни.

8.3. Разработчики не несут ответственности за:
- Блокировки, связанные с использованием инструментов конфиденциальности;
- Изменения в работе сервиса при активации данных функций.

### 8.4. Функции экспорта и импорта сессии
8.4.1. Приложение «Komet» предоставляет возможность экспорта и импорта данных сессии для:
- Обеспечения переносимости данных между устройствами пользователя
- Резервного копирования учетных данных
- Восстановления доступа при утере устройства

8.4.2. Особенности реализации:
- Экспорт сессии осуществляется без привязки к номеру телефона
- Данные сессии защищаются паролем и шифрованием по алгоритмам AES-256
- Ключ шифрования известен только пользователю и не сохраняется в приложении

8.4.3. Техническая реализация экспорта сессии:
- Экспорт сессии осуществляется через токен авторизации для идентификации в сервисе
- Используется подмена параметров сессии для сохранения контекста аутентификации
- Интеграция настроек прокси для обеспечения единой конфигурации подключения
- Импортированная сессия маскирует источник подключения через указанные прокси-настройки
- Серверы оригинального сервиса не получают данных о смене устройства пользователя
- Шифрование применяется ко всему пакету данных (сессия + прокси-конфиг)

8.4.4. Правовые основания:
- Статья 6 ФЗ-152 «О персональных данных» — обработка данных с согласия субъекта
- Статья 434 ГК РФ — право на выбор формы сделки (электронная форма хранения учетных данных)
- Принцип минимизации данных — сбор только необходимой для работы информации
- Использование токена не является несанкционированным доступом (ст. 272 УК РФ не нарушается)
- Подмена сессии — легитимный метод сохранения аутентификации (аналог браузерных cookies)
- Маскировка IP-адреса — законный способ защиты персональных данных (ст. 6 ФЗ-152)

8.4.5. Ограничения ответственности:
- Пользователь самостоятельно несет ответственность за сохранность пароля и резервных копий
- Разработчики не имеют доступа к зашифрованным данным сессии
- Восстановление утерянных паролей невозможно в целях безопасности
- Ключи шифрования не хранятся в приложении и известны только пользователю
""";

  @override
  Widget build(BuildContext context) {
    final textTheme = Theme.of(context).textTheme;
    final markdownStyleSheet = MarkdownStyleSheet.fromTheme(Theme.of(context))
        .copyWith(
          h3: textTheme.titleMedium?.copyWith(
            fontWeight: FontWeight.bold,
            fontFamily: GoogleFonts.manrope().fontFamily,
            height: 2.2,
          ),
          p: textTheme.bodyMedium?.copyWith(
            fontFamily: GoogleFonts.manrope().fontFamily,
            height: 1.5,
            color: Theme.of(context).colorScheme.onSurfaceVariant,
          ),
          listBullet: textTheme.bodyMedium?.copyWith(
            fontFamily: GoogleFonts.manrope().fontFamily,
            height: 1.6,
          ),
          a: TextStyle(
            color: Theme.of(context).colorScheme.primary,
            decoration: TextDecoration.underline,
            decorationColor: Theme.of(context).colorScheme.primary,
          ),
        );

    return Scaffold(
      appBar: AppBar(title: const Text('Пользовательское соглашение')),
      body: Markdown(
        data: tosText,
        padding: const EdgeInsets.fromLTRB(16, 8, 16, 24),
        styleSheet: markdownStyleSheet,
        selectable: true,
        onTapLink: (text, href, title) async {
          if (href != null) {
            final uri = Uri.tryParse(href);
            if (uri != null && await canLaunchUrl(uri)) {
              await launchUrl(uri, mode: LaunchMode.externalApplication);
            }
          }
        },
      ),
    );
  }
}
