SHA256
Что сделано: вычистили неиспользуемый user-settings sync/DM sync хвост, сохранили сборку, обновили bundle.sh так, чтобы gradle-wrapper.jar всегда попадал в архив. Проверено: compileJava и deploy на t2 (server + UI). Не проверяли: полные интеграционные сценарии, ручные UI-флоу и продовый деплой.
2.0 KiB
2.0 KiB
User Settings API
user_settings хранит технические настройки пользователя только на его единственном действующем access-сервере. Межсерверной синхронизации настроек нет. При смене access-сервера старые настройки автоматически не переносятся.
Подпись
UI формирует строку:
SHiNe/UserSettings:|<setting_type>|<setting_key>|<time_ms>|<value_text>|<value_num>
и подписывает её текущим Ed25519 clientKey пользователя. Сервер:
- находит пользователя;
- проверяет совпадение client_key с актуальным ключом пользователя;
- строго проверяет подпись;
- при неверной подписи возвращает INVALID_SIGNATURE;
- сохраняет запись только если time_ms новее локальной версии.
Операции
UpsertUserSetting
Обязательные поля:
- login;
- setting_type;
- setting_key;
- time_ms;
- client_key;
- signature.
Значения:
- value_text — строковое значение, по умолчанию пустая строка;
- value_num — числовое значение, по умолчанию 0.
Поля sync_delivery и synced удалены.
GetUserSetting
Возвращает одну локальную настройку по login, setting_type и setting_key.
ListUserSettings
Возвращает все локальные настройки пользователя.
Удалённые операции
После перехода на один access-сервер удалены:
- UserSettingsSyncBatch;
- MarkAllUserSettingsUnsynced.
Также удалены таблица peer-cursor и периодический сервис синхронизации настроек.