'use client' import { useEffect, useState } from 'react' import { getBalancesAsCreator, getBalancesAsSubmittor, getSessionUser } from '@/app/actions' import { Card, CardContent } from '@/components/ui/card' import { Wallet, ArrowDownRight, ArrowUpRight, Loader2 } from 'lucide-react' import { cn } from '@/lib/utils' export default function BalancesPage() { const [activeTab, setActiveTab] = useState<'SUBMITTOR' | 'CREATOR'>('SUBMITTOR') const [userId, setUserId] = useState(null) const [submittorBalances, setSubmittorBalances] = useState([]) const [creatorBalances, setCreatorBalances] = useState([]) const [loading, setLoading] = useState(true) useEffect(() => { const init = async () => { const user = await getSessionUser() if (user?.id) { setUserId(user.id) loadData(user.id) } } init() }, []) const loadData = async (id: string) => { setLoading(true) const [subRes, creRes] = await Promise.all([ getBalancesAsSubmittor(id), getBalancesAsCreator(id) ]) setSubmittorBalances(subRes) setCreatorBalances(creRes) setLoading(false) } const formatRupiah = (n: number) => new Intl.NumberFormat('id-ID', { style: 'currency', currency: 'IDR', maximumFractionDigits: 0 }).format(n) return (
Keuangan / Saldo

Buku Saldo

Pantau riwayat saldo lebih atau kurang dari transaksi pesanan.

{loading ? (
Memuat saldo...
) : activeTab === 'SUBMITTOR' ? (

Saldo Anda di Kreator Lain

Jika saldo positif (hijau), Anda memiliki deposit yang bisa digunakan untuk pesanan berikutnya di kreator tersebut. Jika negatif (merah), Anda berhutang.

{submittorBalances.length === 0 ? (

Belum ada catatan saldo.

) : (
{submittorBalances.map((b, i) => (
{b.creator.photo ? ( {b.creator.name} ) : (
{b.creator.name.charAt(0).toUpperCase()}
)}

{b.creator.name}

Kreator

Total Saldo
0 ? "text-emerald-600" : "text-rose-600")}> {b.amount > 0 ? : } {formatRupiah(b.amount)}
))}
)}
) : (

Saldo Orang Lain di Anda

Jika saldo positif (merah bagi Anda), artinya Anda memegang uang lebih milik penitip (Hutang Anda ke mereka). Jika negatif (hijau), mereka berhutang ke Anda.

{creatorBalances.length === 0 ? (

Belum ada penitip yang memiliki catatan saldo dengan Anda.

) : (
{creatorBalances.map((b, i) => (
{b.user.photo ? ( {b.user.name} ) : (
{b.user.name.charAt(0).toUpperCase()}
)}

{b.user.name}

Penitip

Saldo Penitip {/* From Creator perspective: positive balance of submittor is bad for creator (creator holds their money) */}
0 ? "text-rose-600" : "text-emerald-600")}> {b.amount > 0 ? : } {formatRupiah(b.amount)}
))}
)}
)}
) }