Keep native member query failures distinct from valid empty snapshots

This commit is contained in:
evgeny committed 2026-10-29 14:02:25 +01:00
1 parent 0878947e13
commit a4c7899ffb
2 files changed
+6 -4

No files matched your search

@@ -215,7 +215,8 @@ object NativeLib {
}
/* ── Channel members ── */
fun getChannelMembers(channelId: String): String = nativeGetChannelMembers(channelId) ?: "[]"
fun getChannelMembers(channelId: String): String =
checkNotNull(nativeGetChannelMembers(channelId)) { "Member snapshot unavailable channel=$channelId" }
/** Асинхронный live-снимок; ответ — событие MEMBER_LIST. */
fun requestMemberList(channelId: String): Boolean = nativeRequestMemberList(channelId)
fun requestGroupAvatar(id: Long, group: Long): Boolean = nativeAvatarOperation(0, id, group, 0, 0, null, null, null)
@@ -244,7 +245,8 @@ object NativeLib {
private external fun nativeFileTransfer(id: Long, group: Long, server: Long, owner: Long, remote: ByteArray,
local: ByteArray, upload: Boolean, version: ByteArray): Boolean
private external fun nativeFileCancel(id: Long): Boolean
fun getMemberDetail(channelId: String, nodeId: Long): String = nativeGetMemberDetail(channelId, nodeId) ?: "{}"
fun getMemberDetail(channelId: String, nodeId: Long): String =
checkNotNull(nativeGetMemberDetail(channelId, nodeId)) { "Member detail unavailable channel=$channelId node=$nodeId" }
fun setMemberNick(channelId: String, nodeId: Long, nick: String) { nativeSetMemberNick(channelId, nodeId, nick) }
fun toggleMemberRadioMute(channelId: String, nodeId: Long): Boolean = nativeToggleMemberRadioMute(channelId, nodeId)
fun isChannelOwner(channelId: String): Boolean = nativeIsChannelOwner(channelId)
@@ -254,7 +256,7 @@ object NativeLib {
}
fun transferAdmin(channelId: String, nodeId: Long) { nativeTransferAdmin(channelId, nodeId) }
fun deleteChannel(channelId: String) { nativeDeleteChannel(channelId) }
fun getMemberLinks(nodeId: Long): String = nativeGetMemberLinks(nodeId) ?: "{}"
fun getMemberLinks(nodeId: Long): String = checkNotNull(nativeGetMemberLinks(nodeId)) { "Member links unavailable node=$nodeId" }
/* ── Local sockets (for auto-mode display) ── */
fun requestLocalSockets() = nativeRequestLocalSockets()
@@ -28,7 +28,7 @@ import org.json.JSONArray
private val IMAGE_EXTENSIONS = setOf("jpg", "jpeg", "png", "gif", "bmp", "webp")
/** UI-снимки каналов/PM, выбор беседы и подтверждения локальных отправок. Все изменения состояния — на main.
/** UI-снимки каналов/PM, выбор беседы и подтверждения локальных отправок. События и команды UI обрабатываются на main.
* Тяжёлые чтения идут через repository на IO; revision/instance guards отбрасывают устаревшие ответы.
* Команда JNI подтверждает лишь очередь: commit отправки сверяется по уникальному request ID события.
* Настройки/сброс БД принадлежат Application; media/controllers также переживают UI и освобождаются по ACK.