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,
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}")

View File

@@ -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) {

View File

@@ -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()

View File

@@ -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()

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,
isInitialRender = viewModel.uiState.isInitialRender,
onInitialRenderComplete = viewModel::onInitialRenderComplete,
)
}
}