mirror of
https://github.com/neynarxyz/create-farcaster-mini-app.git
synced 2025-12-08 10:22:31 -05:00
refactor: restructure for better ai comprehension
This commit is contained in:
38
src/hooks/useNeynarUser.ts
Normal file
38
src/hooks/useNeynarUser.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
export interface NeynarUser {
|
||||
fid: number;
|
||||
score: number;
|
||||
}
|
||||
|
||||
export function useNeynarUser(context?: { user?: { fid?: number } }) {
|
||||
const [user, setUser] = useState<NeynarUser | null>(null);
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [error, setError] = useState<string | null>(null);
|
||||
|
||||
useEffect(() => {
|
||||
if (!context?.user?.fid) {
|
||||
setUser(null);
|
||||
setError(null);
|
||||
return;
|
||||
}
|
||||
setLoading(true);
|
||||
setError(null);
|
||||
fetch(`/api/users?fids=${context.user.fid}`)
|
||||
.then((response) => {
|
||||
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
|
||||
return response.json();
|
||||
})
|
||||
.then((data) => {
|
||||
if (data.users?.[0]) {
|
||||
setUser(data.users[0]);
|
||||
} else {
|
||||
setUser(null);
|
||||
}
|
||||
})
|
||||
.catch((err) => setError(err.message))
|
||||
.finally(() => setLoading(false));
|
||||
}, [context?.user?.fid]);
|
||||
|
||||
return { user, loading, error };
|
||||
}
|
||||
Reference in New Issue
Block a user