Loading packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt +6 −2 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ class CredentialManagerRepo( private val context: Context, intent: Intent, userConfigRepo: UserConfigRepo, isNewActivity: Boolean, ) { val requestInfo: RequestInfo? private val providerEnabledList: List<ProviderData> Loading Loading @@ -125,7 +126,8 @@ class CredentialManagerRepo( isPasskeyFirstUse = isPasskeyFirstUse, )!!, getCredentialUiState = null, cancelRequestState = cancelUiRequestState cancelRequestState = cancelUiRequestState, isInitialRender = isNewActivity, ) } RequestInfo.TYPE_GET -> { Loading @@ -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 -> { Loading @@ -149,6 +152,7 @@ class CredentialManagerRepo( createCredentialUiState = null, getCredentialUiState = null, cancelRequestState = cancelUiRequestState, isInitialRender = isNewActivity, ) } else { throw IllegalStateException("Unrecognized request type: ${requestInfo?.type}") Loading packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorActivity.kt +4 −2 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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) { Loading packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorViewModel.kt +6 −1 Original line number Diff line number Diff line Loading @@ -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( Loading Loading @@ -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)) } Loading @@ -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() Loading packages/CredentialManager/src/com/android/credentialmanager/common/ui/BottomSheet.kt +4 −7 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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, Loading @@ -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() Loading packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialComponents.kt +3 −1 Original line number Diff line number Diff line Loading @@ -164,7 +164,9 @@ fun CreateCredentialScreen( } } }, onDismiss = viewModel::onUserCancel onDismiss = viewModel::onUserCancel, isInitialRender = viewModel.uiState.isInitialRender, onInitialRenderComplete = viewModel::onInitialRenderComplete, ) } Loading Loading
packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt +6 −2 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ class CredentialManagerRepo( private val context: Context, intent: Intent, userConfigRepo: UserConfigRepo, isNewActivity: Boolean, ) { val requestInfo: RequestInfo? private val providerEnabledList: List<ProviderData> Loading Loading @@ -125,7 +126,8 @@ class CredentialManagerRepo( isPasskeyFirstUse = isPasskeyFirstUse, )!!, getCredentialUiState = null, cancelRequestState = cancelUiRequestState cancelRequestState = cancelUiRequestState, isInitialRender = isNewActivity, ) } RequestInfo.TYPE_GET -> { Loading @@ -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 -> { Loading @@ -149,6 +152,7 @@ class CredentialManagerRepo( createCredentialUiState = null, getCredentialUiState = null, cancelRequestState = cancelUiRequestState, isInitialRender = isNewActivity, ) } else { throw IllegalStateException("Unrecognized request type: ${requestInfo?.type}") Loading
packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorActivity.kt +4 −2 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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) { Loading
packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorViewModel.kt +6 −1 Original line number Diff line number Diff line Loading @@ -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( Loading Loading @@ -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)) } Loading @@ -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() Loading
packages/CredentialManager/src/com/android/credentialmanager/common/ui/BottomSheet.kt +4 −7 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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, Loading @@ -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() Loading
packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialComponents.kt +3 −1 Original line number Diff line number Diff line Loading @@ -164,7 +164,9 @@ fun CreateCredentialScreen( } } }, onDismiss = viewModel::onUserCancel onDismiss = viewModel::onUserCancel, isInitialRender = viewModel.uiState.isInitialRender, onInitialRenderComplete = viewModel::onInitialRenderComplete, ) } Loading