diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chatlist/ChatListView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chatlist/ChatListView.kt index 00a06caf1a..55203af0a3 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chatlist/ChatListView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chatlist/ChatListView.kt @@ -38,6 +38,7 @@ import chat.simplex.common.views.newchat.* import chat.simplex.common.views.onboarding.* import chat.simplex.common.views.showInvalidNameAlert import chat.simplex.common.views.usersettings.* +import chat.simplex.common.views.usersettings.networkAndServers.ConditionsLinkButton import chat.simplex.common.views.usersettings.networkAndServers.UsageConditionsView import chat.simplex.res.MR import kotlinx.coroutines.* @@ -125,7 +126,7 @@ fun ChatListView(chatModel: ChatModel, userPickerState: MutableStateFlow WhatsNewView(close = close, showWhatsNew = remember { mutableStateOf(true) }, updatedConditions = showUpdatedConditions) } } else if (showUpdatedConditions) { - ModalManager.center.showModalCloseable { close -> + ModalManager.center.showModalCloseable(endButtons = { ConditionsLinkButton() }) { close -> LaunchedEffect(Unit) { val conditionsId = chatModel.conditions.value.currentConditions.conditionsId try { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/ChooseServerOperators.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/ChooseServerOperators.kt index ffeb121d24..9a1f1d2f27 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/ChooseServerOperators.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/ChooseServerOperators.kt @@ -17,11 +17,11 @@ import chat.simplex.common.model.ServerOperator import chat.simplex.common.platform.* import chat.simplex.common.ui.theme.* import chat.simplex.common.views.helpers.* -import chat.simplex.common.views.usersettings.networkAndServers.ConditionsTextView -import chat.simplex.common.views.usersettings.networkAndServers.UsageConditionsView +import chat.simplex.common.views.usersettings.networkAndServers.* import chat.simplex.res.MR import dev.icerock.moko.resources.compose.painterResource import dev.icerock.moko.resources.compose.stringResource +import java.net.URI @Composable fun ModalData.ChooseServerOperators(onboarding: Boolean) { @@ -85,7 +85,7 @@ fun ModalData.ChooseServerOperators(onboarding: Boolean) { } if (onboarding && reviewForOperators.isEmpty()) { TextButtonBelowOnboardingButton(stringResource(MR.strings.operator_conditions_of_use)) { - ModalManager.fullscreen.showModalCloseable { close -> + ModalManager.fullscreen.showModalCloseable(endButtons = { ConditionsLinkButton() }) { close -> UsageConditionsView( currUserServers = remember { mutableStateOf(emptyList()) }, userServers = remember { mutableStateOf(emptyList()) }, @@ -174,7 +174,7 @@ private fun ReviewConditionsButton( onboarding = null, enabled = enabled, onclick = { - ModalManager.fullscreen.showModalCloseable { close -> + ModalManager.fullscreen.showModalCloseable(endButtons = { ConditionsLinkButton() }) { close -> ReviewConditionsView(onboarding, selectedOperators, selectedOperatorIds, close) } } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/NetworkAndServers.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/NetworkAndServers.kt index cf3288be44..a4a3762ef1 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/NetworkAndServers.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/NetworkAndServers.kt @@ -164,7 +164,7 @@ fun ModalData.NetworkAndServersView(close: () -> Unit) { @Composable fun ConditionsButton(conditionsAction: UsageConditionsAction, rhId: Long?) { SectionItemView( - click = { ModalManager.start.showModalCloseable { close -> UsageConditionsView(currUserServers, userServers, close, rhId) } }, + click = { ModalManager.start.showModalCloseable(endButtons = { ConditionsLinkButton() }) { close -> UsageConditionsView(currUserServers, userServers, close, rhId) } }, ) { Text( stringResource(if (conditionsAction is UsageConditionsAction.Review) MR.strings.operator_review_conditions else MR.strings.operator_conditions_accepted), diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/OperatorView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/OperatorView.kt index 56c4ddc91f..7265463ca7 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/OperatorView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/OperatorView.kt @@ -18,19 +18,22 @@ import androidx.compose.ui.graphics.* import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.text.* import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.dp import chat.simplex.common.model.* +import chat.simplex.common.model.ChatController.appPrefs import chat.simplex.common.model.ChatController.getUsageConditions import chat.simplex.common.platform.* import chat.simplex.common.ui.theme.* +import chat.simplex.common.views.chat.item.ItemAction import chat.simplex.common.views.helpers.* -import chat.simplex.common.views.onboarding.OnboardingActionButton -import chat.simplex.common.views.onboarding.ReadableText +import chat.simplex.common.views.onboarding.* import chat.simplex.res.MR import dev.icerock.moko.resources.compose.painterResource import dev.icerock.moko.resources.compose.stringResource import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch +import java.net.URI @Composable fun ModalData.OperatorView( @@ -452,7 +455,7 @@ private fun UseOperatorToggle( is ConditionsAcceptance.Required -> { if (conditionsAcceptance.deadline == null) { - ModalManager.start.showModalCloseable { close -> + ModalManager.start.showModalCloseable(endButtons = { ConditionsLinkButton() }) { close -> SingleOperatorUsageConditionsView( currUserServers = currUserServers, userServers = userServers, @@ -542,7 +545,7 @@ private fun SingleOperatorUsageConditionsView( stringResource(MR.strings.view_conditions), color = MaterialTheme.colors.primary, modifier = Modifier.padding(top = DEFAULT_PADDING_HALF).clickable { - ModalManager.start.showModalCloseable { close -> + ModalManager.start.showModalCloseable(endButtons = { ConditionsLinkButton() }) { close -> UsageConditionsDestinationView(close) } } @@ -664,6 +667,31 @@ private fun ConditionsAppliedToOtherOperatorsText(userServers: List>, operatorIndex: Int, enabled: Boolean) { userServers.value = userServers.value.toMutableList().apply { this[operatorIndex] = this[operatorIndex].copy( diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml index 64ae899f01..110470e9b8 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml @@ -1709,7 +1709,7 @@ Conditions will be accepted on: %s. Operator Use servers - Use servers of %s + Use %s Current conditions text couldn\'t be loaded, you can review conditions via this link: %s.]]> %s.]]> @@ -1731,6 +1731,8 @@ To send The servers for new files of your current chat profile Added media & file servers + Open conditions + Open changes Error updating server diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_outbound.svg b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_outbound.svg new file mode 100644 index 0000000000..762c5846c1 --- /dev/null +++ b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_outbound.svg @@ -0,0 +1 @@ + \ No newline at end of file