This commit refactors the user management system to utilize UserCubit, improving state management and separation of concerns.
- Replaces UserService with UserCubit for managing user state.
- Introduces AppSettings and GlobalSettings models and repositories for managing app-level settings and configurations.
- Modifies dependency injection to register the new repositories and cubits.
- Updates UI components (LoginPage, SettingsPage, HomePage, AddTransactionDialog, CategoryListPage, TagListPage) to interact with UserCubit and SettingsCubit.
- Removes direct dependency on UserRepository in favor of UserCubit for accessing user information.
- Streamlines the authentication process by using UserCubit to handle user creation and login.
- Improves settings management by using dedicated repositories and cubits for app settings.
Implements the ability to load and process SMS messages to automatically create transaction records.
This includes:
- Adding an `SmsMessage` model and Hive adapter.
- Creating an `ISmsMessageRepository` and its Hive implementation.
- Integrating SMS loading functionality into the `SmsCubit`.
- Adding a UI element in settings to trigger SMS loading.
- Persisting last SMS sync time in user preferences.
Implements category type selection (income/expense) during category creation/editing.
This enhancement introduces a switch to define categories as either income or expense, providing more granular control over financial tracking.
It also includes localization support for new strings ("Icon", "Category type", "Add category").
A random color and icon are assigned to new categories for better user experience.
Finally, uses AnimatedList for categories in the list page.
Adds the ability to manage categories in the settings page. This includes:
- Registers CategoryCubit in the dependency injection container.
- Introduces a new CategoryListPage for editing categories.
- Adds translations for category management related text.
- Adds unselected icon color to the theme.
- Updates the date format in the transaction dialog.
Implements SMS reading functionality to automatically track expenses.
- Adds necessary permissions for reading SMS messages in AndroidManifest.xml.
- Registers SmsService and SmsCubit in the dependency injection container.
- Adds a new SMS page to the bottom navigation bar.
- Introduces new localization strings for the SMS page title and permission denied message.
- Sets minSdk to 23.
Adds a tag selection to transaction dialog and refines the display of transactions.
The changes introduce the ability to tag transactions, improving categorization and filtering.
It also modifies the transaction input dialog to include time, as well as refines the appearance of transaction items on the home page by using a custom widget wrapped in a card.
The UI of the summary widget is also improved by using theme colors and increasing the overall visibility.
Initializes internationalization (i18n) for the application.
Introduces `AppLocalizations` to manage localized strings, along with
English and Russian translations.
Configures Flutter to use the localization delegates and supported locales.
This allows the app to display text in the user's preferred language.
- Adds new localization keys for transaction details.
- Deletes obsolete localization files, switching to a single ARB file per language.
- Adds `Equatable` to data models (`Category`, `Tag`, `TransactionRecord`, `User`) for improved state management and change detection.
- Introduces the transaction creation dialog.
- Adds development note to GEMINI.md
Improves internationalization and data models
- Adds new localization keys for transaction details, supporting enhanced user experience.
- Migrates to single ARB file for each language, streamlining the localization process.
- Implements Equatable in data models (Category, Tag, TransactionRecord, User) for improved state management and simplified change detection.
- Introduces transaction creation dialog, simplifying the transaction creation process.
- Adds development note to GEMINI.md