feat: zap the winner button with lightning animation

Add ZAP WINNER button in FightViewer after fight ends. Server endpoint
POST /api/payments/zap increments zapsReceived on winner bot. Show zap
count on bot profile page. Add zaps_received column with migration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-08 20:10:46 +00:00
co-authored by Claude Opus 4.6
parent d1fe4d6e83
commit d22d739666
6 changed files with 92 additions and 1 deletions
+6 -1
View File
@@ -46,6 +46,7 @@ interface BotStats {
satsWon: number
satsWagered: number
hasWallet: boolean
zapsReceived: number
createdAt: string
// Owner-only webhook fields
webhookUrl?: string
@@ -487,7 +488,7 @@ const tierClass = (t: number) => `tier-${t}`
</div>
<!-- Sats stats -->
<div v-if="stats.satsWon || stats.satsWagered" class="flex gap-2 mt-2">
<div v-if="stats.satsWon || stats.satsWagered || stats.zapsReceived" class="flex gap-2 mt-2">
<div class="flex-1 border border-neon-cyan/20 bg-neon-cyan/5 p-2.5 text-center">
<p class="font-display font-bold text-base text-neon-cyan">{{ stats.satsWon || 0 }}</p>
<p class="font-display text-[8px] text-text-muted tracking-wider mt-0.5">SATS WON</p>
@@ -496,6 +497,10 @@ const tierClass = (t: number) => `tier-${t}`
<p class="font-display font-bold text-base text-neon-purple">{{ stats.satsWagered || 0 }}</p>
<p class="font-display text-[8px] text-text-muted tracking-wider mt-0.5">WAGERED</p>
</div>
<div v-if="stats.zapsReceived" class="flex-1 border border-neon-yellow/20 bg-neon-yellow/5 p-2.5 text-center">
<p class="font-display font-bold text-base text-neon-yellow">{{ stats.zapsReceived }}</p>
<p class="font-display text-[8px] text-text-muted tracking-wider mt-0.5">ZAPS</p>
</div>
</div>
<!-- Wallet connection (owner only) -->