# Fix: WebSocket Connection After Registration

## Проблема

После первой регистрации аккаунта в Android приложении не работали запросы на сервер до перезапуска приложения.

## Причина

При регистрации или разблокировке аккаунта вызывался `ProtocolManager.authenticate()` до того, как WebSocket соединение было установлено.

Последовательность была следующая:

1. Создание/разблокировка аккаунта
2. Вызов `ProtocolManager.authenticate(publicKey, privateKeyHash)`
3. `authenticate()` вызывает `getProtocol().startHandshake()`
4. `startHandshake()` проверяет что не подключено и вызывает `connect()`, но затем сразу возвращается
5. Соединение устанавливается асинхронно, но handshake не происходит вовремя
6. Приложение переходит к экрану чатов, запросы не проходят

После перезапуска приложения `ProtocolManager.connect()` вызывался в `ChatsListScreen`, поэтому все работало нормально.

## Решение

Добавлен явный вызов `ProtocolManager.connect()` перед `authenticate()` в следующих местах:

### 1. AuthState.kt

- Метод `createAccount()` - после создания аккаунта
- Метод `unlock()` - после разблокировки

### 2. SetPasswordScreen.kt

- При создании нового аккаунта после установки пароля

### 3. UnlockScreen.kt

- При разблокировке существующего аккаунта

Добавлена задержка 500ms после `connect()` для того, чтобы WebSocket успел установить соединение до попытки аутентификации.

## Измененные файлы

- `app/src/main/java/com/rosetta/messenger/providers/AuthState.kt`
- `app/src/main/java/com/rosetta/messenger/ui/auth/SetPasswordScreen.kt`
- `app/src/main/java/com/rosetta/messenger/ui/auth/UnlockScreen.kt`

## Код изменений

```kotlin
// Было:
ProtocolManager.authenticate(publicKey, privateKeyHash)

// Стало:
ProtocolManager.connect()
kotlinx.coroutines.delay(500) // Даём время на установку соединения
ProtocolManager.authenticate(publicKey, privateKeyHash)
```

## Тестирование

После этого исправления:

1. Зарегистрируйте новый аккаунт
2. Сразу после регистрации попробуйте отправить сообщение или выполнить другой запрос
3. Запросы должны проходить без перезапуска приложения

## Дата

11 января 2026
