fix: нижняя панель 1:1 с сайтом (Задачи + mobile-иконки); Deck открывается устойчиво
Нижняя панель (по layout.user.php сайта): средняя кнопка = ЗАДАЧИ
(была Карточки) — по решению владельца «как на сайте»; иконки из
набора mobile-*-icon (плоский конверт mobile-mail-icon вместо
конверта-с-@, mobile-tasks-icon, mobile-spreed-icon вебкамера,
mobile-burger-icon), локально/офлайн; размеры 25dp (app-link) как
на сайте, стрелка «назад» 18dp. Карточки остаются в шторке-меню.
Deck: loadBoardDetail больше не рушится, если GET /boards/{id}
(метки/права) не отвечает — стеки грузятся всё равно (вероятная
причина «доска не открывается» на устройстве). Заголовок/метки/права
подставляются best-effort.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -50,9 +50,17 @@ class DeckRepository {
|
||||
|
||||
suspend fun loadBoardDetail(session: AuthSession, boardId: Int): DeckBoardDetail {
|
||||
val c = client(session)
|
||||
val board = getJson(c, "${apiBase(session)}/boards/$boardId") as JSONObject
|
||||
val labels = parseLabels(board.optJSONArray("labels"))
|
||||
val canEdit = board.optJSONObject("permissions")?.optBoolean("PERMISSION_EDIT", true) ?: true
|
||||
// Доска-объект (метки/права) — НЕ критична: если запрос упадёт, доску всё равно
|
||||
// открываем со стеками (раньше был баг — сбой board#read рушил всю загрузку).
|
||||
var boardTitle = ""
|
||||
var labels = emptyList<DeckLabel>()
|
||||
var canEdit = true
|
||||
runCatching { getJson(c, "${apiBase(session)}/boards/$boardId") as JSONObject }
|
||||
.onSuccess { board ->
|
||||
boardTitle = board.optString("title")
|
||||
labels = parseLabels(board.optJSONArray("labels"))
|
||||
canEdit = board.optJSONObject("permissions")?.optBoolean("PERMISSION_EDIT", true) ?: true
|
||||
}
|
||||
val stacksJson = getJson(c, "${apiBase(session)}/boards/$boardId/stacks") as? JSONArray ?: JSONArray()
|
||||
val stacks = mutableListOf<DeckStack>()
|
||||
for (i in 0 until stacksJson.length()) {
|
||||
@@ -74,7 +82,7 @@ class DeckRepository {
|
||||
}
|
||||
return DeckBoardDetail(
|
||||
boardId = boardId,
|
||||
title = board.optString("title"),
|
||||
title = boardTitle,
|
||||
canEdit = canEdit,
|
||||
labels = labels,
|
||||
stacks = stacks.sortedBy { it.order },
|
||||
|
||||
Reference in New Issue
Block a user