fix: иконки шторки в единой круглой рамке; кэш Задач для быстрого показа
- Шторка: КАЖДАЯ иконка теперь в белом круге с рамкой и мягкой тенью, все одного размера (глиф внутри 56% рамки) — как на мобильном сайте (было: плоские глифы без рамки, разного размера). - Задачи грузятся быстрее: TasksCache (в памяти на время процесса) — списки и задачи по спискам показываются мгновенно из кэша при повторном открытии раздела/списка, сеть обновляет в фоне. Гонки учтены: результат применяется, только если пользователь ещё на этом списке. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+22
-19
@@ -236,31 +236,34 @@ private fun F7AppMenuGridItem(
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
verticalArrangement = Arrangement.spacedBy(8.dp),
|
||||
) {
|
||||
val localIcon = item.localIcon
|
||||
if (localIcon != null) {
|
||||
// Нативный пункт: иконка в круглом бейдже с зелёной обводкой (стиль glass)
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.size(MenuIconSize)
|
||||
.clip(CircleShape)
|
||||
.background(Color.White)
|
||||
.border(1.5.dp, F7Colors.Green30, CircleShape),
|
||||
contentAlignment = Alignment.Center,
|
||||
) {
|
||||
// Единая круглая рамка (белый круг + рамка + мягкая тень) под КАЖДУЮ иконку —
|
||||
// как на мобильном сайте: все иконки одного размера в кружке. Глиф внутри меньше рамки.
|
||||
val frameShape = CircleShape
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.size(MenuIconSize)
|
||||
.shadow(2.dp, frameShape, spotColor = Color(0xFFE6E6E6))
|
||||
.clip(frameShape)
|
||||
.background(Color.White)
|
||||
.border(1.dp, Color(0xFFECECEC), frameShape),
|
||||
contentAlignment = Alignment.Center,
|
||||
) {
|
||||
val localIcon = item.localIcon
|
||||
if (localIcon != null) {
|
||||
Icon(
|
||||
localIcon,
|
||||
contentDescription = item.label,
|
||||
tint = F7Colors.Primary,
|
||||
modifier = Modifier.size(MenuIconSize * 0.46f),
|
||||
modifier = Modifier.size(MenuIconSize * 0.5f),
|
||||
)
|
||||
} else {
|
||||
AsyncImage(
|
||||
model = item.iconUrl,
|
||||
contentDescription = item.label,
|
||||
modifier = Modifier.size(MenuIconSize * 0.56f),
|
||||
contentScale = ContentScale.Fit,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
AsyncImage(
|
||||
model = item.iconUrl,
|
||||
contentDescription = item.label,
|
||||
modifier = Modifier.size(MenuIconSize),
|
||||
contentScale = ContentScale.Fit,
|
||||
)
|
||||
}
|
||||
Text(
|
||||
text = item.label,
|
||||
|
||||
Reference in New Issue
Block a user