Browse Source

chat: фикс 0:00 у длинных голосовых — b64_decode терял последний байт без padding + formatTime в мс

v2
evgeny 3 weeks ago
parent
commit
ba557e2b9d
  1. 2
      src/chat/chat_core_priv.h
  2. 6
      tools/chatgui-android/app/src/main/java/com/utun/chat/ui/components/MessageBubble.kt

2
src/chat/chat_core_priv.h

@ -59,7 +59,7 @@ static inline size_t b64_decode(const char* src, size_t src_len, uint8_t* dst, s
if (vi == 4) { if (vi == 4) {
dst[out++] = (uint8_t)((vals[0] << 2) | (vals[1] >> 4)); dst[out++] = (uint8_t)((vals[0] << 2) | (vals[1] >> 4));
if (out < dst_cap) dst[out++] = (uint8_t)((vals[1] << 4) | (vals[2] >> 2)); if (out < dst_cap) dst[out++] = (uint8_t)((vals[1] << 4) | (vals[2] >> 2));
if (out < dst_cap && i + 1 < src_len && src[i + 1] != '=') if (out < dst_cap)
dst[out++] = (uint8_t)((vals[2] << 6) | vals[3]); dst[out++] = (uint8_t)((vals[2] << 6) | vals[3]);
vi = 0; vi = 0;
} }

6
tools/chatgui-android/app/src/main/java/com/utun/chat/ui/components/MessageBubble.kt

@ -449,8 +449,6 @@ private fun formatDuration(ms: Int): String {
private fun formatTime(ts: Long): String { private fun formatTime(ts: Long): String {
if (ts == 0L) return "" if (ts == 0L) return ""
val s = ts / 1_000_000_000 val dt = java.time.Instant.ofEpochMilli(ts).atZone(java.time.ZoneId.systemDefault())
val h = (s / 3600) % 24 return "%02d:%02d".format(dt.hour, dt.minute)
val m = (s / 60) % 60
return "%02d:%02d".format(h, m)
} }

Loading…
Cancel
Save