diff --git a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/AvatarRepository.kt b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/AvatarRepository.kt index 9e910e1b..e7956dbd 100644 --- a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/AvatarRepository.kt +++ b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/AvatarRepository.kt @@ -342,13 +342,13 @@ class AvatarRepository(context: Context) { } suspend fun loadAvatar(group: String, m: ChatMember, original: Boolean): Bitmap { - val epoch=generation; val root=directory(account) + val epoch=generation; val root=directory(account); val pinnedIntent=defaultAvatar if (!original) cache.get(m.avatarFile)?.let { return it } objectFile(group,m,m.avatarFile,AvatarProtocol.MAX_MANIFEST) val record=withContext(Dispatchers.IO) { AvatarAssets.record(root,m.avatarFile) } objectFile(group,m,if (original) record.original else record.preview, if (original) AvatarProtocol.MAX_ORIGINAL else AvatarProtocol.MAX_USER) - val bitmap=withContext(Dispatchers.IO) { AvatarAssets.image(root,record,original).also { prune(root) } } + val bitmap=withContext(Dispatchers.IO) { AvatarAssets.image(root,record,original).also { prune(root,pinnedIntent) } } alive(epoch); if (!original) { cache.put(m.avatarFile,bitmap); changed() } return bitmap } @@ -396,9 +396,9 @@ class AvatarRepository(context: Context) { } return BitmapFactory.decodeByteArray(bytes, 0, bytes.size) ?: throw IOException("image decode failed") } - private fun prune(root: File) { + private fun prune(root: File, pinnedIntent: String?) { val pinned=mutableSetOf() - defaultAvatar?.substringAfter('/')?.takeIf { AvatarProtocol.validFile(it) }?.let { name -> + pinnedIntent?.substringAfter('/')?.takeIf { AvatarProtocol.validFile(it) }?.let { name -> pinned+=name try { val r=AvatarAssets.record(root,name); pinned+=r.original; pinned+=r.preview } catch (e: Exception) { log("WARN", "Cannot pin profile bundle=$name: ${e.message}") }