Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ configurations.configureEach {
exclude(module = "commons-logging")
}

val canonicalVersionCode = 427
val canonicalVersionCode = 429
val canonicalVersionName = "1.30.0"

val postFixSize = 10
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.attachments

import android.app.Application
import android.os.FileObserver
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
Expand Down Expand Up @@ -95,11 +96,17 @@ class AvatarUploadManager @Inject constructor(
}

Log.d(TAG, "Avatar expired, re-uploading")
uploadAvatar(
pictureData = localEncryptedFileInputStreamFactory.create(localFile)
.use { it.readBytes() },
isReupload = true,
)
try {
uploadAvatar(
pictureData = localEncryptedFileInputStreamFactory.create(localFile)
.use { it.readBytes() },
isReupload = true,
)
} catch (e: CancellationException) {
throw e
} catch (e: Exception) {
Log.w(TAG, "Failed to re-upload avatar", e)
}
}
} else {
emptyFlow()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.map
Expand Down Expand Up @@ -58,6 +59,7 @@ import org.thoughtcrime.securesms.util.castAwayType
import java.util.EnumSet
import java.util.concurrent.TimeUnit
import javax.inject.Inject
import kotlin.math.log

private const val TAG = "ConfigToDatabaseSync"

Expand Down Expand Up @@ -93,17 +95,20 @@ class ConfigToDatabaseSync @Inject constructor(
// Sync conversations from config -> database
scope.launch {
preferences.watchLocalNumber()
.filterNotNull()
.take(1)
.flatMapLatest {
combine(
conversationRepository.conversationListAddressesFlow,
configFactory.userConfigsChanged(EnumSet.of(UserConfigType.CONVO_INFO_VOLATILE))
.castAwayType()
.onStart { emit(Unit) }
.map { _ -> configFactory.withUserConfigs { it.convoInfoVolatile.all() } },
::Pair
)
.map { it != null }
.flatMapLatest { loggedIn ->
if (loggedIn) {
combine(
conversationRepository.conversationListAddressesFlow,
configFactory.userConfigsChanged(EnumSet.of(UserConfigType.CONVO_INFO_VOLATILE))
.castAwayType()
.onStart { emit(Unit) }
.map { _ -> configFactory.withUserConfigs { it.convoInfoVolatile.all() } },
::Pair
)
} else {
emptyFlow()
}
}
.distinctUntilChanged()
.collectLatest { (conversations, convoInfo) ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1809,7 +1809,7 @@ class ConversationActivityV2 : ScreenLockActionBarActivity(), InputBarDelegate,

message.reaction = Reaction.from(
timestamp = originalMessage.timestamp,
author = originalAuthor.address,
author = originalAuthor.address,
emoji = emoji,
react = false
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onStart
Expand Down Expand Up @@ -43,21 +43,24 @@ class BlindMappingRepository @Inject constructor(
*/
@Suppress("OPT_IN_USAGE")
val mappings: StateFlow<Map<CommunityServerUrl, Map<Address.Blinded, Address.Standard>>> = prefs.watchLocalNumber()
.filterNotNull()
.flatMapLatest { localAddress ->
configFactory
.userConfigsChanged(setOf(UserConfigType.USER_GROUPS, UserConfigType.CONTACTS))
.castAwayType()
.onStart { emit(Unit) }
.map {
configFactory.withUserConfigs { configs ->
Pair(
configs.userGroups.allCommunityInfo().map { it.community },
configs.contacts.all().map { Address.Standard(AccountId(it.id)) }
+ Address.Standard(AccountId(localAddress))
)
if (localAddress.isNullOrBlank()) {
emptyFlow()
} else {
configFactory
.userConfigsChanged(setOf(UserConfigType.USER_GROUPS, UserConfigType.CONTACTS))
.castAwayType()
.onStart { emit(Unit) }
.map {
configFactory.withUserConfigs { configs ->
Pair(
configs.userGroups.allCommunityInfo().map { it.community },
configs.contacts.all().map { Address.Standard(AccountId(it.id)) }
+ Address.Standard(AccountId(localAddress))
)
}
}
}
}
}
.distinctUntilChanged()
.map { (allCommunities, allContacts) ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import kotlinx.coroutines.flow.SharedFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.debounce
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.filterIsInstance
import kotlinx.coroutines.flow.filterNotNull
Expand Down Expand Up @@ -95,9 +96,13 @@ class RecipientRepository @Inject constructor(

fun observeSelf(): Flow<Recipient> {
return preferences.watchLocalNumber()
.filterNotNull()
.distinctUntilChanged()
.flatMapLatest { observeRecipient(it.toAddress()) }
.flatMapLatest {
if (it.isNullOrBlank()) {
emptyFlow()
} else {
observeRecipient(it.toAddress())
}
}
}

fun getSelf(): Recipient {
Expand Down