Add local per-member radio mute controls on desktop and Android
This commit is contained in:
1 parent
a069d11ef9
commit
7e19cbaf3a
33 files changed
+735
-27
No files matched your search
@@ -1,14 +1,15 @@
|
||||
import com.utun.chat.data.ChatMember
|
||||
import com.utun.chat.data.parseMemberWire
|
||||
import com.utun.chat.data.toChatMember
|
||||
import com.utun.chat.data.MEMBER_WIRE_SIZE
|
||||
import java.nio.ByteBuffer
|
||||
import java.nio.ByteOrder
|
||||
|
||||
/* Проверяет реальные классы из app/build/tmp/kotlin-classes/debug после assembleDebug. */
|
||||
fun main() {
|
||||
val offset = 7
|
||||
val data = ByteArray(offset + 79)
|
||||
ByteBuffer.wrap(data, offset, 79).order(ByteOrder.LITTLE_ENDIAN).apply {
|
||||
val data = ByteArray(offset + MEMBER_WIRE_SIZE)
|
||||
ByteBuffer.wrap(data, offset, MEMBER_WIRE_SIZE).order(ByteOrder.LITTLE_ENDIAN).apply {
|
||||
putLong(42L); put(1); put(1); put(0x12); putShort(250); put(1); put(1)
|
||||
put("Member".toByteArray())
|
||||
}
|
||||
@@ -23,15 +24,20 @@ fun main() {
|
||||
check(enabled.directPresence && enabled.indirectPresence && enabled.bgpPresence)
|
||||
check(enabled.bgpRtt == 321 && enabled.bgpNodes == 5 && enabled.connecting)
|
||||
check(enabled.rtt == 250 && enabled.name == "Member")
|
||||
check(!enabled.radioMuted)
|
||||
data[offset + 10] = 0x32
|
||||
val muted = requireNotNull(parseMemberWire(data, offset)).toChatMember(enabled)
|
||||
check(muted.radioMuted && muted.radioActive && muted.isVerified && muted.directUp)
|
||||
|
||||
data[offset + 10] = 2 // Повторное обновление выключает рацию, сохраняя остальные сведения.
|
||||
val disabled = requireNotNull(parseMemberWire(data, offset)).toChatMember(enabled)
|
||||
val disabled = requireNotNull(parseMemberWire(data, offset)).toChatMember(muted)
|
||||
check(!disabled.radioActive && disabled.isVerified && disabled.directUp && disabled.connecting)
|
||||
check(!disabled.radioMuted)
|
||||
data[offset + 10] = 8
|
||||
check(requireNotNull(parseMemberWire(data, offset)).toChatMember(disabled).isDeleted)
|
||||
check(parseMemberWire(data, -1) == null)
|
||||
check(parseMemberWire(data, Int.MAX_VALUE) == null)
|
||||
check(parseMemberWire(data, offset + 1) == null)
|
||||
check(parseMemberWire(ByteArray(78)) == null)
|
||||
println("PASS: radio on/off; wire offsets; updates preserve verified/type/transports; deleted flag; truncated records")
|
||||
check(parseMemberWire(ByteArray(MEMBER_WIRE_SIZE - 1)) == null)
|
||||
println("PASS: radio subscription/mute; wire offsets; preserved properties; deleted flag; truncated records")
|
||||
}
|
||||
Reference in new issue
Block a user