Исправление бесконечного рендер-цикла SearchView и поиск по публичному ключу

This commit is contained in:
2026-03-08 05:18:15 +05:00
parent e26d94b268
commit 685029b623
25 changed files with 555 additions and 883 deletions

View File

@@ -1,7 +1,7 @@
import SwiftUI
struct ConfirmSeedPhraseView: View {
let seedPhrase: [String]
@Binding var seedPhrase: [String]
let onConfirmed: () -> Void
let onBack: () -> Void
@@ -13,6 +13,7 @@ struct ConfirmSeedPhraseView: View {
private let confirmPositions = [1, 4, 8, 11]
private var allCorrect: Bool {
guard seedPhrase.count >= 12 else { return false }
for (inputIndex, seedIndex) in confirmPositions.enumerated() {
let input = confirmationInputs[inputIndex].lowercased().trimmingCharacters(in: .whitespaces)
if input != seedPhrase[seedIndex].lowercased() { return false }
@@ -24,26 +25,31 @@ struct ConfirmSeedPhraseView: View {
VStack(spacing: 0) {
AuthNavigationBar(onBack: onBack)
ScrollView(showsIndicators: false) {
VStack(spacing: 24) {
headerSection
pasteButton
pasteSuccessMessage
wordGrid
errorMessage
if seedPhrase.count >= 12 {
ScrollView(showsIndicators: false) {
VStack(spacing: 24) {
headerSection
pasteButton
pasteSuccessMessage
wordGrid
errorMessage
}
.padding(.horizontal, 24)
.padding(.top, 16)
.padding(.bottom, 100)
}
.padding(.horizontal, 24)
.padding(.top, 16)
.padding(.bottom, 100)
}
.scrollDismissesKeyboard(.interactively)
.onTapGesture(count: 1) { focusedInputIndex = nil }
.simultaneousGesture(TapGesture().onEnded {})
.scrollDismissesKeyboard(.interactively)
.onTapGesture(count: 1) { focusedInputIndex = nil }
.simultaneousGesture(TapGesture().onEnded {})
confirmButton
.padding(.horizontal, 24)
.padding(.bottom, 16)
confirmButton
.padding(.horizontal, 24)
.padding(.bottom, 16)
} else {
Spacer()
}
}
.background { RosettaColors.authBackground.ignoresSafeArea() }
}
}
@@ -128,7 +134,7 @@ private extension ConfirmSeedPhraseView {
.foregroundStyle(RosettaColors.numberGray)
.frame(width: 28, alignment: .trailing)
TextField("enter word", text: $confirmationInputs[inputIndex])
TextField("enter", text: $confirmationInputs[inputIndex])
.font(.system(size: 17, weight: .semibold, design: .monospaced))
.foregroundStyle(.white)
.autocorrectionDisabled()
@@ -281,8 +287,8 @@ private extension ConfirmSeedPhraseView {
#Preview {
ConfirmSeedPhraseView(
seedPhrase: ["abandon", "ability", "able", "about", "above", "absent",
"absorb", "abstract", "absurd", "abuse", "access", "accident"],
seedPhrase: .constant(["abandon", "ability", "able", "about", "above", "absent",
"absorb", "abstract", "absurd", "abuse", "access", "accident"]),
onConfirmed: {},
onBack: {}
)