mirror of
https://github.com/anyproto/anytype-kotlin.git
synced 2025-06-08 05:47:05 +09:00
DROID-2686 App | Tech | Update Jetpack Compose (#1566)
This commit is contained in:
parent
9b68f87a8f
commit
e680126dd1
20 changed files with 138 additions and 144 deletions
|
@ -1,6 +1,5 @@
|
|||
package com.anytypeio.anytype.payments.screens
|
||||
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||
import androidx.compose.foundation.layout.Box
|
||||
|
@ -12,11 +11,10 @@ import androidx.compose.foundation.layout.height
|
|||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.wrapContentHeight
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.foundation.text.KeyboardActions
|
||||
import androidx.compose.foundation.text.BasicTextField
|
||||
import androidx.compose.foundation.text.KeyboardOptions
|
||||
import androidx.compose.foundation.text2.BasicTextField2
|
||||
import androidx.compose.foundation.text2.input.TextFieldLineLimits
|
||||
import androidx.compose.foundation.text2.input.TextFieldState
|
||||
import androidx.compose.foundation.text.input.TextFieldLineLimits
|
||||
import androidx.compose.foundation.text.input.TextFieldState
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
|
@ -43,7 +41,6 @@ import com.anytypeio.anytype.core_ui.views.Relations2
|
|||
import com.anytypeio.anytype.payments.R
|
||||
import com.anytypeio.anytype.payments.models.TierAnyName
|
||||
|
||||
@OptIn(ExperimentalFoundationApi::class)
|
||||
@Composable
|
||||
fun AnyNameView(
|
||||
anyNameState: TierAnyName,
|
||||
|
@ -111,7 +108,7 @@ fun AnyNameView(
|
|||
color = colorResource(id = R.color.text_tertiary)
|
||||
)
|
||||
} else {
|
||||
BasicTextField2(
|
||||
BasicTextField(
|
||||
modifier = Modifier
|
||||
.weight(1f)
|
||||
.wrapContentHeight()
|
||||
|
@ -126,7 +123,7 @@ fun AnyNameView(
|
|||
keyboardOptions = KeyboardOptions.Default.copy(
|
||||
imeAction = ImeAction.Done,
|
||||
),
|
||||
keyboardActions = KeyboardActions {
|
||||
onKeyboardAction = {
|
||||
keyboardController?.hide()
|
||||
focusManager.clearFocus()
|
||||
},
|
||||
|
|
|
@ -11,11 +11,10 @@ import androidx.compose.foundation.layout.height
|
|||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.wrapContentHeight
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.foundation.text.KeyboardActions
|
||||
import androidx.compose.foundation.text.BasicTextField
|
||||
import androidx.compose.foundation.text.KeyboardOptions
|
||||
import androidx.compose.foundation.text2.BasicTextField2
|
||||
import androidx.compose.foundation.text2.input.TextFieldLineLimits
|
||||
import androidx.compose.foundation.text2.input.TextFieldState
|
||||
import androidx.compose.foundation.text.input.TextFieldLineLimits
|
||||
import androidx.compose.foundation.text.input.TextFieldState
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
|
@ -91,7 +90,7 @@ fun MembershipEmailScreen(
|
|||
)
|
||||
Spacer(modifier = Modifier.height(26.dp))
|
||||
Box(modifier = Modifier) {
|
||||
BasicTextField2(
|
||||
BasicTextField(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.wrapContentHeight()
|
||||
|
@ -106,7 +105,7 @@ fun MembershipEmailScreen(
|
|||
keyboardOptions = KeyboardOptions.Default.copy(
|
||||
imeAction = ImeAction.Done,
|
||||
),
|
||||
keyboardActions = KeyboardActions {
|
||||
onKeyboardAction = {
|
||||
keyboardController?.hide()
|
||||
focusManager.clearFocus()
|
||||
},
|
||||
|
|
|
@ -15,7 +15,7 @@ import androidx.compose.foundation.layout.wrapContentSize
|
|||
import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.foundation.text.ClickableText
|
||||
import androidx.compose.foundation.text2.input.TextFieldState
|
||||
import androidx.compose.foundation.text.input.TextFieldState
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.Icon
|
||||
|
@ -36,7 +36,11 @@ import androidx.compose.ui.text.style.TextAlign
|
|||
import androidx.compose.ui.text.withStyle
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.anytypeio.anytype.core_models.membership.MembershipConstants.EXPLORER_ID
|
||||
import com.anytypeio.anytype.core_models.membership.MembershipConstants.PRIVACY_POLICY
|
||||
import com.anytypeio.anytype.core_models.membership.MembershipConstants.TERMS_OF_SERVICE
|
||||
import com.anytypeio.anytype.core_models.membership.MembershipPaymentMethod
|
||||
import com.anytypeio.anytype.core_models.membership.TierId
|
||||
import com.anytypeio.anytype.core_ui.views.BodyCallout
|
||||
import com.anytypeio.anytype.core_ui.views.ButtonPrimary
|
||||
import com.anytypeio.anytype.core_ui.views.ButtonSecondary
|
||||
|
@ -44,18 +48,14 @@ import com.anytypeio.anytype.core_ui.views.ButtonSize
|
|||
import com.anytypeio.anytype.core_ui.views.HeadlineTitle
|
||||
import com.anytypeio.anytype.core_ui.views.Relations2
|
||||
import com.anytypeio.anytype.payments.R
|
||||
import com.anytypeio.anytype.core_models.membership.MembershipConstants.EXPLORER_ID
|
||||
import com.anytypeio.anytype.core_models.membership.MembershipConstants.PRIVACY_POLICY
|
||||
import com.anytypeio.anytype.core_models.membership.MembershipConstants.TERMS_OF_SERVICE
|
||||
import com.anytypeio.anytype.payments.models.Tier
|
||||
import com.anytypeio.anytype.payments.models.TierAnyName
|
||||
import com.anytypeio.anytype.payments.models.TierButton
|
||||
import com.anytypeio.anytype.payments.models.TierConditionInfo
|
||||
import com.anytypeio.anytype.payments.models.TierEmail
|
||||
import com.anytypeio.anytype.payments.models.TierPeriod
|
||||
import com.anytypeio.anytype.payments.models.Tier
|
||||
import com.anytypeio.anytype.payments.viewmodel.MembershipTierState
|
||||
import com.anytypeio.anytype.payments.viewmodel.TierAction
|
||||
import com.anytypeio.anytype.core_models.membership.TierId
|
||||
import timber.log.Timber
|
||||
|
||||
|
||||
|
|
|
@ -30,19 +30,19 @@ import androidx.compose.ui.text.style.TextAlign
|
|||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.anytypeio.anytype.core_models.membership.MembershipPaymentMethod
|
||||
import com.anytypeio.anytype.core_models.membership.TierId
|
||||
import com.anytypeio.anytype.core_ui.views.BodyRegular
|
||||
import com.anytypeio.anytype.core_ui.views.ButtonSecondary
|
||||
import com.anytypeio.anytype.core_ui.views.ButtonSize
|
||||
import com.anytypeio.anytype.core_ui.views.HeadlineHeading
|
||||
import com.anytypeio.anytype.payments.R
|
||||
import com.anytypeio.anytype.payments.models.Tier
|
||||
import com.anytypeio.anytype.payments.models.TierAnyName
|
||||
import com.anytypeio.anytype.payments.models.TierButton
|
||||
import com.anytypeio.anytype.payments.models.TierConditionInfo
|
||||
import com.anytypeio.anytype.payments.models.TierEmail
|
||||
import com.anytypeio.anytype.payments.models.TierPeriod
|
||||
import com.anytypeio.anytype.payments.models.Tier
|
||||
import com.anytypeio.anytype.payments.viewmodel.WelcomeState
|
||||
import com.anytypeio.anytype.core_models.membership.TierId
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
|
@ -68,7 +68,9 @@ fun WelcomeScreen(state: WelcomeState, onDismiss: () -> Unit) {
|
|||
},
|
||||
shape = RoundedCornerShape(16.dp),
|
||||
dragHandle = null,
|
||||
windowInsets = WindowInsets(0, 0, 0, 0)
|
||||
contentWindowInsets = {
|
||||
WindowInsets(0, 0, 0, 0)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
package com.anytypeio.anytype.payments.viewmodel
|
||||
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
import androidx.compose.foundation.text2.input.TextFieldState
|
||||
import androidx.compose.foundation.text2.input.clearText
|
||||
import androidx.compose.foundation.text2.input.textAsFlow
|
||||
import androidx.compose.foundation.text.input.TextFieldState
|
||||
import androidx.compose.foundation.text.input.clearText
|
||||
import androidx.compose.runtime.snapshotFlow
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.android.billingclient.api.BillingFlowParams
|
||||
|
@ -11,8 +11,13 @@ import com.android.billingclient.api.ProductDetails
|
|||
import com.anytypeio.anytype.analytics.base.Analytics
|
||||
import com.anytypeio.anytype.analytics.base.EventsDictionary
|
||||
import com.anytypeio.anytype.core_models.membership.EmailVerificationStatus
|
||||
import com.anytypeio.anytype.core_models.membership.MembershipConstants.EXPLORER_ID
|
||||
import com.anytypeio.anytype.core_models.membership.MembershipConstants.MEMBERSHIP_NAME_MIN_LENGTH
|
||||
import com.anytypeio.anytype.core_models.membership.MembershipConstants.NONE_ID
|
||||
import com.anytypeio.anytype.core_models.membership.MembershipErrors
|
||||
import com.anytypeio.anytype.core_models.membership.MembershipPaymentMethod
|
||||
import com.anytypeio.anytype.core_models.membership.MembershipStatus
|
||||
import com.anytypeio.anytype.core_models.membership.TierId
|
||||
import com.anytypeio.anytype.domain.auth.interactor.GetAccount
|
||||
import com.anytypeio.anytype.domain.base.fold
|
||||
import com.anytypeio.anytype.domain.payments.GetMembershipEmailStatus
|
||||
|
@ -20,23 +25,18 @@ import com.anytypeio.anytype.domain.payments.GetMembershipPaymentUrl
|
|||
import com.anytypeio.anytype.domain.payments.IsMembershipNameValid
|
||||
import com.anytypeio.anytype.domain.payments.SetMembershipEmail
|
||||
import com.anytypeio.anytype.domain.payments.VerifyMembershipEmailCode
|
||||
import com.anytypeio.anytype.core_models.membership.MembershipConstants.EXPLORER_ID
|
||||
import com.anytypeio.anytype.core_models.membership.MembershipConstants.MEMBERSHIP_NAME_MIN_LENGTH
|
||||
import com.anytypeio.anytype.core_models.membership.MembershipConstants.NONE_ID
|
||||
import com.anytypeio.anytype.payments.mapping.toMainView
|
||||
import com.anytypeio.anytype.payments.models.MembershipPurchase
|
||||
import com.anytypeio.anytype.payments.models.Tier
|
||||
import com.anytypeio.anytype.payments.models.TierAnyName
|
||||
import com.anytypeio.anytype.payments.models.TierButton
|
||||
import com.anytypeio.anytype.payments.models.TierEmail
|
||||
import com.anytypeio.anytype.payments.models.Tier
|
||||
import com.anytypeio.anytype.payments.playbilling.BillingClientLifecycle
|
||||
import com.anytypeio.anytype.payments.playbilling.BillingClientState
|
||||
import com.anytypeio.anytype.payments.playbilling.BillingPurchaseState
|
||||
import com.anytypeio.anytype.presentation.extension.sendAnalyticsMembershipClickEvent
|
||||
import com.anytypeio.anytype.presentation.extension.sendAnalyticsMembershipPurchaseEvent
|
||||
import com.anytypeio.anytype.presentation.extension.sendAnalyticsMembershipScreenEvent
|
||||
import com.anytypeio.anytype.core_models.membership.MembershipStatus
|
||||
import com.anytypeio.anytype.core_models.membership.TierId
|
||||
import com.anytypeio.anytype.presentation.membership.provider.MembershipProvider
|
||||
import kotlinx.coroutines.FlowPreview
|
||||
import kotlinx.coroutines.Job
|
||||
|
@ -91,10 +91,8 @@ class MembershipViewModel(
|
|||
|
||||
val initBillingClient = MutableStateFlow(false)
|
||||
|
||||
@OptIn(ExperimentalFoundationApi::class)
|
||||
val anyNameState = TextFieldState(initialText = "")
|
||||
|
||||
@OptIn(ExperimentalFoundationApi::class)
|
||||
val anyEmailState = TextFieldState(initialText = "")
|
||||
|
||||
init {
|
||||
|
@ -133,13 +131,15 @@ class MembershipViewModel(
|
|||
viewState.value = newState
|
||||
}
|
||||
}
|
||||
|
||||
viewModelScope.launch {
|
||||
anyNameState.textAsFlow()
|
||||
snapshotFlow { anyNameState.text }
|
||||
.debounce(NAME_VALIDATION_DELAY)
|
||||
.collectLatest {
|
||||
proceedWithValidatingName(it.toString())
|
||||
}
|
||||
}
|
||||
|
||||
viewModelScope.launch {
|
||||
billingPurchases.collectLatest { billingPurchaseState ->
|
||||
checkPurchaseStatus(billingPurchaseState)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue