feat(mail): sieve-фильтры — список и конструктор «Новый фильтр»

Паритет живого веба (модалка «Новый фильтр»):
- API: GET/PUT /apps/mail/api/sieve/active/{accountId} (MailRepository).
- Наши правила живут в маркированных блоках # F7MOBILE-BEGIN/END
  внутри активного скрипта; пользовательские/веб-правила НЕ трогаем,
  перед каждой записью скрипт перечитывается (не затираем изменения
  из веба). require ["fileinto","imap4flags"] — в начале скрипта.
- Конструктор: если [От/Тема/Кому] содержит X → [переместить в папку /
  пометить прочитанным / удалить]; список правил с удалением.
- Вход: Настройки почты → аккаунт → «Фильтры».
- MailSieveScript покрыт юнит-тестами (roundtrip, сохранение чужого
  скрипта, экранирование кавычек, все действия) — 4 зелёных.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
b-dev-mobile
2026-07-10 04:15:17 +00:00
parent 2df46667e0
commit ab864aa7d7
7 changed files with 518 additions and 0 deletions
+1
View File
@@ -34,6 +34,7 @@ dependencies {
implementation project(':feature:calendar')
implementation libs.coroutines.android
implementation libs.json
testImplementation libs.junit
def composeBom = platform(libs.compose.bom)
implementation composeBom
implementation libs.compose.ui