Compare commits

...

29 Commits

Author SHA1 Message Date
Shreyaschorge
bf563154ca Fix merge conflict issues 2025-07-16 17:50:03 +05:30
Shreyaschorge
196378daeb Revert "format"
This reverts commit 5fbd9c5c09.
2025-07-16 17:33:02 +05:30
Shreyaschorge
89f82253ca Revert "feat: replace next-auth with quick auth"
This reverts commit 86029b2bd9.
2025-07-16 17:32:21 +05:30
Shreyaschorge
c786cabe84 Revert "fix: add back auth-kit"
This reverts commit 16c433a13c.
2025-07-16 17:31:34 +05:30
Shreyaschorge
760efdb96b Revert "format"
This reverts commit 378ea65154.
2025-07-16 17:30:47 +05:30
Shreyaschorge
5fd0e21532 Revert "fix: SIWN dependencies"
This reverts commit 4ba9480832.
2025-07-16 17:28:36 +05:30
Shreyaschorge
0d43b35c28 Revert "Merge pull request #15 from neynarxyz/shreyas-formatting"
This reverts commit b1fdfc19a9, reversing
changes made to b9e2087bd8.
2025-07-16 17:21:12 +05:30
Shreyaschorge
349cdea489 Revert "Merge pull request #18 from neynarxyz/veganbeef/fix-siwn"
This reverts commit 78626c2dc7, reversing
changes made to b1fdfc19a9.
2025-07-16 17:20:36 +05:30
veganbeef
181c364de4 fix: sponsor signer env var 2025-07-15 13:08:55 -07:00
Lucas Myers
78626c2dc7 Merge pull request #18 from neynarxyz/veganbeef/fix-siwn
fix: add back auth-kit
2025-07-15 09:34:40 -07:00
veganbeef
b72198575a Merge branch 'main' into veganbeef/fix-siwn 2025-07-15 09:29:35 -07:00
Lucas Myers
b1fdfc19a9 Merge pull request #15 from neynarxyz/shreyas-formatting
Formatting
2025-07-15 09:25:35 -07:00
veganbeef
4ba9480832 fix: SIWN dependencies 2025-07-15 09:25:08 -07:00
Shreyaschorge
378ea65154 format 2025-07-15 21:38:47 +05:30
Shreyaschorge
b366d97b53 Merge branch 'main' into shreyas-formatting 2025-07-15 21:35:11 +05:30
veganbeef
16c433a13c fix: add back auth-kit 2025-07-14 13:24:55 -07:00
veganbeef
b9e2087bd8 fix: remove duplicate app directory 2025-07-14 13:12:47 -07:00
veganbeef
86029b2bd9 feat: replace next-auth with quick auth 2025-07-14 13:01:46 -07:00
Shreyaschorge
5fbd9c5c09 format 2025-07-15 01:00:59 +05:30
Shreyaschorge
3815f45b44 Merge branch 'main' into shreyas-formatting 2025-07-15 00:00:11 +05:30
Shreyaschorge
c713d53054 Merge pull request #17 from neynarxyz/shreyas/show-modal-on-top
Show Dialog on top to show I am using my phone button
2025-07-14 23:51:52 +05:30
Shreyaschorge
00fdd21044 remove unnecessary rules 2025-07-14 21:52:14 +05:30
Shreyaschorge
8475b28107 remove console logs 2025-07-14 20:51:03 +05:30
Shreyaschorge
e74b2581df Format after fixing conflicts 2025-07-14 20:04:44 +05:30
Shreyaschorge
505aa54b16 Merge branch 'main' into shreyas-formatting 2025-07-14 18:55:06 +05:30
Shreyaschorge
65419a76ee Remove unnecessary file 2025-07-08 00:48:13 +05:30
Shreyaschorge
6b0350d477 Remove AI generated docs 2025-07-07 16:12:17 +05:30
Shreyaschorge
2a1a3d7c40 Correct formating imports 2025-07-07 16:07:33 +05:30
Shreyaschorge
193dffe03a formatting 2025-07-07 14:10:47 +05:30
3 changed files with 34 additions and 29 deletions

View File

@@ -890,4 +890,4 @@ async function main(): Promise<void> {
} }
} }
main(); main();

View File

@@ -308,7 +308,7 @@ export function NeynarAuthButton() {
setPollingInterval(null); setPollingInterval(null);
return; return;
} }
try { try {
const response = await fetch( const response = await fetch(
`/api/auth/signer?signerUuid=${signerUuid}` `/api/auth/signer?signerUuid=${signerUuid}`
@@ -321,7 +321,7 @@ export function NeynarAuthButton() {
setPollingInterval(null); setPollingInterval(null);
return; return;
} }
// Increment retry count for other errors // Increment retry count for other errors
retryCount++; retryCount++;
if (retryCount >= maxRetries) { if (retryCount >= maxRetries) {
@@ -329,7 +329,7 @@ export function NeynarAuthButton() {
setPollingInterval(null); setPollingInterval(null);
return; return;
} }
throw new Error(`Failed to poll signer status: ${response.status}`); throw new Error(`Failed to poll signer status: ${response.status}`);
} }
@@ -443,7 +443,7 @@ export function NeynarAuthButton() {
useEffect(() => { useEffect(() => {
setMessage(data?.message || null); setMessage(data?.message || null);
setSignature(data?.signature || null); setSignature(data?.signature || null);
// Reset the signer flow flag when message/signature change // Reset the signer flow flag when message/signature change
if (data?.message && data?.signature) { if (data?.message && data?.signature) {
signerFlowStartedRef.current = false; signerFlowStartedRef.current = false;
@@ -459,9 +459,14 @@ export function NeynarAuthButton() {
// Handle fetching signers after successful authentication // Handle fetching signers after successful authentication
useEffect(() => { useEffect(() => {
if (message && signature && !isSignerFlowRunning && !signerFlowStartedRef.current) { if (
message &&
signature &&
!isSignerFlowRunning &&
!signerFlowStartedRef.current
) {
signerFlowStartedRef.current = true; signerFlowStartedRef.current = true;
const handleSignerFlow = async () => { const handleSignerFlow = async () => {
setIsSignerFlowRunning(true); setIsSignerFlowRunning(true);
try { try {
@@ -479,7 +484,7 @@ export function NeynarAuthButton() {
// First, fetch existing signers // First, fetch existing signers
const signers = await fetchAllSigners(message, signature); const signers = await fetchAllSigners(message, signature);
if (useBackendFlow && isMobileContext) setSignersLoading(true); if (useBackendFlow && isMobileContext) setSignersLoading(true);
// Check if no signers exist or if we have empty signers // Check if no signers exist or if we have empty signers
@@ -604,7 +609,7 @@ export function NeynarAuthButton() {
clearInterval(pollingInterval); clearInterval(pollingInterval);
setPollingInterval(null); setPollingInterval(null);
} }
// Reset signer flow flag // Reset signer flow flag
signerFlowStartedRef.current = false; signerFlowStartedRef.current = false;
} catch (error) { } catch (error) {

View File

@@ -1,12 +1,12 @@
'use client'; 'use client';
import { useCallback, useState } from "react"; import { useCallback, useState } from 'react';
import { useMiniApp } from "@neynar/react"; import { useMiniApp } from '@neynar/react';
import { ShareButton } from "../Share"; import { ShareButton } from '../Share';
import { Button } from "../Button"; import { Button } from '../Button';
import { SignIn } from "../wallet/SignIn"; import { SignIn } from '../wallet/SignIn';
import { type Haptics } from "@farcaster/miniapp-sdk"; import { type Haptics } from '@farcaster/miniapp-sdk';
import { APP_URL } from "~/lib/constants"; import { APP_URL } from '~/lib/constants';
import { NeynarAuthButton } from '../NeynarAuthButton/index'; import { NeynarAuthButton } from '../NeynarAuthButton/index';
/** /**
@@ -124,16 +124,16 @@ export function ActionsTab() {
// --- Render --- // --- Render ---
return ( return (
<div className='space-y-3 px-6 w-full max-w-md mx-auto'> <div className="space-y-3 px-6 w-full max-w-md mx-auto">
{/* Share functionality */} {/* Share functionality */}
<ShareButton <ShareButton
buttonText='Share Mini App' buttonText="Share Mini App"
cast={{ cast={{
text: 'Check out this awesome frame @1 @2 @3! 🚀🪐', text: 'Check out this awesome frame @1 @2 @3! 🚀🪐',
bestFriends: true, bestFriends: true,
embeds: [`${APP_URL}/share/${context?.user?.fid || ''}`] embeds: [`${APP_URL}/share/${context?.user?.fid || ''}`],
}} }}
className='w-full' className="w-full"
/> />
{/* Authentication */} {/* Authentication */}
@@ -147,25 +147,25 @@ export function ActionsTab() {
onClick={() => onClick={() =>
actions.openUrl('https://www.youtube.com/watch?v=dQw4w9WgXcQ') actions.openUrl('https://www.youtube.com/watch?v=dQw4w9WgXcQ')
} }
className='w-full' className="w-full"
> >
Open Link Open Link
</Button> </Button>
<Button onClick={actions.addMiniApp} disabled={added} className='w-full'> <Button onClick={actions.addMiniApp} disabled={added} className="w-full">
Add Mini App to Client Add Mini App to Client
</Button> </Button>
{/* Notification functionality */} {/* Notification functionality */}
{notificationState.sendStatus && ( {notificationState.sendStatus && (
<div className='text-sm w-full'> <div className="text-sm w-full">
Send notification result: {notificationState.sendStatus} Send notification result: {notificationState.sendStatus}
</div> </div>
)} )}
<Button <Button
onClick={sendFarcasterNotification} onClick={sendFarcasterNotification}
disabled={!notificationDetails} disabled={!notificationDetails}
className='w-full' className="w-full"
> >
Send notification Send notification
</Button> </Button>
@@ -174,14 +174,14 @@ export function ActionsTab() {
<Button <Button
onClick={copyUserShareUrl} onClick={copyUserShareUrl}
disabled={!context?.user?.fid} disabled={!context?.user?.fid}
className='w-full' className="w-full"
> >
{notificationState.shareUrlCopied ? 'Copied!' : 'Copy share URL'} {notificationState.shareUrlCopied ? 'Copied!' : 'Copy share URL'}
</Button> </Button>
{/* Haptic feedback controls */} {/* Haptic feedback controls */}
<div className='space-y-2'> <div className="space-y-2">
<label className='block text-sm font-medium text-gray-700 dark:text-gray-300'> <label className="block text-sm font-medium text-gray-700 dark:text-gray-300">
Haptic Intensity Haptic Intensity
</label> </label>
<select <select
@@ -191,7 +191,7 @@ export function ActionsTab() {
e.target.value as Haptics.ImpactOccurredType e.target.value as Haptics.ImpactOccurredType
) )
} }
className='w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-primary' className="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-primary"
> >
<option value={'light'}>Light</option> <option value={'light'}>Light</option>
<option value={'medium'}>Medium</option> <option value={'medium'}>Medium</option>
@@ -199,7 +199,7 @@ export function ActionsTab() {
<option value={'soft'}>Soft</option> <option value={'soft'}>Soft</option>
<option value={'rigid'}>Rigid</option> <option value={'rigid'}>Rigid</option>
</select> </select>
<Button onClick={triggerHapticFeedback} className='w-full'> <Button onClick={triggerHapticFeedback} className="w-full">
Trigger Haptic Feedback Trigger Haptic Feedback
</Button> </Button>
</div> </div>