diff --git a/public/assets/wallets.js b/public/assets/wallets.js index 13ec140..c213999 100644 --- a/public/assets/wallets.js +++ b/public/assets/wallets.js @@ -6,4 +6,18 @@ const signedIn = !!(me && me.signedIn && me.email); document.getElementById('gate').style.display = signedIn ? 'none' : 'block'; document.getElementById('body').style.display = signedIn ? 'block' : 'none'; + if (!signedIn) return; + // MoonPay: same signed link the Buy pane uses, prefilled with this member's wallet when one is linked + const mb = document.getElementById('wlMoonpay'), note = document.getElementById('wlMoonpayNote'); + if (note && !me.address) note.textContent = 'Link your wallet first (Wallet tab) and MoonPay opens with your address already filled in. Without it you paste the address yourself.'; + if (mb) mb.addEventListener('click', async () => { + let pol = 30; + try { const { products } = await (await fetch('/api/catalog')).json(); const p20 = (products || []).find(p => p.priceCents === 2000); if (p20 && p20.costWei) pol = Math.max(30, Math.ceil(Number(p20.costWei) / 1e18) + 3); } catch (e) {} + try { + const r = await (await fetch('/api/moonpay-url?pol=' + pol + (me.address ? '&address=' + encodeURIComponent(me.address) : ''))).json(); + if (!r.url) throw new Error('no url'); + window.open(r.url, '_blank', 'noopener'); + IAP.status(r.signed ? 'MoonPay opened with your wallet address pre-filled. Choose the amount, pay, and the POL lands in your wallet.' : 'MoonPay opened. Choose POL on the Polygon network and paste your own wallet address as the destination.', 'ok'); + } catch (e) { IAP.status('Could not open MoonPay. Try again in a minute.', 'bad'); } + }); })(); diff --git a/public/wallets.html b/public/wallets.html index 2a38b54..ad7138d 100644 --- a/public/wallets.html +++ b/public/wallets.html @@ -23,6 +23,8 @@ .steps li{counter-increment:s;position:relative;padding:0 0 16px 46px;font-size:15px;line-height:1.5} .steps li::before{content:counter(s);position:absolute;left:0;top:0;width:32px;height:32px;border-radius:50%;background:rgba(67,232,195,.12);border:1px solid rgba(67,232,195,.45);color:var(--mint);font-family:var(--disp);font-weight:800;display:flex;align-items:center;justify-content:center;font-size:14px} .steps li b{color:var(--ink)} + .wl-links{margin:10px 0 0;display:flex;gap:6px;flex-wrap:wrap} + .wl-links .btn{margin-top:0} .note{background:rgba(4,8,7,.45);border:1px solid var(--line);border-radius:10px;padding:12px 16px;font-size:14px;color:var(--muted);margin:0 0 12px} .note b{color:var(--ink)} h2{margin:34px 0 10px;font-size:26px} @@ -53,22 +55,27 @@
Browser extension on desktop, app on phone. The one to use for Qualified Start, because it lets you add extra accounts under the same wallet, one per position. Connects directly on desktop and through WalletConnect on mobile.
+Clean phone and desktop apps, Polygon supported. No purchase-size block. Good choice if you are new and only ever plan to run one position.
+Phone app with a built-in card purchase option for POL. Connects through WalletConnect. Works well for members who do everything on a phone.
+The self-custody wallet from Coinbase, not the exchange account. Handy if you already buy crypto on Coinbase: buy POL there and send it to this wallet on the Polygon network.
+Trust Wallet blocks any purchase that would spend most of the POL in the wallet. You see a red "this transaction will drain your wallet" screen with no way past it. If you use Trust, keep about twice the package cost in POL, or buy a smaller package first. The extra POL stays yours. If a blocked attempt leaves the connection dead, open Wallet, tap Disconnect, then Connect again.
+MoonPay is a licensed card-to-crypto service. You pay them, they send POL to your wallet. InstantAdPay is never in the middle of that payment.
+Opens in a new tab with POL on Polygon selected.