Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .Jules/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,15 @@
- Covered Auth, Dashboard, Groups, and Utility screens.
- **Technical:** Updated all files in `mobile/screens/` to compliant with React Native accessibility standards.

- **Mobile Swipe-to-Delete Expenses:** Implemented swipe-to-delete functionality for expenses in Group Details.
- **Features:**
- Right-to-left swipe reveals a Delete action on user-paid expenses.
- Uses `react-native-gesture-handler/Swipeable` and `react-native-reanimated`.
- Optimistic UI updates to hide the expense immediately.
- Snackbar notification with "Undo" button (5-second timeout) before finalizing the API call.
- Implemented a ref-based timeout dictionary to prevent state mismatch during rapid deletion and undo operations.
- **Technical:** Modified `mobile/screens/GroupDetailsScreen.js` and added `deleteExpense` to `mobile/api/groups.js`. Modified `mobile/babel.config.js` to support Reanimated plugin.

- **Mobile Pull-to-Refresh:** Implemented native pull-to-refresh interactions with haptic feedback for key lists.
- **Features:**
- Integrated `RefreshControl` into `HomeScreen`, `FriendsScreen`, and `GroupDetailsScreen`.
Expand Down
9 changes: 5 additions & 4 deletions .Jules/todo.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,12 @@

### Mobile

- [ ] **[ux]** Swipe-to-delete for expenses with undo option
- [x] **[ux]** Swipe-to-delete for expenses with undo option
- Completed: 2026-02-12
- File: `mobile/screens/GroupDetailsScreen.js`
- Context: Add swipeable rows with delete action
- Impact: Quick expense management
- Size: ~55 lines
- Context: Added swipeable rows with optimistic delete and undo Snackbar action using `react-native-gesture-handler`.
- Impact: Quick expense management and forgiving UX on mobile.
- Size: ~100 lines
- Added: 2026-01-01

- [x] **[style]** Haptic feedback on all button presses
Expand Down
3 changes: 3 additions & 0 deletions mobile/api/groups.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ export const getGroupMembers = (groupId) =>
export const getGroupExpenses = (groupId) =>
apiClient.get(`/groups/${groupId}/expenses`);

export const deleteExpense = (groupId, expenseId) =>
apiClient.delete(`/groups/${groupId}/expenses/${expenseId}`);

export const createGroup = (name) => apiClient.post("/groups", { name });

export const joinGroup = (joinCode) =>
Expand Down
7 changes: 7 additions & 0 deletions mobile/babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
plugins: ['react-native-reanimated/plugin'],
};
};
Loading
Loading