Skip to content

Commit

Permalink
Merge branch 'release/cycle-4.6' of https://github.com/wireapp/wire-a…
Browse files Browse the repository at this point in the history
…ndroid-reloaded into fix/unify-mls-client-identity-models
  • Loading branch information
mchenani committed Jul 16, 2024
2 parents f01ef17 + 0572370 commit d69cb6b
Show file tree
Hide file tree
Showing 69 changed files with 244 additions and 141 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/*
* Wire
* Copyright (C) 2024 Wire Swiss GmbH
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*/
package com.wire.android.navigation

import androidx.compose.animation.EnterExitState
import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.pointer.pointerInput
import com.ramcosta.composedestinations.scope.AnimatedDestinationScope
import com.ramcosta.composedestinations.scope.DestinationScope
import com.ramcosta.composedestinations.wrapper.DestinationWrapper

@OptIn(ExperimentalAnimationApi::class)
object WaitUntilTransitionEndsWrapper : DestinationWrapper {

@Composable
override fun <T> DestinationScope<T>.Wrap(screenContent: @Composable () -> Unit) {
(this as? AnimatedDestinationScope<T>)?.let {
var transitionComplete by remember { mutableStateOf(false) }
LaunchedEffect(transition.isRunning, transition.currentState, transition.targetState) {
with(transition) {
transitionComplete = !isRunning && currentState == targetState && currentState == EnterExitState.Visible
}
}
screenContent()
if (!transitionComplete) {
Box(modifier = Modifier
.fillMaxSize()
.pointerInput(Unit) {
// empty, do nothing to prevent clicks
}
)
}
}
}
}
34 changes: 34 additions & 0 deletions app/src/main/kotlin/com/wire/android/navigation/WireDestination.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* Wire
* Copyright (C) 2024 Wire Swiss GmbH
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*/
package com.wire.android.navigation

import com.ramcosta.composedestinations.annotation.DeepLink
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.Destination.Companion.COMPOSABLE_NAME
import com.ramcosta.composedestinations.spec.DestinationStyle
import com.ramcosta.composedestinations.wrapper.DestinationWrapper
import kotlin.reflect.KClass

@Destination
annotation class WireDestination(
val route: String = COMPOSABLE_NAME,
val navArgsDelegate: KClass<*> = Nothing::class,
val deepLinks: Array<DeepLink> = [],
val style: KClass<out DestinationStyle> = DestinationStyle.Default::class,
val wrappers: Array<KClass<out DestinationWrapper>> = [WaitUntilTransitionEndsWrapper::class],
)
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ class MessageNotificationManager
* @return [Notification] for the conversation with all the messages in it (including previous messages as well)
* OR null if there is no new messages in conversation and no need to update the existed notification.
*/
@Suppress("LongMethod", "ComplexMethod", "NestedBlockDepth")
private fun getConversationNotification(
conversation: NotificationConversation,
userId: QualifiedID,
Expand Down Expand Up @@ -201,9 +202,11 @@ class MessageNotificationManager
}

is NotificationMessage.Comment -> {
val isAppLocked = lockCodeTimeManager.isAppLocked()
if (conversation.isReplyAllowed) {
val isAppLocked = lockCodeTimeManager.isAppLocked()
addAction(getActionReply(context, conversation.id, userIdString, isAppLocked))
}
setContentIntent(messagePendingIntent(context, conversation.id, userIdString))
addAction(getActionReply(context, conversation.id, userIdString, isAppLocked))
}

is NotificationMessage.Knock -> {
Expand All @@ -212,15 +215,19 @@ class MessageNotificationManager
}

is NotificationMessage.Text -> {
val isAppLocked = lockCodeTimeManager.isAppLocked()
if (conversation.isReplyAllowed) {
val isAppLocked = lockCodeTimeManager.isAppLocked()
addAction(getActionReply(context, conversation.id, userIdString, isAppLocked))
}
setContentIntent(messagePendingIntent(context, conversation.id, userIdString))
addAction(getActionReply(context, conversation.id, userIdString, isAppLocked))
}

is NotificationMessage.ObfuscatedMessage -> {
val isAppLocked = lockCodeTimeManager.isAppLocked()
if (conversation.isReplyAllowed) {
val isAppLocked = lockCodeTimeManager.isAppLocked()
addAction(getActionReply(context, conversation.id, userIdString, isAppLocked))
}
setContentIntent(messagePendingIntent(context, conversation.id, userIdString))
addAction(getActionReply(context, conversation.id, userIdString, isAppLocked))
}

is NotificationMessage.ObfuscatedKnock -> {
Expand All @@ -229,9 +236,11 @@ class MessageNotificationManager
}

null -> {
val isAppLocked = lockCodeTimeManager.isAppLocked()
if (conversation.isReplyAllowed) {
val isAppLocked = lockCodeTimeManager.isAppLocked()
addAction(getActionReply(context, conversation.id, userIdString, isAppLocked))
}
setContentIntent(messagePendingIntent(context, conversation.id, userIdString))
addAction(getActionReply(context, conversation.id, userIdString, isAppLocked))
}
}
}
Expand Down
6 changes: 4 additions & 2 deletions app/src/main/kotlin/com/wire/android/notification/Models.kt
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ data class NotificationConversation(
val image: ByteArray?,
val messages: List<NotificationMessage>,
val isOneToOneConversation: Boolean,
val lastMessageTime: Long
val lastMessageTime: Long,
val isReplyAllowed: Boolean
) {
override fun equals(other: Any?): Boolean {
if (this === other) return true
Expand Down Expand Up @@ -153,7 +154,8 @@ fun LocalNotification.Conversation.intoNotificationConversation(): NotificationC
image = null, // TODO
messages = notificationMessages,
isOneToOneConversation = isOneToOneConversation,
lastMessageTime = lastMessageTime
lastMessageTime = lastMessageTime,
isReplyAllowed = isReplyAllowed
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import com.ramcosta.composedestinations.annotation.Destination
import com.wire.android.R
import com.wire.android.navigation.BackStackMode
import com.wire.android.navigation.NavigationCommand
import com.wire.android.navigation.Navigator
import com.wire.android.navigation.WireDestination
import com.wire.android.ui.authentication.ServerTitle
import com.wire.android.ui.authentication.create.common.CreateAccountFlowType
import com.wire.android.ui.authentication.create.common.CreateAccountNavArgs
Expand All @@ -73,7 +73,7 @@ import com.wire.kalium.logic.configuration.server.ServerConfig

@CreatePersonalAccountNavGraph
@CreateTeamAccountNavGraph
@Destination(navArgsDelegate = CreateAccountNavArgs::class)
@WireDestination(navArgsDelegate = CreateAccountNavArgs::class)
@Composable
fun CreateAccountCodeScreen(
navigator: Navigator,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.MaterialTheme
import com.wire.android.ui.common.scaffold.WireScaffold
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
Expand All @@ -48,10 +47,10 @@ import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.tooling.preview.Preview
import androidx.hilt.navigation.compose.hiltViewModel
import com.ramcosta.composedestinations.annotation.Destination
import com.wire.android.R
import com.wire.android.navigation.NavigationCommand
import com.wire.android.navigation.Navigator
import com.wire.android.navigation.WireDestination
import com.wire.android.ui.authentication.ServerTitle
import com.wire.android.ui.authentication.create.common.CreateAccountFlowType
import com.wire.android.ui.authentication.create.common.CreateAccountNavArgs
Expand All @@ -75,7 +74,7 @@ import com.wire.kalium.logic.configuration.server.ServerConfig

@CreatePersonalAccountNavGraph
@CreateTeamAccountNavGraph
@Destination(navArgsDelegate = CreateAccountNavArgs::class)
@WireDestination(navArgsDelegate = CreateAccountNavArgs::class)
@Composable
fun CreateAccountDetailsScreen(
navigator: Navigator,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,11 @@ import androidx.compose.ui.text.withStyle
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import com.ramcosta.composedestinations.annotation.Destination
import com.wire.android.R
import com.wire.android.navigation.BackStackMode
import com.wire.android.navigation.NavigationCommand
import com.wire.android.navigation.Navigator
import com.wire.android.navigation.WireDestination
import com.wire.android.ui.authentication.ServerTitle
import com.wire.android.ui.authentication.create.common.CreateAccountFlowType
import com.wire.android.ui.authentication.create.common.CreateAccountNavArgs
Expand All @@ -87,7 +87,7 @@ import com.wire.kalium.logic.configuration.server.ServerConfig

@CreatePersonalAccountNavGraph
@CreateTeamAccountNavGraph
@Destination(navArgsDelegate = CreateAccountNavArgs::class)
@WireDestination(navArgsDelegate = CreateAccountNavArgs::class)
@Composable
fun CreateAccountEmailScreen(
createAccountEmailViewModel: CreateAccountEmailViewModel = hiltViewModel(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,10 @@ import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import com.ramcosta.composedestinations.annotation.Destination
import com.wire.android.R
import com.wire.android.navigation.NavigationCommand
import com.wire.android.navigation.Navigator
import com.wire.android.navigation.WireDestination
import com.wire.android.ui.authentication.ServerTitle
import com.wire.android.ui.authentication.create.common.CreateAccountFlowType
import com.wire.android.ui.authentication.create.common.CreateAccountNavArgs
Expand All @@ -59,7 +59,7 @@ import com.wire.android.util.CustomTabsHelper
import com.wire.kalium.logic.configuration.server.ServerConfig

@CreatePersonalAccountNavGraph(start = true)
@Destination
@WireDestination
@Composable
fun CreatePersonalAccountOverviewScreen(
viewModel: CreateAccountOverviewViewModel = hiltViewModel(),
Expand All @@ -86,7 +86,7 @@ fun CreatePersonalAccountOverviewScreen(
}

@CreateTeamAccountNavGraph(start = true)
@Destination
@WireDestination
@Composable
fun CreateTeamAccountOverviewScreen(
viewModel: CreateAccountOverviewViewModel = hiltViewModel(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import com.ramcosta.composedestinations.annotation.Destination
import com.wire.android.R
import com.wire.android.navigation.BackStackMode
import com.wire.android.navigation.NavigationCommand
import com.wire.android.navigation.Navigator
import com.wire.android.navigation.WireDestination
import com.wire.android.ui.authentication.create.common.CreateAccountFlowType
import com.wire.android.ui.authentication.create.common.CreatePersonalAccountNavGraph
import com.wire.android.ui.authentication.create.common.CreateTeamAccountNavGraph
Expand All @@ -52,7 +52,7 @@ import com.wire.android.ui.theme.wireTypography

@CreatePersonalAccountNavGraph
@CreateTeamAccountNavGraph
@Destination(navArgsDelegate = CreateAccountSummaryNavArgs::class)
@WireDestination(navArgsDelegate = CreateAccountSummaryNavArgs::class)
@Composable
fun CreateAccountSummaryScreen(
navigator: Navigator,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,12 @@ import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootNavGraph
import com.wire.android.R
import com.wire.android.navigation.BackStackMode
import com.wire.android.navigation.NavigationCommand
import com.wire.android.navigation.Navigator
import com.wire.android.navigation.WireDestination
import com.wire.android.ui.authentication.create.common.handle.UsernameTextField
import com.wire.android.ui.common.button.WireButtonState
import com.wire.android.ui.common.button.WirePrimaryButton
Expand All @@ -49,7 +49,7 @@ import com.wire.android.ui.theme.wireDimensions
import com.wire.android.ui.theme.wireTypography

@RootNavGraph
@Destination
@WireDestination
@Composable
fun CreateAccountUsernameScreen(
navigator: Navigator,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,13 @@ import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootNavGraph
import com.wire.android.R
import com.wire.android.feature.NavigationSwitchAccountActions
import com.wire.android.navigation.BackStackMode
import com.wire.android.navigation.NavigationCommand
import com.wire.android.navigation.Navigator
import com.wire.android.navigation.WireDestination
import com.wire.android.navigation.style.PopUpNavigationAnimation
import com.wire.android.ui.authentication.devices.common.ClearSessionState
import com.wire.android.ui.authentication.devices.common.ClearSessionViewModel
Expand All @@ -69,7 +69,7 @@ import com.wire.android.ui.theme.wireDimensions
import com.wire.android.ui.theme.wireTypography

@RootNavGraph
@Destination(
@WireDestination(
style = PopUpNavigationAnimation::class,
)
@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,13 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.tooling.preview.Preview
import androidx.hilt.navigation.compose.hiltViewModel
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootNavGraph
import com.wire.android.R
import com.wire.android.feature.NavigationSwitchAccountActions
import com.wire.android.navigation.BackStackMode
import com.wire.android.navigation.NavigationCommand
import com.wire.android.navigation.Navigator
import com.wire.android.navigation.WireDestination
import com.wire.android.navigation.style.PopUpNavigationAnimation
import com.wire.android.ui.authentication.devices.DeviceItem
import com.wire.android.ui.authentication.devices.common.ClearSessionState
Expand All @@ -64,7 +64,7 @@ import com.wire.android.ui.destinations.InitialSyncScreenDestination
import com.wire.android.util.dialogErrorStrings

@RootNavGraph
@Destination(
@WireDestination(
style = PopUpNavigationAnimation::class,
)
@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,12 @@ import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.window.DialogProperties
import androidx.hilt.navigation.compose.hiltViewModel
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootNavGraph
import com.wire.android.R
import com.wire.android.navigation.BackStackMode
import com.wire.android.navigation.NavigationCommand
import com.wire.android.navigation.Navigator
import com.wire.android.navigation.WireDestination
import com.wire.android.navigation.style.TransitionAnimationType
import com.wire.android.ui.authentication.ServerTitle
import com.wire.android.ui.authentication.login.email.LoginEmailScreen
Expand Down Expand Up @@ -87,7 +87,7 @@ import com.wire.android.util.dialogErrorStrings
import kotlinx.coroutines.launch

@RootNavGraph
@Destination(
@WireDestination(
navArgsDelegate = LoginNavArgs::class
)
@Composable
Expand Down
Loading

0 comments on commit d69cb6b

Please sign in to comment.