Loading packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt +6 −2 Original line number Original line Diff line number Diff line Loading @@ -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> Loading Loading @@ -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 -> { Loading @@ -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 -> { Loading @@ -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}") Loading packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorActivity.kt +4 −2 Original line number Original line Diff line number Diff line Loading @@ -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 Loading Loading @@ -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) { Loading packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorViewModel.kt +6 −1 Original line number Original line Diff line number Diff line Loading @@ -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( Loading Loading @@ -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)) } } Loading @@ -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() Loading packages/CredentialManager/src/com/android/credentialmanager/common/ui/BottomSheet.kt +4 −7 Original line number Original line Diff line number Diff line Loading @@ -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 Loading @@ -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, Loading @@ -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() Loading packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialComponents.kt +3 −1 Original line number Original line 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 Original line Diff line number Diff line Loading @@ -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> Loading Loading @@ -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 -> { Loading @@ -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 -> { Loading @@ -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}") Loading
packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorActivity.kt +4 −2 Original line number Original line Diff line number Diff line Loading @@ -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 Loading Loading @@ -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) { Loading
packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorViewModel.kt +6 −1 Original line number Original line Diff line number Diff line Loading @@ -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( Loading Loading @@ -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)) } } Loading @@ -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() Loading
packages/CredentialManager/src/com/android/credentialmanager/common/ui/BottomSheet.kt +4 −7 Original line number Original line Diff line number Diff line Loading @@ -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 Loading @@ -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, Loading @@ -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() Loading
packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialComponents.kt +3 −1 Original line number Original line 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