Merge "Bug fix caused by animation." into udc-dev

This commit is contained in:
Treehugger Robot
2023-05-08 04:05:23 +00:00
committed by Android (Google) Code Review
6 changed files with 25 additions and 13 deletions

View File

@@ -49,6 +49,7 @@ class CredentialManagerRepo(
private val context: Context, private val context: Context,
intent: Intent, intent: Intent,
userConfigRepo: UserConfigRepo, userConfigRepo: UserConfigRepo,
isNewActivity: Boolean,
) { ) {
val requestInfo: RequestInfo? val requestInfo: RequestInfo?
private val providerEnabledList: List<ProviderData> private val providerEnabledList: List<ProviderData>
@@ -125,7 +126,8 @@ class CredentialManagerRepo(
isPasskeyFirstUse = isPasskeyFirstUse, isPasskeyFirstUse = isPasskeyFirstUse,
)!!, )!!,
getCredentialUiState = null, getCredentialUiState = null,
cancelRequestState = cancelUiRequestState cancelRequestState = cancelUiRequestState,
isInitialRender = isNewActivity,
) )
} }
RequestInfo.TYPE_GET -> { RequestInfo.TYPE_GET -> {
@@ -140,7 +142,8 @@ class CredentialManagerRepo(
if (autoSelectEntry == null) ProviderActivityState.NOT_APPLICABLE if (autoSelectEntry == null) ProviderActivityState.NOT_APPLICABLE
else ProviderActivityState.READY_TO_LAUNCH, else ProviderActivityState.READY_TO_LAUNCH,
isAutoSelectFlow = autoSelectEntry != null, isAutoSelectFlow = autoSelectEntry != null,
cancelRequestState = cancelUiRequestState cancelRequestState = cancelUiRequestState,
isInitialRender = isNewActivity,
) )
} }
else -> { else -> {
@@ -149,6 +152,7 @@ class CredentialManagerRepo(
createCredentialUiState = null, createCredentialUiState = null,
getCredentialUiState = null, getCredentialUiState = null,
cancelRequestState = cancelUiRequestState, cancelRequestState = cancelUiRequestState,
isInitialRender = isNewActivity,
) )
} else { } else {
throw IllegalStateException("Unrecognized request type: ${requestInfo?.type}") throw IllegalStateException("Unrecognized request type: ${requestInfo?.type}")

View File

@@ -62,7 +62,8 @@ class CredentialSelectorActivity : ComponentActivity() {
return return
} }
val userConfigRepo = UserConfigRepo(this) val userConfigRepo = UserConfigRepo(this)
val credManRepo = CredentialManagerRepo(this, intent, userConfigRepo) val credManRepo = CredentialManagerRepo(
this, intent, userConfigRepo, isNewActivity = true)
val backPressedCallback = object : OnBackPressedCallback( val backPressedCallback = object : OnBackPressedCallback(
true // default to enabled true // default to enabled
@@ -103,7 +104,8 @@ class CredentialSelectorActivity : ComponentActivity() {
} }
} else { } else {
val userConfigRepo = UserConfigRepo(this) val userConfigRepo = UserConfigRepo(this)
val credManRepo = CredentialManagerRepo(this, intent, userConfigRepo) val credManRepo = CredentialManagerRepo(
this, intent, userConfigRepo, isNewActivity = false)
viewModel.onNewCredentialManagerRepo(credManRepo) viewModel.onNewCredentialManagerRepo(credManRepo)
} }
} catch (e: Exception) { } catch (e: Exception) {

View File

@@ -53,6 +53,7 @@ data class UiState(
// launched immediately, and canceling it will cancel the whole UI flow. // launched immediately, and canceling it will cancel the whole UI flow.
val isAutoSelectFlow: Boolean = false, val isAutoSelectFlow: Boolean = false,
val cancelRequestState: CancelUiRequestState?, val cancelRequestState: CancelUiRequestState?,
val isInitialRender: Boolean,
) )
data class CancelUiRequestState( data class CancelUiRequestState(
@@ -82,6 +83,10 @@ class CredentialSelectorViewModel(
uiState = uiState.copy(dialogState = DialogState.COMPLETE) uiState = uiState.copy(dialogState = DialogState.COMPLETE)
} }
fun onInitialRenderComplete() {
uiState = uiState.copy(isInitialRender = false)
}
fun onCancellationUiRequested(appDisplayName: String?) { fun onCancellationUiRequested(appDisplayName: String?) {
uiState = uiState.copy(cancelRequestState = CancelUiRequestState(appDisplayName)) uiState = uiState.copy(cancelRequestState = CancelUiRequestState(appDisplayName))
} }
@@ -96,7 +101,7 @@ class CredentialSelectorViewModel(
fun onNewCredentialManagerRepo(credManRepo: CredentialManagerRepo) { fun onNewCredentialManagerRepo(credManRepo: CredentialManagerRepo) {
this.credManRepo = credManRepo this.credManRepo = credManRepo
uiState = credManRepo.initState() uiState = credManRepo.initState().copy(isInitialRender = false)
if (this.credManRepo.requestInfo?.token != credManRepo.requestInfo?.token) { if (this.credManRepo.requestInfo?.token != credManRepo.requestInfo?.token) {
this.uiMetrics.resetInstanceId() this.uiMetrics.resetInstanceId()

View File

@@ -20,10 +20,6 @@ import androidx.compose.foundation.background
import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect 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.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
@@ -40,9 +36,10 @@ import kotlinx.coroutines.launch
@Composable @Composable
fun ModalBottomSheet( fun ModalBottomSheet(
sheetContent: @Composable ColumnScope.() -> Unit, sheetContent: @Composable ColumnScope.() -> Unit,
onDismiss: () -> Unit onDismiss: () -> Unit,
isInitialRender: Boolean,
onInitialRenderComplete: () -> Unit,
) { ) {
var isInitialRender by remember { mutableStateOf(true) }
val scope = rememberCoroutineScope() val scope = rememberCoroutineScope()
val state = rememberModalBottomSheetState( val state = rememberModalBottomSheetState(
initialValue = ModalBottomSheetValue.Hidden, initialValue = ModalBottomSheetValue.Hidden,
@@ -64,7 +61,7 @@ fun ModalBottomSheet(
LaunchedEffect(state.currentValue) { LaunchedEffect(state.currentValue) {
if (state.currentValue == ModalBottomSheetValue.Hidden) { if (state.currentValue == ModalBottomSheetValue.Hidden) {
if (isInitialRender) { if (isInitialRender) {
isInitialRender = false onInitialRenderComplete()
scope.launch { state.show() } scope.launch { state.show() }
} else { } else {
onDismiss() onDismiss()

View File

@@ -164,7 +164,9 @@ fun CreateCredentialScreen(
} }
} }
}, },
onDismiss = viewModel::onUserCancel onDismiss = viewModel::onUserCancel,
isInitialRender = viewModel.uiState.isInitialRender,
onInitialRenderComplete = viewModel::onInitialRenderComplete,
) )
} }

View File

@@ -148,6 +148,8 @@ fun GetCredentialScreen(
} }
}, },
onDismiss = viewModel::onUserCancel, onDismiss = viewModel::onUserCancel,
isInitialRender = viewModel.uiState.isInitialRender,
onInitialRenderComplete = viewModel::onInitialRenderComplete,
) )
} }
} }