Keep track of API usage in user accounts, improve approval mechanism (#95)

This commit is contained in:
Brian Hackett
2025-04-04 14:40:10 -07:00
committed by GitHub
parent 4f5051dee5
commit 9389fb2afc
11 changed files with 190 additions and 120 deletions

View File

@@ -11,6 +11,7 @@ export function ClientAuth() {
const [password, setPassword] = useState('');
const [isSigningIn, setIsSigningIn] = useState(false);
const [showDropdown, setShowDropdown] = useState(false);
const [usageData, setUsageData] = useState<{ peanuts_used: number; peanuts_refunded: number } | null>(null);
useEffect(() => {
async function getUser() {
@@ -37,6 +38,30 @@ export function ClientAuth() {
};
}, []);
useEffect(() => {
async function updateUsageData() {
try {
const { data, error } = await getSupabase()
.from('profiles')
.select('peanuts_used, peanuts_refunded')
.eq('id', user?.id)
.single();
if (error) {
throw error;
}
setUsageData(data);
} catch (error) {
console.error('Error fetching usage data:', error);
}
}
if (showDropdown) {
updateUsageData();
}
}, [showDropdown]);
const handleSignIn = async (e: React.FormEvent) => {
e.preventDefault();
setIsSigningIn(true);
@@ -119,10 +144,16 @@ export function ClientAuth() {
</button>
{showDropdown && (
<div className="absolute right-0 mt-2 py-2 bg-bolt-elements-background-depth-1 border border-bolt-elements-borderColor rounded shadow-lg z-10">
<div className="absolute right-0 mt-2 py-2 whitespace-nowrap bg-bolt-elements-background-depth-1 border border-bolt-elements-borderColor rounded shadow-lg z-10">
<div className="px-4 py-2 text-bolt-elements-textPrimary border-b border-bolt-elements-borderColor">
{user.email}
</div>
<div className="px-4 py-2 text-bolt-elements-textPrimary border-b border-bolt-elements-borderColor">
{`Peanuts used: ${usageData?.peanuts_used ?? '...'}`}
</div>
<div className="px-4 py-2 text-bolt-elements-textPrimary border-b border-bolt-elements-borderColor">
{`Peanuts refunded: ${usageData?.peanuts_refunded ?? '...'}`}
</div>
<button
onClick={handleSignOut}
className="block w-full text-left px-4 py-2 text-bolt-elements-textPrimary hover:bg-bolt-elements-background-depth-2"