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

Bugfix/1026 Android back gesture should follow navigation history #1056

Merged
merged 9 commits into from
Oct 30, 2024

Conversation

BenjaminBelanger
Copy link
Member

@BenjaminBelanger BenjaminBelanger commented Sep 22, 2024

⁉️ Related Issue

Closes: #1026

📖 Description

This PR addresses the navigation issue on Android where the back button and back gesture navigation were not functioning as expected. Previously, these actions would always return the user to the dashboard, regardless of the navigation history. This fix ensures that the user is returned to the previous screen in their navigation stack. The back button should always take you back to the screen you were just on.

Also, this PR eliminates duplicate routes in the navigation history. This means that if users spam two tabs repeatedly, they will not need to click the back button multiple times to go back to previous routes (see the 2nd video below for a demo).

🧪 How Has This Been Tested?

  • Navigate to the Schedule tab and then to the Student tab. When I do a back gesture or press the back button, I should be redirected to the Schedule tab (instead of the Dashboard)
  • Tested with vertical and horizontal phone orientation

☑️ Checklist before requesting a review

  • I have performed a self-review of my code.
  • If it is a core feature, I have added thorough tests.
  • If needed, I added analytics.
  • Make sure to add either one of the following labels: version: Major,version: Minor or version: Patch.

🖼️ Screenshots (if useful):

Back button navigation demo:

demo_back_button_nav.mp4

Navigation when user clicks same tabs multiple times:

demo_dupe_back_button_nav.mp4

Navigation with back gesture:

demo_back_gesture_nav.mp4

Copy link
Contributor

@LouisPhilippeHeon LouisPhilippeHeon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Est-ce que ce serait possible d'ajouter des cas de tests pour navigation_service.dart? À part de ça, tout me semble beau.

@BenjaminBelanger
Copy link
Member Author

BenjaminBelanger commented Sep 24, 2024

Est-ce que ce serait possible d'ajouter des cas de tests pour navigation_service.dart? À part de ça, tout me semble beau.

Bonne idée, ça ne devrait pas être trop compliqué à intégrer. Je vais checker ça.

Copy link

Copy link

Coverage after merging bugfix/android-back-gesture into master will be

71.87%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
lib/constants
   preferences_flags.dart0%100%100%0%59, 64, 66, 68–70, 73, 75–78, 80, 82
   markers.dart100%100%100%100%
lib/features/app/analytics
   analytics_service.dart0%100%100%0%13–14, 17, 20–22, 25, 30, 32–34, 38, 40–41, 43
   remote_config_service.dart0%100%100%0%100, 103–105, 108–110, 113–115, 118–120, 123–125, 128–130, 133–135, 138–140, 143–144, 146–150, 154–156, 58–60, 63–65, 68–70, 73–75, 78–80, 83–85, 88–90, 93–95, 98–99
lib/features/app/error
   internal_info_service.dart0%100%100%0%18–21, 24–29, 32, 34–38, 42–43
lib/features/app/error/not_found
   not_found_viewmodel.dart100%100%100%100%
   not_found_view.dart92.59%100%100%92.59%69–70
lib/features/app/integration
   github_api.dart0%100%100%0%100–101, 104, 106, 110, 112–116, 118–119, 122, 124, 131–134, 138–139, 141, 39, 42–43, 47, 51–55, 57–58, 60, 62, 64–65, 68, 70, 77, 82–88, 92, 94, 96–98
   launch_url_service.dart0%100%100%0%16–18, 21–23, 26–31, 37, 55–56, 59
   networking_service.dart0%100%100%0%10–11, 13–15, 18–20
lib/features/app/monets_api
   monets_api_client.dart90.91%100%100%90.91%22
lib/features/app/monets_api/models
   mon_ets_user.dart50%100%100%50%29–33, 35, 37
lib/features/app/navigation
   navigation_service.dart0%100%100%0%100, 31, 34–35, 37–38, 45–46, 49–50, 53–55, 57, 62–63, 66–67, 70–72, 75–76, 79, 81, 86, 89, 91–92, 95–97, 99
   navigation_history_observer.dart0%100%100%0%12–14, 16, 18, 20, 23, 25, 28, 30, 8–9
lib/features/app/repository
   author_repository.dart0%100%100%0%13, 15
   course_repository.dart84.34%100%100%84.34%200, 205, 210–211, 213, 217, 219–220, 223–229, 234, 236, 239, 241–243, 246–251, 255, 259–261, 263, 267, 337, 345, 347, 532–533, 83
   news_repository.dart0%100%100%0%16, 21
   quick_link_repository.dart85.71%100%100%85.71%39–40
   user_repository.dart93.52%100%100%93.52%135–136, 186, 308, 310, 98–99
lib/features/app/signets-api
   signets_api_client.dart88.89%100%100%88.89%35, 45, 47, 49
   soap_service.dart100%100%100%100%
lib/features/app/signets-api/commands
   authentificate_command.dart0%100%100%0%18, 21, 24–28, 31
   get_course_reviews_command.dart100%100%100%100%
   get_course_summary_command.dart100%100%100%100%
   get_courses_activities_command.dart100%100%100%100%
   get_courses_command.dart100%100%100%100%
   get_programs_command.dart100%100%100%100%
   get_schedule_activities_command.dart100%100%100%100%
   get_sessions_command.dart100%100%100%100%
   get_student_info_command.dart100%100%100%100%
lib/features/app/signets-api/models
   course.dart80.52%100%100%80.52%102–105, 120, 122–131
   course_activity.dart81.40%100%100%81.40%83, 85–91
   schedule_activity.dart80.95%100%100%80.95%121, 123–133
   session.dart73.08%100%100%73.08%159, 161–173, 175, 177–189
   profile_student.dart82.14%100%100%82.14%56, 58–61
   program.dart81.13%100%100%81.13%100–106, 96, 98–99
   course_review.dart51.92%100%100%51.92%100–103, 51–58, 70, 72–79, 95, 97–99
   course_summary.dart86.84%100%100%86.84%106, 108–116
   course_evaluation.dart70.54%100%100%70.54%128, 167, 169–182, 184, 186–200, 49
lib/features/app/startup
   startup_viewmodel.dart92.50%100%100%92.50%103, 138–139
lib/features/app/storage
   cache_manager.dart0%100%100%0%30–31, 34–37, 40, 44, 46–50, 56, 58–61, 66, 68–71
   preferences_service.dart69.09%100%100%69.09%119–120, 122, 36, 38, 40, 43–45, 69–70, 80–82, 85, 87–88
   siren_flutter_service.dart0%100%100%0%13–14, 18–19, 23–25, 29–31, 35, 41
lib/features/app/widgets
   base_scaffold.dart85.33%100%100%85.33%105, 135, 164–165, 167–169, 171–172, 174–175
   bottom_bar.dart92.65%100%100%92.65%50, 52, 54, 59, 63
   navigation_rail.dart64.18%100%100%64.18%41, 51, 53, 55, 58, 62, 68–69, 74–88, 90
   dismissible_card.dart100%100%100%100%
   link_web_view.dart88.24%100%100%88.24%38–39
lib/features/dashboard
   dashboard_view.dart67.19%100%100%67.19%154–157, 165–168, 176–178, 186–188, 196–198, 238–241, 255–257, 263–265, 274, 276–277, 295–298, 302–304, 322–323, 329–330, 355–356, 395, 402, 424–425, 460–463, 466–470, 472, 474, 476, 478–481, 483–486, 489, 491–492, 499–500, 505, 507, 513, 519–522, 550–551, 573, 85, 96
   dashboard_viewmodel.dart83.88%100%100%83.88%145–147, 149, 152, 203, 206, 278, 324, 328, 367, 372, 410, 425, 427–429, 431, 436–437, 493, 498, 500–501, 503–504, 507–508, 510, 513, 515, 517–518, 520–521, 524–525, 537–538
lib/features/dashboard/widgets
   course_activity_tile.dart100%100%100%100%
   haptics_container.dart100%100%100%100%
lib/features/ets
   ets_view.dart80%100%100%80%27–29, 79–81
lib/features/ets/events/api-client
   hello_api_client.dart91.67%100%100%91.67%26
lib/features/ets/events/api-client/commands
   get_events_command.dart74.07%100%100%74.07%50, 58, 61, 64, 67,

Copy link
Contributor

@LouisPhilippeHeon LouisPhilippeHeon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Testé aussi sur ios, pas d'impact sur la navigation

@BenjaminBelanger BenjaminBelanger merged commit da5cd74 into master Oct 30, 2024
7 checks passed
@BenjaminBelanger BenjaminBelanger deleted the bugfix/android-back-gesture branch October 30, 2024 21:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Android] Le hand gesture pour revenir à la page précédente renvoie tjrs au Dashboard
4 participants