diff --git a/yobble/ViewModels/LoginViewModel.swift b/yobble/ViewModels/LoginViewModel.swift index 32767c8..43466ab 100644 --- a/yobble/ViewModels/LoginViewModel.swift +++ b/yobble/ViewModels/LoginViewModel.swift @@ -219,6 +219,7 @@ class LoginViewModel: ObservableObject { self.loadStoredUser() self.isLoggedIn = true self.socketService.connectForCurrentUser() + self.verificationCode = "" } else { self.errorMessage = message ?? NSLocalizedString("Проверьте введённый код и попробуйте снова.", comment: "") self.showError = true diff --git a/yobble/Views/Login/LoginView.swift b/yobble/Views/Login/LoginView.swift index 0d429d3..7f35d18 100644 --- a/yobble/Views/Login/LoginView.swift +++ b/yobble/Views/Login/LoginView.swift @@ -681,7 +681,17 @@ private struct OTPInputView: View { get: { code }, set: { newValue in let filtered = newValue.filter { $0.isNumber } - code = String(filtered.prefix(length)) + let trimmed = String(filtered.prefix(length)) + + // избегаем nested updates + if code != trimmed { + // отключаем анимации и делаем обновление вне view update фазы + var transaction = Transaction() + transaction.disablesAnimations = true + withTransaction(transaction) { + code = trimmed + } + } } ) }