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); } } }, ), ); } }