server selection

This commit is contained in:
2025-11-06 07:11:15 +09:00
parent 8bc115acf3
commit 8276c57010
24 changed files with 1964 additions and 43 deletions

71
docs/server_settings.md Normal file
View File

@@ -0,0 +1,71 @@
# Настройки сервера в WellShe
## Новая функциональность
На экране авторизации в верхнем левом углу теперь есть иконка шестеренки (настроек), которая открывает диалог настройки сервера. Также на экране отображается текущий сервер, к которому подключается приложение.
### Основные возможности
- ⚙️ Иконка настроек в верхнем левом углу экрана авторизации
- 🔧 Диалог для изменения URL сервера с валидацией
- 📍 Отображение текущего сервера на экране авторизации
- 💾 Автоматическое сохранение настроек в SharedPreferences
- 🔄 Динамическое обновление Retrofit при изменении настроек
- ✅ Toast уведомление при сохранении
### Компоненты
1. **ServerSettingsDialog.kt** - Диалог для ввода URL сервера
2. **ServerPreferences.kt** - Класс для сохранения настроек сервера в SharedPreferences
3. **ServerSettingsViewModel.kt** - ViewModel для управления состоянием настроек
4. **RetrofitProvider.kt** - Провайдер для динамического создания Retrofit
5. **RetrofitFactory.kt** - Фабрика для создания Retrofit с нужным baseUrl
6. **ApiClient.kt** - Обновлен для использования динамических настроек сервера
7. **LoginScreen.kt** - Добавлена иконка настроек, диалог и отображение сервера
8. **ic_settings_24.xml** - Иконка настроек
### Использование
1. На экране авторизации нажмите на иконку шестеренки в верхнем левом углу
2. Введите полный URL сервера (включая протокол http:// или https:// и порт)
3. Нажмите "Сохранить"
4. Появится Toast уведомление об успешном сохранении
5. Настройки применяются мгновенно для всех API-запросов
### Валидация
- URL должен начинаться с http:// или https://
- Поле не может быть пустым
- Кнопка "Сохранить" активна только при корректном URL
- Отображается подсказка о формате URL
### Отображение текущего сервера
На экране авторизации под кнопками отображается карточка с информацией о текущем сервере:
- Показывает текущий URL сервера
- Обновляется автоматически при изменении настроек
- Помогает пользователю понимать, к какому серверу он подключается
### Технические детали
- Использует Jetpack Compose для UI
- Hilt для внедрения зависимостей
- SharedPreferences для хранения настроек
- RetrofitProvider для динамического обновления базового URL
- ExperimentalMaterial3Api для TopAppBar
- Toast уведомления для обратной связи
### Архитектура
```
ServerPreferences -> ServerSettingsViewModel -> ServerSettingsDialog
|
v
RetrofitProvider -> RetrofitFactory -> Retrofit -> AuthService
```
### По умолчанию
- Сервер по умолчанию: `http://192.168.0.112:8000`
- Настройки сохраняются между запусками приложения
- При первом запуске используется сервер по умолчанию