|
210 | 210 | margin-right: 5px; |
211 | 211 | } |
212 | 212 | .user-account .status { |
| 213 | + display: flex; |
213 | 214 | padding: 3px 6px; |
214 | | - background-color: #5c6bc0; |
215 | 215 | border-radius: 8px; |
216 | 216 | color: #FFF; |
| 217 | + align-items: center; |
| 218 | +} |
| 219 | +.user-account .status:not(.open) { |
| 220 | + display: none; |
| 221 | +} |
| 222 | +.user-account .status.not-connected { |
| 223 | + background-color: #5c6bc0; |
| 224 | +} |
| 225 | +.user-account .status.connected { |
| 226 | + background-color: #66bb6a; |
| 227 | +} |
| 228 | +.user-account .status nav { |
| 229 | + display: flex; |
| 230 | + width: 16px; |
| 231 | + height: 16px; |
| 232 | + margin-left: 5px; |
| 233 | + /* background-color: #ef534e; */ |
| 234 | + justify-content: center; |
| 235 | + align-items: center; |
| 236 | + cursor: pointer; |
| 237 | +} |
| 238 | +.user-account .status i { |
| 239 | + |
217 | 240 | } |
218 | 241 | .user-account input[type=text] { |
219 | 242 | width: 300px; |
@@ -579,7 +602,8 @@ <h1 id=login-name-static></h1> |
579 | 602 | </div> |
580 | 603 | <div class=row> |
581 | 604 | <div class=text>Stripe status:</div> |
582 | | - <div class=status>Not connected</div> |
| 605 | + <div class="status not-connected" id=status-not-connected>Not connected</div> |
| 606 | + <div class="status connected" id=status-connected>Connected <nav id=disconnect-stripe-button><i class="fal fa-times"></i></nav></div> |
583 | 607 | <input type=button value="Connect Stripe" id=connect-stripe-button> |
584 | 608 | </div> |
585 | 609 | </div> |
@@ -637,6 +661,13 @@ <h3>This beta requires login.<br>Get an invite in <a href="https://discordapp.co |
637 | 661 |
|
638 | 662 | loginNameStatic.innerText = loginToken.name; |
639 | 663 | loginEmailStatic.innerText = loginToken.email; |
| 664 | + if (loginToken.stripeState) { |
| 665 | + statusConnected.classList.add('open'); |
| 666 | + statusNotConnected.classList.remove('open'); |
| 667 | + } else { |
| 668 | + statusNotConnected.classList.add('open'); |
| 669 | + statusConnected.classList.remove('open'); |
| 670 | + } |
640 | 671 |
|
641 | 672 | document.body.classList.add('logged-in'); |
642 | 673 | loginForm.classList.remove('phase-1'); |
@@ -743,12 +774,19 @@ <h3>This beta requires login.<br>Get an invite in <a href="https://discordapp.co |
743 | 774 | method: 'POST', |
744 | 775 | }) |
745 | 776 | if (res.status >= 200 && res.status < 300) { |
746 | | - res.json(); |
| 777 | + loginToken = await res.json(); |
747 | 778 |
|
748 | | - loginToken = localLoginToken; |
| 779 | + await storage.set('loginToken', loginToken); |
749 | 780 |
|
750 | 781 | loginNameStatic.innerText = loginToken.name; |
751 | 782 | loginEmailStatic.innerText = loginToken.email; |
| 783 | + if (loginToken.stripeState) { |
| 784 | + statusConnected.classList.add('open'); |
| 785 | + statusNotConnected.classList.remove('open'); |
| 786 | + } else { |
| 787 | + statusNotConnected.classList.add('open'); |
| 788 | + statusConnected.classList.remove('open'); |
| 789 | + } |
752 | 790 |
|
753 | 791 | ga('create', 'UA-147624282-1', { |
754 | 792 | 'clientId': loginToken.email, |
@@ -823,6 +861,8 @@ <h3>This beta requires login.<br>Get an invite in <a href="https://discordapp.co |
823 | 861 | const loginEmail = document.getElementById('login-email'); |
824 | 862 | const loginNameStatic = document.getElementById('login-name-static'); |
825 | 863 | const loginEmailStatic = document.getElementById('login-email-static'); |
| 864 | +const statusNotConnected = document.getElementById('status-not-connected'); |
| 865 | +const statusConnected = document.getElementById('status-connected'); |
826 | 866 | const loginVerificationCode = document.getElementById('login-verification-code'); |
827 | 867 | const loginNotice = document.getElementById('login-notice'); |
828 | 868 | const loginError = document.getElementById('login-error'); |
@@ -1104,7 +1144,23 @@ <h3> |
1104 | 1144 | }); |
1105 | 1145 | const connectStripeButton = document.getElementById('connect-stripe-button'); |
1106 | 1146 | connectStripeButton.addEventListener('click', () => { |
1107 | | - window.location.href = `https://payments.exokit.org/authorize?email=${encodeURIComponent(loginToken.email)}&token=${encodeURIComponent(loginToken.token)}`; |
| 1147 | + window.location.href = `https://payments.exokit.org/authorize?email=${encodeURIComponent(loginToken.email)}&token=${encodeURIComponent(loginToken.token)}&redirectUrl=${window.location.href}`; |
| 1148 | +}); |
| 1149 | +const disconnectStripeButton = document.getElementById('disconnect-stripe-button'); |
| 1150 | +disconnectStripeButton.addEventListener('click', () => { |
| 1151 | + const {email, token} = loginToken; |
| 1152 | + fetch(`https://payments.exokit.org/untoken?email=${encodeURIComponent(email)}&token=${encodeURIComponent(token)}`) |
| 1153 | + .then(async res => { |
| 1154 | + if (res.status >= 200 && res.status < 300) { |
| 1155 | + loginToken.stripeState = false; |
| 1156 | + statusNotConnected.classList.add('open'); |
| 1157 | + statusConnected.classList.remove('open'); |
| 1158 | + |
| 1159 | + await storage.set('loginToken', loginToken); |
| 1160 | + } else { |
| 1161 | + console.warn('invalid status code', res.status); |
| 1162 | + } |
| 1163 | + }); |
1108 | 1164 | }); |
1109 | 1165 |
|
1110 | 1166 | const userButton = document.getElementById('user-button'); |
|
0 commit comments