Repository navigation
v2.0.1
Release Notes: MyRupees v2.1.1
Release Date: May 11, 2025
Overview
This release enhances the MyRupees Android application to support user-specific functionality, ensuring that each user's transactions, budgets, and recurring transactions are managed independently in a multi-user environment. The update addresses issues where data was shared across users, improving personalization and data accuracy.
Features
- User-Specific Transactions:
- Transactions in
MainActivityandAddTransactionActivityare now filtered and stored with the logged-in user's username, retrieved fromuser_preferenceswith the keycurrent_user. - Ensures users see only their own transactions on the main screen and when adding new ones.
- Transactions in
- User-Specific Budgets:
BudgetActivitynow stores budgets and monthly reset data per user using keys likebudget_<username>andsaved_month_<username>.- Expense calculations are filtered by the logged-in user, providing accurate budget tracking.
- User-Specific Recurring Transactions:
- Added a
userfield to theRecurringTransactiondata class to associate transactions with specific users. RecurringTransactionActivityfilters transactions by user and stores new recurring transactions with the current user's username.RecurringNotificationWorkerprocesses notifications per user, ensuring users receive alerts only for their upcoming payments.
- Added a
- Consistent User Management:
- Introduced a
getCurrentUser()function across activities to retrieve the logged-in user's username fromuser_preferences, replacing the incorrectSharedPrefManager.getCurrentUsername()method.
- Introduced a
Bug Fixes
- Fixed incorrect transaction filtering in
MainActivity, which previously showed guest transactions for logged-in users. - Resolved budget conflicts in
BudgetActivity, where all users shared a single budget. - Corrected
AddTransactionActivityto store transactions with the logged-in user's username, preventing them from being saved as "Guest". - Ensured
RecurringTransactionActivityandRecurringNotificationWorkerhandle only the logged-in user's transactions, fixing display and notification issues.
Breaking Changes
- Data Schema Change: The
RecurringTransactiondata class now includes auserfield. Existing recurring transactions without this field may cause deserialization errors. A migration script is recommended to assign a defaultuser(e.g., "Guest") to legacy transactions. - Budget Storage: Budgets are now stored with user-specific keys (e.g.,
budget_<username>). Existing budgets undermonthly_budgetwill not be accessible. Consider a one-time migration to copy budgets to the new format.
Recommendations
- Migration for Existing Data:
- Update
SharedPrefManager.loadRecurringTransactionsto handle legacyRecurringTransactionobjects by assigning a defaultuservalue. - Migrate existing budgets from
monthly_budgettobudget_<username>for current users during the first app run after this update.
- Update
- Centralized User Management: Consider creating a
UserManagerutility class to centralize thegetCurrentUser()logic, reducing code duplication across activities. - Database Consideration: For scalability, evaluate migrating transaction and recurring transaction storage to a database like Room, especially for users with large datasets.
Known Issues
- The login process (not provided) is assumed to set
current_userinuser_preferences. If this is not the case, user-specific functionality may default to "Guest". RecurringNotificationWorkerprocesses transactions for all users in the background. If notifications should be limited to the last logged-in user, further modifications are needed.
Installation
- Clone the repository:
git clone https://github.com/<your-username>/myrupees.git - Checkout the release tag:
git checkout v1.1.0 - Build and run using Android Studio.
Contributors
- [Your Name] - Implemented user-specific functionality and release notes.
Feedback
Please report issues or suggest improvements via the GitHub Issues page.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Thank you for using MyRupees!