Join page: silent wallet auto-detect on load (eth_accounts, no prompts) + Trust deep link coin_id=966 so it opens the join page, not the site root
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+38
-9
@@ -78,14 +78,8 @@
|
||||
}catch(e){ log('Could not open MoonPay: '+(e.message||e),'err'); }
|
||||
}
|
||||
|
||||
async function connect(){
|
||||
try{
|
||||
eth=await window.RMCWallet.pick();
|
||||
if(!eth){ showWalletHelp(); log('No wallet detected in this browser. On a phone, use the "Open in your wallet" buttons above — on a computer, install/unlock MetaMask and refresh.','err'); return; }
|
||||
attachWalletEvents();
|
||||
log('Requesting wallet connection…');
|
||||
var accs=await req('eth_requestAccounts'); account=accs[0];
|
||||
await ensurePolygon(); await loadCosts();
|
||||
async function finishConnect(){
|
||||
await loadCosts();
|
||||
$('wallet').textContent=account.slice(0,6)+'…'+account.slice(-4);
|
||||
$('connected').style.display='block'; $('connectBtn').style.display='none';
|
||||
await refreshBalance();
|
||||
@@ -93,9 +87,43 @@
|
||||
var pos=await readPosition(account);
|
||||
if(pos){ $('already').style.display='block'; $('already').innerHTML='This wallet already holds position — <a href="/my">open your dashboard</a>. To create a <em>new</em> position, connect a different wallet.'; $('joinBtn').disabled=true; }
|
||||
$('joinBox').style.display='block';
|
||||
}
|
||||
async function connect(){
|
||||
try{
|
||||
eth=await window.RMCWallet.pick();
|
||||
if(!eth){ showWalletHelp(); log('No wallet detected in this browser. On a phone, use the "Open in your wallet" buttons above — on a computer, install/unlock MetaMask and refresh.','err'); return; }
|
||||
attachWalletEvents();
|
||||
log('Requesting wallet connection…');
|
||||
var accs=await req('eth_requestAccounts'); account=accs[0];
|
||||
await ensurePolygon();
|
||||
await finishConnect();
|
||||
log('Connected. Review the amount, then Join.','ok');
|
||||
}catch(e){ log('Connect failed: '+(e.message||e),'err'); }
|
||||
}
|
||||
// Inside a wallet's in-app browser the wallet is often ALREADY connected —
|
||||
// recognize it silently on load (eth_accounts never prompts) instead of
|
||||
// greeting a connected user like a stranger. Skipped when multiple wallets
|
||||
// are injected (desktop) so no picker UI ever pops uninvited.
|
||||
async function autoDetect(){
|
||||
try{
|
||||
var list=window.RMCWallet.list();
|
||||
var p=list.length===1?list[0].provider:(list.length===0?window.ethereum:null);
|
||||
if(!p) return;
|
||||
eth=p; attachWalletEvents();
|
||||
var accs=await req('eth_accounts',[]);
|
||||
if(!accs||!accs.length){ log('✅ Wallet detected in this browser — tap "Connect wallet" to continue.','ok'); return; }
|
||||
account=accs[0];
|
||||
var cid=await req('eth_chainId');
|
||||
if(cid===POLYGON_HEX){
|
||||
await finishConnect();
|
||||
log('✅ Already connected as '+account.slice(0,6)+'…'+account.slice(-4)+'. Review the amount, then Join.','ok');
|
||||
}else{
|
||||
$('wallet').textContent=account.slice(0,6)+'…'+account.slice(-4);
|
||||
$('connected').style.display='block';
|
||||
log('Wallet connected ('+account.slice(0,6)+'…'+account.slice(-4)+') but on another network — tap "Connect wallet" to switch to Polygon and continue.','ok');
|
||||
}
|
||||
}catch(e){}
|
||||
}
|
||||
|
||||
async function doJoin(){
|
||||
try{
|
||||
@@ -150,7 +178,7 @@
|
||||
var box=$('walletHelp'); if(!box) return;
|
||||
var here=location.host+location.pathname+location.search;
|
||||
var mm=$('mmDeep'); if(mm) mm.href='https://metamask.app.link/dapp/'+here;
|
||||
var tw=$('twDeep'); if(tw) tw.href='https://link.trustwallet.com/open_url?url='+encodeURIComponent(location.href);
|
||||
var tw=$('twDeep'); if(tw) tw.href='https://link.trustwallet.com/open_url?coin_id=966&url='+encodeURIComponent(location.href);
|
||||
box.style.display='block';
|
||||
}
|
||||
|
||||
@@ -165,5 +193,6 @@
|
||||
$('joinBtn').addEventListener('click',doJoin);
|
||||
var fb=$('fundBtn'); if(fb)fb.addEventListener('click',openMoonpay);
|
||||
var fr=$('fundRefresh'); if(fr)fr.addEventListener('click',function(){ log('Checking your balance…'); refreshBalance(); });
|
||||
setTimeout(autoDetect,350); // let EIP-6963 announcements land first
|
||||
});
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user