diff --git a/app/src/main/kotlin/com/wire/android/ui/home/conversations/messages/ConversationMessagesViewModel.kt b/app/src/main/kotlin/com/wire/android/ui/home/conversations/messages/ConversationMessagesViewModel.kt index dc35c8b7a20..a09644eda16 100644 --- a/app/src/main/kotlin/com/wire/android/ui/home/conversations/messages/ConversationMessagesViewModel.kt +++ b/app/src/main/kotlin/com/wire/android/ui/home/conversations/messages/ConversationMessagesViewModel.kt @@ -27,6 +27,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import androidx.paging.cachedIn import com.ramcosta.composedestinations.generated.app.navArgs +import com.wire.android.BuildConfig import com.wire.android.R import com.wire.android.appLogger import com.wire.android.media.audiomessage.ConversationAudioMessagePlayer @@ -216,14 +217,20 @@ class ConversationMessagesViewModel @Inject constructor( is GetConversationUnreadEventsCountUseCase.Result.Failure -> 0 } - val paginatedMessagesFlow = networkStateObserver.observeNetworkState().flatMapLatest { networkState -> - getMessageForConversation(conversationId, lastReadIndex).map { pagingData -> - pagingData.withOfflineIndicator( - conversationId = conversationId, - isOffline = networkState !is NetworkState.ConnectedWithInternet, - ) - }.flowOn(dispatchers.io()) - }.cachedIn(viewModelScope) + val paginatedMessagesFlow = if (BuildConfig.PENDING_MESSAGES) { + networkStateObserver.observeNetworkState().flatMapLatest { networkState -> + getMessageForConversation(conversationId, lastReadIndex).map { pagingData -> + pagingData.withOfflineIndicator( + conversationId = conversationId, + isOffline = networkState !is NetworkState.ConnectedWithInternet, + ) + }.flowOn(dispatchers.io()) + }.cachedIn(viewModelScope) + } else { + getMessageForConversation(conversationId, lastReadIndex) + .flowOn(dispatchers.io()) + .cachedIn(viewModelScope) + } conversationViewState = conversationViewState.copy( messages = paginatedMessagesFlow, diff --git a/buildSrc/src/main/kotlin/customization/FeatureConfigs.kt b/buildSrc/src/main/kotlin/customization/FeatureConfigs.kt index ce3c7a501f1..20eabd0996a 100644 --- a/buildSrc/src/main/kotlin/customization/FeatureConfigs.kt +++ b/buildSrc/src/main/kotlin/customization/FeatureConfigs.kt @@ -155,5 +155,7 @@ enum class FeatureConfigs(val value: String, val configType: ConfigType) { CALL_QUALITY_MENU_ENABLED("call_quality_menu_enabled", ConfigType.BOOLEAN), - CALL_REACTIONS_ENABLED("call_reactions_enabled", ConfigType.BOOLEAN) + CALL_REACTIONS_ENABLED("call_reactions_enabled", ConfigType.BOOLEAN), + + PENDING_MESSAGES("pending_messages", ConfigType.BOOLEAN) } diff --git a/default.json b/default.json index 1588be90a2c..d8e7a28be7c 100644 --- a/default.json +++ b/default.json @@ -38,7 +38,8 @@ "meetings_enabled": true, "conversation_feeder_enabled": true, "db_invalidation_control_enabled": true, - "enforce_configuration_signature": false + "enforce_configuration_signature": false, + "pending_messages": true }, "staging": { "application_id": "com.waz.zclient.dev", @@ -61,7 +62,8 @@ "analytics_app_key": "8ffae535f1836ed5f58fd5c8a11c00eca07c5438", "analytics_server_url": "https://wire.count.ly/", "enable_new_registration": true, - "enforce_configuration_signature": true + "enforce_configuration_signature": true, + "pending_messages": true }, "beta": { "application_id": "com.wire.android.internal", @@ -88,7 +90,8 @@ "enforce_configuration_signature": true, "use_strict_mls_filter": false, "conversation_feeder_enabled": true, - "db_invalidation_control_enabled": false + "db_invalidation_control_enabled": false, + "pending_messages": true }, "fdroid": { "application_id": "com.wire", @@ -174,5 +177,6 @@ "enforce_configuration_signature": true, "call_quality_menu_enabled": true, "call_reactions_enabled": true, - "nomad_profiles_enabled": true + "nomad_profiles_enabled": true, + "pending_messages": false }