@@ -20,29 +20,43 @@ class OnboardingViewModel: ObservableObject {
2020 @Published var createWithPersistError : CreateWithPersistError ?
2121 @Published var networkColor = Color . gray
2222 @Published var onboardingViewError : AppError ?
23+ // @Published var selectedNetwork: Network = .signet {
24+ // didSet {
25+ // do {
26+ // let networkString = selectedNetwork.description
27+ // try keyClient.saveNetwork(networkString)
28+ // selectedURL = availableURLs.first ?? ""
29+ // try keyClient.saveEsploraURL(selectedURL)
30+ // } catch {
31+ // DispatchQueue.main.async {
32+ // self.onboardingViewError = .generic(message: error.localizedDescription)
33+ // }
34+ // }
35+ // }
36+ // }
37+ // @Published var selectedURL: String = "" {
38+ // didSet {
39+ // do {
40+ // try keyClient.saveEsploraURL(selectedURL)
41+ // } catch {
42+ // DispatchQueue.main.async {
43+ // self.onboardingViewError = .generic(message: error.localizedDescription)
44+ // }
45+ // }
46+ // }
47+ // }
2348 @Published var selectedNetwork : Network = . signet {
2449 didSet {
25- do {
26- let networkString = selectedNetwork. description
27- try keyClient. saveNetwork ( networkString)
28- selectedURL = availableURLs. first ?? " "
29- try keyClient. saveEsploraURL ( selectedURL)
30- } catch {
31- DispatchQueue . main. async {
32- self . onboardingViewError = . generic( message: error. localizedDescription)
33- }
34- }
50+ print ( " OnboardingViewModel: Network changed from \( oldValue) to \( selectedNetwork) " )
51+ bdkClient. updateNetwork ( selectedNetwork)
52+ selectedURL = availableURLs. first ?? " "
53+ bdkClient. updateEsploraURL ( selectedURL)
3554 }
3655 }
3756 @Published var selectedURL : String = " " {
3857 didSet {
39- do {
40- try keyClient. saveEsploraURL ( selectedURL)
41- } catch {
42- DispatchQueue . main. async {
43- self . onboardingViewError = . generic( message: error. localizedDescription)
44- }
45- }
58+ print ( " OnboardingViewModel: Esplora URL changed from \( oldValue) to \( selectedURL) " )
59+ bdkClient. updateEsploraURL ( selectedURL)
4660 }
4761 }
4862 @Published var words : String = " " {
@@ -63,6 +77,18 @@ class OnboardingViewModel: ObservableObject {
6377 return Constants . Config. EsploraServerURLNetwork. Signet. allValues
6478 }
6579 }
80+ private func availableURLs( for network: Network ) -> [ String ] {
81+ switch network {
82+ case . signet:
83+ return Constants . Config. EsploraServerURLNetwork. Signet. allValues
84+ case . testnet:
85+ return Constants . Config. EsploraServerURLNetwork. Testnet. allValues
86+ case . bitcoin:
87+ return Constants . Config. EsploraServerURLNetwork. Bitcoin. allValues
88+ case . regtest:
89+ return Constants . Config. EsploraServerURLNetwork. Regtest. allValues
90+ }
91+ }
6692 var buttonColor : Color {
6793 switch selectedNetwork {
6894 case . bitcoin:
@@ -76,27 +102,112 @@ class OnboardingViewModel: ObservableObject {
76102 }
77103 }
78104
105+ // init(
106+ // bdkClient: BDKClient = .live,
107+ // keyClient: KeyClient = .live
108+ // ) {
109+ // self.bdkClient = bdkClient
110+ // self.keyClient = keyClient
111+ // print("OnboardingViewModel: Initializing")
112+ //
113+ // let currentNetwork = bdkClient.getNetwork()
114+ // let currentURL = bdkClient.getEsploraURL()
115+ //
116+ // // Set network
117+ // if let storedNetwork = try? keyClient.getNetwork().flatMap({ Network(stringValue: $0) }) {
118+ // self.selectedNetwork = storedNetwork
119+ // if storedNetwork != currentNetwork {
120+ // print("OnboardingViewModel: Network changed from \(currentNetwork) to \(storedNetwork)")
121+ // bdkClient.updateNetwork(storedNetwork)
122+ // } else {
123+ // print("OnboardingViewModel: Network unchanged: \(currentNetwork)")
124+ // }
125+ // } else {
126+ // self.selectedNetwork = currentNetwork
127+ // print("OnboardingViewModel: Using current network: \(currentNetwork)")
128+ // }
129+ //
130+ // // Set Esplora URL
131+ // if let storedURL = try? keyClient.getEsploraURL(), isValidURL(storedURL, for: self.selectedNetwork) {
132+ // self.selectedURL = storedURL
133+ // } else if isValidURL(currentURL, for: self.selectedNetwork) {
134+ // self.selectedURL = currentURL
135+ // } else {
136+ // self.selectedURL = availableURLs(for: self.selectedNetwork).first ?? ""
137+ // }
138+ //
139+ // if self.selectedURL != currentURL {
140+ // print("OnboardingViewModel: Esplora URL changed from \(currentURL) to \(self.selectedURL)")
141+ // bdkClient.updateEsploraURL(self.selectedURL)
142+ // } else {
143+ // print("OnboardingViewModel: Esplora URL unchanged: \(self.selectedURL)")
144+ // }
145+ //
146+ // print("OnboardingViewModel: Initialized with network \(self.selectedNetwork) and URL \(self.selectedURL)")
147+ // }
148+
79149 init (
80150 bdkClient: BDKClient = . live,
81151 keyClient: KeyClient = . live
82152 ) {
83153 self . bdkClient = bdkClient
84154 self . keyClient = keyClient
85- do {
86- if let networkString = try keyClient. getNetwork ( ) {
87- self . selectedNetwork = Network ( stringValue: networkString) ?? . signet
88- } else {
89- self . selectedNetwork = . signet
90- }
91- if let esploraURL = try keyClient. getEsploraURL ( ) {
92- self . selectedURL = esploraURL
155+ print ( " OnboardingViewModel: Initializing " )
156+
157+ let currentNetwork = bdkClient. getNetwork ( )
158+ let currentURL = bdkClient. getEsploraURL ( )
159+
160+ // Set network
161+ if let storedNetwork = try ? keyClient. getNetwork ( ) . flatMap ( { Network ( stringValue: $0) } ) {
162+ self . selectedNetwork = storedNetwork
163+ if storedNetwork != currentNetwork {
164+ print (
165+ " OnboardingViewModel: Network changed from \( currentNetwork) to \( storedNetwork) "
166+ )
167+ bdkClient. updateNetwork ( storedNetwork)
93168 } else {
94- self . selectedURL = availableURLs. first ?? " "
95- }
96- } catch {
97- DispatchQueue . main. async {
98- self . onboardingViewError = . generic( message: error. localizedDescription)
169+ print ( " OnboardingViewModel: Network unchanged: \( currentNetwork) " )
99170 }
171+ } else {
172+ self . selectedNetwork = currentNetwork
173+ print ( " OnboardingViewModel: Using current network: \( currentNetwork) " )
174+ }
175+
176+ // Set Esplora URL
177+ if let storedURL = try ? keyClient. getEsploraURL ( ) ,
178+ isValidURL ( storedURL, for: self . selectedNetwork)
179+ {
180+ self . selectedURL = storedURL
181+ } else if isValidURL ( currentURL, for: self . selectedNetwork) {
182+ self . selectedURL = currentURL
183+ } else {
184+ self . selectedURL = availableURLs ( for: self . selectedNetwork) . first ?? " "
185+ }
186+
187+ if self . selectedURL != currentURL {
188+ print (
189+ " OnboardingViewModel: Esplora URL changed from \( currentURL) to \( self . selectedURL) "
190+ )
191+ bdkClient. updateEsploraURL ( self . selectedURL)
192+ } else {
193+ print ( " OnboardingViewModel: Esplora URL unchanged: \( self . selectedURL) " )
194+ }
195+
196+ print (
197+ " OnboardingViewModel: Initialized with network \( self . selectedNetwork) and URL \( self . selectedURL) "
198+ )
199+ }
200+
201+ private func isValidURL( _ url: String , for network: Network ) -> Bool {
202+ switch network {
203+ case . signet:
204+ return Constants . Config. EsploraServerURLNetwork. Signet. allValues. contains ( url)
205+ case . testnet:
206+ return Constants . Config. EsploraServerURLNetwork. Testnet. allValues. contains ( url)
207+ case . bitcoin:
208+ return Constants . Config. EsploraServerURLNetwork. Bitcoin. allValues. contains ( url)
209+ case . regtest:
210+ return Constants . Config. EsploraServerURLNetwork. Regtest. allValues. contains ( url)
100211 }
101212 }
102213
0 commit comments