tf-checkout-react 1.3.46 → 1.3.47-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.DS_Store +0 -0
- package/dist/api/index.d.ts +10 -0
- package/dist/components/addonsContainer/utils/index.d.ts +1 -4
- package/dist/components/billing-info-container/utils.d.ts +20 -1
- package/dist/components/myTicketsContainer/tableConfig.d.ts +1 -4
- package/dist/components/ticketsContainer/TicketRow.d.ts +6 -1
- package/dist/components/ticketsContainer/TicketsSection.d.ts +6 -1
- package/dist/components/ticketsContainer/crypto.d.ts +24 -0
- package/dist/tf-checkout-react.cjs.development.js +4701 -1324
- package/dist/tf-checkout-react.cjs.development.js.map +1 -1
- package/dist/tf-checkout-react.cjs.production.min.js +1 -1
- package/dist/tf-checkout-react.cjs.production.min.js.map +1 -1
- package/dist/tf-checkout-react.esm.js +4702 -1324
- package/dist/tf-checkout-react.esm.js.map +1 -1
- package/dist/tf-checkout-styles.css +1 -1
- package/dist/types/billing-info-data.d.ts +5 -0
- package/dist/utils/getWalletName.d.ts +1 -0
- package/dist/utils/loadProfile.d.ts +32 -0
- package/package.json +3 -1
- package/src/.DS_Store +0 -0
- package/src/api/index.ts +42 -1
- package/src/assets/.DS_Store +0 -0
- package/src/components/addonsContainer/utils/index.tsx +1 -1
- package/src/components/billing-info-container/index.tsx +271 -11
- package/src/components/billing-info-container/style.css +1 -1
- package/src/components/billing-info-container/utils.ts +98 -5
- package/src/components/loginModal/index.tsx +70 -5
- package/src/components/loginModal/style.css +2 -2
- package/src/components/ticketsContainer/TicketRow.tsx +55 -5
- package/src/components/ticketsContainer/TicketsSection.tsx +15 -1
- package/src/components/ticketsContainer/crypto.js +528 -0
- package/src/components/ticketsContainer/index.tsx +216 -2
- package/src/components/waitingList/index.tsx +1 -1
- package/src/env.ts +2 -2
- package/src/types/billing-info-data.ts +6 -0
- package/src/utils/getWalletName.tsx +10 -0
- package/src/utils/loadProfile.tsx +47 -0
- package/src/components/common/dist/PhoneNumberField.js +0 -96
|
@@ -1 +1 @@
|
|
|
1
|
-
.button-container{display:flex;justify-content:center;padding:20px}.billing-info-container{margin:0 auto;max-width:800px}.billing-info-container .is-half{width:49%}.billing-info-container p{color:#000}.billing-info-container .main-header{font-size:2rem;font-weight:600}.billing-info-container__twoFields{display:flex;justify-content:space-between;margin-top:15px}.billing-info-container__singleField{margin-top:15px}button{margin-top:10px}.account-actions-block{color:#182026;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,Icons16,sans-serif;margin-top:10px}.MuiButtonBase-root.MuiButton-root,.MuiButtonBase-root.MuiButton-root:hover,.login-register-button{background-color:#212529;border:#f28051;border-radius:5px;color:#fff;cursor:pointer;display:block;font-family:Inter-Bold;font-size:26px;font-weight:700;line-height:1.15;margin-top:10px;min-height:46px;outline:none;overflow:hidden;padding:14px 12px 12px;position:relative;text-align:center;text-overflow:ellipsis;text-transform:uppercase;width:49%}.logo-image-container{margin-top:5px;text-align:center;width:49%}.logo-image-container img{height:30px}.login-block{align-items:center;display:flex;flex-direction:column}.login-register-button:hover{background-color:#505050!important;border-color:#505050!important}.login-register-block{display:flex;justify-content:space-between}@media only screen and (max-width:820px){.billing-info-container{width:90%}.billing-info-container .main-header{font-size:1.5rem}}.email-checking{margin-bottom:15px}.forgot-password-modal .forgot-password-container{margin:0 auto;max-width:800px}.forgot-password-modal .title{background-color:#fff;font-family:Inter;font-size:18px;font-weight:700}.forgot-password-modal .forgot-password-container__singleField{margin-top:15px}.forgot-password-modal .forgot-password-action-button button{background-color:#212529;border:none;border-radius:0;color:#fff;cursor:pointer;font-size:26px;font-weight:600;height:45px;line-height:18px;margin-top:10px;outline:none;padding:10px;text-transform:uppercase;width:100%}.forgot-password-modal .forgot-password-action-button button:hover:enabled{background-color:#505050;border-color:#505050}.forgot-password-modal .login{margin-top:10px;text-align:center}.forgot-password-modal .login span{cursor:pointer}.forgot-password-modal .login span:hover{text-decoration:underline}.forgot-password-modal button[disabled]{cursor:unset;opacity:.7}.modal-title{align-items:center;background-color:#fff;display:flex;font-family:Inter;font-size:18px;font-weight:700;height:49px;line-height:22px;padding-left:25px;position:relative}.login-modal-body{padding:15px 25px}.login-modal-body input{background:#fff!important}.login-modal-body__email,.login-modal-body__password{margin-bottom:20px}.login-action-button button{background-color:#212529;border:none;border-radius:0;color:#fff;cursor:pointer;font-size:26px;font-weight:600;height:45px;line-height:18px;margin:10px 0;outline:none;padding:10px;width:100%}.login-action-button button:hover{background-color:#505050;border-color:#505050}.server_auth__error{color:red;font-family:Inter;font-size:12px;font-style:normal;padding-left:25px;padding-top:15px}.info-text-for-login{font-size:14px;margin-bottom:4px;padding-left:10px}.forgot-password{text-align:center}.forgot-password span{cursor:pointer}.forgot-password span:hover{text-decoration:underline}.signup-modal .signup-container{margin:0 auto;max-width:800px}.signup-modal .title{background-color:#fff;font-family:Inter;font-size:18px;font-weight:700}.signup-modal .signup-container .is-half{width:49%}.signup-modal .signup-container__twoFields{display:flex;justify-content:space-between;margin-top:15px}.signup-modal .signup-container__singleField{margin-top:15px}.signup-modal button{margin-top:10px}.signup-modal .signup-action-button button{background-color:#212529;border:none;border-radius:0;color:#fff;cursor:pointer;font-size:26px;font-weight:600;height:45px;line-height:18px;margin-top:10px;outline:none;padding:10px;text-transform:uppercase;width:100%}.signup-modal .signup-action-button button:hover:enabled{background-color:#505050;border-color:#505050}.signup-modal .login{margin-top:10px;text-align:center}.signup-modal .login span{cursor:pointer}.signup-modal .login span:hover{text-decoration:underline}.signup-modal button[disabled]{cursor:unset;opacity:.7}.timer{background-color:#000;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=);background-position:15px;background-repeat:no-repeat;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#fff;margin:0 0 6px;max-width:300px;overflow:hidden;padding:15px 15px 15px 50px;pointer-events:auto;position:absolute;right:15px;width:300px}.timer .close-icon{cursor:pointer;display:flex;position:absolute;right:10px;top:10px}.timer .countdown{font-weight:700;margin-top:10px}.payment_page{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,Icons16,sans-serif}.payment_page .order_info_section{padding:15px 0}.payment_page .order_info_section .order_info_block{padding-bottom:15px;padding-top:15px}.payment_page .order_info_section .order_info_block .field-underline{border-bottom:1px solid #000;padding-bottom:15px}.payment_page .order_info_section .order_info_block .order_info_title{font-size:14px;font-weight:700;padding-bottom:3px}.payment_page .order_info_section .order_info_block .order_info_text{font-size:16px;line-height:1.15;outline:none}.payment_page .MuiBox-root{margin-left:auto;margin-right:auto;padding:20px;text-align:center}.payment_page .payment_info_label{padding:20px 0;text-align:center}.payment_page .payment_form{color:#fff;padding:20px}.payment_page .payment_form input,.payment_page .payment_form label{color:#fff}.payment_page .payment_button{padding-top:20px;text-align:center}.card_form_inner{background:#232323;border-radius:8px;margin:0 auto 20px;min-width:325px;padding:15px;width:50%}.card_form_inner .card_label_text{color:#fff}.card_form_inner .StripeElement{margin:5px 0 10px}.card_label_text{color:#fff}.payment_button{padding-top:15px;text-align:center}.payment_button button{background-color:#212529;border-radius:8px;color:#fff;cursor:pointer;font-size:26px;padding:15px 30px;transition:opacity .5s;width:200px}.payment_button button:hover{opacity:.7}.disabled-payment-button button{opacity:.3;pointer-events:none;user-select:none}.checkout_error_block{color:#e53935;font-weight:600;padding:15px 0}.zip_element p{margin-bottom:0}.zip_element input{background-color:#000;border:none;color:#fff;font-size:18px;margin-top:5px;outline:none;width:100%}.confirmation-page{margin:0 auto;max-width:1024px}.confirmation-page button{margin-top:inherit}.confirmation-page .strong-text{font-weight:700}.confirmation-page .title{color:#333;font-size:24px;font-weight:600}.confirmation-page .share-message-section{background:#dff0d8;border:1px solid #d6e9c6;border-radius:5px;color:#2c7221;display:flex;flex-direction:column;margin:20px 0;padding:15px}.confirmation-page .main{font-size:15px;font-weight:700}.confirmation-page .helper,.confirmation-page .main{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,Icons16,sans-serif}.confirmation-page .helper{font-size:14px;margin-top:5px}.confirmation-page .referral_text_image_section{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;margin:20px 0}.confirmation-page .referral_text_section{margin:10px}.confirmation-page .referral_title_text{color:#f08057;font-size:28px;padding-bottom:10px}.confirmation-page .referral_text{font-size:18px}.confirmation-page .referral_text_image_section img{margin:10px;max-width:200px}.confirmation-page .share_wrapper{column-gap:5rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin:10px}.confirmation-page .invitation_title{font-size:22px;padding-bottom:12px;padding-top:12px}.confirmation-page .share_section{display:flex;flex-wrap:wrap;justify-content:space-between;margin:0 -10px}.confirmation-page .invitation_section{flex:1 1;padding:0 5px}.confirmation-page .share_buttons{display:grid;flex-wrap:wrap;margin:0 -7px}.confirmation-page .convenient_buttons{margin-top:10px}.confirmation-page .social-media-btns{grid-gap:5px;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.confirmation-page .sharing-btn{background-color:#000;flex:1 1;min-width:130px}.confirmation-page .sharing-btn a{text-decoration:none}.confirmation-page .share-by-link{background:#000;color:#fff;padding:10px}.confirmation-page .share-by-link.label{margin:0;padding:0;text-align:left}.confirmation-page .share-btn-inner{align-items:center;background-color:#000;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-flex;padding:0;text-align:left;width:100%}.confirmation-page .share-input{background-color:#fff;border:none;outline:none;padding:5px;text-align:left;width:300px}.confirmation-page .share-text{display:block;font-size:13px;font-weight:600;padding-top:8px;width:100%}.confirmation-page .pricing-section_wrapper{background:#e3e3e3;border:1px solid #dcdcdc;display:grid;grid-template-columns:1fr 1fr;margin:10px 0;padding:15px}.confirmation-page .pricing-section_label{font-weight:600}.confirmation-page .pricing-section_sublabel{font-size:14px;font-weight:100}.confirmation-page .pricing-section_price{font-weight:600;text-align:right}.confirmation-page .share-by-link-copy-icon{align-items:center;background-color:#32325d;border-radius:4px;color:#fff;cursor:pointer;display:flex;justify-content:center;margin-left:8px;padding:10px;transition:all .15s ease}.confirmation-page .share-by-link-copy-icon:hover{background-color:#505050}.confirmation-page .share-by-link-copy-icon img{width:14px}.confirmation-page .social-media-sharing{background-color:#000;color:#fff;cursor:pointer;padding:10px;text-align:center}.confirmation-page .share-icon{border-radius:4px;display:inline-flex}@media only screen and (max-width:1050px){.confirmation-page .share_wrapper{column-gap:0;display:grid;grid-template-columns:unset;margin:15px}}@media only screen and (max-width:480px){.confirmation-page .social-media-btns{grid-template-columns:unset}.confirmation-page .share-input{width:250px}}body{margin:0;padding:0}.get-tickets-page{width:100%}.event-detail__tier{background-color:#fff;padding:17px 35px 20px}.event-detail__tier-name{color:#000;font-family:Inter-Bold;font-family:Bebas Neue;font-size:.85rem;font-weight:700;letter-spacing:.2em;line-height:1.3;margin-bottom:8px;margin-top:16px;padding-right:20%;text-transform:uppercase}.event-detail__tier-status{align-items:center;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;margin-top:8px;width:100%}.event-detail__tier-status.ticket-button{background-color:#212529;border:3px solid #000;border-radius:0;color:#fff;cursor:pointer;font-weight:700;letter-spacing:.2em;line-height:1.5;margin-bottom:10px;width:200px}.event-tickets-container{align-items:center;display:flex;justify-content:space-between}.event-detail__tier-status.ticket-button.true{background-color:#c1c3c6;border-color:#afb0b1}.event-detail__tier-price{color:#000;font-family:Inter-Bold;font-size:1.5rem;line-height:1;text-align:center}.event-detail__tier-price p{margin:0}.event-detail__tier-price .fees{font-size:14px;margin-top:4px;text-align:left}.event-detail__tier-price .old-price{color:red;font-size:1.3rem;margin-bottom:5px;text-decoration:line-through}.alert-info{align-items:center;background-color:#d9edf7;border:1px solid #bce8f1;border-radius:4px;color:#3a87ad;display:flex;font-size:1em;justify-content:center;margin:0 35px;padding:8px 15px;text-shadow:0 1px 0 hsla(0,0%,100%,.5)}.alert-info svg{margin-right:4px}.event-detail__tier-state{color:#30bc9d;font-family:Inter-Bold;font-size:.75rem;font-weight:300;line-height:1;text-align:right;text-transform:uppercase}.event-detail__tier-state .ticket-not-started-message{color:#000;text-align:left;text-transform:none;width:50px}.promo-code-block input{font-size:14px;padding:1px 8px}.book-button{background-color:#212529;border:3px solid #000;border-radius:0;color:#fff;cursor:pointer;display:block;font-size:26px;font-weight:700;height:50px;letter-spacing:.2em;line-height:1.5;margin:25px auto 10px;text-align:center;width:100%}.book-button:hover{background-color:#505050;border-color:#505050}.loader-container{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.get-tickets-paper::-webkit-scrollbar{width:5px}.get-tickets-paper::-webkit-scrollbar-track{background:#f1f1f1}.get-tickets-paper::-webkit-scrollbar-thumb{background:#888}.get-tickets-paper::-webkit-scrollbar-thumb:hover{background:#555}.get-tickets .get-tickets__selectbox{width:100%}.disabled{pointer-events:none;user-select:none}.hidden{display:none}.event-closed-message{font-family:Bebas Neue;letter-spacing:.5px}.countdown p{margin:0}.countdown .title{font-weight:700}.countdown .message{font-weight:700;margin-top:20px}.waiting-list{padding:17px 35px 20px}.waiting-list .field-item{margin-bottom:30px}.waiting-list .waiting-list-button{width:100%!important}.waiting-list .waiting-list-button:hover{background-color:#505050}.waiting-list .success-message{margin-bottom:15px;text-align:center}.waiting-list .success-message p{margin:0}.waiting-list .no-tickets-text{font-weight:700;text-align:center}.waiting-list .added-success-message{font-size:22px;margin-bottom:10px}.my-ticket{padding:30px}.my-ticket-table{margin-top:30px}.my-ticket .loading{background-color:rgba(0,0,0,.4);height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100%}.my-ticket .event-info,.my-ticket .loading{align-items:center;display:flex}.my-ticket thead th{font-weight:700}.my-ticket .event-info img{margin-right:10px;width:50px}.my-ticket .order-details-button{background-color:#32325d;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:10px 14px;transition:all .15s ease}.my-ticket .order-details-button:hover{background-color:#505050}.order-details{margin:0 auto;max-width:940px}.order-details .loading{align-items:center;background-color:rgba(0,0,0,.4);display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:1400}.order-details .layout-title{font-size:24px;font-weight:400}.order-details .sub-title{font-size:18px;font-weight:400;margin:10px 0}.order-details .order-summary-box{margin-top:30px}.order-details .total-row td,.order-details th{color:#fff;font-weight:700}.order-details .tickets-box{margin-top:30px}.order-details .ticket-add-on-table{background-color:#fcf8e3}.order-details .action-button{background-color:#212529;border:1px solid #fff;border-radius:0;color:#fff;cursor:pointer;display:block;font-family:Bebas Neue;font-size:14px;font-weight:400;line-height:normal;margin-bottom:20px;margin-top:20px;min-height:auto;outline:none;overflow:hidden;padding:12px;position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:uppercase;width:max-content}.order-details .download-button:hover{background-color:#505050}.order-details .personal-link{padding:20px 0}.order-details .total-referrer{padding:0 0 20px}.resale-modal .field-box{display:flex;margin-bottom:10px}.resale-modal .field-box .icon{align-items:center;display:flex;height:56px;justify-content:center;min-width:44px}.resale-modal .field-box .empty-box{min-width:44px}.resale-modal .resale-action-button button{background-color:#212529;color:#fff;cursor:pointer;width:100%}.resale-modal .resale-action-button button[disabled]{opacity:.7}.resale-modal .resale-action-button button:hover{background-color:#505050;border-color:#505050;width:100%}.reset-password{margin:0 auto;max-width:300px;padding:14px}.reset-password .title{font-size:20px;font-weight:700}.reset-password .field-item{margin-top:14px}.reset-password .action-button button{background-color:#212529;border:none;border-radius:0;color:#fff;cursor:pointer;font-size:26px;font-weight:600;height:45px;line-height:18px;margin-top:14px;outline:none;padding:10px;text-transform:uppercase;width:100%}.reset-password .action-button button:hover:enabled{background-color:#505050;border-color:#505050}.reset-password .action-button button[disabled]{cursor:unset;opacity:.7}
|
|
1
|
+
.button-container{display:flex;justify-content:center;padding:20px}.billing-info-container{margin:0 auto;max-width:800px}.billing-info-container .is-half{width:49%}.billing-info-container p{color:#000}.billing-info-container .main-header{font-size:2rem;font-weight:600}.billing-info-container__twoFields{display:flex;justify-content:space-between;margin-top:15px}.billing-info-container__singleField{margin-top:15px}button{margin-top:10px}.account-actions-block,.crypto-actions-block{color:#182026;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,Icons16,sans-serif;margin-top:10px}.login-register-button,.MuiButtonBase-root.MuiButton-root,.MuiButtonBase-root.MuiButton-root:hover{background-color:#212529;border:#f28051;border-radius:5px;color:#fff;cursor:pointer;display:block;font-family:Inter-Bold;font-size:26px;font-weight:700;line-height:1.15;margin-top:10px;min-height:46px;outline:none;overflow:hidden;padding:14px 12px 12px;position:relative;text-align:center;text-overflow:ellipsis;text-transform:uppercase;width:49%}.logo-image-container{margin-top:5px;text-align:center;width:49%}.logo-image-container img{height:30px}.login-block{align-items:center;display:flex;flex-direction:column}.login-register-button:hover{background-color:#505050!important;border-color:#505050!important}.login-register-block{display:flex;justify-content:space-between}@media only screen and (max-width:820px){.billing-info-container{width:90%}.billing-info-container .main-header{font-size:1.5rem}}.email-checking{margin-bottom:15px}.forgot-password-modal .forgot-password-container{margin:0 auto;max-width:800px}.forgot-password-modal .title{background-color:#fff;font-family:Inter;font-size:18px;font-weight:700}.forgot-password-modal .forgot-password-container__singleField{margin-top:15px}.forgot-password-modal .forgot-password-action-button button{background-color:#212529;border:none;border-radius:0;color:#fff;cursor:pointer;font-size:26px;font-weight:600;height:45px;line-height:18px;margin-top:10px;outline:none;padding:10px;text-transform:uppercase;width:100%}.forgot-password-modal .forgot-password-action-button button:hover:enabled{background-color:#505050;border-color:#505050}.forgot-password-modal .login{margin-top:10px;text-align:center}.forgot-password-modal .login span{cursor:pointer}.forgot-password-modal .login span:hover{text-decoration:underline}.forgot-password-modal button[disabled]{cursor:unset;opacity:.7}.modal-title{align-items:center;background-color:#fff;display:flex;font-family:Inter;font-size:18px;font-weight:700;height:49px;line-height:22px;padding-left:25px;position:relative}.login-modal-body{padding:15px 25px}.login-modal-body input{background:#fff!important}.login-modal-body__email,.login-modal-body__password{margin-bottom:20px}.login-action-button button,.login-wallet-button button{background-color:#212529;border:none;border-radius:0;color:#fff;cursor:pointer;font-size:26px;font-weight:600;height:45px;line-height:18px;margin:10px 0;outline:none;padding:10px;width:100%}.login-action-button button:hover,.login-wallet-button button:hover{background-color:#505050;border-color:#505050}.server_auth__error{color:red;font-family:Inter;font-size:12px;font-style:normal;padding-left:25px;padding-top:15px}.info-text-for-login{font-size:14px;margin-bottom:4px;padding-left:10px}.forgot-password{text-align:center}.forgot-password span{cursor:pointer}.forgot-password span:hover{text-decoration:underline}.signup-modal .signup-container{margin:0 auto;max-width:800px}.signup-modal .title{background-color:#fff;font-family:Inter;font-size:18px;font-weight:700}.signup-modal .signup-container .is-half{width:49%}.signup-modal .signup-container__twoFields{display:flex;justify-content:space-between;margin-top:15px}.signup-modal .signup-container__singleField{margin-top:15px}.signup-modal button{margin-top:10px}.signup-modal .signup-action-button button{background-color:#212529;border:none;border-radius:0;color:#fff;cursor:pointer;font-size:26px;font-weight:600;height:45px;line-height:18px;margin-top:10px;outline:none;padding:10px;text-transform:uppercase;width:100%}.signup-modal .signup-action-button button:hover:enabled{background-color:#505050;border-color:#505050}.signup-modal .login{margin-top:10px;text-align:center}.signup-modal .login span{cursor:pointer}.signup-modal .login span:hover{text-decoration:underline}.signup-modal button[disabled]{cursor:unset;opacity:.7}.timer{background-color:#000;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=);background-position:15px;background-repeat:no-repeat;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#fff;margin:0 0 6px;max-width:300px;overflow:hidden;padding:15px 15px 15px 50px;pointer-events:auto;position:absolute;right:15px;width:300px}.timer .close-icon{cursor:pointer;display:flex;position:absolute;right:10px;top:10px}.timer .countdown{font-weight:700;margin-top:10px}.payment_page{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,Icons16,sans-serif}.payment_page .order_info_section{padding:15px 0}.payment_page .order_info_section .order_info_block{padding-bottom:15px;padding-top:15px}.payment_page .order_info_section .order_info_block .field-underline{border-bottom:1px solid #000;padding-bottom:15px}.payment_page .order_info_section .order_info_block .order_info_title{font-size:14px;font-weight:700;padding-bottom:3px}.payment_page .order_info_section .order_info_block .order_info_text{font-size:16px;line-height:1.15;outline:none}.payment_page .MuiBox-root{margin-left:auto;margin-right:auto;padding:20px;text-align:center}.payment_page .payment_info_label{padding:20px 0;text-align:center}.payment_page .payment_form{color:#fff;padding:20px}.payment_page .payment_form input,.payment_page .payment_form label{color:#fff}.payment_page .payment_button{padding-top:20px;text-align:center}.card_form_inner{background:#232323;border-radius:8px;margin:0 auto 20px;min-width:325px;padding:15px;width:50%}.card_form_inner .card_label_text{color:#fff}.card_form_inner .StripeElement{margin:5px 0 10px}.card_label_text{color:#fff}.payment_button{padding-top:15px;text-align:center}.payment_button button{background-color:#212529;border-radius:8px;color:#fff;cursor:pointer;font-size:26px;padding:15px 30px;transition:opacity .5s;width:200px}.payment_button button:hover{opacity:.7}.disabled-payment-button button{opacity:.3;pointer-events:none;user-select:none}.checkout_error_block{color:#e53935;font-weight:600;padding:15px 0}.zip_element p{margin-bottom:0}.zip_element input{background-color:#000;border:none;color:#fff;font-size:18px;margin-top:5px;outline:none;width:100%}.confirmation-page{margin:0 auto;max-width:1024px}.confirmation-page button{margin-top:inherit}.confirmation-page .strong-text{font-weight:700}.confirmation-page .title{color:#333;font-size:24px;font-weight:600}.confirmation-page .share-message-section{background:#dff0d8;border:1px solid #d6e9c6;border-radius:5px;color:#2c7221;display:flex;flex-direction:column;margin:20px 0;padding:15px}.confirmation-page .main{font-size:15px;font-weight:700}.confirmation-page .helper,.confirmation-page .main{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,Icons16,sans-serif}.confirmation-page .helper{font-size:14px;margin-top:5px}.confirmation-page .referral_text_image_section{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;margin:20px 0}.confirmation-page .referral_text_section{margin:10px}.confirmation-page .referral_title_text{color:#f08057;font-size:28px;padding-bottom:10px}.confirmation-page .referral_text{font-size:18px}.confirmation-page .referral_text_image_section img{margin:10px;max-width:200px}.confirmation-page .share_wrapper{column-gap:5rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin:10px}.confirmation-page .invitation_title{font-size:22px;padding-bottom:12px;padding-top:12px}.confirmation-page .share_section{display:flex;flex-wrap:wrap;justify-content:space-between;margin:0 -10px}.confirmation-page .invitation_section{flex:1 1;padding:0 5px}.confirmation-page .share_buttons{display:grid;flex-wrap:wrap;margin:0 -7px}.confirmation-page .convenient_buttons{margin-top:10px}.confirmation-page .social-media-btns{grid-gap:5px;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.confirmation-page .sharing-btn{background-color:#000;flex:1 1;min-width:130px}.confirmation-page .sharing-btn a{text-decoration:none}.confirmation-page .share-by-link{background:#000;color:#fff;padding:10px}.confirmation-page .share-by-link.label{margin:0;padding:0;text-align:left}.confirmation-page .share-btn-inner{align-items:center;background-color:#000;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-flex;padding:0;text-align:left;width:100%}.confirmation-page .share-input{background-color:#fff;border:none;outline:none;padding:5px;text-align:left;width:300px}.confirmation-page .share-text{display:block;font-size:13px;font-weight:600;padding-top:8px;width:100%}.confirmation-page .pricing-section_wrapper{background:#e3e3e3;border:1px solid #dcdcdc;display:grid;grid-template-columns:1fr 1fr;margin:10px 0;padding:15px}.confirmation-page .pricing-section_label{font-weight:600}.confirmation-page .pricing-section_sublabel{font-size:14px;font-weight:100}.confirmation-page .pricing-section_price{font-weight:600;text-align:right}.confirmation-page .share-by-link-copy-icon{align-items:center;background-color:#32325d;border-radius:4px;color:#fff;cursor:pointer;display:flex;justify-content:center;margin-left:8px;padding:10px;transition:all .15s ease}.confirmation-page .share-by-link-copy-icon:hover{background-color:#505050}.confirmation-page .share-by-link-copy-icon img{width:14px}.confirmation-page .social-media-sharing{background-color:#000;color:#fff;cursor:pointer;padding:10px;text-align:center}.confirmation-page .share-icon{border-radius:4px;display:inline-flex}@media only screen and (max-width:1050px){.confirmation-page .share_wrapper{column-gap:0;display:grid;grid-template-columns:unset;margin:15px}}@media only screen and (max-width:480px){.confirmation-page .social-media-btns{grid-template-columns:unset}.confirmation-page .share-input{width:250px}}body{margin:0;padding:0}.get-tickets-page{width:100%}.event-detail__tier{background-color:#fff;padding:17px 35px 20px}.event-detail__tier-name{color:#000;font-family:Inter-Bold;font-family:Bebas Neue;font-size:.85rem;font-weight:700;letter-spacing:.2em;line-height:1.3;margin-bottom:8px;margin-top:16px;padding-right:20%;text-transform:uppercase}.event-detail__tier-status{align-items:center;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;margin-top:8px;width:100%}.event-detail__tier-status.ticket-button{background-color:#212529;border:3px solid #000;border-radius:0;color:#fff;cursor:pointer;font-weight:700;letter-spacing:.2em;line-height:1.5;margin-bottom:10px;width:200px}.event-tickets-container{align-items:center;display:flex;justify-content:space-between}.event-detail__tier-status.ticket-button.true{background-color:#c1c3c6;border-color:#afb0b1}.event-detail__tier-price{color:#000;font-family:Inter-Bold;font-size:1.5rem;line-height:1;text-align:center}.event-detail__tier-price p{margin:0}.event-detail__tier-price .fees{font-size:14px;margin-top:4px;text-align:left}.event-detail__tier-price .old-price{color:red;font-size:1.3rem;margin-bottom:5px;text-decoration:line-through}.alert-info{align-items:center;background-color:#d9edf7;border:1px solid #bce8f1;border-radius:4px;color:#3a87ad;display:flex;font-size:1em;justify-content:center;margin:0 35px;padding:8px 15px;text-shadow:0 1px 0 hsla(0,0%,100%,.5)}.alert-info svg{margin-right:4px}.event-detail__tier-state{color:#30bc9d;font-family:Inter-Bold;font-size:.75rem;font-weight:300;line-height:1;text-align:right;text-transform:uppercase}.event-detail__tier-state .ticket-not-started-message{color:#000;text-align:left;text-transform:none;width:50px}.promo-code-block input{font-size:14px;padding:1px 8px}.book-button{background-color:#212529;border:3px solid #000;border-radius:0;color:#fff;cursor:pointer;display:block;font-size:26px;font-weight:700;height:50px;letter-spacing:.2em;line-height:1.5;margin:25px auto 10px;text-align:center;width:100%}.book-button:hover{background-color:#505050;border-color:#505050}.loader-container{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.get-tickets-paper::-webkit-scrollbar{width:5px}.get-tickets-paper::-webkit-scrollbar-track{background:#f1f1f1}.get-tickets-paper::-webkit-scrollbar-thumb{background:#888}.get-tickets-paper::-webkit-scrollbar-thumb:hover{background:#555}.get-tickets .get-tickets__selectbox{width:100%}.disabled{pointer-events:none;user-select:none}.hidden{display:none}.event-closed-message{font-family:Bebas Neue;letter-spacing:.5px}.countdown p{margin:0}.countdown .title{font-weight:700}.countdown .message{font-weight:700;margin-top:20px}.waiting-list{padding:17px 35px 20px}.waiting-list .field-item{margin-bottom:30px}.waiting-list .waiting-list-button{width:100%!important}.waiting-list .waiting-list-button:hover{background-color:#505050}.waiting-list .success-message{margin-bottom:15px;text-align:center}.waiting-list .success-message p{margin:0}.waiting-list .no-tickets-text{font-weight:700;text-align:center}.waiting-list .added-success-message{font-size:22px;margin-bottom:10px}.my-ticket{padding:30px}.my-ticket-table{margin-top:30px}.my-ticket .loading{background-color:rgba(0,0,0,.4);height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100%}.my-ticket .event-info,.my-ticket .loading{align-items:center;display:flex}.my-ticket thead th{font-weight:700}.my-ticket .event-info img{margin-right:10px;width:50px}.my-ticket .order-details-button{background-color:#32325d;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:10px 14px;transition:all .15s ease}.my-ticket .order-details-button:hover{background-color:#505050}.order-details{margin:0 auto;max-width:940px}.order-details .loading{align-items:center;background-color:rgba(0,0,0,.4);display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:1400}.order-details .layout-title{font-size:24px;font-weight:400}.order-details .sub-title{font-size:18px;font-weight:400;margin:10px 0}.order-details .order-summary-box{margin-top:30px}.order-details .total-row td,.order-details th{color:#fff;font-weight:700}.order-details .tickets-box{margin-top:30px}.order-details .ticket-add-on-table{background-color:#fcf8e3}.order-details .action-button{background-color:#212529;border:1px solid #fff;border-radius:0;color:#fff;cursor:pointer;display:block;font-family:Bebas Neue;font-size:14px;font-weight:400;line-height:normal;margin-bottom:20px;margin-top:20px;min-height:auto;outline:none;overflow:hidden;padding:12px;position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:uppercase;width:max-content}.order-details .download-button:hover{background-color:#505050}.order-details .personal-link{padding:20px 0}.order-details .total-referrer{padding:0 0 20px}.resale-modal .field-box{display:flex;margin-bottom:10px}.resale-modal .field-box .icon{align-items:center;display:flex;height:56px;justify-content:center;min-width:44px}.resale-modal .field-box .empty-box{min-width:44px}.resale-modal .resale-action-button button{background-color:#212529;color:#fff;cursor:pointer;width:100%}.resale-modal .resale-action-button button[disabled]{opacity:.7}.resale-modal .resale-action-button button:hover{background-color:#505050;border-color:#505050;width:100%}.reset-password{margin:0 auto;max-width:300px;padding:14px}.reset-password .title{font-size:20px;font-weight:700}.reset-password .field-item{margin-top:14px}.reset-password .action-button button{background-color:#212529;border:none;border-radius:0;color:#fff;cursor:pointer;font-size:26px;font-weight:600;height:45px;line-height:18px;margin-top:14px;outline:none;padding:10px;text-transform:uppercase;width:100%}.reset-password .action-button button:hover:enabled{background-color:#505050;border-color:#505050}.reset-password .action-button button[disabled]{cursor:unset;opacity:.7}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getWalletName: (blockchain: string) => string;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export declare const loadProfile: (token?: string | undefined) => Promise<any>;
|
|
2
|
+
export declare const setLoggedUserData: (data: IUserData) => {
|
|
3
|
+
id: string;
|
|
4
|
+
first_name: string;
|
|
5
|
+
last_name: string;
|
|
6
|
+
email: string;
|
|
7
|
+
confirmEmail: string;
|
|
8
|
+
city: string;
|
|
9
|
+
country: string;
|
|
10
|
+
phone: string;
|
|
11
|
+
street_address: string;
|
|
12
|
+
state: string;
|
|
13
|
+
zip: string;
|
|
14
|
+
linkedCryptoWallets: string[];
|
|
15
|
+
};
|
|
16
|
+
interface IUserData {
|
|
17
|
+
id: string;
|
|
18
|
+
firstName: string;
|
|
19
|
+
lastName: string;
|
|
20
|
+
email: string;
|
|
21
|
+
city?: string;
|
|
22
|
+
country?: string;
|
|
23
|
+
countryId?: string;
|
|
24
|
+
phone?: string;
|
|
25
|
+
streetAddress?: string;
|
|
26
|
+
state?: string;
|
|
27
|
+
zip?: string;
|
|
28
|
+
zipCode?: string;
|
|
29
|
+
stateId?: string;
|
|
30
|
+
linkedCryptoWallets?: string[];
|
|
31
|
+
}
|
|
32
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.3.
|
|
2
|
+
"version": "1.3.47-beta.2",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -79,6 +79,7 @@
|
|
|
79
79
|
"dependencies": {
|
|
80
80
|
"@emotion/react": "^11.7.0",
|
|
81
81
|
"@emotion/styled": "^11.6.0",
|
|
82
|
+
"@metamask/detect-provider": "^1.2.0",
|
|
82
83
|
"@mui/material": "^5.2.2",
|
|
83
84
|
"@mui/styles": "^5.2.2",
|
|
84
85
|
"@mui/x-date-pickers": "^5.0.1",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"react-countdown": "^2.3.2",
|
|
99
100
|
"react-inlinesvg": "^2.3.0",
|
|
100
101
|
"react-share": "^4.4.0",
|
|
102
|
+
"web3": "^1.8.1",
|
|
101
103
|
"yup": "^0.32.11"
|
|
102
104
|
}
|
|
103
105
|
}
|
package/src/.DS_Store
ADDED
|
Binary file
|
package/src/api/index.ts
CHANGED
|
@@ -81,7 +81,7 @@ publicRequest.interceptors.request.use((config: AxiosRequestConfig) => {
|
|
|
81
81
|
config.headers = updatedHeaders
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
const additionalCookiesHeaderValue =
|
|
84
|
+
const additionalCookiesHeaderValue = document.cookie ?? ''
|
|
85
85
|
if (additionalCookiesHeaderValue !== '') {
|
|
86
86
|
const updatedHeaders = {
|
|
87
87
|
...config.headers,
|
|
@@ -259,6 +259,15 @@ export const authorize = (data: { email: string, password: string }) =>
|
|
|
259
259
|
data
|
|
260
260
|
)
|
|
261
261
|
|
|
262
|
+
export const authorizeWithWallet = (address: string, signature: string, blockchain: string) => {
|
|
263
|
+
const body = new FormData()
|
|
264
|
+
body.set('crypto_address', address)
|
|
265
|
+
body.set('crypto_signature', signature)
|
|
266
|
+
return publicRequest.post(`crypto/${blockchain}/auth`,body).catch(error => {
|
|
267
|
+
throw error
|
|
268
|
+
})
|
|
269
|
+
}
|
|
270
|
+
|
|
262
271
|
export const register = (data: FormData) =>
|
|
263
272
|
publicRequest.post('v1/oauth/register-rn', data)
|
|
264
273
|
|
|
@@ -384,6 +393,9 @@ export const declineInvitation = (hash: string) =>
|
|
|
384
393
|
export const sendRSVPInfo = (eventId: number, data: any) =>
|
|
385
394
|
publicRequest.post(`v1/event/${eventId}/send-rsvp-info`, data)
|
|
386
395
|
|
|
396
|
+
export const temporalNonce = () =>
|
|
397
|
+
publicRequest.get(`crypto/nonce`)
|
|
398
|
+
|
|
387
399
|
export const validatePhoneNumber = async (phone: string): Promise<any> => {
|
|
388
400
|
const response: AxiosResponse<
|
|
389
401
|
any,
|
|
@@ -393,6 +405,35 @@ export const validatePhoneNumber = async (phone: string): Promise<any> => {
|
|
|
393
405
|
return response.data
|
|
394
406
|
}
|
|
395
407
|
|
|
408
|
+
export const connectMetamask = (blockchain: string, form: FormData) =>
|
|
409
|
+
publicRequest.post(`crypto/${blockchain}/connect-metamask`, form)
|
|
410
|
+
|
|
411
|
+
export const confirmMetamask = (blockchain: string, form: FormData) =>
|
|
412
|
+
publicRequest.post(`crypto/${blockchain}/confirm-metamask`, form)
|
|
413
|
+
|
|
414
|
+
export const onConfirmConnectMetamask = (form: FormData) =>
|
|
415
|
+
publicRequest.post(`crypto/on-confirm-connect-metamask`, form)
|
|
416
|
+
|
|
417
|
+
export const onUnconnectMetamask = () =>
|
|
418
|
+
publicRequest.post(`crypto/on-unconnect-metamask`)
|
|
419
|
+
|
|
420
|
+
export const cryptoAccount = (blockchain: string) =>
|
|
421
|
+
publicRequest.get(`crypto/${blockchain}/account`)
|
|
422
|
+
|
|
423
|
+
export const cryptoAddress = (blockchain: string, address: string) =>
|
|
424
|
+
publicRequest.get(`crypto/${blockchain}/account/${address}`)
|
|
425
|
+
|
|
426
|
+
export const cryptoConnect = (blockchain: string, address: string, signature: string) => {
|
|
427
|
+
const body = new FormData()
|
|
428
|
+
body.set('crypto_address', address)
|
|
429
|
+
body.set('crypto_signature', signature)
|
|
430
|
+
publicRequest.post(`crypto/${blockchain}/connect`, body)
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
export const cryptoA0K1 = (address: string, ticketHash: string, amount: string) => {
|
|
434
|
+
const query = 'ticketHash=' + encodeURIComponent(ticketHash) + '&amount=' + amount
|
|
435
|
+
return publicRequest.get(`crypto/a0k1verse/wallet/${address}/nfts?${query}`)
|
|
436
|
+
}
|
|
396
437
|
export const getAddons = async (eventId: string) => {
|
|
397
438
|
const result = await publicRequest.get(`/v1/event/${eventId}/add-ons`)
|
|
398
439
|
const addons = _get(result, 'data.data.attributes', [])
|
|
Binary file
|
|
@@ -29,12 +29,16 @@ import {
|
|
|
29
29
|
getCountries,
|
|
30
30
|
getProfileData,
|
|
31
31
|
getStates,
|
|
32
|
+
onConfirmConnectMetamask,
|
|
33
|
+
onUnconnectMetamask,
|
|
32
34
|
postOnCheckout,
|
|
33
35
|
register,
|
|
34
36
|
setCustomHeader,
|
|
37
|
+
temporalNonce,
|
|
35
38
|
} from '../../api'
|
|
36
39
|
import { usePixel } from '../../hooks/usePixel'
|
|
37
40
|
import { IBillingInfoData } from '../../types'
|
|
41
|
+
import { IBillingCryptoData } from '../../types/billing-info-data'
|
|
38
42
|
import {
|
|
39
43
|
createCheckoutDataBodyWithDefaultHolder,
|
|
40
44
|
deleteCookieByName,
|
|
@@ -42,11 +46,14 @@ import {
|
|
|
42
46
|
} from '../../utils'
|
|
43
47
|
import { ErrorFocus } from '../../utils/formikErrorFocus'
|
|
44
48
|
import { getQueryVariable } from '../../utils/getQueryVariable'
|
|
49
|
+
import { getWalletName } from '../../utils/getWalletName'
|
|
50
|
+
import { loadProfile, setLoggedUserData } from '../../utils/loadProfile'
|
|
45
51
|
import { combineValidators, requiredValidator } from '../../validators'
|
|
46
52
|
import SnackbarAlert from '../common/SnackbarAlert'
|
|
47
53
|
import { ForgotPasswordModal } from '../forgotPasswordModal'
|
|
48
54
|
import { LoginModal } from '../loginModal'
|
|
49
55
|
import { SignupModal } from '../signupModal'
|
|
56
|
+
import { CryptoIntegration } from '../ticketsContainer/crypto'
|
|
50
57
|
import TimerWidget from '../timerWidget'
|
|
51
58
|
import {
|
|
52
59
|
assingUniqueIds,
|
|
@@ -56,7 +63,8 @@ import {
|
|
|
56
63
|
getFieldLabel,
|
|
57
64
|
getInitialValues,
|
|
58
65
|
getValidateFunctions,
|
|
59
|
-
|
|
66
|
+
returnSelectedBlockchain,
|
|
67
|
+
signSubmit,
|
|
60
68
|
} from './utils'
|
|
61
69
|
|
|
62
70
|
export interface IBillingInfoPage {
|
|
@@ -190,6 +198,7 @@ const LogicRunner: FC<{
|
|
|
190
198
|
'holderLastName-0':
|
|
191
199
|
parsedData?.last_name || parsedData?.lastName || '',
|
|
192
200
|
'holderEmail-0': parsedData?.email || '',
|
|
201
|
+
linkedCryptoWallets: parsedData?.linkedCryptoWallets || [],
|
|
193
202
|
}
|
|
194
203
|
setValues({ ...values, ...mappedValues })
|
|
195
204
|
setUserValues(mappedValues)
|
|
@@ -293,6 +302,7 @@ export const BillingInfoContainer = React.memo(
|
|
|
293
302
|
street_address: '',
|
|
294
303
|
state: '',
|
|
295
304
|
zip: '',
|
|
305
|
+
linkedCryptoWallets: [],
|
|
296
306
|
})
|
|
297
307
|
const [loading, setLoading] = useState(true)
|
|
298
308
|
const [isCountriesLoading, setIsCountriesLoading] = useState(true)
|
|
@@ -324,6 +334,28 @@ export const BillingInfoContainer = React.memo(
|
|
|
324
334
|
const hidePhoneField = getQueryVariable('hide_phone_field') === 'true'
|
|
325
335
|
const hideWalletAddressField =
|
|
326
336
|
!collectOptionalWalletAddress && !collectMandatoryWalletAddress
|
|
337
|
+
const [cryptoWrapper, setCryptoWrapper] = useState<any>(undefined)
|
|
338
|
+
const [detectedWallets, setDetectedWallets] = useState<string[]>([])
|
|
339
|
+
const [walletConnected, setWalletConnected] = useState<boolean>(false)
|
|
340
|
+
const [cryptoData, setCryptoData] = useState<IBillingCryptoData>({
|
|
341
|
+
cryptoAddress: undefined,
|
|
342
|
+
cryptoSignature: undefined,
|
|
343
|
+
blockchain: undefined
|
|
344
|
+
})
|
|
345
|
+
useEffect(() => {
|
|
346
|
+
setCryptoWrapper(CryptoIntegration())
|
|
347
|
+
const wallets: string[] = []
|
|
348
|
+
const registerDetectedWallet = (event: any) => {
|
|
349
|
+
const identifier = event?.detail?.identifier
|
|
350
|
+
const registered = wallets.find(wallet => wallet === identifier)
|
|
351
|
+
if (identifier && !registered) {
|
|
352
|
+
wallets.push(identifier)
|
|
353
|
+
setDetectedWallets(detectedWallets => [...detectedWallets, identifier])
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
window.addEventListener('ttf.crypto.new-wallet', registerDetectedWallet)
|
|
357
|
+
return () => window.removeEventListener('ttf.crypto.new-wallet', registerDetectedWallet)
|
|
358
|
+
}, [])
|
|
327
359
|
|
|
328
360
|
// Get prevProps
|
|
329
361
|
const prevData = useRef(data)
|
|
@@ -399,18 +431,14 @@ export const BillingInfoContainer = React.memo(
|
|
|
399
431
|
const fetchUserData = async (token: string) => {
|
|
400
432
|
try {
|
|
401
433
|
if ((isWindowDefined && token) || isLoggedIn) {
|
|
402
|
-
const userDataResponse = await
|
|
403
|
-
const profileSpecifiedData = _get(userDataResponse, 'data
|
|
434
|
+
const userDataResponse = await loadProfile(token)
|
|
435
|
+
const profileSpecifiedData = _get(userDataResponse, 'data')
|
|
404
436
|
const profileDataObj = setLoggedUserData(profileSpecifiedData)
|
|
405
437
|
setUserValues({
|
|
406
438
|
...profileDataObj,
|
|
407
439
|
firstName: profileDataObj.first_name,
|
|
408
440
|
lastName: profileDataObj.last_name,
|
|
409
441
|
})
|
|
410
|
-
window.localStorage.setItem(
|
|
411
|
-
'user_data',
|
|
412
|
-
JSON.stringify(profileDataObj)
|
|
413
|
-
)
|
|
414
442
|
onGetProfileDataSuccess(userDataResponse.data)
|
|
415
443
|
}
|
|
416
444
|
} catch (e) {
|
|
@@ -500,6 +528,115 @@ export const BillingInfoContainer = React.memo(
|
|
|
500
528
|
localStorage.removeItem('referral_key')
|
|
501
529
|
}
|
|
502
530
|
|
|
531
|
+
const unconnectWalletLoggedIn = async () => {
|
|
532
|
+
await onUnconnectMetamask()
|
|
533
|
+
document?.location?.reload()
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
const connectWalletLoggedIn = async (blockchain: string) => {
|
|
537
|
+
try {
|
|
538
|
+
cryptoWrapper.setBlockchain(blockchain)
|
|
539
|
+
await cryptoWrapper.enable()
|
|
540
|
+
const walletAddress = await cryptoWrapper.getAddress()
|
|
541
|
+
try{
|
|
542
|
+
await cryptoWrapper.getNonceFromAddress(walletAddress)
|
|
543
|
+
const errorMessage = 'This wallet is already connected to an existing account. Please log out of this account and log back in using this wallet.'
|
|
544
|
+
// @ts-ignore
|
|
545
|
+
return setError(errorMessage)
|
|
546
|
+
}
|
|
547
|
+
catch (e) {
|
|
548
|
+
if (e.errorCode === cryptoWrapper.ERRORS.ACCOUNT_NOT_FOUND) {
|
|
549
|
+
const response = await temporalNonce()
|
|
550
|
+
const ethNonce = _get(response, 'data.data.attributes.ethNonce')
|
|
551
|
+
const signature = await cryptoWrapper.getSignature(walletAddress, ethNonce, 'You are connecting your wallet with The Ticket Fairy. Nonce: ')
|
|
552
|
+
await cryptoWrapper.connectAddress(walletAddress, signature)
|
|
553
|
+
const form = new FormData()
|
|
554
|
+
form.append('blockchain', blockchain)
|
|
555
|
+
await onConfirmConnectMetamask(form)
|
|
556
|
+
setTimeout(() => {
|
|
557
|
+
fetchUserData(access_token)
|
|
558
|
+
}, 100)
|
|
559
|
+
setTimeout(() => {
|
|
560
|
+
fetchCart()
|
|
561
|
+
}, 1000)
|
|
562
|
+
} else {
|
|
563
|
+
throw e
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
} catch (e) {
|
|
568
|
+
if (e.errorCode !== cryptoWrapper.ERRORS.CONNECTION_REJECTED &&
|
|
569
|
+
e.errorCode !== cryptoWrapper.ERRORS.SIGNATURE_REJECTED) {
|
|
570
|
+
const errorMessage = 'Something went wrong, Try again later or contact our support team.'
|
|
571
|
+
fetchCart()
|
|
572
|
+
// @ts-ignore
|
|
573
|
+
return setError(errorMessage)
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
const getSignatureNewAccount = async (blockchain: string) => {
|
|
579
|
+
cryptoWrapper.setBlockchain(blockchain)
|
|
580
|
+
await cryptoWrapper.enable()
|
|
581
|
+
const address = await cryptoWrapper.getAddress()
|
|
582
|
+
const ethNonce = cartInfoData?.ethNonce
|
|
583
|
+
const signature = await cryptoWrapper.getSignature(address, ethNonce, 'Welcome to The Ticket Fairy! Nonce: ')
|
|
584
|
+
return { signature, address }
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
const getSignatureConfirmation = async (nonce: string) => {
|
|
588
|
+
const address = await cryptoWrapper.getAddress()
|
|
589
|
+
const message = 'Confirm you are the owner of '+ address + '. Nonce: '
|
|
590
|
+
const signature = await cryptoWrapper.getSignature(address, nonce, message)
|
|
591
|
+
return { signature }
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
const connectWallet = async (blockchain: string) => {
|
|
595
|
+
try {
|
|
596
|
+
cryptoWrapper.setBlockchain(blockchain)
|
|
597
|
+
await cryptoWrapper.enable()
|
|
598
|
+
const walletAddress = await cryptoWrapper.getAddress()
|
|
599
|
+
try {
|
|
600
|
+
const accountNonce = await cryptoWrapper.getNonceFromAddress(walletAddress)
|
|
601
|
+
const signature = await cryptoWrapper.getSignature(walletAddress, accountNonce, 'Welcome back, we missed you! Nonce: ')
|
|
602
|
+
await cryptoWrapper.authAddress(walletAddress, signature)
|
|
603
|
+
try {
|
|
604
|
+
const profileData = await loadProfile(access_token)
|
|
605
|
+
onGetProfileDataSuccess(profileData)
|
|
606
|
+
fetchCart()
|
|
607
|
+
setUserExpired(false)
|
|
608
|
+
if (typeof window !== 'undefined') {
|
|
609
|
+
const event = new window.CustomEvent('tf-login')
|
|
610
|
+
window.document.dispatchEvent(event)
|
|
611
|
+
}
|
|
612
|
+
onLoginSuccess()
|
|
613
|
+
} catch (e) {
|
|
614
|
+
if (axios.isAxiosError(e)) {
|
|
615
|
+
onGetProfileDataError(e)
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
} catch (e) {
|
|
619
|
+
if (e.errorCode === cryptoWrapper.ERRORS.ACCOUNT_NOT_FOUND) {
|
|
620
|
+
const response = await temporalNonce()
|
|
621
|
+
const ethNonce = _get(response, 'data.data.attributes.ethNonce')
|
|
622
|
+
const signature = await cryptoWrapper.getSignature(walletAddress, ethNonce, 'Welcome to The Ticket Fairy! Nonce: ')
|
|
623
|
+
setWalletConnected(true)
|
|
624
|
+
fetchCart()
|
|
625
|
+
// Set crypto information for customer registration
|
|
626
|
+
setCryptoData({ cryptoAddress: walletAddress, cryptoSignature: signature, blockchain })
|
|
627
|
+
} else {
|
|
628
|
+
throw e
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
} catch (e) {
|
|
632
|
+
if (e.errorCode !== cryptoWrapper.ERRORS.CONNECTION_REJECTED &&
|
|
633
|
+
e.errorCode !== cryptoWrapper.ERRORS.SIGNATURE_REJECTED) {
|
|
634
|
+
// @ts-ignore
|
|
635
|
+
return setError('Something went wrong, Try again later or contact our support team.')
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
|
|
503
640
|
if (
|
|
504
641
|
loading ||
|
|
505
642
|
(enableTimer && !expirationTime && typeof window !== 'undefined')
|
|
@@ -510,6 +647,17 @@ export const BillingInfoContainer = React.memo(
|
|
|
510
647
|
}
|
|
511
648
|
}
|
|
512
649
|
|
|
650
|
+
const permittedBlockchains = cartInfoData?.permittedBlockchains
|
|
651
|
+
const isCryptoEvent = !!permittedBlockchains
|
|
652
|
+
|
|
653
|
+
const { selectedBlockchain, linkedAddress, sessionAddress } = returnSelectedBlockchain(permittedBlockchains, detectedWallets)
|
|
654
|
+
|
|
655
|
+
useEffect(() => {
|
|
656
|
+
if (selectedBlockchain) {
|
|
657
|
+
cryptoWrapper && cryptoWrapper.setBlockchain(selectedBlockchain)
|
|
658
|
+
}
|
|
659
|
+
}, [selectedBlockchain])
|
|
660
|
+
|
|
513
661
|
const selectedCountry =
|
|
514
662
|
_find(countries, item => item.code.toLowerCase() === defaultCountry) || {}
|
|
515
663
|
const initialCountry =
|
|
@@ -517,6 +665,9 @@ export const BillingInfoContainer = React.memo(
|
|
|
517
665
|
|
|
518
666
|
usePixel(['checkoutPixels', 'brandCheckoutPixels'], eventId)
|
|
519
667
|
|
|
668
|
+
const walletConnectedInSession = !!sessionAddress
|
|
669
|
+
const walletConnectedToTTFAccount = !!linkedAddress
|
|
670
|
+
|
|
520
671
|
return (
|
|
521
672
|
<ThemeProvider theme={themeMui}>
|
|
522
673
|
{(loading || isCountriesLoading) && (
|
|
@@ -550,7 +701,28 @@ export const BillingInfoContainer = React.memo(
|
|
|
550
701
|
onSubmit={async (values, formikHelpers) => {
|
|
551
702
|
try {
|
|
552
703
|
if (isLoggedIn) {
|
|
553
|
-
const checkoutBody = collectCheckoutBody(values, userData)
|
|
704
|
+
const checkoutBody: any = collectCheckoutBody(values, userData)
|
|
705
|
+
|
|
706
|
+
if (isCryptoEvent) {
|
|
707
|
+
const res = await getCart()
|
|
708
|
+
const cartInfo = _get(res, 'data.data.attributes')
|
|
709
|
+
const { signature, override_crypto_address, usedAddress } = await signSubmit(
|
|
710
|
+
{
|
|
711
|
+
hasAccount: cartInfo?.hasAccount,
|
|
712
|
+
ethNonce: cartInfo?.ethNonce,
|
|
713
|
+
permittedBlockchains: cartInfo?.permittedBlockchains,
|
|
714
|
+
cryptoWrapper,
|
|
715
|
+
selectedBlockchain
|
|
716
|
+
}
|
|
717
|
+
)
|
|
718
|
+
checkoutBody.attributes.blockchain = selectedBlockchain
|
|
719
|
+
if (override_crypto_address) {
|
|
720
|
+
checkoutBody.attributes.crypto_address = usedAddress
|
|
721
|
+
checkoutBody.attributes.crypto_signature = signature
|
|
722
|
+
} else {
|
|
723
|
+
checkoutBody.attributes.crypto_confirmation_signature = signature
|
|
724
|
+
}
|
|
725
|
+
}
|
|
554
726
|
|
|
555
727
|
if (isWindowDefined) {
|
|
556
728
|
addAddOnsInAttributes(checkoutBody)
|
|
@@ -595,11 +767,21 @@ export const BillingInfoContainer = React.memo(
|
|
|
595
767
|
const bodyFormData = createRegisterFormData(
|
|
596
768
|
values,
|
|
597
769
|
checkoutBodyForRegistration,
|
|
598
|
-
flagFreeTicket
|
|
770
|
+
flagFreeTicket,
|
|
771
|
+
cryptoData
|
|
599
772
|
)
|
|
600
773
|
try {
|
|
601
774
|
setLoading(true)
|
|
775
|
+
if (isCryptoEvent) {
|
|
776
|
+
const { signature, address } = await getSignatureNewAccount(selectedBlockchain)
|
|
777
|
+
bodyFormData.append('blockchain', selectedBlockchain)
|
|
778
|
+
bodyFormData.append('crypto_address', address)
|
|
779
|
+
bodyFormData.append('crypto_signature', signature)
|
|
780
|
+
}
|
|
602
781
|
const resRegister = await register(bodyFormData)
|
|
782
|
+
const form = new FormData()
|
|
783
|
+
form.append('blockchain', selectedBlockchain)
|
|
784
|
+
await onConfirmConnectMetamask(form)
|
|
603
785
|
const xtfCookie = _get(resRegister, 'headers.x-tf-ecommerce')
|
|
604
786
|
const accessToken = _get(
|
|
605
787
|
resRegister,
|
|
@@ -662,12 +844,20 @@ export const BillingInfoContainer = React.memo(
|
|
|
662
844
|
)
|
|
663
845
|
}
|
|
664
846
|
|
|
665
|
-
const checkoutBody = collectCheckoutBody(values, profileDataObj)
|
|
847
|
+
const checkoutBody: any = collectCheckoutBody(values, profileDataObj)
|
|
666
848
|
|
|
667
849
|
if (isWindowDefined) {
|
|
668
850
|
addAddOnsInAttributes(checkoutBody)
|
|
669
851
|
}
|
|
670
852
|
|
|
853
|
+
if (isCryptoEvent) {
|
|
854
|
+
const res = await getCart()
|
|
855
|
+
const cartInfo = _get(res, 'data.data.attributes')
|
|
856
|
+
const { signature } = await getSignatureConfirmation(cartInfo?.ethNonce)
|
|
857
|
+
checkoutBody.attributes.blockchain = selectedBlockchain
|
|
858
|
+
checkoutBody.attributes.crypto_confirmation_signature = signature
|
|
859
|
+
}
|
|
860
|
+
|
|
671
861
|
const res = await postOnCheckout(
|
|
672
862
|
checkoutBody,
|
|
673
863
|
undefined,
|
|
@@ -770,6 +960,76 @@ export const BillingInfoContainer = React.memo(
|
|
|
770
960
|
</div>
|
|
771
961
|
</div>
|
|
772
962
|
)}
|
|
963
|
+
{
|
|
964
|
+
(
|
|
965
|
+
isCryptoEvent &&
|
|
966
|
+
isLoggedIn &&
|
|
967
|
+
!walletConnectedInSession &&
|
|
968
|
+
!walletConnectedToTTFAccount
|
|
969
|
+
) ? (
|
|
970
|
+
<div className="crypto-actions-block">
|
|
971
|
+
<div className="action-item">
|
|
972
|
+
<div>
|
|
973
|
+
Connect your wallet and skip setting up a password and log in with your wallet next time
|
|
974
|
+
</div>
|
|
975
|
+
</div>
|
|
976
|
+
{_map(detectedWallets, wallet => (
|
|
977
|
+
<div className="action-item login-block" key={wallet}>
|
|
978
|
+
<button
|
|
979
|
+
className="login-register-button"
|
|
980
|
+
type="button"
|
|
981
|
+
onClick={() => {
|
|
982
|
+
if (isLoggedIn) {
|
|
983
|
+
connectWalletLoggedIn(wallet)
|
|
984
|
+
} else {
|
|
985
|
+
connectWallet(wallet)
|
|
986
|
+
}
|
|
987
|
+
}}>
|
|
988
|
+
Connect with {getWalletName(wallet)}
|
|
989
|
+
</button>
|
|
990
|
+
</div>
|
|
991
|
+
))}
|
|
992
|
+
</div>
|
|
993
|
+
)
|
|
994
|
+
: null
|
|
995
|
+
}
|
|
996
|
+
{
|
|
997
|
+
walletConnected && (
|
|
998
|
+
<div className="action-item">
|
|
999
|
+
<div>
|
|
1000
|
+
Wallet connected.
|
|
1001
|
+
</div>
|
|
1002
|
+
</div>
|
|
1003
|
+
)
|
|
1004
|
+
}
|
|
1005
|
+
{
|
|
1006
|
+
isCryptoEvent && isLoggedIn && walletConnectedInSession && !walletConnectedToTTFAccount
|
|
1007
|
+
? (
|
|
1008
|
+
<div className='warning-connect-wallet'>
|
|
1009
|
+
<div className='text-connect-wallet'>
|
|
1010
|
+
You are logged into an existing TICKETFAIRY account that does not have a
|
|
1011
|
+
wallet connected. Connect this wallet to your account? This will become your primary login wallet
|
|
1012
|
+
</div>
|
|
1013
|
+
<button
|
|
1014
|
+
className="connect-wallet-button"
|
|
1015
|
+
type="button"
|
|
1016
|
+
onClick={() => {
|
|
1017
|
+
connectWalletLoggedIn(selectedBlockchain)
|
|
1018
|
+
}}
|
|
1019
|
+
>
|
|
1020
|
+
Confirm wallet
|
|
1021
|
+
</button>
|
|
1022
|
+
<button
|
|
1023
|
+
className="unconnect-wallet-button"
|
|
1024
|
+
type="button"
|
|
1025
|
+
onClick={unconnectWalletLoggedIn}
|
|
1026
|
+
>
|
|
1027
|
+
Change wallet
|
|
1028
|
+
</button>
|
|
1029
|
+
</div>
|
|
1030
|
+
)
|
|
1031
|
+
: null
|
|
1032
|
+
}
|
|
773
1033
|
{_map(dataWithUniqueIds, item => {
|
|
774
1034
|
const { label, labelClassName, fields } = item
|
|
775
1035
|
return (
|
|
@@ -833,7 +1093,7 @@ export const BillingInfoContainer = React.memo(
|
|
|
833
1093
|
'confirmPassword',
|
|
834
1094
|
'password-info',
|
|
835
1095
|
].includes(element.name) &&
|
|
836
|
-
isLoggedIn ? null : [
|
|
1096
|
+
(isLoggedIn || (walletConnectedToTTFAccount || walletConnectedInSession)) ? null : [
|
|
837
1097
|
'data_capture[wallet_address]',
|
|
838
1098
|
].includes(element.name) &&
|
|
839
1099
|
hideWalletAddressField ? null : (
|