mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-09-16 12:43:02 +00:00
Merge branch 'stable'
This commit is contained in:
+5
-11
@@ -726,17 +726,11 @@ object ChatModel {
|
||||
}
|
||||
|
||||
fun removeChat(rhId: Long?, id: String) {
|
||||
var removed: Chat? = null
|
||||
chats.removeAll {
|
||||
val found = it.id == id && it.remoteHostId == rhId
|
||||
if (found) {
|
||||
removed = it
|
||||
}
|
||||
found
|
||||
}
|
||||
|
||||
removed?.let {
|
||||
removePresetChatTags(it.chatInfo, it.chatStats)
|
||||
val i = getChatIndex(rhId, id)
|
||||
if (i != -1) {
|
||||
val chat = chats.removeAt(i)
|
||||
removePresetChatTags(chat.chatInfo, chat.chatStats)
|
||||
removeWallpaperFilesFromChat(chat)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+25
@@ -10,6 +10,7 @@ import androidx.compose.ui.unit.*
|
||||
import chat.simplex.common.model.*
|
||||
import chat.simplex.common.model.ChatController.appPrefs
|
||||
import chat.simplex.common.platform.*
|
||||
import chat.simplex.common.ui.theme.ThemeModeOverrides
|
||||
import chat.simplex.common.ui.theme.ThemeOverrides
|
||||
import chat.simplex.common.views.chatlist.connectIfOpenedViaUri
|
||||
import chat.simplex.res.MR
|
||||
@@ -316,6 +317,30 @@ fun removeWallpaperFile(fileName: String? = null) {
|
||||
WallpaperType.cachedImages.remove(fileName)
|
||||
}
|
||||
|
||||
fun removeWallpaperFilesFromTheme(theme: ThemeModeOverrides?) {
|
||||
if (theme != null) {
|
||||
removeWallpaperFile(theme.light?.wallpaper?.imageFile)
|
||||
removeWallpaperFile(theme.dark?.wallpaper?.imageFile)
|
||||
}
|
||||
}
|
||||
|
||||
fun removeWallpaperFilesFromChat(chat: Chat) {
|
||||
if (chat.chatInfo is ChatInfo.Direct) {
|
||||
removeWallpaperFilesFromTheme(chat.chatInfo.contact.uiThemes)
|
||||
} else if (chat.chatInfo is ChatInfo.Group) {
|
||||
removeWallpaperFilesFromTheme(chat.chatInfo.groupInfo.uiThemes)
|
||||
}
|
||||
}
|
||||
|
||||
fun removeWallpaperFilesFromAllChats(user: User) {
|
||||
// Currently, only removing everything from currently active user is supported. Inactive users are TODO
|
||||
if (user.userId == chatModel.currentUser.value?.userId) {
|
||||
chatModel.chats.value.forEach {
|
||||
removeWallpaperFilesFromChat(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun <T> createTmpFileAndDelete(dir: File = tmpDir, onCreated: (File) -> T): T {
|
||||
val tmpFile = File(dir, UUID.randomUUID().toString())
|
||||
tmpFile.parentFile.mkdirs()
|
||||
|
||||
+2
@@ -347,6 +347,7 @@ private suspend fun doRemoveUser(m: ChatModel, user: User, users: List<User>, de
|
||||
try {
|
||||
when {
|
||||
user.activeUser -> {
|
||||
removeWallpaperFilesFromAllChats(user)
|
||||
val newActive = users.firstOrNull { u -> !u.activeUser && !u.hidden }
|
||||
if (newActive != null) {
|
||||
m.controller.changeActiveUser_(user.remoteHostId, newActive.userId, null)
|
||||
@@ -366,6 +367,7 @@ private suspend fun doRemoveUser(m: ChatModel, user: User, users: List<User>, de
|
||||
m.controller.apiDeleteUser(user, delSMPQueues, viewPwd)
|
||||
}
|
||||
}
|
||||
removeWallpaperFilesFromTheme(user.uiThemes)
|
||||
m.removeUser(user)
|
||||
ntfManager.cancelNotificationsForUser(user.userId)
|
||||
} catch (e: Exception) {
|
||||
|
||||
Reference in New Issue
Block a user