Skip to content

Add broadcast message on dashboard in place of dynamic message#1358

Open
arihuss wants to merge 8 commits intov5from
feature/1337-display-broadcast-message
Open

Add broadcast message on dashboard in place of dynamic message#1358
arihuss wants to merge 8 commits intov5from
feature/1337-display-broadcast-message

Conversation

@arihuss
Copy link
Copy Markdown
Contributor

@arihuss arihuss commented Mar 11, 2026

⁉️ Related Issue

closes: #1337

📖 Description

Adds a broadcast message from Firebase in place of the dynamic messages on the dashboard if needed. Firebase values can also affect the dashboard's circle color and add an url.

🧪 How Has This Been Tested?

  • Tested differents scenarios by hardcoding values in RemoteConfigService (dashboardMessageActive, dashboardMessageFr. dashboardMessageEn, dashboardMsgColor, dashboardMsgUrl)
  • Tested different scenarios by changing remote config params on Firebase

☑️ 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):

If dashboardMsgUrl has a non-empty value:
image

If dashboardMsgUrl has an empty value (""):
image

@arihuss arihuss marked this pull request as ready for review March 20, 2026 04:22
@arihuss arihuss requested a review from a team as a code owner March 20, 2026 04:22
@LouisPhilippeHeon
Copy link
Copy Markdown
Member

Instead of cutting off the text we should put this in autosize text.

@BenjaminBelanger
Copy link
Copy Markdown
Member

BenjaminBelanger commented Mar 31, 2026

Should we remove lib/domain/broadcast_icon_type.dart? I see that the icon type logic was replaced with a simpler approach, but this file was left behind and is now unused.

@sonarqubecloud
Copy link
Copy Markdown

@github-actions
Copy link
Copy Markdown

Coverage after merging feature/1337-display-broadcast-message into v5 will be

77.57%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
lib
   locator.dart3.57%100%100%3.57%33, 35–45, 47–49, 52–60, 63–65
lib/data/models
   dynamic_message.dart100%100%100%100%
   dynamic_message_context.dart100%100%100%100%
   broadcast_message.dart0%100%100%0%9
   quick_link.dart100%100%100%100%
   quick_link_data.dart100%100%100%100%
   event_data.dart100%100%100%100%
   quick_links.dart100%100%100%100%
   emergency_procedures.dart100%100%100%100%
   emergency_procedure.dart100%100%100%100%
   navigation_menu_callback.dart100%100%100%100%
lib/data/models/hello
   report_news.dart100%100%100%100%
   activity_area.dart56.52%100%100%56.52%37, 40–46, 48–49
   news.dart50.91%100%100%50.91%100–101, 103, 105–116, 88–99
   organizer.dart100%100%100%100%
   paginated_news.dart30.43%100%100%30.43%36–41, 44, 47–53, 55, 57
   report.dart25%100%100%25%12–13, 15
   news_tags.dart5%100%100%5%13–17, 20–24, 27, 30–35, 37–38
lib/data/repositories
   author_repository.dart0%100%100%0%13–14
   broadcast_message_repository.dart0%100%100%0%13–14, 16–19
   course_repository.dart84.05%100%100%84.05%115–117, 119, 135–136, 188, 190, 195–197, 201, 204, 207–211, 213–214, 218, 220, 223–227, 231, 235–236, 238, 241, 293, 300, 302, 452, 87
   list_sessions_repository.dart100%100%100%100%
   news_repository.dart0%100%100%0%16–17
   quick_link_repository.dart83.33%100%100%83.33%34–35
   settings_repository.dart100%100%100%100%
   user_repository.dart95.24%100%100%95.24%139–140
   base_stream_repository.dart100%100%100%100%
lib/data/services
   dynamic_messages_service.dart100%100%100%100%
   calendar_service.dart0%100%100%0%103, 107, 109–114, 116, 119–120, 125–126, 129, 132, 134, 141–142, 145, 147, 15, 152, 156–157, 16, 161–166, 170, 172, 18, 20, 22, 24, 26, 40, 42–46, 49, 53–56, 64, 68–69, 72–73, 76, 82, 84–85, 88, 92–93, 97–99
   analytics_service.dart0%100%100%0%14, 17–19, 22, 27–29, 33–34, 36, 39
   auth_service.dart0%100%100%0%101, 103, 105, 107, 109–110, 112–113, 118–119, 122, 124–126, 128–129, 20, 23–24, 26, 28–30, 33, 36, 39, 43, 45, 48–49, 55–56, 61–62, 67, 69–70, 74–76, 78–79, 84, 86–89, 91–92, 94–95
   cache_service.dart0%100%100%0%32–33, 36–37, 40, 44, 46–48, 54, 56–58, 63, 65–67
   in_app_review_service.dart0%100%100%0%16, 20, 23–24
   launch_url_service.dart0%100%100%0%11–14, 16, 20–23, 25, 29–32, 34
   navigation_service.dart0%100%100%0%20, 23–24, 26–27, 34–35, 38–39, 42–43, 45, 50, 55, 57–58, 61–62, 64, 66
   remote_config_service.dart0%100%100%0%100–101, 104–106, 109–111, 114–116, 119–121, 124–126, 129–130, 132–135, 139–142, 49–51, 54–56, 59–61, 64–66, 69–71, 74–76, 79–81, 84–86, 89–91, 94–96, 99
   networking_service.dart0%100%100%0%10, 12–14, 17–19
   preferences_service.dart94.44%100%100%94.44%84–85
   schedule_service.dart100%100%100%100%
   signets_client.g.dart87.88%100%100%87.88%51, 54, 65, 84
lib/data/services/hello
   hello_service.dart100%100%100%100%
lib/data/services/hello/commands
   get_events_command.dart68.18%100%100%68.18%50, 55, 58, 61, 64, 67, 70
   get_organizer_command.dart90%100%100%90%26
   report_news_command.dart90%100%100%90%27
lib/data/services/signets-api
   signets_api_client.dart72.92%100%100%72.92%152–154, 48–49, 51–55, 57–58, 61
   request_builder_service.dart85.71%100%100%85.71%42, 53, 56
lib/data/services/signets-api/commands
   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_replaced_days_command.dart0%100%100%0%22, 24, 26–28, 30, 34
   get_schedule_activities_command.dart100%100%100%100%
   get_sessions_command.dart100%100%100%100%
   get_student_info_command.dart100%100%100%100%
lib/data/services/signets-api/models
   course_activity.dart84.31%100%100%84.31%104, 106–112
   replaced_day.dart57.69%100%100%57.69%18–21, 37, 39–42, 54–55
   session.dart69.89%100%100%69.89%144, 146–158, 160, 162–174
   course.dart84%100%100%84%105, 121, 123–132
   schedule_activity.dart81.08%100%100%81.08%77, 79–84
   profile_student.dart93.10%100%100%93.10%67–68
   program.dart100%100%100%100%
   course_review.dart51.92%100%100%51.92%100–104, 51–58, 71, 73–80, 96, 98–99
   course_summary.dart85.07%100%100%85.07%101, 103–111
   course_evaluation.dart68.63%100%100%68.63%157, 159–172, 174, 176–190, 49
lib/domain/models
   session_progress.dart100%100%100%100%
lib/domain/models/signets-api
   session.dart100%100%100%100%
   session.g.dart100%100%100%100%
   signets_api_response.dart58.33%100%100%58.33%16, 18, 25–27
lib/logic
   session_progress_use_case.dart77.27%100%100%77.27%19–20, 38, 43–44
lib/ui/choose_language/view_model
   choose_language_viewmodel.dart100%100%100%100%
lib/ui/choose_language/widgets
   choose_language_view.dart94.29%100%100%94.29%35–36
lib/ui/core/themes
   app_palette.dart100%100%100%100%
   app_colors_extension.dart1.49%100%100%1.49%102–132, 136, 138, 140, 144–174, 69
   app_theme.dart11.67%100%100%11.67%100, 102–103, 105, 107–108, 11, 111–112, 114, 120–121, 124, 127–128, 13, 130, 132, 139, 14, 140, 15, 158–159, 18–19, 21–23, 25–27, 30–32, 34, 36, 38–39, 42–43, 45, 51–55, 58, 60, 95–96, 98–99
lib/ui/core/ui
   

@LouisPhilippeHeon
Copy link
Copy Markdown
Member

We should add UI tests

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.

4 participants