diff --git a/components/CoinBalance.tsx b/components/CoinBalance.tsx index 4d6f78c..4e17c19 100644 --- a/components/CoinBalance.tsx +++ b/components/CoinBalance.tsx @@ -1,9 +1,8 @@ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' -import { Coins } from 'lucide-react' -import { FormattedNumber } from '@/components/FormattedNumber' -import { useAtom } from 'jotai' -import { useTranslations } from 'next-intl' import { settingsAtom } from '@/lib/atoms' +import { useAtom } from 'jotai' +import { Coins } from 'lucide-react' +import { useTranslations } from 'next-intl' import dynamic from 'next/dynamic' const TodayEarnedCoins = dynamic(() => import('./TodayEarnedCoins'), { ssr: false }) @@ -21,9 +20,7 @@ export default function CoinBalance({ coinBalance }: { coinBalance: number }) {
- - - + {coinBalance}
diff --git a/components/CoinsManager.tsx b/components/CoinsManager.tsx index c67685a..30b9c5e 100644 --- a/components/CoinsManager.tsx +++ b/components/CoinsManager.tsx @@ -1,6 +1,5 @@ 'use client' -import { FormattedNumber } from '@/components/FormattedNumber' import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar' import { Button } from '@/components/ui/button' @@ -127,7 +126,7 @@ export default function CoinsManager() { 💰
{t('currentBalanceLabel')}
-
{t('coinsSuffix')}
+
{balance} {t('coinsSuffix')}
@@ -214,16 +213,12 @@ export default function CoinsManager() { {/* Top Row - Totals */}
{t('totalEarnedLabel')}
-
- 🪙 -
+
{totalEarned} 🪙
{t('totalSpentLabel')}
-
- 💸 -
+
{totalSpent} 💸
@@ -236,16 +231,12 @@ export default function CoinsManager() { {/* Bottom Row - Today */}
{t('todaysEarnedLabel')}
-
- 🪙 -
+
{coinsEarnedToday} 🪙
{t('todaysSpentLabel')}
-
- 💸 -
+
{coinsSpentToday} 💸
diff --git a/components/FormattedNumber.tsx b/components/FormattedNumber.tsx deleted file mode 100644 index ea3a608..0000000 --- a/components/FormattedNumber.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { formatNumber } from '@/lib/utils/formatNumber' -import { Settings } from '@/lib/types' - -interface FormattedNumberProps { - amount: number - settings: Settings - className?: string -} - -export function FormattedNumber({ amount, settings, className }: FormattedNumberProps) { - return ( - - {formatNumber({ amount, settings })} - - ) -} diff --git a/components/HeaderActions.tsx b/components/HeaderActions.tsx index c45890a..3afdb0c 100644 --- a/components/HeaderActions.tsx +++ b/components/HeaderActions.tsx @@ -1,13 +1,12 @@ 'use client' -import Link from 'next/link' -import { useAtom } from 'jotai' -import { settingsAtom } from '@/lib/atoms' import { useCoins } from '@/hooks/useCoins' -import { FormattedNumber } from '@/components/FormattedNumber' +import { settingsAtom } from '@/lib/atoms' +import { useAtom } from 'jotai' import { Coins } from 'lucide-react' -import NotificationBell from './NotificationBell' import dynamic from 'next/dynamic' +import Link from 'next/link' +import NotificationBell from './NotificationBell' import { Profile } from './Profile' const TodayEarnedCoins = dynamic(() => import('./TodayEarnedCoins'), { ssr: false }) @@ -21,11 +20,7 @@ export default function HeaderActions() {
- + {balance}
diff --git a/components/TodayEarnedCoins.tsx b/components/TodayEarnedCoins.tsx index 4ad5db5..5b3eba7 100644 --- a/components/TodayEarnedCoins.tsx +++ b/components/TodayEarnedCoins.tsx @@ -1,20 +1,15 @@ -import { useAtom } from 'jotai' -import { useTranslations } from 'next-intl' -import { settingsAtom } from '@/lib/atoms' import { useCoins } from '@/hooks/useCoins' -import { FormattedNumber } from '@/components/FormattedNumber' +import { useTranslations } from 'next-intl' export default function TodayEarnedCoins({ longFormat }: { longFormat?: boolean }) { const t = useTranslations('TodayEarnedCoins') - const [settings] = useAtom(settingsAtom) const { coinsEarnedToday } = useCoins() if (coinsEarnedToday <= 0) return <>; return ( - {"+"} - + {"+"}{coinsEarnedToday} {longFormat ? {t('todaySuffix')} : null} diff --git a/hooks/useCoins.tsx b/hooks/useCoins.tsx index 5a3431f..63f5855 100644 --- a/hooks/useCoins.tsx +++ b/hooks/useCoins.tsx @@ -8,7 +8,6 @@ import { currentUserIdAtom, settingsAtom, totalEarnedAtom, - totalSpentAtom, usersAtom } from '@/lib/atoms'; import { MAX_COIN_LIMIT } from '@/lib/constants'; @@ -30,7 +29,6 @@ export function useCoins(options?: { selectedUser?: string }) { const loggedInUserBalance = loggedInUserId ? coins.transactions.filter(transaction => transaction.userId === loggedInUserId).reduce((sum, transaction) => sum + transaction.amount, 0) : 0; const [atomCoinsEarnedToday] = useAtom(coinsEarnedTodayAtom); const [atomTotalEarned] = useAtom(totalEarnedAtom) - const [atomTotalSpent] = useAtom(totalSpentAtom) const [atomCoinsSpentToday] = useAtom(coinsSpentTodayAtom); const targetUser = options?.selectedUser ? users.find(u => u.id === options.selectedUser) : currentUser @@ -41,7 +39,6 @@ export function useCoins(options?: { selectedUser?: string }) { const timezone = settings.system.timezone; const [coinsEarnedToday, setCoinsEarnedToday] = useState(0); const [totalEarned, setTotalEarned] = useState(0); - const [totalSpent, setTotalSpent] = useState(0); const [coinsSpentToday, setCoinsSpentToday] = useState(0); const [balance, setBalance] = useState(0); @@ -51,7 +48,6 @@ export function useCoins(options?: { selectedUser?: string }) { // If the target user is the currently logged-in user, use the derived atom's value setCoinsEarnedToday(atomCoinsEarnedToday); setTotalEarned(atomTotalEarned); - setTotalSpent(atomTotalSpent); setCoinsSpentToday(atomCoinsSpentToday); setBalance(loggedInUserBalance); } else if (targetUser?.id) { @@ -62,9 +58,6 @@ export function useCoins(options?: { selectedUser?: string }) { const totalEarnedVal = calculateTotalEarned(transactions); setTotalEarned(roundToInteger(totalEarnedVal)); - const totalSpentVal = calculateTotalSpent(transactions); - setTotalSpent(roundToInteger(totalSpentVal)); - const spentToday = calculateCoinsSpentToday(transactions, timezone); setCoinsSpentToday(roundToInteger(spentToday)); @@ -79,7 +72,6 @@ export function useCoins(options?: { selectedUser?: string }) { loggedInUserBalance, atomCoinsEarnedToday, atomTotalEarned, - atomTotalSpent, atomCoinsSpentToday ]); @@ -180,7 +172,7 @@ export function useCoins(options?: { selectedUser?: string }) { transactions: transactions, coinsEarnedToday, totalEarned, - totalSpent, + totalSpent: calculateTotalSpent(coins.transactions), coinsSpentToday } } diff --git a/lib/atoms.ts b/lib/atoms.ts index bdeedc3..b46312f 100644 --- a/lib/atoms.ts +++ b/lib/atoms.ts @@ -2,7 +2,6 @@ import { calculateCoinsEarnedToday, calculateCoinsSpentToday, calculateTotalEarned, - calculateTotalSpent, generateCryptoHash, isHabitDue, prepareDataForHashing, @@ -70,13 +69,6 @@ export const totalEarnedAtom = atom((get) => { return roundToInteger(value); }); -// Derived atom for total spent -export const totalSpentAtom = atom((get) => { - const coins = get(coinsAtom); - const value = calculateTotalSpent(coins.transactions); - return roundToInteger(value); -}); - // Derived atom for coins spent today export const coinsSpentTodayAtom = atom((get) => { const coins = get(coinsAtom);