Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: send self deleting pings and clean up #1929

Merged
merged 6 commits into from
Jul 13, 2023
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
Original file line number Diff line number Diff line change
Expand Up @@ -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()
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down Expand Up @@ -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,
),
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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)
}
}
Loading