|
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