Browse Source

Log Android gallery selections and finish image gestures safely

master
evgeny 5 days ago
parent
commit
17dd06221a
  1. 2
      tools/chatgui-android/app/src/main/java/com/utun/chat/ui/components/ZoomableImage.kt
  2. 5
      tools/chatgui-android/app/src/main/java/com/utun/chat/ui/screens/AvatarViewerScreen.kt

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

@ -72,7 +72,9 @@ fun ZoomableImage(bitmap: Bitmap, modifier: Modifier = Modifier, contentScale: C
var swipe=0f; var swiped=false; var canSwipe=zoomScale==1f
do {
val event=awaitPointerEvent()
if (event.changes.none { it.pressed }) break
val centroid=event.calculateCentroid(useCurrent=false)
if (!centroid.x.isFinite() || !centroid.y.isFinite()) continue
val pan=event.calculatePan(); val zoom=event.calculateZoom()
if (event.changes.count { it.pressed }!=1 || zoom!=1f) canSwipe=false
if (canSwipe && !swiped && navigate!=null && kotlin.math.abs(pan.x)>kotlin.math.abs(pan.y)) {

5
tools/chatgui-android/app/src/main/java/com/utun/chat/ui/screens/AvatarViewerScreen.kt

@ -31,6 +31,10 @@ fun AvatarViewerScreen(group: String?, owner: Long, name: String, onClose: () ->
val members by repository.members.collectAsState()
val revision by repository.revision.collectAsState()
val account=repository.accountId
DisposableEffect(group,owner,account) {
LogManager.addLog("INFO","Avatar","Viewer opened group=$group owner=$owner account=$account")
onDispose { LogManager.addLog("INFO","Avatar","Viewer closed group=$group owner=$owner") }
}
val source=remember(members,group,owner) { repository.gallerySource(group,owner) }
var files by remember(group,owner,account) { mutableStateOf(emptyList<String>()) }
var selected by rememberSaveable(group,owner,account) { mutableStateOf("") }
@ -59,6 +63,7 @@ fun AvatarViewerScreen(group: String?, owner: Long, name: String, onClose: () ->
original=null; failed=false
val (channel,member)=source ?: return@LaunchedEffect
if (selected.isEmpty()) return@LaunchedEffect
LogManager.addLog("INFO","Avatar","Viewer selected group=$channel owner=$owner server=${member.avatarServer} file=$selected")
coroutineScope {
launch {
try { previews=previews+(selected to repository.loadAvatar(channel,member.copy(avatarFile=selected),false)) }

Loading…
Cancel
Save