From d2831aae2ee7ee28db51a723e2c2675e7935392f Mon Sep 17 00:00:00 2001 From: wkrokosz Date: Wed, 5 Feb 2025 15:25:16 +0100 Subject: [PATCH 1/5] Handle the case when the group expense has amount 0 --- src/pages/groups/[groupId].tsx | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/pages/groups/[groupId].tsx b/src/pages/groups/[groupId].tsx index 8e2e8e43..5667aebd 100644 --- a/src/pages/groups/[groupId].tsx +++ b/src/pages/groups/[groupId].tsx @@ -416,15 +416,25 @@ const BalancePage: NextPageWithUser<{ {isSettlement ? null : (
-
- {youPaid ? 'You lent' : 'You owe'} -
-
- {e.currency}{' '} - {toUIString(yourExpenseAmount)} -
+ {youPaid || yourExpenseAmount !== 0 ? ( + <> +
+ {youPaid ? 'You lent' : 'You owe'} +
+
+ {e.currency}{' '} + {toUIString(yourExpenseAmount)} +
+ + ) : ( +
+

Not involved

+
+ )}
)} From 7919851e3ad99cc485d432abbe86bbf0addf7af6 Mon Sep 17 00:00:00 2001 From: krokosik Date: Tue, 25 Feb 2025 16:16:23 +0100 Subject: [PATCH 2/5] Organize imports --- src/pages/activity.tsx | 17 +++++++-------- src/pages/groups/[groupId].tsx | 40 +++++++++++++++++----------------- 2 files changed, 28 insertions(+), 29 deletions(-) diff --git a/src/pages/activity.tsx b/src/pages/activity.tsx index f999e249..8696462f 100644 --- a/src/pages/activity.tsx +++ b/src/pages/activity.tsx @@ -1,16 +1,15 @@ -import Head from 'next/head'; -import MainLayout from '~/components/Layout/MainLayout'; import { SplitType } from '@prisma/client'; -import { api } from '~/utils/api'; import { format } from 'date-fns'; -import { UserAvatar } from '~/components/ui/avatar'; -import { toUIString } from '~/utils/numbers'; -import Link from 'next/link'; -import { type NextPageWithUser } from '~/types'; import { type User } from 'next-auth'; -import { BalanceSkeleton } from '~/components/ui/skeleton'; -import useEnableAfter from '~/hooks/useEnableAfter'; +import Head from 'next/head'; +import Link from 'next/link'; +import MainLayout from '~/components/Layout/MainLayout'; +import { UserAvatar } from '~/components/ui/avatar'; import { LoadingSpinner } from '~/components/ui/spinner'; +import useEnableAfter from '~/hooks/useEnableAfter'; +import { type NextPageWithUser } from '~/types'; +import { api } from '~/utils/api'; +import { toUIString } from '~/utils/numbers'; function getPaymentString( user: User, diff --git a/src/pages/groups/[groupId].tsx b/src/pages/groups/[groupId].tsx index 5667aebd..db375a58 100644 --- a/src/pages/groups/[groupId].tsx +++ b/src/pages/groups/[groupId].tsx @@ -1,34 +1,28 @@ -import Head from 'next/head'; -import MainLayout from '~/components/Layout/MainLayout'; +import { SplitType } from '@prisma/client'; import Avatar from 'boring-avatars'; import clsx from 'clsx'; -import { Button } from '~/components/ui/button'; -import { SplitType } from '@prisma/client'; -import { api } from '~/utils/api'; -import { useRouter } from 'next/router'; +import { format } from 'date-fns'; +import { motion } from 'framer-motion'; import { + BarChartHorizontal, Check, ChevronLeft, DoorOpen, + Info, Share, Trash2, UserPlus, - BarChartHorizontal, - Info, } from 'lucide-react'; -import { AppDrawer } from '~/components/ui/drawer'; -import { UserAvatar } from '~/components/ui/avatar'; -import NoMembers from '~/components/group/NoMembers'; -import { format } from 'date-fns'; -import AddMembers from '~/components/group/AddMembers'; +import Head from 'next/head'; import Image from 'next/image'; -import { toUIString } from '~/utils/numbers'; import Link from 'next/link'; -import { CategoryIcon } from '~/components/ui/categoryIcons'; -import { env } from '~/env'; +import { useRouter } from 'next/router'; import { useState } from 'react'; -import { type NextPageWithUser } from '~/types'; -import { motion } from 'framer-motion'; +import { toast } from 'sonner'; +import AddMembers from '~/components/group/AddMembers'; +import GroupMyBalance from '~/components/group/GroupMyBalance'; +import NoMembers from '~/components/group/NoMembers'; +import MainLayout from '~/components/Layout/MainLayout'; import { AlertDialog, AlertDialogCancel, @@ -39,8 +33,14 @@ import { AlertDialogTitle, AlertDialogTrigger, } from '~/components/ui/alert-dialog'; -import { toast } from 'sonner'; -import GroupMyBalance from '~/components/group/GroupMyBalance'; +import { UserAvatar } from '~/components/ui/avatar'; +import { Button } from '~/components/ui/button'; +import { CategoryIcon } from '~/components/ui/categoryIcons'; +import { AppDrawer } from '~/components/ui/drawer'; +import { env } from '~/env'; +import { type NextPageWithUser } from '~/types'; +import { api } from '~/utils/api'; +import { toUIString } from '~/utils/numbers'; const BalancePage: NextPageWithUser<{ enableSendingInvites: boolean; From a87dc5449ec69226fe1004231fd238703dd43908 Mon Sep 17 00:00:00 2001 From: krokosik Date: Tue, 25 Feb 2025 16:22:15 +0100 Subject: [PATCH 3/5] Also do not paint activity tab in red --- src/pages/activity.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/activity.tsx b/src/pages/activity.tsx index 8696462f..1a9bc56a 100644 --- a/src/pages/activity.tsx +++ b/src/pages/activity.tsx @@ -22,6 +22,8 @@ function getPaymentString( ) { if (isDeleted) { return null; + } else if (expenseUserAmt === 0) { + return
Not involved
; } else if (isSettlement) { return (
From fa48181ea86b7ad7922034fb1c5d478405071647 Mon Sep 17 00:00:00 2001 From: krokosik Date: Tue, 25 Feb 2025 16:25:12 +0100 Subject: [PATCH 4/5] Fix overflow issues in activity tab --- src/pages/activity.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pages/activity.tsx b/src/pages/activity.tsx index 1a9bc56a..3d937e6a 100644 --- a/src/pages/activity.tsx +++ b/src/pages/activity.tsx @@ -53,7 +53,7 @@ const ActivityPage: NextPageWithUser = ({ user }) => { -
+
{expensesQuery.isLoading ? ( showProgress ? ( @@ -118,7 +118,6 @@ const ActivityPage: NextPageWithUser = ({ user }) => { )}
-
From 11149f05818fbda7286b0093575ea865f8ad9796 Mon Sep 17 00:00:00 2001 From: krokosik Date: Sat, 24 May 2025 12:17:25 +0200 Subject: [PATCH 5/5] Filter expense details --- src/components/Expense/ExpensePage.tsx | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/components/Expense/ExpensePage.tsx b/src/components/Expense/ExpensePage.tsx index ccc8f7ae..97f14eb8 100644 --- a/src/components/Expense/ExpensePage.tsx +++ b/src/components/Expense/ExpensePage.tsx @@ -108,16 +108,18 @@ const ExpenseDetails: React.FC = ({ user, expense, storageP

- {expense.expenseParticipants.map((p) => ( -
- -

- {user.id === p.userId ? 'You Owe' : `${p.user.name ?? p.user.email} owes`}{' '} - {expense.currency}{' '} - {toUIString((expense.paidBy === p.userId ? expense.amount ?? 0 : 0) - p.amount)} -

-
- ))} + {expense.expenseParticipants + .filter((p) => (expense.paidBy === p.userId ? expense.amount ?? 0 : 0) !== p.amount) + .map((p) => ( +
+ +

+ {user.id === p.userId ? 'You Owe' : `${p.user.name ?? p.user.email} owes`}{' '} + {expense.currency}{' '} + {toUIString((expense.paidBy === p.userId ? expense.amount ?? 0 : 0) - p.amount)} +

+
+ ))}
);