Skip to content

Commit

Permalink
Release/v5.1.34+1934 (#4016)
Browse files Browse the repository at this point in the history
* Filter sport events with the correct sport names [#3986]

* Make the event2 favorite [#3986]

* Update CHANGELOG.md [#3986]

* Accessibility improvements

* Accessibility improvements

* Acknowledged "Assistant Managed" group for enabling Assistant UI [#4002].

* Trim URL links before launching them, report URL parse failure when confirming URLs [#4001].

* Created HomeEmptyContentWidget displayed when there is no favorites content [#3999].

* version: 5.1.33+1933

* version: 5.1.33+1933

* Add event image description when creating / modifying event [#4010]

* Update CHANGELOG.md [#4010]

* Use registration label for event if available [#4012]

* Update CHANGELOG.md [#4012]

* Fix deep link key for notifyProfileLoginNotification to profile.login

* version: 5.1.34+1934

---------

Co-authored-by: Dobromir Dobrev <dobromir.i.dobrev@gmail.com>
Co-authored-by: Todor Bachvarov <tobachvarov@gmail.com>
  • Loading branch information
3 people authored Mar 22, 2024
1 parent b7735a9 commit 2d42a8e
Show file tree
Hide file tree
Showing 29 changed files with 251 additions and 102 deletions.
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## Unreleased

## [5.1.34] - 2024-03-15
### Added
- Event cover image description [#4010](https://github.com/rokwire/illinois-app/issues/4010).
### Fixed
- Show event registration label if available [#4012](https://github.com/rokwire/illinois-app/issues/4012).
- Fix Settings and Profile deep links [#4014](https://github.com/rokwire/illinois-app/issues/4014).

## [5.1.33] - 2024-03-14
### Added
- Created HomeEmptyContentWidget displayed when there is no favorites content [#3999](https://github.com/rokwire/illinois-app/issues/3999).
### Changed
- Acknowledged "Assistant Managed" group for enabling Assistant UI [#4002](https://github.com/rokwire/illinois-app/issues/4002).
### Fixed
- Correct filtering of sport events [#3986](https://github.com/rokwire/illinois-app/issues/3986).
- Trim URL links before launching them, report URL parse failure when confirming URLs [#4001](https://github.com/rokwire/illinois-app/issues/4001).

## [5.1.32] - 2024-02-19
### Removed
- Android: background location permission [#3989](https://github.com/rokwire/illinois-app/issues/3989).
Expand Down
4 changes: 2 additions & 2 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ Patches for [ **illinois-app** ] will only be applied to the following versions:

| Version | Supported |
|----------| ------------------ |
| 5.1.32 | :white_check_mark: |
| < 5.1.32 | :x: |
| 5.1.34 | :white_check_mark: |
| < 5.1.34 | :x: |
| 5.0.78 | :white_check_mark: |
| < 5.0.78 | :x: |
| 4.3.61 | :white_check_mark: |
Expand Down
2 changes: 1 addition & 1 deletion assets/flexUI.json
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@
"canvas_courses" : ["${config.settings.groups.canvas}"],
"medicine_courses" : ["${config.settings.groups.canvas}"],
"mtd_bus_pass" : ["${config.settings.groups.mtd_bus_pass}"],
"assistant" : ["${config.settings.groups.assistant}"],
"assistant" : ["${config.settings.groups.assistant}", "OR", "${config.settings.groups.assistant_managed}"],
"essential_skills_coach" : ["${config.settings.groups.essential_skills_coach}"]
},
"locations": {
Expand Down
4 changes: 4 additions & 0 deletions assets/strings.en.json
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@

"panel.home.header.title": "Favorites",
"panel.home.header.editing.title": "Customize",
"panel.home.connect.not_logged_in.title": "Connect to Illinois",
"panel.home.connect.not_logged_in.netid.description.part_1": "Are you a ",
"panel.home.connect.not_logged_in.netid.description.part_2": "university student",
"panel.home.connect.not_logged_in.netid.description.part_3": " or ",
Expand Down Expand Up @@ -1213,6 +1214,7 @@

"panel.event2.create.header.title": "Create an Event",
"panel.event2.update.header.title": "Update Event",
"panel.event2.create.section.image.description": "The event image displays a 16:9 or 1000px x 615px jpg, png, or gif (not animated). Larger images are automatically positioned within the frame and can be tapped to view in their entirety within the Illinois app.",
"panel.event2.create.section.title.title": "EVENT TITLE",
"panel.event2.create.section.title.field.title": "TITLE FIELD",
"panel.event2.create.section.description.title": "EVENT DESCRIPTION",
Expand Down Expand Up @@ -3530,6 +3532,8 @@
"widget.home.welcome.text.title": "Welcome to {{app_title}} {{app_version}}",
"widget.home.welcome.button.close.label": "Close",

"widget.home.empty.content.text": "Tap the \u2606s under <a href='{{browse_local_url}}'>Browse</a> to add shortcuts to Favorites. Note that some features require specific <a href='{{privacy_settings_local_url}}'>privacy settings</a> and <a href='{{sign_in_local_url}}'>signing in</a> with your NetID, phone number, or email address.",

"widget.home.athletics_news.text.title": "Big 10 News",
"widget.home.athletics_news.text.empty.description": "Big 10 News is not available right now.",
"widget.home.athletics_news.text.offline": "Big 10 News is not available while offline.",
Expand Down
4 changes: 4 additions & 0 deletions assets/strings.es.json
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@

"panel.home.header.title": "Favoritas",
"panel.home.header.editing.title": "Personalizar",
"panel.home.connect.not_logged_in.title": "Connect to Illinois",
"panel.home.connect.not_logged_in.netid.description.part_1": "¿Eres un/a ",
"panel.home.connect.not_logged_in.netid.description.part_2": "estudiante universitario/a",
"panel.home.connect.not_logged_in.netid.description.part_3": " o ",
Expand Down Expand Up @@ -1212,6 +1213,7 @@

"panel.event2.create.header.title": "Crear un Evento",
"panel.event2.update.header.title": "Actualizar un Evento",
"panel.event2.create.section.image.description": "La imagen del evento muestra un formato jpg, png o gif de 16:9 o 1000 px x 615 px (no animado). Las imágenes más grandes se colocan automáticamente dentro del marco y se pueden tocar para verlas en su totalidad dentro de la aplicación de Illinois.",
"panel.event2.create.section.title.title": "TÍTULO DEL EVENTO",
"panel.event2.create.section.title.field.title": "TITLE FIELD",
"panel.event2.create.section.description.title": "DESCRIPCIÓN DEL EVENTO",
Expand Down Expand Up @@ -3523,6 +3525,8 @@
"widget.home.welcome.text.title": "Bienvenido a {{app_title}} {{app_version}}",
"widget.home.welcome.button.close.label": "Cerrar",

"widget.home.empty.content.text": "Tap the \u2606s under <a href='$_browseLocalUrlMacro'>Browse</a> to add shortcuts to Favorites. Note that some features require specific <a href='$_privacySettingsLocalUrlMacro'>privacy settings</a> and <a href='$_signInLocalUrlMacro'>signing in</a> with your NetID, phone number, or email address.",

"widget.home.athletics_news.text.title": "10 grandes noticias",
"widget.home.athletics_news.text.empty.description": "Las 10 grandes noticias no están disponibles en este momento.",
"widget.home.athletics_news.text.offline": "Big 10 News no está disponible sin conexión.",
Expand Down
4 changes: 4 additions & 0 deletions assets/strings.zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@

"panel.home.header.title": "收藏夾",
"panel.home.header.editing.title": "定制",
"panel.home.connect.not_logged_in.title": "Connect to Illinois",
"panel.home.connect.not_logged_in.netid.description.part_1": "您是 ",
"panel.home.connect.not_logged_in.netid.description.part_2": "學生",
"panel.home.connect.not_logged_in.netid.description.part_3": "",
Expand Down Expand Up @@ -1212,6 +1213,7 @@

"panel.event2.create.header.title": "举办活动",
"panel.event2.update.header.title": "活动更新",
"panel.event2.create.section.image.description": "事件圖像顯示 16:9 或 1000px x 615px jpg、png 或 gif(非動畫)。 較大的圖像會自動定位在框架內,並且可以點擊以在伊利諾伊州應用程式中完整查看。",
"panel.event2.create.section.title.title": "活动名称",
"panel.event2.create.section.description.title": "活动细节",
"panel.event2.create.section.description.description": " (在此栏新增的超链接无法使用。请将网址输入至正确的字段,如在线活动的活动网址、活动网页链接、或是外部的活动注册链接。)",
Expand Down Expand Up @@ -3508,6 +3510,8 @@
"widget.home.welcome.text.title": "“歡迎來到{{app_title}} {{app_version}}",
"widget.home.welcome.button.close.label": "",

"widget.home.empty.content.text": "Tap the \u2606s under <a href='$_browseLocalUrlMacro'>Browse</a> to add shortcuts to Favorites. Note that some features require specific <a href='$_privacySettingsLocalUrlMacro'>privacy settings</a> and <a href='$_signInLocalUrlMacro'>signing in</a> with your NetID, phone number, or email address.",

"widget.home.athletics_news.text.title": "十大新聞",
"widget.home.athletics_news.text.empty.description": "目前無法查看十大新聞。",
"widget.home.athletics_news.text.offline": "離線時無法查看十大新聞。",
Expand Down
2 changes: 1 addition & 1 deletion lib/ext/Favorite.dart
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ extension FavoriteExt on Favorite {
else if (this is Event2) {
Event2 event2 = (this as Event2);
if (event2.hasGame) {
Navigator.push(context, CupertinoPageRoute(builder: (context) => AthleticsGameDetailPanel(game: event2.game)));
Navigator.push(context, CupertinoPageRoute(builder: (context) => AthleticsGameDetailPanel(game: event2.game, event: event2)));
} else {
Navigator.push(context, CupertinoPageRoute(builder: (context) => Event2DetailPanel(event: event2)));
}
Expand Down
14 changes: 7 additions & 7 deletions lib/service/FirebaseMessaging.dart
Original file line number Diff line number Diff line change
Expand Up @@ -98,20 +98,20 @@ class FirebaseMessaging extends rokwire.FirebaseMessaging implements Notificatio
static const String notifyWellnessToDoItemNotification = "$notifyBase.wellness.to_do";
static const String notifyProfileMyNotification = "$notifyBase.profile.my";
static const String notifyProfileWhoAreYouNotification = "$notifyBase.profile.who_are_you";
static const String notifyProfileLoginNotification = "$notifyBase.profile.privacy"; //TBD profile.login?
static const String notifySettingsSectionsNotification = "$notifyBase.settings.sections"; //TBD deprecate. Use payloadTypeProfileLogin instead
static const String notifyProfileLoginNotification = "$notifyBase.profile.login";
static const String notifySettingsSectionsNotification = "$notifyBase.settings.sections"; //TBD deprecate and delete. Use profile.login instead
static const String notifySettingsInterestsNotification = "$notifyBase.settings.interests";
static const String notifySettingsFoodFiltersNotification = "$notifyBase.settings.food_filters";
static const String notifySettingsSportsNotification = "$notifyBase.settings.sports";
static const String notifySettingsFavoritesNotification = "$notifyBase.settings.favorites";
static const String notifySettingsAssessmentsNotification = "$notifyBase.settings.assessments";
static const String notifySettingsCalendarNotification = "$notifyBase.settings.calendar";
static const String notifySettingsAppointmentsNotification = "$notifyBase.settings.appointments";
static const String notifySettingsMapsNotification = "$notifyBase.settings.maps"; //TBD do we need this? Are we declaring these somewhere in the documentation?
static const String notifySettingsContactsNotification = "$notifyBase.settings.contacts"; //TBD do we need this?
static const String notifySettingsResearchNotification = "$notifyBase.settings.research"; //TBD do we need this?
static const String notifySettingsPrivacyNotification = "$notifyBase.settings.privacy"; //TBD do we need this?
static const String notifySettingsNotificationsNotification = "$notifyBase.settings.notifications"; //TBD do we need this?
static const String notifySettingsMapsNotification = "$notifyBase.settings.maps";
static const String notifySettingsContactsNotification = "$notifyBase.settings.contacts";
static const String notifySettingsResearchNotification = "$notifyBase.settings.research";
static const String notifySettingsPrivacyNotification = "$notifyBase.settings.privacy";
static const String notifySettingsNotificationsNotification = "$notifyBase.settings.notifications";
static const String notifyGuideArticleDetailNotification = "$notifyBase.guide.article.detail";

// Topic names
Expand Down
2 changes: 1 addition & 1 deletion lib/ui/BrowsePanel.dart
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,8 @@ import 'package:rokwire_plugin/utils/utils.dart';
import 'package:url_launcher/url_launcher.dart';

class BrowsePanel extends StatefulWidget {

static const String notifyRefresh = "edu.illinois.rokwire.browse.refresh";
static const String notifySelect = "edu.illinois.rokwire.browse.select";

BrowsePanel();

Expand Down
14 changes: 9 additions & 5 deletions lib/ui/RootPanel.dart
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ class _RootPanelState extends State<RootPanel> with TickerProviderStateMixin imp
Polls.notifyPresentResult,
uiuc.TabBar.notifySelectionChanged,
HomePanel.notifySelect,
BrowsePanel.notifySelect,
ExploreMapPanel.notifySelect,
]);

Expand Down Expand Up @@ -475,7 +476,10 @@ class _RootPanelState extends State<RootPanel> with TickerProviderStateMixin imp
_onFirebaseGuideArticleNotification(param);
}
else if (name == HomePanel.notifySelect) {
_onSelectHome();
_onSelectTab(RootTab.Favorites);
}
else if (name == BrowsePanel.notifySelect) {
_onSelectTab(RootTab.Browse);
}
else if (name == ExploreMapPanel.notifySelect) {
_onSelectMaps(param);
Expand All @@ -493,11 +497,11 @@ class _RootPanelState extends State<RootPanel> with TickerProviderStateMixin imp
}
}

void _onSelectHome() {
int? homeIndex = _getIndexByRootTab(RootTab.Favorites);
if (mounted && (homeIndex != null)) {
void _onSelectTab(RootTab tab) {
int? tabIndex = _getIndexByRootTab(tab);
if (mounted && (tabIndex != null)) {
Navigator.of(context, rootNavigator: true).popUntil((route) => route.isFirst);
_selectTab(homeIndex);
_selectTab(tabIndex);
}
}

Expand Down
21 changes: 16 additions & 5 deletions lib/ui/athletics/AthleticsEventsContentWidget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ class _AthleticsEventsContentWidgetState extends State<AthleticsEventsContentWid
if (game != null) {
cardsList.add(Padding(
padding: EdgeInsets.only(top: cardsList.isNotEmpty ? 8 : 0),
child: AthleticsEventCard(sportEvent: event, onTap: () => _onTapGame(game), showImage: true)));
child: AthleticsEventCard(sportEvent: event, onTap: () => _onTapGame(event), showImage: true)));
}
}
if (_extendingEvents) {
Expand Down Expand Up @@ -153,9 +153,9 @@ class _AthleticsEventsContentWidgetState extends State<AthleticsEventsContentWid
strokeWidth: 3, valueColor: AlwaysStoppedAnimation<Color?>(Styles().colors.fillColorSecondary)))));
}

void _onTapGame(Game game) {
void _onTapGame(Event2 event) {
Analytics().logSelect(target: 'Athletics Event');
Navigator.push(context, CupertinoPageRoute(builder: (context) => AthleticsGameDetailPanel(game: game)));
Navigator.push(context, CupertinoPageRoute(builder: (context) => AthleticsGameDetailPanel(game: event.game, event: event)));
}

Events2Query _queryParam({int offset = 0, int limit = _eventsPageLength}) {
Expand Down Expand Up @@ -301,16 +301,27 @@ class _AthleticsEventsContentWidgetState extends State<AthleticsEventsContentWid
if (CollectionUtils.isNotEmpty(_teamsFilter)) {
late dynamic sportAttribute;
if (_teamsFilter!.length == 1) {
sportAttribute = _teamsFilter!.first.name;
sportAttribute = _getSportFilterKey(_teamsFilter!.first);
} else {
sportAttribute = <String>[];
sportAttribute = List.from(_teamsFilter!.map((sport) => sport.name));
sportAttribute = List.from(_teamsFilter!.map((sport) {
return _getSportFilterKey(sport);
}));
}
attributes.addAll({'sport': sportAttribute});
}
return attributes;
}

String? _getSportFilterKey(SportDefinition? sport) {
// "Manually" select different property name for these sports because they do not match with labels in Calendar and Sports BB
if ((sport?.shortName == 'wrestling') || (sport?.shortName == 'wswim')) {
return sport?.customName;
} else {
return sport?.name;
}
}

bool get _favoritesMode => (widget.showFavorites == true);

String get _emptyMessage {
Expand Down
12 changes: 7 additions & 5 deletions lib/ui/athletics/AthleticsGameDetailHeading.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import 'package:illinois/utils/AppUtils.dart';
import 'package:rokwire_plugin/model/auth2.dart';
import 'package:illinois/model/livestats/LiveGame.dart';
import 'package:illinois/model/sport/SportDetails.dart';
import 'package:rokwire_plugin/model/event2.dart';
import 'package:rokwire_plugin/service/notification_service.dart';
import 'package:illinois/service/Auth2.dart';
import 'package:illinois/service/Sports.dart';
Expand All @@ -45,9 +46,10 @@ import 'package:url_launcher/url_launcher.dart';

class AthleticsGameDetailHeading extends StatefulWidget {
final Game? game;
final Event2? sportEvent;
final bool showImageTout;

AthleticsGameDetailHeading({this.game, this.showImageTout = true});
AthleticsGameDetailHeading({this.game, this.sportEvent, this.showImageTout = true});

_AthleticsGameDetailHeadingState createState() => _AthleticsGameDetailHeadingState();
}
Expand Down Expand Up @@ -98,7 +100,7 @@ class _AthleticsGameDetailHeadingState extends State<AthleticsGameDetailHeading>
bool hasScores = sportDefinition?.hasScores ?? false;
bool hasLiveGame = (Storage().debugDisableLiveGameCheck == true) || LiveStats().hasLiveGame(widget.game?.id);
bool showScore = hasScores && (widget.game?.isGameDay ?? false) && hasLiveGame;
bool isGameFavorite = Auth2().isFavorite(widget.game);
bool isSportEventFavorite = Auth2().isFavorite(widget.sportEvent);
bool isUpcomingGame = widget.game?.isUpcoming ?? false;
String? liveStatsUrl = widget.game?.links?.liveStats;
String? audioUrl = widget.game?.links?.audio;
Expand Down Expand Up @@ -158,10 +160,10 @@ class _AthleticsGameDetailHeadingState extends State<AthleticsGameDetailHeading>
label: Localization().getStringEx("widget.game_detail_heading.button.save_game.title", "Save Game"),
hint: Localization().getStringEx("widget.game_detail_heading.button.save_game.hint", "Tap to save"),
button: true,
checked: isGameFavorite,
checked: isSportEventFavorite,
child: GestureDetector(
child: Container(padding: EdgeInsets.only(right: 24, left: 10, bottom: 20, top: 20),
child: Styles().images.getImage(isGameFavorite ? 'star-filled' : 'star-outline-gray', excludeFromSemantics: true
child: Styles().images.getImage(isSportEventFavorite ? 'star-filled' : 'star-outline-gray', excludeFromSemantics: true
)),
onTap: _onTapSwitchFavorite),
),
Expand Down Expand Up @@ -439,7 +441,7 @@ class _AthleticsGameDetailHeadingState extends State<AthleticsGameDetailHeading>

void _onTapSwitchFavorite() {
Analytics().logSelect(target: "Favorite: ${widget.game?.title}");
Auth2().prefs?.toggleFavorite(widget.game);
Auth2().prefs?.toggleFavorite(widget.sportEvent);
}

void _onTapGetTickets() {
Expand Down
2 changes: 1 addition & 1 deletion lib/ui/athletics/AthleticsGameDetailPanel.dart
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ class _AthleticsGameDetailPanelState extends Event2Selector2State<AthleticsGameD
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AthleticsGameDetailHeading(game: game, showImageTout: false, ),
AthleticsGameDetailHeading(game: game, sportEvent: widget.event, showImageTout: false, ),
Padding(
padding: EdgeInsets.symmetric(horizontal: 24, vertical: 16),
child: Column(
Expand Down
Loading

0 comments on commit 2d42a8e

Please sign in to comment.