Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/Manual update rooted & non-rooted devices #1427

Merged
merged 32 commits into from
Nov 20, 2024

Conversation

ghassenbenzahra123
Copy link
Contributor

This PR fixes #1420

Screenshot_1732108324

ghassenbenzahra123 and others added 30 commits November 8, 2024 18:21
… and distinction

- renamed `UpdateNotifier` to `ManualUpdateNotifier` for better differentiation of manual update functionality.
- updated `updateNotifierProvider` to `manualUpdateNotifierProvider` across relevant files.
- refactored `SettingScreen` to utilize the newly renamed `manualUpdateNotifierProvider`.
@ghassenbenzahra123 ghassenbenzahra123 changed the base branch from main to release-1.17.0 November 20, 2024 13:16
@ghassenbenzahra123 ghassenbenzahra123 merged commit c3aa17d into release-1.17.0 Nov 20, 2024
1 check passed
@ghassenbenzahra123 ghassenbenzahra123 deleted the feat/manual-update-rooted branch November 20, 2024 13:18
ghassenbenzahra123 added a commit that referenced this pull request Nov 20, 2024
* feat: add new localization keys and placeholders for Quran-related st… (#1402)

* feat: add new localization keys and placeholders for Quran-related strings

- Added new keys for Quran reading page placeholders in portrait mode in intl_sq.arb and intl_bs.arb
- Introduced 'switchQuranType' placeholder with 'name' in intl_sq.arb and intl_bs.arb
- Updated onboarding_language_selector.dart to include debug print for locale language code
- Ensured proper formatting with newlines at the end of arb files

* fix: remove Montenegrin because flutter doesn't support it

* remove the print

* Feat/quran/auto scrolling reading (#1389)

* feat(auto_reading): add state management for auto reading feature

- Implement `AutoScrollState` to handle auto scroll speed, visibility, and font size settings.
- Add `AutoScrollNotifier` to manage auto-scrolling functionality with start, stop, and speed control.
- Include derived properties for controlling the visibility of speed control and scroll behavior.
- Support toggling between single-page view and auto-scrolling.

* feat(quran): add play toggle button and refactor directory structure

- Add play toggle button to `QuranReadingScreen` with portrait and landscape support.
- Move `quran_reading_screen.dart` to new `reading` directory for better organization.
- Create `QuranFloatingActionButtons` widget for handling floating action buttons in portrait and landscape modes.

* refactor: Extract floating action controls into new widget with passed focus nodes

- Extracted floating action controls into `QuranFloatingActionControls` widget.
- Used `OrientationBuilder` within the new widget to determine orientation internally.
- Passed focus nodes from `QuranReadingScreen` to the new widget for external focus management.
- Maintained existing UI and design without modifications.

* feat: add the to_string and making the AutoScrollNotifier auto disposed

* modify the new ui

* feat: add auto-scrolling reading mode with font size and speed controls

- QuranFloatingActionControls:
  - Implemented `_buildAutoScrollingReadingMode` to display controls when auto-scroll is active.
  - Added methods:
    - `_buildFontSizeControls` for adjusting font size.
    - `_buildSpeedControls` for adjusting auto-scroll speed.
    - `_buildPlayPauseButton` for toggling auto-scroll.
    - `_buildActionButton` as a helper for creating action buttons.
  - Modified `_buildFloatingPortrait` and `_buildFloatingLandscape` to display auto-scroll controls based on the current state.

- AutoScrollState:
  - Fixed `isAutoScrolling` getter to correctly represent the auto-scrolling state.

- AutoScrollNotifier:
  - Added methods:
    - `increaseFontSize` and `decreaseFontSize` to adjust font size.
    - `increaseSpeed` and `decreaseSpeed` to adjust auto-scroll speed.
  - Updated `startAutoScroll` to use dynamic speed settings.

* fix: scrolling functionality and refactor Quran reading code

- Implement auto-scrolling that aligns with the current page and page height.
- Refactor floating action buttons into separate widget classes for better code organization.
- Update auto-scroll state and notifier to handle scroll controller and dynamic speed adjustments.

* refactor QuranReadingScreen: Remove unused imports and redundant widget functions

- Removed unnecessary imports such as SvgPicture and ReciterSelectionScreen.
- Cleaned up redundant widget methods like `buildFloatingPortrait`, `buildFloatingLandscape`, and other floating action button handlers.
- Simplified the UI logic by eliminating unused `QuranModeButton` and `PlayToggleButton` widgets.

* merge on main

* refactor: remove unused floating action buttons

* refactor: migrate screen rotation to state management

- Add isRotated field to QuranReadingState to manage rotation state
- Add toggleRotation method to QuranReadingNotifier
- Remove local ValueNotifier for rotation management
- Update QuranFloatingActionControls to use state-managed rotation
- Simplify _OrientationToggleButton to use state rotation
- Remove orientation dependencies from UserPreferencesManager

* refactor(quran): improve keyboard navigation and focus management

- Replace custom key event handlers with FocusTraversalPolicy for better focus management
- Add ArrowButtonsFocusTraversalPolicy to handle navigation between left/right buttons
- Implement up/down navigation from arrow buttons to back button and page selector
- Fix positioning issues with Stack and Positioned widgets
- Remove ValueNotifier in favor of setState for rotation state management
- Clean up widget hierarchy and remove redundant wrapper classes
- Add proper focus order using FocusTraversalOrder
- Fix duplicate Positioned widgets causing layout issues
- Improve code organization and readability

* remove unused `ArrowButtonsFocusTraversalPolicy` in the quran_reading_widgets.dart

* fix: resolve Positioned widget conflicts and improve focus navigation

- Remove nested Positioned widgets causing render conflicts
- Fix focus navigation system in reading screen:
  * Add proper FocusTraversalOrder for all interactive elements
  * Implement custom ArrowButtonsFocusTraversalPolicy
  * Add keyboard navigation support (arrows, tab, enter/space)
- Reorganize widget tree structure to prevent parent data conflicts
- Improve navigation button layout and accessibility
- Fix RTL/LTR direction handling in navigation buttons

* remove the unnecessary `FocusTraversalGroup` and order

* refactor: remove `QuranFocusTraversalPolicy` class from `quran_floating_action_buttons.dart`

* refactor: implement strategy pattern for Quran reading view and focus management

Introduced the `QuranViewStrategy` abstract class and created two concrete strategies, `AutoScrollViewStrategy` and `NormalViewStrategy`, to handle view and control layout for different Quran reading modes. Replaced previous inline focus management with a new `FocusNodes` helper class for organizing focus nodes. Refactored loading and error indicators into separate widget methods for cleaner code structure. This update enhances readability and allows for easier expansion of view strategies in the future.

* refactor: add font size and speed controls for Quran auto-scrolling mode

- Updated `autoScrollSpeed` default value in `AutoScrollState` to 0.1 for a slower starting speed.
- Added `cycleFontSize` and `cycleSpeed` methods in `AutoScrollNotifier` to allow cycling through font sizes and scroll speeds with a single button, improving user control and simplifying UI.
- Refactored `_FontSizeControls` and `_SpeedControls` widgets to use a single `_ActionButton` for adjusting font size and speed, displaying current values in tooltips.
- Re-introduced `_ActionButton` class with autofocus support for enhanced focus management.

* refactor: Quran reading widgets for improved modularity and maintainability

- Converted functions in `quran_reading_widgets.dart` into distinct `ConsumerWidget` classes:
  - `VerticalPageViewWidget`, `HorizontalPageViewWidget`
  - `RightSwitchButtonWidget`, `LeftSwitchButtonWidget`
  - `PageNumberIndicatorWidget`, `MoshafSelectorPositionedWidget`
  - `BackButtonWidget`, `SvgPictureWidget`

* feat: add scaling the size of the pages with the font

* feat: add stop and pause and add close the mode

* fix: maintain scroll position and speed when changing auto-scroll settings

- Prevent scroll position reset when changing scroll speed
- Only restart timer instead of full scroll reinitialize when adjusting speed

* remove _handleFloatingActionButtons in the quran floating action

* feat(quran-reader): Add auto-scroll pause/resume on tap

- Add tap gesture detection to auto-scrolling view
- Implement play/pause toggle functionality on tap
- Disable manual scrolling in auto-scroll mode
- Clean up code formatting and indentation

* reformat

* feat(quran): integrate surah name display in SurahSelectorWidget

- Replace icon with current surah name display in the top bar
- Add transparent background with white text for better visibility
- Maintain existing dialog functionality for surah selection

* feat(ui): show quran reading controls in both portrait & landscape modes

- Remove orientation-specific conditional rendering
- Display navigation controls, surah selector and page indicators in all orientations
- Maintain consistent control behavior across screen modes

* fix: portrait mode focus traversal for Quran reading screen

- Removed unused `FocusScopeNode` in `QuranFloatingActionControls`.
- Introduced a new focus traversal policy (`PortraitModeFocusTraversalPolicy`) for better keyboard navigation in portrait mode.
- Updated `_buildBody` to handle focus nodes in both portrait and landscape orientation

* refactor: `quran_floating_action_buttons.dart` for dynamic button sizing and improved readability

- Updated button and icon sizes to scale dynamically based on screen width, enhancing UI consistency across different devices.

* refactor

* refactor(quran-reading): update back button behavior and add exit button focus handling

- Removed the `BackButtonWidget` from the `quran_reading_screen.dart` page to simplify UI elements.
- Enhanced the `_ExitButton` widget in `quran_floating_action_buttons.dart`:
- Changed from `ConsumerWidget` to `ConsumerStatefulWidget` for state management.
- Added a `FocusNode` for the exit button to set autofocus on load.
- Implemented an `initState` method to request focus after widget binding.

* feat: add name for the exitFocusNode

* reformat

* keep highlight one same salah item until iqama (#1394)

* Fix/ Error in console for 403 images for loading the reciters (#1382)

* switch to extended image package to handle exception throw

* switch extended image version

* Update pubspec.yaml

* switch to fast cached library as a temp workaround

---------

Co-authored-by: Ibrahim ZEHHAF <97339607+ibrahim-zehhaf-mawaqit@users.noreply.github.com>

* Feat/close quran when salah (#1408)

* feat(routes): add Quran-specific routes and route generator

* refactor(routes): migrate to named routes and simplify navigation logic in the quran

* fix: Improve Quran mode selection navigation

- Modify route generator to handle QuranModeSelection separately

* fix: waiting for the handle push

* fix the formating

* fix: Pop the screen while it has dialog in reading

* refactor: AdhanSubScreen to use ConsumerStatefulWidget and manage Quran mode

- Updated AdhanSubScreen to use `ConsumerStatefulWidget` and `ConsumerState` for improved state management with Riverpod.
- Moved Quran mode exit logic to AdhanSubScreen and JummuaLive components, removing redundant code from salah_workflow.
- Added post-frame callback in AdhanSubScreen and JummuaLive to trigger `exitQuranMode` via `quranNotifierProvider`.

* pause quran player when adhan begins

---------

Co-authored-by: Ghassen Ben Zahra <ghassen.benzahra@gmail.com>

* Feat/Manual update rooted & non-rooted devices (#1427)

* invert parentheses (#1406)

* feat: add Ukrainian language support (#1416)

* feat: add and update more persian language (#1415)

* feat: update and add new translations (#1414)

* feat: add thai language support (#1413)

* test apk

* add launching the app after install

* add logs on launch

* try to launch app after uninstall

* create sript to launch on different process

* modify execute command to correctly handle result

* fix return statement

* try different method

* remove se linux permission

* add more delay

* modify script to retry

* new launch script'

* edit script launch

* refactor update notifier to ManualUpdateNotifier for improved clarity and distinction

- renamed `UpdateNotifier` to `ManualUpdateNotifier` for better differentiation of manual update functionality.
- updated `updateNotifierProvider` to `manualUpdateNotifierProvider` across relevant files.
- refactored `SettingScreen` to utilize the newly renamed `manualUpdateNotifierProvider`.

* change script

* fix missing imports

* change install method

* working install

* higher priority receiver

* add service

* try bash script

* try both commands

* stable working update

* feat: add for non-rooted update

* stable non-rooted & rooted devices update

* remove unused reciver & upgrade pubspec

---------

Co-authored-by: Yassin Nouh <70436855+YassinNouh21@users.noreply.github.com>
Co-authored-by: Yassin <yassinnouh21@gmail.com>

---------

Co-authored-by: Ghassen Ben Zahra <ghassen.benzahra@gmail.com>
Co-authored-by: Ibrahim ZEHHAF <97339607+ibrahim-zehhaf-mawaqit@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Check for update and do it if available
2 participants