Files
mobile-android/docs/PROFILE_SCREEN.md
k1ngsterr1 d78000aa3f feat: Implement Profile Screen with full functionality and navigation
- Added ProfileScreen.kt for user profile management.
- Updated MainActivity.kt to integrate ProfileScreen and manage navigation states.
- Created documentation for Profile Screen implementation, navigation flow, and testing checklist.
- Removed SettingsScreen.kt as part of the refactor.
- Added helper components for profile display and editing.
- Ensured compliance with Material 3 design principles and dark/light theme support.
2026-01-20 04:38:13 +05:00

6.9 KiB
Raw Permalink Blame History

👤 Profile Screen Implementation

📋 Overview

Реализован полнофункциональный экран профиля пользователя на базе функционала из архивной версии приложения, адаптированный под стилистику текущего Kotlin приложения.

Основные возможности

1. 👤 Карточка профиля

  • Аватар с инициалами - генерируется из имени пользователя
  • Отображение имени - основное имя пользователя
  • Username - с префиксом @ (если установлен)
  • Короткий Public Key - первые и последние 3 символа

2. ✏️ Редактирование профиля

  • Редактируемое поле "Your name"

    • Placeholder: "ex. Freddie Gibson"
    • Inline редактирование
  • Редактируемое поле "Username"

    • С префиксом "@"
    • Placeholder: "ex. freddie871"
  • Кнопка Save

    • Появляется автоматически при изменении полей
    • Анимированное появление/исчезновение
    • Сохраняет изменения через callback onSaveProfile

3. 🔑 Public Key

  • Поле копирования

    • Нажатие на поле копирует ключ в буфер обмена
    • Анимация "Copied!" при успешном копировании
    • Таймер 1.5 секунды для возврата к исходному состоянию
  • Подсказка

    • Объясняет назначение публичного ключа
    • Помогает пользователю поделиться контактом

4. 🔧 Секция Settings

Три основных пункта с цветными иконками:

🔄 Updates (Lime Green)

  • Проверка новых версий
  • Обновления безопасности и новые функции

🎨 Theme (Indigo)

  • Настройка внешнего вида
  • Переключение темной/светлой темы

🛡️ Safety (Purple)

  • Резервное копирование
  • Настройки безопасности
  • Важно: предупреждение о конфиденциальности

5. 🚪 Logout

  • Красная иконка и текст для визуального выделения
  • Без chevron (стрелки вправо) для финальности действия
  • Объяснение последствий выхода

🎨 Дизайн

Цветовая схема

  • Background: #0F0F0F (dark) / #FFFFFF (light)
  • Surface: #1A1A1A (dark) / #F5F5F5 (light)
  • Text Primary: White (dark) / #1A1A1A (light)
  • Text Secondary: #999999 (dark) / #666666 (light)
  • Primary Blue: Используется для аватара и кнопки Save

Компоненты

  • Rounded Corners: 16dp для карточек, 8dp для иконок
  • Avatar Size: 100dp
  • Icon Background: 36dp с цветовой кодировкой
  • Typography: Sans Serif с весами 400-700

🔄 Анимации

  • Fade In/Out (200ms) при переходах между экранами
  • AnimatedContent для "Copied!" сообщения
  • AnimatedVisibility для кнопки Save

📱 Интеграция

В MainActivity.kt

var showProfileScreen by remember { mutableStateOf(false) }

// Навигация из Settings
onProfileClick = {
    showSettingsScreen = false
    showProfileScreen = true
}

// Навигация из ChatsListScreen
onProfileClick = {
    showProfileScreen = true
}

Callbacks

ProfileScreen(
    isDarkTheme = isDarkTheme,
    accountName = accountName,
    accountUsername = accountUsername,
    accountPublicKey = accountPublicKey,
    onBack = { showProfileScreen = false },
    onSaveProfile = { name, username ->
        // Сохранение изменений профиля
    },
    onLogout = {
        // Выход из аккаунта
    },
    onNavigateToTheme = { /* ... */ },
    onNavigateToSafety = { /* ... */ },
    onNavigateToUpdates = { /* ... */ }
)

🎯 Реализованный функционал из архива

Из MyProfile.tsx:

Карточка профиля с аватаром Редактируемые поля name/username Кнопка сохранения изменений Копирование публичного ключа Навигация к Updates Навигация к Theme Навигация к Safety Кнопка Logout с предупреждением

Из SettingsInput.tsx:

Copy field с анимацией "copied" Editable fields Clickable items с иконками Colored icon backgrounds

Из ProfileCard.tsx:

Центрированный аватар с инициалами Отображение имени и username Короткая версия публичного ключа

🚀 Следующие шаги (TODO)

  1. Интеграция с AccountManager

    • Загрузка username из базы
    • Сохранение изменений профиля
  2. Реализация Logout

    • Очистка данных аккаунта
    • Переход на экран авторизации
  3. Экраны настроек

    • Safety Screen (резервное копирование seed фразы)
    • Updates Screen (проверка обновлений)
    • Theme Screen (расширенные настройки темы)
  4. Верификация

    • Бейдж верифицированного пользователя (как в архиве)

📝 Примечания

  • Экран полностью адаптируется под темную/светлую тему
  • Все тексты соответствуют оригиналу из архива
  • Анимации сделаны в стиле Telegram (плавные fade transitions)
  • Код организован с комментариями и разделителями для читаемости

🎨 Стилистика

Дизайн соответствует общей стилистике приложения:

  • Минималистичный и чистый UI
  • Rounded corners для современного вида
  • Цветовая кодировка иконок для быстрой навигации
  • Информативные подписи к каждой секции
  • Визуальная иерархия через размеры шрифтов и цвета