@@ -178,32 +178,35 @@ class SourcesViewModel: ObservableObject {
178178 newSourceURL = " "
179179 }
180180
181- func validateSource( _ source: Source ) {
182- guard let url = source. url else {
183- validationStates [ source. urlString] = . invalid( NSError ( domain: " Invalid URL " , code: 0 , userInfo: nil ) )
184- return
181+ func validateSource( _ source: Source ) {
182+ guard let url = source. url else {
183+ // Create a placeholder URL for invalid URL strings to store validation state
184+ if let placeholderURL = URL ( string: " invalid:// " + source. urlString. addingPercentEncoding ( withAllowedCharacters: . alphanumerics) !) {
185+ validationStates [ placeholderURL] = . invalid( NSError ( domain: " Invalid URL " , code: 0 , userInfo: nil ) )
185186 }
186-
187- validationStates [ url] = . loading
188-
189- var request = URLRequest ( url: url)
190- request. setValue ( " AppTestersListView/1.0 (iOS) " , forHTTPHeaderField: " User-Agent " )
191- request. timeoutInterval = 10
192-
193- URLSession . shared. dataTask ( with: request) { [ weak self] data, response, error in
194- DispatchQueue . main. async {
195- if let error = error {
196- self ? . validationStates [ url] = . invalid( error)
197- } else if let httpResponse = response as? HTTPURLResponse , !( 200 ... 299 ) . contains ( httpResponse. statusCode) {
198- let error = NSError ( domain: " HTTP Error " , code: httpResponse. statusCode, userInfo: nil )
199- self ? . validationStates [ url] = . invalid( error)
200- } else {
201- self ? . validationStates [ url] = . valid
202- }
203- }
204- } . resume ( )
187+ return
205188 }
206189
190+ validationStates [ url] = . loading
191+
192+ var request = URLRequest ( url: url)
193+ request. setValue ( " AppTestersListView/1.0 (iOS) " , forHTTPHeaderField: " User-Agent " )
194+ request. timeoutInterval = 10
195+
196+ URLSession . shared. dataTask ( with: request) { [ weak self] data, response, error in
197+ DispatchQueue . main. async {
198+ if let error = error {
199+ self ? . validationStates [ url] = . invalid( error)
200+ } else if let httpResponse = response as? HTTPURLResponse , !( 200 ... 299 ) . contains ( httpResponse. statusCode) {
201+ let error = NSError ( domain: " HTTP Error " , code: httpResponse. statusCode, userInfo: nil )
202+ self ? . validationStates [ url] = . invalid( error)
203+ } else {
204+ self ? . validationStates [ url] = . valid
205+ }
206+ }
207+ } . resume ( )
208+ }
209+
207210 func validateAllSources( ) {
208211 for source in sources {
209212 validateSource ( source)
0 commit comments