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,
|
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}")
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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,
|
onDismiss = viewModel::onUserCancel,
|
||||||
|
isInitialRender = viewModel.uiState.isInitialRender,
|
||||||
|
onInitialRenderComplete = viewModel::onInitialRenderComplete,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user