From 4cf2b769d6a22b0201656a7d28352dfc2ac712ff Mon Sep 17 00:00:00 2001 From: padreug Date: Fri, 1 Aug 2025 23:49:39 +0200 Subject: [PATCH] feat: Add wallet balance display and currency formatting - Implement wallet balance computation and formatting in Navbar.vue, enhancing user experience by displaying wallet balance in both the main navigation and dropdown menu. - Introduce currency conversion utilities in currency.ts to format wallet balances into EverQuest currency denominations, improving clarity for users. --- src/components/layout/Navbar.vue | 35 ++++++++++++++- src/lib/utils/currency.ts | 76 ++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 src/lib/utils/currency.ts diff --git a/src/components/layout/Navbar.vue b/src/components/layout/Navbar.vue index c67e99d..2301de0 100644 --- a/src/components/layout/Navbar.vue +++ b/src/components/layout/Navbar.vue @@ -6,11 +6,12 @@ import { useTheme } from '@/components/theme-provider' import { Button } from '@/components/ui/button' import { Badge } from '@/components/ui/badge' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } from '@/components/ui/dropdown-menu' -import { Sun, Moon, Menu, X, User, LogOut, Ticket } from 'lucide-vue-next' +import { Sun, Moon, Menu, X, User, LogOut, Ticket, Wallet } from 'lucide-vue-next' import LanguageSwitcher from '@/components/LanguageSwitcher.vue' import LoginDialog from '@/components/auth/LoginDialog.vue' import ProfileDialog from '@/components/auth/ProfileDialog.vue' import { auth } from '@/composables/useAuth' +import { formatWalletBalance } from '@/lib/utils/currency' interface NavigationItem { name: string @@ -30,6 +31,19 @@ const navigation = computed(() => [ { name: t('nav.support'), href: '/support' }, ]) +// Compute total wallet balance +const totalBalance = computed(() => { + if (!auth.currentUser.value?.wallets) return 0 + + return auth.currentUser.value.wallets.reduce((total, wallet) => { + return total + (wallet.balance_msat || 0) + }, 0) +}) + +const formattedBalance = computed(() => { + return formatWalletBalance(totalBalance.value) +}) + const toggleMenu = () => { isOpen.value = !isOpen.value } @@ -83,6 +97,12 @@ const handleLogout = async () => {
+ + + + + +
+ + {{ formattedBalance }} +
+