diff --git a/app/src/main/kotlin/com/wire/android/ui/home/conversations/details/editselfdeletingmessages/EditSelfDeletingMessagesViewModel.kt b/app/src/main/kotlin/com/wire/android/ui/home/conversations/details/editselfdeletingmessages/EditSelfDeletingMessagesViewModel.kt index a7cab16239f..a5e6defb1f7 100644 --- a/app/src/main/kotlin/com/wire/android/ui/home/conversations/details/editselfdeletingmessages/EditSelfDeletingMessagesViewModel.kt +++ b/app/src/main/kotlin/com/wire/android/ui/home/conversations/details/editselfdeletingmessages/EditSelfDeletingMessagesViewModel.kt @@ -84,8 +84,8 @@ class EditSelfDeletingMessagesViewModel @Inject constructor( state = state.copy( isLoading = selfDeletingMessages.isEnforcedByTeam || !isSelfAnAdmin, isEnabled = selfDeletingMessages.isEnforcedByGroup, - remotelySelected = selfDeletingMessages.toDuration().toSelfDeletionDuration(), - locallySelected = selfDeletingMessages.toDuration().toSelfDeletionDuration() + remotelySelected = selfDeletingMessages.duration?.toSelfDeletionDuration(), + locallySelected = selfDeletingMessages.duration?.toSelfDeletionDuration() ) } } diff --git a/app/src/main/kotlin/com/wire/android/ui/home/conversations/details/options/GroupConversationOptions.kt b/app/src/main/kotlin/com/wire/android/ui/home/conversations/details/options/GroupConversationOptions.kt index f85fc3b78a1..04b2b48a27b 100644 --- a/app/src/main/kotlin/com/wire/android/ui/home/conversations/details/options/GroupConversationOptions.kt +++ b/app/src/main/kotlin/com/wire/android/ui/home/conversations/details/options/GroupConversationOptions.kt @@ -127,7 +127,7 @@ fun GroupConversationSettings( title = stringResource(id = R.string.conversation_options_self_deleting_messages_label), subtitle = stringResource(id = R.string.conversation_options_self_deleting_messages_description), trailingOnText = if (state.selfDeletionTimer.isEnforced) { - "(${state.selfDeletionTimer.toDuration().toSelfDeletionDuration().shortLabel.asString()})" + "(${state.selfDeletionTimer.duration.toSelfDeletionDuration().shortLabel.asString()})" } else { null }, diff --git a/app/src/main/kotlin/com/wire/android/ui/home/conversations/selfdeletion/SelfDeletionMapper.kt b/app/src/main/kotlin/com/wire/android/ui/home/conversations/selfdeletion/SelfDeletionMapper.kt index e2c01197653..7e8f69ef030 100644 --- a/app/src/main/kotlin/com/wire/android/ui/home/conversations/selfdeletion/SelfDeletionMapper.kt +++ b/app/src/main/kotlin/com/wire/android/ui/home/conversations/selfdeletion/SelfDeletionMapper.kt @@ -21,7 +21,7 @@ import com.wire.android.ui.home.messagecomposer.state.SelfDeletionDuration import kotlin.time.Duration object SelfDeletionMapper { - fun Duration.toSelfDeletionDuration(): SelfDeletionDuration = when (this) { + fun Duration?.toSelfDeletionDuration(): SelfDeletionDuration = when (this) { SelfDeletionDuration.TenSeconds.value -> SelfDeletionDuration.TenSeconds SelfDeletionDuration.OneMinute.value -> SelfDeletionDuration.OneMinute SelfDeletionDuration.FiveMinutes.value -> SelfDeletionDuration.FiveMinutes diff --git a/app/src/main/kotlin/com/wire/android/ui/home/messagecomposer/state/MessageComposeInputState.kt b/app/src/main/kotlin/com/wire/android/ui/home/messagecomposer/state/MessageComposeInputState.kt index 18df9cc0d42..f29f8ef6681 100644 --- a/app/src/main/kotlin/com/wire/android/ui/home/messagecomposer/state/MessageComposeInputState.kt +++ b/app/src/main/kotlin/com/wire/android/ui/home/messagecomposer/state/MessageComposeInputState.kt @@ -55,12 +55,12 @@ sealed class MessageComposeInputState { inputFocused: Boolean = this.inputFocused, selfDeletionTimer: SelfDeletionTimer ): MessageComposeInputState { - val isSelfDeletingType = selfDeletionTimer !is SelfDeletionTimer.Disabled && selfDeletionTimer.toDuration() > ZERO + val isSelfDeletingType = selfDeletionTimer !is SelfDeletionTimer.Disabled && selfDeletionTimer.duration != null return when { isSelfDeletingType -> { val selfDeletingType = MessageComposeInputType.SelfDeletingMessage( - selfDeletionDuration = selfDeletionTimer.toDuration().toSelfDeletionDuration(), + selfDeletionDuration = selfDeletionTimer.duration.toSelfDeletionDuration(), isEnforced = selfDeletionTimer.isEnforced, attachmentOptionsDisplayed = attachmentOptionsDisplayed ) diff --git a/app/src/main/kotlin/com/wire/android/ui/home/messagecomposer/state/MessageComposerState.kt b/app/src/main/kotlin/com/wire/android/ui/home/messagecomposer/state/MessageComposerState.kt index 57bce4bab9d..bcf7eec1551 100644 --- a/app/src/main/kotlin/com/wire/android/ui/home/messagecomposer/state/MessageComposerState.kt +++ b/app/src/main/kotlin/com/wire/android/ui/home/messagecomposer/state/MessageComposerState.kt @@ -349,7 +349,7 @@ data class MessageComposerState( fun updateSelfDeletionTime(newSelfDeletionTimer: SelfDeletionTimer) = with(newSelfDeletionTimer) { currentSelfDeletionTimer = newSelfDeletionTimer - val newSelfDeletionDuration = newSelfDeletionTimer.toDuration().toSelfDeletionDuration() + val newSelfDeletionDuration = newSelfDeletionTimer.duration.toSelfDeletionDuration() messageComposeInputState = MessageComposeInputState.Active( messageText = messageComposeInputState.messageText, inputFocused = true, @@ -358,7 +358,7 @@ data class MessageComposerState( ) } - fun getSelfDeletionTime(): SelfDeletionDuration = currentSelfDeletionTimer.toDuration().toSelfDeletionDuration() + fun getSelfDeletionTime(): SelfDeletionDuration = currentSelfDeletionTimer.duration.toSelfDeletionDuration() fun shouldShowSelfDeletionOption(): Boolean = with(currentSelfDeletionTimer) { // We shouldn't show the self-deleting option if there is a compulsory duration already set on the team settings level diff --git a/app/src/main/kotlin/com/wire/android/ui/home/newconversation/common/SelectParticipantsButtonsRow.kt b/app/src/main/kotlin/com/wire/android/ui/home/newconversation/common/SelectParticipantsButtonsRow.kt index 3781cc32c79..8d2e94aa26d 100644 --- a/app/src/main/kotlin/com/wire/android/ui/home/newconversation/common/SelectParticipantsButtonsRow.kt +++ b/app/src/main/kotlin/com/wire/android/ui/home/newconversation/common/SelectParticipantsButtonsRow.kt @@ -169,7 +169,7 @@ fun SelfDeletionTimerButton( isDisabled: Boolean, onSelfDeletionTimerClicked: () -> Unit ) { - val isSelected = selfDeletionTimer is SelfDeletionTimer.Enabled && selfDeletionTimer.userDuration != ZERO + val isSelected = selfDeletionTimer is SelfDeletionTimer.Enabled && selfDeletionTimer.duration != null Box( modifier = modifier .padding(start = dimensions().spacing16x) diff --git a/app/src/main/kotlin/com/wire/android/ui/sharing/ImportMediaScreen.kt b/app/src/main/kotlin/com/wire/android/ui/sharing/ImportMediaScreen.kt index b542ef7782b..6ddce85582c 100644 --- a/app/src/main/kotlin/com/wire/android/ui/sharing/ImportMediaScreen.kt +++ b/app/src/main/kotlin/com/wire/android/ui/sharing/ImportMediaScreen.kt @@ -62,9 +62,9 @@ import com.wire.android.util.CustomTabsHelper import com.wire.android.util.extension.getActivity import com.wire.android.util.ui.LinkText import com.wire.android.util.ui.LinkTextData +import com.wire.kalium.logic.util.isPositiveNotNull import kotlinx.collections.immutable.persistentMapOf import kotlinx.coroutines.flow.SharedFlow -import kotlin.time.Duration @Composable fun ImportMediaScreen( @@ -169,7 +169,7 @@ fun ImportMediaRegularContent(authorizedViewModel: ImportMediaAuthenticatedViewM ) MenuModalSheetLayout( menuItems = SelfDeletionMenuItems( - currentlySelected = authorizedViewModel.importMediaState.selfDeletingTimer.toDuration().toSelfDeletionDuration(), + currentlySelected = authorizedViewModel.importMediaState.selfDeletingTimer.duration.toSelfDeletionDuration(), hideEditMessageMenu = importMediaScreenState::hideBottomSheetMenu, onSelfDeletionDurationChanged = authorizedViewModel::onNewSelfDeletionTimerPicked, ), @@ -261,8 +261,8 @@ private fun ImportMediaBottomBar( importMediaScreenState: ImportMediaScreenState ) { val selfDeletionTimer = importMediaViewModel.importMediaState.selfDeletingTimer - val shortDurationLabel = selfDeletionTimer.toDuration().toSelfDeletionDuration().shortLabel - val mainButtonText = if (selfDeletionTimer.toDuration() > Duration.ZERO) { + val shortDurationLabel = selfDeletionTimer.duration.toSelfDeletionDuration().shortLabel + val mainButtonText = if (selfDeletionTimer.duration.isPositiveNotNull()) { "${stringResource(id = R.string.self_deleting_message_label)} (${shortDurationLabel.asString()})" } else { stringResource(id = R.string.import_media_send_button_title) diff --git a/app/src/test/kotlin/com/wire/android/ui/home/conversations/MessageComposerViewModelTest.kt b/app/src/test/kotlin/com/wire/android/ui/home/conversations/MessageComposerViewModelTest.kt index 086ed7f6f0d..3e96993fc51 100644 --- a/app/src/test/kotlin/com/wire/android/ui/home/conversations/MessageComposerViewModelTest.kt +++ b/app/src/test/kotlin/com/wire/android/ui/home/conversations/MessageComposerViewModelTest.kt @@ -26,8 +26,8 @@ import com.wire.android.config.CoroutineTestExtension import com.wire.android.ui.home.conversations.delete.DeleteMessageDialogActiveState import com.wire.android.ui.home.conversations.delete.DeleteMessageDialogsState import com.wire.android.ui.home.conversations.model.AssetBundle -import com.wire.kalium.logic.data.asset.AttachmentType import com.wire.android.ui.home.conversations.model.UriAsset +import com.wire.kalium.logic.data.asset.AttachmentType import com.wire.kalium.logic.feature.asset.GetAssetSizeLimitUseCaseImpl.Companion.ASSET_SIZE_DEFAULT_LIMIT_BYTES import com.wire.kalium.logic.feature.selfDeletingMessages.SelfDeletionTimer import io.mockk.coVerify @@ -359,7 +359,7 @@ class MessageComposerViewModelTest { // Then coVerify(exactly = 1) { arrangement.persistSelfDeletionStatus.invoke(arrangement.conversationId, expectedTimer) } assert(viewModel.messageComposerViewState.selfDeletionTimer is SelfDeletionTimer.Enabled) - assert(viewModel.messageComposerViewState.selfDeletionTimer.toDuration() == expectedDuration) + assert(viewModel.messageComposerViewState.selfDeletionTimer.duration == expectedDuration) } @Test @@ -377,6 +377,6 @@ class MessageComposerViewModelTest { // Then coVerify(exactly = 1) { arrangement.observeConversationSelfDeletionStatus.invoke(arrangement.conversationId, true) } assert(viewModel.messageComposerViewState.selfDeletionTimer is SelfDeletionTimer.Enabled) - assert(viewModel.messageComposerViewState.selfDeletionTimer.toDuration() == expectedDuration) + assert(viewModel.messageComposerViewState.selfDeletionTimer.duration == expectedDuration) } }