mirror of
https://github.com/bitfireAT/davx5-ose.git
synced 2025-12-23 23:17:50 -05:00
Added automatic parcelization
Signed-off-by: Arnau Mora Gras <arnyminerz@proton.me>
This commit is contained in:
@@ -8,6 +8,7 @@ plugins {
|
||||
alias(libs.plugins.compose.compiler)
|
||||
alias(libs.plugins.hilt)
|
||||
alias(libs.plugins.kotlin.android)
|
||||
alias(libs.plugins.kotlin.parcelize)
|
||||
alias(libs.plugins.ksp)
|
||||
}
|
||||
|
||||
|
||||
@@ -4,16 +4,20 @@
|
||||
|
||||
package at.bitfire.davdroid.db
|
||||
|
||||
import android.os.Parcelable
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import kotlinx.parcelize.RawValue
|
||||
import net.openid.appauth.AuthState
|
||||
|
||||
@Parcelize
|
||||
data class Credentials(
|
||||
val username: String? = null,
|
||||
val password: String? = null,
|
||||
|
||||
val certificateAlias: String? = null,
|
||||
|
||||
val authState: AuthState? = null
|
||||
) {
|
||||
val authState: @RawValue AuthState? = null
|
||||
): Parcelable {
|
||||
|
||||
override fun toString(): String {
|
||||
val s = mutableListOf<String>()
|
||||
|
||||
@@ -39,8 +39,10 @@ import at.bitfire.davdroid.ui.UiUtils.toAnnotatedString
|
||||
import at.bitfire.davdroid.ui.composable.Assistant
|
||||
import at.bitfire.davdroid.ui.composable.PasswordTextField
|
||||
import at.bitfire.davdroid.ui.composable.SelectClientCertificateCard
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
object AdvancedLogin : LoginType {
|
||||
@Parcelize
|
||||
data object AdvancedLogin : LoginType {
|
||||
|
||||
override val title: Int
|
||||
get() = R.string.login_type_advanced
|
||||
|
||||
@@ -36,8 +36,10 @@ import at.bitfire.davdroid.R
|
||||
import at.bitfire.davdroid.ui.UiUtils.toAnnotatedString
|
||||
import at.bitfire.davdroid.ui.composable.Assistant
|
||||
import at.bitfire.davdroid.ui.composable.PasswordTextField
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
object EmailLogin : LoginType {
|
||||
@Parcelize
|
||||
data object EmailLogin : LoginType {
|
||||
|
||||
override val title: Int
|
||||
get() = R.string.login_type_email
|
||||
|
||||
@@ -52,8 +52,11 @@ import at.bitfire.davdroid.ui.UiUtils.toAnnotatedString
|
||||
import at.bitfire.davdroid.ui.setup.GoogleLogin.GOOGLE_POLICY_URL
|
||||
import java.util.logging.Level
|
||||
import java.util.logging.Logger
|
||||
import kotlinx.parcelize.IgnoredOnParcel
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
object GoogleLogin : LoginType {
|
||||
@Parcelize
|
||||
data object GoogleLogin : LoginType {
|
||||
|
||||
override val title: Int
|
||||
get() = R.string.login_type_google
|
||||
@@ -67,10 +70,12 @@ object GoogleLogin : LoginType {
|
||||
|
||||
|
||||
// Google API Services User Data Policy
|
||||
@IgnoredOnParcel
|
||||
const val GOOGLE_POLICY_URL =
|
||||
"https://developers.google.com/terms/api-services-user-data-policy#additional_requirements_for_specific_api_scopes"
|
||||
|
||||
// Support site
|
||||
@IgnoredOnParcel
|
||||
val URI_TESTED_WITH_GOOGLE: Uri =
|
||||
Constants.HOMEPAGE_URL.buildUpon()
|
||||
.appendPath(Constants.HOMEPAGE_PATH_TESTED_SERVICES)
|
||||
|
||||
@@ -4,10 +4,13 @@
|
||||
|
||||
package at.bitfire.davdroid.ui.setup
|
||||
|
||||
import android.os.Parcelable
|
||||
import at.bitfire.davdroid.db.Credentials
|
||||
import at.bitfire.vcard4android.GroupMethod
|
||||
import java.net.URI
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
@Parcelize
|
||||
data class LoginInfo(
|
||||
val baseUri: URI? = null,
|
||||
val credentials: Credentials? = null,
|
||||
@@ -16,4 +19,4 @@ data class LoginInfo(
|
||||
|
||||
/** group method that should be pre-selected */
|
||||
val suggestedGroupMethod: GroupMethod = GroupMethod.GROUP_VCARDS
|
||||
)
|
||||
): Parcelable
|
||||
@@ -6,11 +6,13 @@ package at.bitfire.davdroid.ui.setup
|
||||
|
||||
import android.accounts.Account
|
||||
import android.content.Context
|
||||
import androidx.compose.runtime.getValue
|
||||
import android.os.Parcelable
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.lifecycle.SavedStateHandle
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import androidx.lifecycle.viewmodel.compose.SavedStateHandleSaveableApi
|
||||
import androidx.lifecycle.viewmodel.compose.saveable
|
||||
import at.bitfire.davdroid.repository.AccountRepository
|
||||
import at.bitfire.davdroid.servicedetection.DavResourceFinder
|
||||
import at.bitfire.davdroid.settings.AccountSettings
|
||||
@@ -21,6 +23,7 @@ import dagger.assisted.AssistedFactory
|
||||
import dagger.assisted.AssistedInject
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import java.util.logging.Logger
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
@@ -32,7 +35,7 @@ import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.runInterruptible
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.util.logging.Logger
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
@HiltViewModel(assistedFactory = LoginScreenModel.Factory::class)
|
||||
class LoginScreenModel @AssistedInject constructor(
|
||||
@@ -138,9 +141,10 @@ class LoginScreenModel @AssistedInject constructor(
|
||||
|
||||
// UI element state – first page: login type
|
||||
|
||||
@Parcelize
|
||||
data class LoginTypeUiState(
|
||||
val loginType: LoginType
|
||||
)
|
||||
): Parcelable
|
||||
|
||||
var loginTypeUiState by mutableStateOf(LoginTypeUiState(loginType = initialLoginType))
|
||||
private set
|
||||
@@ -156,10 +160,11 @@ class LoginScreenModel @AssistedInject constructor(
|
||||
// base URI and credentials
|
||||
private var loginInfo: LoginInfo = initialLoginInfo
|
||||
|
||||
@Parcelize
|
||||
data class LoginDetailsUiState(
|
||||
val loginType: LoginType,
|
||||
val loginInfo: LoginInfo
|
||||
)
|
||||
): Parcelable
|
||||
|
||||
var loginDetailsUiState by mutableStateOf(LoginDetailsUiState(
|
||||
loginType = initialLoginType,
|
||||
@@ -174,12 +179,13 @@ class LoginScreenModel @AssistedInject constructor(
|
||||
|
||||
// UI element state – third page: detect resources
|
||||
|
||||
@Parcelize
|
||||
data class DetectResourcesUiState(
|
||||
val loading: Boolean = false,
|
||||
val foundNothing: Boolean = false,
|
||||
val encountered401: Boolean = false,
|
||||
val logs: String? = null
|
||||
)
|
||||
): Parcelable
|
||||
|
||||
var detectResourcesUiState by mutableStateOf(DetectResourcesUiState())
|
||||
private set
|
||||
|
||||
@@ -5,10 +5,13 @@
|
||||
package at.bitfire.davdroid.ui.setup
|
||||
|
||||
import android.net.Uri
|
||||
import android.os.Parcelable
|
||||
import androidx.compose.material3.SnackbarHostState
|
||||
import androidx.compose.runtime.Composable
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
interface LoginType {
|
||||
@Parcelize
|
||||
sealed interface LoginType: Parcelable {
|
||||
|
||||
val title: Int
|
||||
|
||||
|
||||
@@ -49,8 +49,10 @@ import at.bitfire.davdroid.ui.UiUtils.haveCustomTabs
|
||||
import at.bitfire.davdroid.ui.composable.Assistant
|
||||
import at.bitfire.davdroid.ui.composable.ProgressBar
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
object NextcloudLogin : LoginType {
|
||||
@Parcelize
|
||||
data object NextcloudLogin : LoginType {
|
||||
|
||||
override val title: Int
|
||||
get() = R.string.login_type_nextcloud
|
||||
|
||||
@@ -37,8 +37,10 @@ import at.bitfire.davdroid.R
|
||||
import at.bitfire.davdroid.ui.UiUtils.toAnnotatedString
|
||||
import at.bitfire.davdroid.ui.composable.Assistant
|
||||
import at.bitfire.davdroid.ui.composable.PasswordTextField
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
object UrlLogin : LoginType {
|
||||
@Parcelize
|
||||
data object UrlLogin : LoginType {
|
||||
|
||||
override val title
|
||||
get() = R.string.login_type_url
|
||||
|
||||
@@ -7,6 +7,7 @@ plugins {
|
||||
alias(libs.plugins.compose.compiler) apply false
|
||||
alias(libs.plugins.hilt) apply false
|
||||
alias(libs.plugins.kotlin.android) apply false
|
||||
alias(libs.plugins.kotlin.parcelize) apply false
|
||||
alias(libs.plugins.ksp) apply false
|
||||
alias(libs.plugins.mikepenz.aboutLibraries) apply false
|
||||
}
|
||||
@@ -106,5 +106,6 @@ android-application = { id = "com.android.application", version.ref = "android-a
|
||||
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
|
||||
hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }
|
||||
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
|
||||
kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" }
|
||||
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
|
||||
mikepenz-aboutLibraries = { id = "com.mikepenz.aboutlibraries.plugin", version.ref = "mikepenz-aboutLibraries" }
|
||||
Reference in New Issue
Block a user