@@ -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