Added a dialog box to provide users with troubleshooting guidance during critical operations.
This dialog appears when the user encounters common errors and offers solutions or next steps.
Key changes include:
- Integrated the new troubleshooting dialog into the main user interface.
- Implemented logic to trigger the dialog based on specific error codes.
- Updated the UI to support the dialog's appearance and behavior.
- Refined error-handling flow to ensure that appropriate guidance is displayed.
This feature aims to improve user experience by helping users resolve issues without leaving the app.
When handling `MissingVoiceError`, knowing the voice
we searched for enables better error resolution
Adding context required moving from an enum to
a class, which caused code churn
- Added new string resource `empty_widget` to denote when a widget is empty and requires reconfiguration.
- Enhanced `CardAnalysisWidgetConfig` to automatically display the deck selection dialog upon initialization.
- Refactored `CardAnalysisWidget` to handle empty state visibility, allowing users to reconfigure the widget by clicking the empty state message.
This commit introduces the Card Analysis Extra Widget, which displays a deck with the number of cards that are new, in learning, due for review and deck name.
Features:
- Displays deck names and statistics (new, learning, and review counts).
- Updates every minute using a recurring alarm.
In this case, I really don't think it's realistic to expect an
OpChange from the backend. The backend already sends informations that
are relevant for the sync process. Given that "sync" does not uses the
processes uses for undoable change (indeed, it should not be
undoable), no OpChange is generated.
It seems reasonable in this place at least to directly notify the
observers.
Given that the observers expect an OpChanges, I create one, and simply
assume everything may be changed. This seems reasonable in case of
sync, and it's sufficiently rare that the cost won't be prohibitive
anyway.
Fixed: #16943Fixed: #16942
The DEL KeyEvent was previously declared to act as a keyboard shortcut
to delete the selected notes. After an initial search which registered
a search query entering DEL attempted to delete the current selected
notes which also resulted in another search(same input) being executed.
The fix registers the DEL keys as a delete notes shortcut ONLY if the
search box of the CardBrowser is not currently available(isIconified
returning true).
The previous code was showing the edit note screen every time the
E key was pressed, this was changed to only handle the E key event
as a shortcut only if the searchbox isn't currently available(
isIconified returning true).
The previous code was showing the tags filter dialog every time the
T key was pressed, this was changed to also introduce Ctrl as a
modifier like the documentation for the onKeyUp method recommends.
* Replaced the use of CropImageContract with CropImageView to ensure continued compatibility and adherence to best practices, updated related logic and UI.
* The decision to follow this migration path was influenced by the library's intent to depracte the CropImageContract see : https://redirect.github.com/CanHub/Android-Image-Cropper/pull/637
- Added `ChangeSubscriber` to subscribe the `ChangeManager` and monitor changes in the study queue (`OpChanges.studyQueues`).
- Implemented `opExecuted` in `ChangeSubscriber` to trigger `updateDeckPickerWidgets()` when relevant changes are detected.