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
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,8 @@ fun ConversationSettingsNavHost(
is NavigationAction.ReturnResult -> {
returnResult(action.code, action.value)
}

else -> {}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ fun DebugMenuNavHost(
navController.context.startActivity(action.intent)
}

is NavigationAction.ReturnResult -> {}
else -> {}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,133 +111,131 @@ fun StartConversationNavHost(
accountId: String,
onClose: () -> Unit
){
SharedTransitionLayout {
val navController = rememberNavController()
val navigator: UINavigator<StartConversationDestination> =
remember { UINavigator() }

ObserveAsEvents(flow = navigator.navigationActions) { action ->
when (action) {
is NavigationAction.Navigate -> navController.navigate(
action.destination
) {
action.navOptions(this)
}

NavigationAction.NavigateUp -> navController.navigateUp()
val navController = rememberNavController()
val navigator: UINavigator<StartConversationDestination> =
remember { UINavigator() }

ObserveAsEvents(flow = navigator.navigationActions) { action ->
when (action) {
is NavigationAction.Navigate -> navController.navigate(
action.destination
) {
action.navOptions(this)
}

is NavigationAction.NavigateToIntent -> {
navController.context.startActivity(action.intent)
}
NavigationAction.NavigateUp -> navController.navigateUp()

is NavigationAction.ReturnResult -> {}
is NavigationAction.NavigateToIntent -> {
navController.context.startActivity(action.intent)
}

else -> {}
}
}

val scope = rememberCoroutineScope()
val activity = LocalActivity.current
val context = LocalContext.current
val scope = rememberCoroutineScope()
val activity = LocalActivity.current
val context = LocalContext.current

NavHost(navController = navController, startDestination = StartConversationDestination.Home) {
// Home
horizontalSlideComposable<StartConversationDestination.Home> {
StartConversationScreen (
accountId = accountId,
onClose = onClose,
navigateTo = {
scope.launch { navigator.navigate(it) }
}
)
}

NavHost(navController = navController, startDestination = StartConversationDestination.Home) {
// Home
horizontalSlideComposable<StartConversationDestination.Home> {
StartConversationScreen (
accountId = accountId,
onClose = onClose,
navigateTo = {
scope.launch { navigator.navigate(it) }
}
)
}
// New Message
horizontalSlideComposable<StartConversationDestination.NewMessage> {
val viewModel = hiltViewModel<NewMessageViewModel>()
val uiState by viewModel.state.collectAsState(State())

val helpUrl = "https://getsession.org/account-ids"

// New Message
horizontalSlideComposable<StartConversationDestination.NewMessage> {
val viewModel = hiltViewModel<NewMessageViewModel>()
val uiState by viewModel.state.collectAsState(State())

val helpUrl = "https://getsession.org/account-ids"

LaunchedEffect(Unit) {
scope.launch {
viewModel.success.collect {
context.startActivity(
ConversationActivityV2.createIntent(
context,
address = it.address
)
LaunchedEffect(Unit) {
scope.launch {
viewModel.success.collect {
context.startActivity(
ConversationActivityV2.createIntent(
context,
address = it.address
)
)

onClose()
}
onClose()
}
}

NewMessage(
uiState,
viewModel.qrErrors,
viewModel,
onBack = { scope.launch { navigator.navigateUp() } },
onClose = onClose,
onHelp = { viewModel.onCommand(NewMessageViewModel.Commands.ShowUrlDialog) }
)
if (uiState.showUrlDialog) {
OpenURLAlertDialog(
url = helpUrl,
onDismissRequest = { viewModel.onCommand(NewMessageViewModel.Commands.DismissUrlDialog) }
)
}
}

// Create Group
horizontalSlideComposable<StartConversationDestination.CreateGroup> {
CreateGroupScreen(
onNavigateToConversationScreen = { address ->
activity?.startActivity(
ConversationActivityV2.createIntent(activity, address)
)
},
onBack = { scope.launch { navigator.navigateUp() }},
onClose = onClose,
fromLegacyGroupId = null,
NewMessage(
uiState,
viewModel.qrErrors,
viewModel,
onBack = { scope.launch { navigator.navigateUp() } },
onClose = onClose,
onHelp = { viewModel.onCommand(NewMessageViewModel.Commands.ShowUrlDialog) }
)
if (uiState.showUrlDialog) {
OpenURLAlertDialog(
url = helpUrl,
onDismissRequest = { viewModel.onCommand(NewMessageViewModel.Commands.DismissUrlDialog) }
)
}
}

// Create Group
horizontalSlideComposable<StartConversationDestination.CreateGroup> {
CreateGroupScreen(
onNavigateToConversationScreen = { address ->
activity?.startActivity(
ConversationActivityV2.createIntent(activity, address)
)
},
onBack = { scope.launch { navigator.navigateUp() }},
onClose = onClose,
fromLegacyGroupId = null,
)
}

// Join Community
horizontalSlideComposable<StartConversationDestination.JoinCommunity> {
val viewModel = hiltViewModel<JoinCommunityViewModel>()
val state by viewModel.state.collectAsState()

LaunchedEffect(Unit){
scope.launch {
viewModel.uiEvents.collect {
when(it){
is JoinCommunityViewModel.UiEvent.NavigateToConversation -> {
onClose()
activity?.startActivity(ConversationActivityV2.createIntent(activity, it.address))
}
// Join Community
horizontalSlideComposable<StartConversationDestination.JoinCommunity> {
val viewModel = hiltViewModel<JoinCommunityViewModel>()
val state by viewModel.state.collectAsState()

LaunchedEffect(Unit){
scope.launch {
viewModel.uiEvents.collect {
when(it){
is JoinCommunityViewModel.UiEvent.NavigateToConversation -> {
onClose()
activity?.startActivity(ConversationActivityV2.createIntent(activity, it.address))
}
}
}
}

JoinCommunityScreen(
state = state,
sendCommand = { viewModel.onCommand(it) },
onBack = { scope.launch { navigator.navigateUp() }},
onClose = onClose
)
}

// Invite Friend
horizontalSlideComposable<StartConversationDestination.InviteFriend> {
InviteFriend(
accountId = accountId,
onBack = { scope.launch { navigator.navigateUp() }},
onClose = onClose
)
}
JoinCommunityScreen(
state = state,
sendCommand = { viewModel.onCommand(it) },
onBack = { scope.launch { navigator.navigateUp() }},
onClose = onClose
)
}

// Invite Friend
horizontalSlideComposable<StartConversationDestination.InviteFriend> {
InviteFriend(
accountId = accountId,
onBack = { scope.launch { navigator.navigateUp() }},
onClose = onClose
)
}

}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,13 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.WindowInsetsSides
import androidx.compose.foundation.layout.asPaddingValues
import androidx.compose.foundation.layout.consumeWindowInsets
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.only
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.safeDrawing
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.systemBars
import androidx.compose.foundation.layout.widthIn
Expand Down Expand Up @@ -107,15 +109,16 @@ fun BaseProSettingsScreen(
onBack = onBack,
)
}} else {{}},
contentWindowInsets = WindowInsets.systemBars.only(WindowInsetsSides.Horizontal),
contentWindowInsets = WindowInsets.systemBars,
) { paddings ->
LazyColumn(
modifier = Modifier
.fillMaxWidth()
.consumeWindowInsets(paddings)
.padding(horizontal = LocalDimensions.current.spacing),
.consumeWindowInsets(paddings),
state = lazyListState,
contentPadding = PaddingValues(
start = LocalDimensions.current.spacing,
end = LocalDimensions.current.spacing,
top = (paddings.calculateTopPadding() - LocalDimensions.current.appBarHeight)
.coerceAtLeast(0.dp) + 46.dp,
bottom = paddings.calculateBottomPadding() + LocalDimensions.current.spacing
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.thoughtcrime.securesms.preferences.prosettings

import androidx.activity.compose.BackHandler
import androidx.compose.animation.ExperimentalSharedTransitionApi
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
Expand Down Expand Up @@ -37,7 +38,6 @@ import org.session.libsession.utilities.StringSubstitutionConstants.DATE_KEY
import org.session.libsession.utilities.StringSubstitutionConstants.NETWORK_NAME_KEY
import org.session.libsession.utilities.StringSubstitutionConstants.PRO_KEY
import org.session.libsession.utilities.recipients.ProStatus
import org.thoughtcrime.securesms.preferences.prosettings.ProSettingsViewModel.Commands.GoToProSettings
import org.thoughtcrime.securesms.pro.SubscriptionDetails
import org.thoughtcrime.securesms.pro.SubscriptionState
import org.thoughtcrime.securesms.pro.SubscriptionType
Expand Down Expand Up @@ -79,6 +79,10 @@ fun PlanConfirmation(
sendCommand: (ProSettingsViewModel.Commands) -> Unit,
onBack: () -> Unit,
) {
BackHandler {
sendCommand(ProSettingsViewModel.Commands.OnPostPlanConfirmation)
}

Scaffold(
topBar = {},
contentWindowInsets = WindowInsets.systemBars.only(WindowInsetsSides.Horizontal),
Expand Down Expand Up @@ -163,7 +167,7 @@ fun PlanConfirmation(
.widthIn(max = LocalDimensions.current.maxContentWidth),
text = buttonLabel,
onClick = {
sendCommand(GoToProSettings)
sendCommand(ProSettingsViewModel.Commands.OnPostPlanConfirmation)
}
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -790,6 +790,22 @@ fun ProManage(
}
)
}

val recoverButton: @Composable ()->Unit = {
IconActionRowItem(
title = annotatedStringResource(
Phrase.from(LocalContext.current, R.string.proAccessRecover)
.put(PRO_KEY, NonTranslatableStringConstants.PRO)
.format().toString()
),
icon = R.drawable.ic_refresh_cw,
qaTag = R.string.qa_pro_settings_action_request_refund,
onClick = {
//todo PRO implement
}
)
}

when(data){
is SubscriptionType.Active.AutoRenewing -> {
IconActionRowItem(
Expand All @@ -814,6 +830,10 @@ fun ProManage(
refundButton()
}

is SubscriptionType.NeverSubscribed -> {
recoverButton()
}

is SubscriptionType.Expired -> {
// the details depend on the loading/error state
fun renewIcon(color: Color): @Composable BoxScope.() -> Unit = {
Expand Down Expand Up @@ -871,18 +891,7 @@ fun ProManage(
)

Divider()
IconActionRowItem(
title = annotatedStringResource(
Phrase.from(LocalContext.current, R.string.proAccessRecover)
.put(PRO_KEY, NonTranslatableStringConstants.PRO)
.format().toString()
),
icon = R.drawable.ic_refresh_cw,
qaTag = R.string.qa_pro_settings_action_request_refund,
onClick = {
//todo PRO implement
}
)
recoverButton()
}

is SubscriptionType.NeverSubscribed -> {}
Expand All @@ -899,15 +908,13 @@ fun ProSettingsFooter(
sendCommand: (ProSettingsViewModel.Commands) -> Unit,
) {
// Manage Pro - Pro
if(subscriptionType is SubscriptionType.Active){
Spacer(Modifier.height(LocalDimensions.current.smallSpacing))
ProManage(
data = subscriptionType,
inSheet = inSheet,
subscriptionRefreshState = subscriptionRefreshState,
sendCommand = sendCommand,
)
}
Spacer(Modifier.height(LocalDimensions.current.smallSpacing))
ProManage(
data = subscriptionType,
inSheet = inSheet,
subscriptionRefreshState = subscriptionRefreshState,
sendCommand = sendCommand,
)

// Help
Spacer(Modifier.height(LocalDimensions.current.spacing))
Expand Down
Loading