@@ -203,7 +203,8 @@ open class NativeAccountProvider: AccountProvider, ConfigurationAccess, Database
203203 }
204204
205205 guard let username = self ? . vpnTokenUsername, let password = self ? . vpnTokenPassword else {
206- preconditionFailure ( )
206+ callback ? ( ClientError . unauthorized)
207+ return
207208 }
208209
209210 self ? . accessedDatabase. secure. setPassword ( password, for: username)
@@ -218,9 +219,9 @@ open class NativeAccountProvider: AccountProvider, ConfigurationAccess, Database
218219 }
219220
220221 public func login( with receiptRequest: LoginReceiptRequest , _ callback: ( ( UserAccount ? , Error ? ) -> Void ) ? ) {
221-
222222 guard !isLoggedIn else {
223- preconditionFailure ( )
223+ callback ? ( currentUser, nil )
224+ return
224225 }
225226
226227 loginUseCase. login ( with: receiptRequest. receipt) { error in
@@ -234,7 +235,8 @@ open class NativeAccountProvider: AccountProvider, ConfigurationAccess, Database
234235
235236 public func login( with linkToken: String , _ callback: ( ( UserAccount ? , Error ? ) -> Void ) ? ) {
236237 guard !isLoggedIn else {
237- preconditionFailure ( )
238+ callback ? ( currentUser, nil )
239+ return
238240 }
239241
240242 self . webServices. migrateToken ( token: linkToken) { ( error) in
@@ -245,7 +247,8 @@ open class NativeAccountProvider: AccountProvider, ConfigurationAccess, Database
245247
246248 public func login( with request: LoginRequest , _ callback: ( ( UserAccount ? , Error ? ) -> Void ) ? ) {
247249 guard !isLoggedIn else {
248- preconditionFailure ( )
250+ callback ? ( currentUser, nil )
251+ return
249252 }
250253
251254 loginWithCredentials ( request. credentials, callback: callback)
@@ -290,6 +293,7 @@ open class NativeAccountProvider: AccountProvider, ConfigurationAccess, Database
290293
291294 switch result {
292295 case . failure( let error) :
296+ log. error ( " updateUserAccount failed with error: \( error. localizedDescription) " )
293297 self . logout ( nil )
294298 self . cleanDatabase ( )
295299 DispatchQueue . main. async {
@@ -308,12 +312,7 @@ open class NativeAccountProvider: AccountProvider, ConfigurationAccess, Database
308312 }
309313
310314 public func refreshAccountInfo( _ callback: ( ( AccountInfo ? , Error ? ) -> Void ) ? ) {
311- guard isLoggedIn,
312- let _ = self . publicUsername else {
313- guard let user = currentUser else {
314- preconditionFailure ( )
315- }
316-
315+ guard isLoggedIn, self . publicUsername != nil else {
317316 self . logout ( nil )
318317 return
319318 }
@@ -388,9 +387,10 @@ open class NativeAccountProvider: AccountProvider, ConfigurationAccess, Database
388387 }
389388
390389 private func handleUpdateAccountSuccessRequest( _ request: UpdateAccountRequest , callback: ( ( AccountInfo ? , Error ? ) -> Void ) ? ) {
391-
390+
392391 guard let user = currentUser else {
393- preconditionFailure ( )
392+ callback ? ( nil , ClientError . unauthorized)
393+ return
394394 }
395395
396396 guard let newAccountInfo = user. info? . with ( email: request. email) else {
@@ -421,7 +421,8 @@ open class NativeAccountProvider: AccountProvider, ConfigurationAccess, Database
421421
422422 public func deleteAccount( _ callback: SuccessLibraryCallback ? ) {
423423 guard isLoggedIn else {
424- preconditionFailure ( )
424+ callback ? ( ClientError . unauthorized)
425+ return
425426 }
426427
427428 deleteAccountUseCase ( ) { error in
@@ -530,7 +531,8 @@ open class NativeAccountProvider: AccountProvider, ConfigurationAccess, Database
530531
531532 public func signup( with request: SignupRequest , _ callback: ( ( UserAccount ? , Error ? ) -> Void ) ? ) {
532533 guard !isLoggedIn else {
533- preconditionFailure ( )
534+ callback ? ( nil , ClientError . unauthorized)
535+ return
534536 }
535537 guard let signup = request. signup ( withStore: accessedStore) else {
536538 callback ? ( nil , ClientError . noReceipt)
@@ -587,7 +589,8 @@ open class NativeAccountProvider: AccountProvider, ConfigurationAccess, Database
587589
588590 public func listRenewablePlans( _ callback: ( ( [ Plan ] ? , Error ? ) -> Void ) ? ) {
589591 guard let info = currentUser? . info else {
590- preconditionFailure ( )
592+ callback ? ( nil , ClientError . unauthorized)
593+ return
591594 }
592595
593596 listPlanProducts { ( _, error) in
@@ -622,13 +625,16 @@ open class NativeAccountProvider: AccountProvider, ConfigurationAccess, Database
622625
623626 public func renew( with request: RenewRequest , _ callback: ( ( UserAccount ? , Error ? ) -> Void ) ? ) {
624627 guard isLoggedIn else {
625- preconditionFailure ( )
628+ callback ? ( nil , ClientError . unauthorized)
629+ return
626630 }
627631 guard let user = currentUser else {
628- preconditionFailure ( )
632+ callback ? ( nil , ClientError . unauthorized)
633+ return
629634 }
630635 guard let accountInfo = user. info, accountInfo. isRenewable else {
631- preconditionFailure ( )
636+ callback ? ( nil , ClientError . renewingNonRenewable)
637+ return
632638 }
633639 guard let payment = request. payment ( withStore: accessedStore) else {
634640 callback ? ( nil , ClientError . noReceipt)
@@ -637,7 +643,7 @@ open class NativeAccountProvider: AccountProvider, ConfigurationAccess, Database
637643
638644 paymentUseCase ( with: user. credentials, request: payment) { ( error) in
639645
640- log. debug ( " Payment processed with error: \( error) " )
646+ log. debug ( " Payment processed with error: \( error? . localizedDescription ?? " N/A " ) " )
641647
642648 DispatchQueue . main. async {
643649 if let error {
0 commit comments