@@ -12,6 +12,7 @@ const form = tab.querySelector('div.cartList')!
1212
1313const checkoutStripe = form . querySelector < HTMLElement > ( 'button#checkout' )
1414const checkoutNowPayments = form . querySelector < HTMLElement > ( 'button#checkout-nowpayments' )
15+ const tosSection = form . querySelector ( 'section#tosSection' ) !
1516const radioTOSAgree = form . querySelector < HTMLInputElement > ( 'section > input[type="radio"]' ) !
1617const totalCost = form . querySelector ( 'p#totalCost' )
1718const itemList = form . querySelector ( '#itemList' ) !
@@ -99,6 +100,11 @@ export const initializeCheckoutTab = memoize(() => {
99100 checkoutStripe ?. addEventListener ( 'click' , submitCheckout )
100101 checkoutNowPayments ?. addEventListener ( 'click' , submitCheckout )
101102
103+ // Remove rainbow border highlight when TOS is clicked
104+ radioTOSAgree . addEventListener ( 'change' , ( ) => {
105+ tosSection . classList . remove ( 'rainbow-border-highlight' )
106+ } )
107+
102108 initializePayPal_OneTime ( '#checkout-paypal' )
103109} )
104110
@@ -272,14 +278,30 @@ async function initializePayPal_OneTime (selector: string | HTMLElement) {
272278 } ,
273279
274280 onError ( error ) {
281+ if ( error instanceof Error ) {
282+ try {
283+ const message = JSON . parse ( error . message )
284+
285+ if ( message . error ) {
286+ if ( ! radioTOSAgree . checked ) {
287+ tosSection . classList . add ( 'rainbow-border-highlight' )
288+ }
289+
290+ Notification ( `An error with PayPal happened. ${ message . error } ` )
291+ return
292+ }
293+ } catch {
294+ }
295+ }
296+
275297 const message = [ ]
276298
277299 for ( const [ key , value ] of Object . entries ( error ) ) {
278300 message . push ( `${ key } : ${ value } ` )
279301 }
280302
281303 Notification ( `An error with PayPal happened. More info in console. ${ message . join ( ', ' ) } ` )
282- console . log ( error )
304+ console . log ( { error } )
283305 } ,
284306
285307 onCancel ( ) {
0 commit comments