From 500706ecbbe10b5c2d1cd6074a7773f58352f61c Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 20 Apr 2023 15:36:10 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../wallet2/viewmodel/SeedPhraseViewModel.kt | 51 ++++++++----------- 1 file changed, 22 insertions(+), 29 deletions(-) diff --git a/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/viewmodel/SeedPhraseViewModel.kt b/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/viewmodel/SeedPhraseViewModel.kt index ae997b06d7..d4329b1d9f 100644 --- a/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/viewmodel/SeedPhraseViewModel.kt +++ b/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/viewmodel/SeedPhraseViewModel.kt @@ -126,41 +126,34 @@ class SeedPhraseViewModel @Inject constructor( // region ImportSeedPhrase private fun onSeedPhraseTextFieldChanged(textFieldValue: TextFieldValue) { - viewModelScope.launchSingle { - val oldTextFieldValue = uiState.importSeedPhraseState.tvSeedPhrase.textFieldValue - val isSameText = textFieldValue.text == oldTextFieldValue.text - val isCursorMoved = textFieldValue.selection != oldTextFieldValue.selection + val oldTextFieldValue = uiState.importSeedPhraseState.tvSeedPhrase.textFieldValue + val isSameText = textFieldValue.text == oldTextFieldValue.text + val isCursorMoved = textFieldValue.selection != oldTextFieldValue.selection - updateUi { - val mediateState = uiBuilder.importSeedPhrase.updateTextField(uiState, textFieldValue) - uiBuilder.importSeedPhrase.updateCreateWalletButton(mediateState, enabled = false) - } + val mediateState = uiBuilder.importSeedPhrase.updateTextField(uiState, textFieldValue) + uiState = uiBuilder.importSeedPhrase.updateCreateWalletButton(mediateState, enabled = false) - val fieldState = uiState.importSeedPhraseState.tvSeedPhrase - val inputMnemonic = fieldState.textFieldValue.text + val fieldState = uiState.importSeedPhraseState.tvSeedPhrase + val inputMnemonic = fieldState.textFieldValue.text - when { - suggestionWordInserted.getAndSet(false) -> { + val debouncer = createOrGetDebouncer(MNEMONIC_DEBOUNCER) + when { + suggestionWordInserted.getAndSet(false) -> { + debouncer.debounce(viewModelScope, MNEMONIC_DEBOUNCE_DELAY, dispatchers.single) { validateMnemonic(inputMnemonic) - return@launchSingle - } - isSameText && !isCursorMoved -> { - return@launchSingle - } - isSameText && isCursorMoved -> { - updateSuggestions(fieldState) - return@launchSingle } } - - val isPasteFromClipboard = textFieldValue.text.length - oldTextFieldValue.text.length > 1 - if (isPasteFromClipboard) { - updateSuggestions(fieldState) - validateMnemonic(inputMnemonic) - } else { - updateSuggestions(fieldState) - val debouncer = createOrGetDebouncer(MNEMONIC_DEBOUNCER) - debouncer.debounce(viewModelScope, MNEMONIC_DEBOUNCE_DELAY, dispatchers.io) { + isSameText && !isCursorMoved -> { + // do nothing + } + isSameText && isCursorMoved -> { + debouncer.debounce(viewModelScope, MNEMONIC_DEBOUNCE_DELAY, dispatchers.single) { + updateSuggestions(fieldState) + } + } + else -> { + debouncer.debounce(viewModelScope, MNEMONIC_DEBOUNCE_DELAY, dispatchers.single) { + updateSuggestions(fieldState) validateMnemonic(inputMnemonic) } }