Merge "Bug fix caused by animation." into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
58897d9b41
@@ -49,6 +49,7 @@ class CredentialManagerRepo(
|
||||
private val context: Context,
|
||||
intent: Intent,
|
||||
userConfigRepo: UserConfigRepo,
|
||||
isNewActivity: Boolean,
|
||||
) {
|
||||
val requestInfo: RequestInfo?
|
||||
private val providerEnabledList: List<ProviderData>
|
||||
@@ -125,7 +126,8 @@ class CredentialManagerRepo(
|
||||
isPasskeyFirstUse = isPasskeyFirstUse,
|
||||
)!!,
|
||||
getCredentialUiState = null,
|
||||
cancelRequestState = cancelUiRequestState
|
||||
cancelRequestState = cancelUiRequestState,
|
||||
isInitialRender = isNewActivity,
|
||||
)
|
||||
}
|
||||
RequestInfo.TYPE_GET -> {
|
||||
@@ -140,7 +142,8 @@ class CredentialManagerRepo(
|
||||
if (autoSelectEntry == null) ProviderActivityState.NOT_APPLICABLE
|
||||
else ProviderActivityState.READY_TO_LAUNCH,
|
||||
isAutoSelectFlow = autoSelectEntry != null,
|
||||
cancelRequestState = cancelUiRequestState
|
||||
cancelRequestState = cancelUiRequestState,
|
||||
isInitialRender = isNewActivity,
|
||||
)
|
||||
}
|
||||
else -> {
|
||||
@@ -149,6 +152,7 @@ class CredentialManagerRepo(
|
||||
createCredentialUiState = null,
|
||||
getCredentialUiState = null,
|
||||
cancelRequestState = cancelUiRequestState,
|
||||
isInitialRender = isNewActivity,
|
||||
)
|
||||
} else {
|
||||
throw IllegalStateException("Unrecognized request type: ${requestInfo?.type}")
|
||||
|
||||
@@ -62,7 +62,8 @@ class CredentialSelectorActivity : ComponentActivity() {
|
||||
return
|
||||
}
|
||||
val userConfigRepo = UserConfigRepo(this)
|
||||
val credManRepo = CredentialManagerRepo(this, intent, userConfigRepo)
|
||||
val credManRepo = CredentialManagerRepo(
|
||||
this, intent, userConfigRepo, isNewActivity = true)
|
||||
|
||||
val backPressedCallback = object : OnBackPressedCallback(
|
||||
true // default to enabled
|
||||
@@ -103,7 +104,8 @@ class CredentialSelectorActivity : ComponentActivity() {
|
||||
}
|
||||
} else {
|
||||
val userConfigRepo = UserConfigRepo(this)
|
||||
val credManRepo = CredentialManagerRepo(this, intent, userConfigRepo)
|
||||
val credManRepo = CredentialManagerRepo(
|
||||
this, intent, userConfigRepo, isNewActivity = false)
|
||||
viewModel.onNewCredentialManagerRepo(credManRepo)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
|
||||
@@ -53,6 +53,7 @@ data class UiState(
|
||||
// launched immediately, and canceling it will cancel the whole UI flow.
|
||||
val isAutoSelectFlow: Boolean = false,
|
||||
val cancelRequestState: CancelUiRequestState?,
|
||||
val isInitialRender: Boolean,
|
||||
)
|
||||
|
||||
data class CancelUiRequestState(
|
||||
@@ -82,6 +83,10 @@ class CredentialSelectorViewModel(
|
||||
uiState = uiState.copy(dialogState = DialogState.COMPLETE)
|
||||
}
|
||||
|
||||
fun onInitialRenderComplete() {
|
||||
uiState = uiState.copy(isInitialRender = false)
|
||||
}
|
||||
|
||||
fun onCancellationUiRequested(appDisplayName: String?) {
|
||||
uiState = uiState.copy(cancelRequestState = CancelUiRequestState(appDisplayName))
|
||||
}
|
||||
@@ -96,7 +101,7 @@ class CredentialSelectorViewModel(
|
||||
|
||||
fun onNewCredentialManagerRepo(credManRepo: CredentialManagerRepo) {
|
||||
this.credManRepo = credManRepo
|
||||
uiState = credManRepo.initState()
|
||||
uiState = credManRepo.initState().copy(isInitialRender = false)
|
||||
|
||||
if (this.credManRepo.requestInfo?.token != credManRepo.requestInfo?.token) {
|
||||
this.uiMetrics.resetInstanceId()
|
||||
|
||||
@@ -20,10 +20,6 @@ import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.ColumnScope
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
@@ -40,9 +36,10 @@ import kotlinx.coroutines.launch
|
||||
@Composable
|
||||
fun ModalBottomSheet(
|
||||
sheetContent: @Composable ColumnScope.() -> Unit,
|
||||
onDismiss: () -> Unit
|
||||
onDismiss: () -> Unit,
|
||||
isInitialRender: Boolean,
|
||||
onInitialRenderComplete: () -> Unit,
|
||||
) {
|
||||
var isInitialRender by remember { mutableStateOf(true) }
|
||||
val scope = rememberCoroutineScope()
|
||||
val state = rememberModalBottomSheetState(
|
||||
initialValue = ModalBottomSheetValue.Hidden,
|
||||
@@ -64,7 +61,7 @@ fun ModalBottomSheet(
|
||||
LaunchedEffect(state.currentValue) {
|
||||
if (state.currentValue == ModalBottomSheetValue.Hidden) {
|
||||
if (isInitialRender) {
|
||||
isInitialRender = false
|
||||
onInitialRenderComplete()
|
||||
scope.launch { state.show() }
|
||||
} else {
|
||||
onDismiss()
|
||||
|
||||
@@ -164,7 +164,9 @@ fun CreateCredentialScreen(
|
||||
}
|
||||
}
|
||||
},
|
||||
onDismiss = viewModel::onUserCancel
|
||||
onDismiss = viewModel::onUserCancel,
|
||||
isInitialRender = viewModel.uiState.isInitialRender,
|
||||
onInitialRenderComplete = viewModel::onInitialRenderComplete,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -148,6 +148,8 @@ fun GetCredentialScreen(
|
||||
}
|
||||
},
|
||||
onDismiss = viewModel::onUserCancel,
|
||||
isInitialRender = viewModel.uiState.isInitialRender,
|
||||
onInitialRenderComplete = viewModel::onInitialRenderComplete,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user