Skip to content

Commit ae1306d

Browse files
author
CloudLobster
committed
fix: claim page - use button for SIWE sign instead of auto-trigger
Mobile wallets block signMessage from non-user-initiated events. Now shows 'Sign to Authenticate' button that user taps.
1 parent c0ebbea commit ae1306d

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

web/src/pages/Claim.tsx

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export default function Claim() {
3030
const [token, setToken] = useState('');
3131
const [handle, setHandle] = useState('');
3232
const [needsRegister, setNeedsRegister] = useState(false);
33+
const [needsSign, setNeedsSign] = useState(false);
3334
const [regHandle, setRegHandle] = useState('');
3435
const [regError, setRegError] = useState('');
3536

@@ -61,10 +62,10 @@ export default function Claim() {
6162
.then(r => r.json())
6263
.then(data => {
6364
if (data.registered && data.handle) {
64-
// Has account — need to authenticate via SIWE
65+
// Has account — show sign button (can't auto-sign on mobile)
6566
setNeedsRegister(false);
6667
setHandle(data.handle);
67-
authenticateWallet(address);
68+
setNeedsSign(true);
6869
} else {
6970
setNeedsRegister(true);
7071
setHandle('');
@@ -278,10 +279,24 @@ export default function Claim() {
278279
Create Account & Claim
279280
</button>
280281
</div>
282+
) : needsSign ? (
283+
/* Step 2b: Sign to authenticate */
284+
<div>
285+
<p className="text-gray-400 text-sm mb-3">
286+
Welcome back, <span className="text-white font-mono">{handle}@basemail.ai</span>
287+
</p>
288+
<button
289+
onClick={() => { setNeedsSign(false); authenticateWallet(address!); }}
290+
className="w-full bg-purple-600 text-white py-3 rounded-lg font-medium hover:bg-purple-500 transition"
291+
>
292+
✍️ Sign to Authenticate
293+
</button>
294+
{claimError && <p className="text-red-400 text-sm mt-3">{claimError}</p>}
295+
</div>
281296
) : !token ? (
282-
/* Step 2b: Authenticating */
297+
/* Step 2c: Waiting for signature */
283298
<div className="text-center text-gray-400 py-4 animate-pulse">
284-
Sign the message in your wallet to authenticate...
299+
Waiting for signature...
285300
</div>
286301
) : (
287302
/* Step 3: Claim */

0 commit comments

Comments
 (0)