* add group information field to group and Information tab to display
* add breaks to info page
* Improve UX
---------
Co-authored-by: Sebastien Castiel <sebastien@castiel.me>
* Extract ExpenseCard vom ExpenseList
* Implement simple pagination of expenses (see #30)
- display only this year's entries by default
- a "Show more" button reveals all expenses
* Turn getPrisma() into constant "prisma"
- getPrisma() is not async and doesn't need to be awaited
- turn getPrisma() into exported constant "prisma"
* Select fields to be returned by getGroupExpenses()
- make JSON more concise and less redundant
- some properties were removed (i.e.instead of "expense.paidById" use "expense.paidBy.id")
* Remove "participants" from ExpenseCard
- no need to search for participant by id to get it's name
- name property is already present in expense
* Add option to fetch a slice of group expenses
- specify offset and length to get expenses for [offset, offset+length[
- add function to get total number of group expenses
* Add api route for client to fetch group expenses
* Remove "Show more" button from expense list
* Implement infinite scroll
- in server component Page
- only load first 200 expenses max
- pass preloaded expenses and total count
- in client component ExpenseList, if there are more expenses to show
- test if there are more expenses
- append preloading "skeletons" to end of list
- fetch more expenses when last item in list comes into view
- after each fetch increase fetch-length by factor 1.5
- rationale: db fetch usually is not the issue here, the longer the list gets, the longer react needs to redraw
* Use server action instead of api endpoint
* Fixes
---------
Co-authored-by: Sebastien Castiel <sebastien@castiel.me>
* Settled up icon on group card
* remove logs
* archived groups
* remove settled up
* remove more settled up
* recent-group-list-card
* sortGroups
* archiveGroup
* unarchiveGroup
* clean up
* more clean up
* Prettier, fix TS errors, add titles
---------
Co-authored-by: Sebastien Castiel <sebastien@castiel.me>
* add expense categories
* set category to Payment for reimbursements
* Insert categories as part of the migration
* Display category groups
---------
Co-authored-by: Sebastien Castiel <sebastien@castiel.me>
* Add splitmode and shares to expenses
* Update balances based on shares
* Change field size
* Form validation
* Redesign expense form
* Split unevenly by amount