Skip to content

Commit 42b813f

Browse files
authored
Merge pull request #2993 from rokwire/release/v4.2.52+1652
Release/v4.2.52+1652
2 parents 3a5515c + 9136556 commit 42b813f

File tree

82 files changed

+1817
-900
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+1817
-900
lines changed

CHANGELOG.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,56 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77
## Unreleased
88

9+
## [4.2.52] - 2023-02-16
10+
- Launch privacy policy web content in an external web browser on iOS platforms [#2909](https://github.com/rokwire/illinois-app/issues/2909).
11+
- Launch feedback web content in an external web browser on iOS platforms [#2909](https://github.com/rokwire/illinois-app/issues/2909).
12+
13+
## [4.2.51] - 2023-02-15
14+
### Fixed
15+
- Fixed scrolling issues in research questionnaire prompt and acknowledgement panels [#2985](https://github.com/rokwire/illinois-app/issues/2985).
16+
- Android: Crash for foldable devices [#2920](https://github.com/rokwire/illinois-app/issues/2920).
17+
18+
## [4.2.50] - 2023-02-13
19+
### Changed
20+
- Updated analytics log for research questionnaire answers [#2910](https://github.com/rokwire/illinois-app/issues/2910).
21+
- Updated English strings [#2596](https://github.com/rokwire/illinois-app/issues/2596).
22+
### Fixed
23+
- Displaying athletics event from notifications inbox [#2874](https://github.com/rokwire/illinois-app/issues/2874).
24+
- Handle tap action over poll and wellness todo items notification [#2645](https://github.com/rokwire/illinois-app/issues/2645).
25+
- Load appointments only if the user is signed in [#2923](https://github.com/rokwire/illinois-app/issues/2923).
26+
- Scrolling in wellness MyMcKinley Appointments [#2958](https://github.com/rokwire/illinois-app/issues/2958).
27+
- Open appointments list panel on tap over appointment inbox message if appointment id does not exist [#2969](https://github.com/rokwire/illinois-app/issues/2969).
28+
- Open appointment detail panel on tap over appointment inbox message [#2969](https://github.com/rokwire/illinois-app/issues/2969).
29+
- Fixed navigation target when requesting directions to building [#2955](https://github.com/rokwire/illinois-app/issues/2955).
30+
- Retrieve sorted appointments from the backend [#2971](https://github.com/rokwire/illinois-app/issues/2971).
31+
### Added
32+
- Cache appointments account [#2905](https://github.com/rokwire/illinois-app/issues/2905).
33+
34+
## [4.2.49] - 2023-01-05
35+
### Fixed
36+
- Fixed delete poll notification processing [#2173](https://github.com/rokwire/illinois-app/issues/2173).
37+
- Fixed dropdown menu needs extending in Groups Manage Members [#2407](https://github.com/rokwire/illinois-app/issues/2407).
38+
- Fixed empty iCard expiration date processing for retired faculty/staff [#2892](https://github.com/rokwire/illinois-app/issues/2892).
39+
- Fixed update privacy dialog scrolling (+ some other nonsense items) [#2891](https://github.com/rokwire/illinois-app/issues/2891).
40+
- Formatting date times in events [#2719](https://github.com/rokwire/illinois-app/issues/2719).
41+
### Changed
42+
- Show user profile picture for personal info button in root header bar [#2157](https://github.com/rokwire/illinois-app/issues/2157).
43+
- Text update: Settings - Sign In/Sign Out [#2457](https://github.com/rokwire/illinois-app/issues/2457).
44+
45+
## [4.2.48] - 2023-01-03
46+
### Fixed
47+
- Refresh issue with appointments [#2843](https://github.com/rokwire/illinois-app/issues/2843).
48+
- Added appointments default end date time [#2842](https://github.com/rokwire/illinois-app/issues/2842).
49+
- Remove dimmed foreground decoration from video tutorial thumbnails [#2823](https://github.com/rokwire/illinois-app/issues/2823).
50+
- Fixed "Add Cover Image" button background color [#2868](https://github.com/rokwire/illinois-app/issues/2868).
51+
### Added
52+
- Added muted indicator to inbox message card [#2877](https://github.com/rokwire/illinois-app/issues/2877).
53+
- Show not logged in message in Illini Cash and MTD Buss Wallet cards [#2867](https://github.com/rokwire/illinois-app/issues/2877).
54+
### Deleted
55+
- Removed explanation message "View current studies that match ..." from questionnaire acknowledgement panel [#2873](https://github.com/rokwire/illinois-app/issues/2873).
56+
### Changed
57+
- Always use orange favorite icon, removed all references to the blue favorite icon [#2165](https://github.com/rokwire/illinois-app/issues/2165).
58+
959
## [4.2.47] - 2022-12-22
1060
### Changed
1161
- Polls :: not-signed-in error - needs better message [#2777](https://github.com/rokwire/illinois-app/issues/2777).

SECURITY.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ Patches for [ **illinois-app** ] will only be applied to the following versions:
66

77
| Version | Supported |
88
| ------- | ------------------ |
9+
| 4.2.52 | :white_check_mark: |
10+
| < 4.2.52 | :x: |
911
| 4.2.47 | :white_check_mark: |
1012
| < 4.2.47 | :x: |
1113
| 4.1.36 | :white_check_mark: |

android/app/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,9 @@ dependencies {
192192

193193
//Security
194194
implementation "androidx.security:security-crypto:1.1.0-alpha03"
195+
196+
// Support foldable devices
197+
implementation "androidx.window:window:1.0.0"
195198
//end Common
196199

197200
//Google Maps

android/app/src/main/java/edu/illinois/rokwire/Utils.java

Lines changed: 46 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import android.graphics.Bitmap;
2424
import android.graphics.drawable.Drawable;
2525
import android.graphics.drawable.GradientDrawable;
26+
import android.location.Location;
2627
import android.text.format.DateUtils;
2728
import android.util.Log;
2829
import android.view.View;
@@ -178,35 +179,62 @@ public static HashMap optLocation(HashMap explore) {
178179
return null;
179180
}
180181

181-
public static HashMap optStudentCourseLocation(HashMap explore) {
182-
return optStudentCourseLocation(explore, false);
183-
}
184-
185-
public static HashMap optStudentCourseLocation(HashMap explore, boolean destinaton) {
186-
Object sectionObj = explore.get("coursesection");
182+
public static HashMap optStudentCourseBuilding(HashMap explore) {
183+
Object sectionObj = (explore != null) ? explore.get("coursesection") : null;
187184
if (sectionObj instanceof HashMap) {
188185
HashMap sectionMap = (HashMap) sectionObj;
189186
Object buildingObj = sectionMap.get("building");
190187
if (buildingObj instanceof HashMap) {
191188
HashMap buildingMap = (HashMap) buildingObj;
192-
if (destinaton) {
193-
Object entracesObj = buildingMap.get("entrances");
194-
if (entracesObj instanceof ArrayList) {
195-
ArrayList entracesList = (ArrayList) entracesObj;
196-
if (entracesList.size() > 0) {
197-
Object entraceObj = entracesList.get(0);
198-
if (entraceObj instanceof HashMap) {
199-
return (HashMap) entraceObj;
200-
}
201-
}
202-
}
203-
}
204189
return buildingMap;
205190
}
206191
}
207192
return null;
208193
}
209194

195+
public static HashMap optStudentCourseLocation(HashMap explore) {
196+
return optStudentCourseBuilding(explore);
197+
}
198+
199+
public static HashMap optBuildingDestinationLocation(HashMap buildingMap, android.location.Location origin, boolean requireAda) {
200+
Object entracesObj = (buildingMap != null) ? buildingMap.get("entrances") : null;
201+
if ((entracesObj instanceof ArrayList) && (origin != null)) {
202+
LatLng orgLatLng = new LatLng(origin.getLatitude(), origin.getLongitude());
203+
HashMap minEntrance = null, minAdaEntrance = null;
204+
double minDistance = -1.0, minAdaDistance = -1.0;
205+
ArrayList entracesList = (ArrayList) entracesObj;
206+
for (Object entraceObj : entracesList) {
207+
if (entraceObj instanceof HashMap) {
208+
HashMap entraceMap = (HashMap) entraceObj;
209+
LatLng entraceLatLng = optLatLng(entraceMap);
210+
if (entraceLatLng != null) {
211+
double distance = Location.getDistanceBetween(orgLatLng, entraceLatLng);
212+
if ((minDistance < 0.0) || (distance < minDistance)) {
213+
minDistance = distance;
214+
minEntrance = entraceMap;
215+
}
216+
217+
Object adaObj = entraceMap.get("adaCompliant");
218+
boolean adaEntrance = (adaObj instanceof Boolean) ? (Boolean)adaObj : false;
219+
if (requireAda && (adaEntrance == true) && ((minAdaDistance < 0.0) || (distance < minAdaDistance))) {
220+
minAdaDistance = distance;
221+
minAdaEntrance = entraceMap;
222+
}
223+
}
224+
}
225+
}
226+
227+
228+
if (requireAda && (minAdaEntrance != null)) {
229+
return minAdaEntrance;
230+
}
231+
else if (minEntrance != null) {
232+
return minEntrance;
233+
}
234+
}
235+
return buildingMap;
236+
}
237+
210238
public static Integer optLocationFloor(HashMap explore) {
211239
if (explore == null) {
212240
return null;

android/app/src/main/java/edu/illinois/rokwire/maps/MapDirectionsActivity.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ protected void onCreate(Bundle savedInstanceState) {
139139
super.onCreate(savedInstanceState);
140140
initUiViews();
141141
initCoreLocation();
142-
initExplore();
142+
initExplore(null);
143143
initNavigation();
144144
buildTravelModes();
145145
}
@@ -254,6 +254,7 @@ private void onCoreLocationUpdate() {
254254
if (coreLocation != null) {
255255
if (!firstLocationUpdatePassed) {
256256
firstLocationUpdatePassed = true;
257+
initExplore(coreLocation);
257258
handleFirstLocationUpdate();
258259
}
259260

@@ -290,7 +291,7 @@ private void stopMonitor() {
290291

291292
//region Explores
292293

293-
private void initExplore() {
294+
private void initExplore(android.location.Location origin) {
294295
Serializable exploreSerializable = getIntent().getSerializableExtra("explore");
295296
if (exploreSerializable == null) {
296297
return;
@@ -299,13 +300,13 @@ private void initExplore() {
299300
HashMap singleExplore;
300301
singleExplore = (HashMap) exploreSerializable;
301302
this.explore = singleExplore;
302-
initExploreLocation(singleExplore);
303+
initExploreLocation(singleExplore, origin);
303304
} else if (exploreSerializable instanceof ArrayList) {
304305
ArrayList explores = (ArrayList) exploreSerializable;
305306
this.explore = explores;
306307
Object firstExplore = (explores.size() > 0) ? explores.get(0) : null;
307308
if (firstExplore instanceof HashMap) {
308-
initExploreLocation((HashMap) firstExplore);
309+
initExploreLocation((HashMap) firstExplore, origin);
309310
}
310311
}
311312
}
@@ -367,15 +368,20 @@ private void updateExploreMarkerAppearance() {
367368
cameraZoom = currentCameraZoom;
368369
}
369370

370-
private void initExploreLocation(HashMap singleExplore) {
371+
private void initExploreLocation(HashMap singleExplore, Location location) {
371372
Utils.ExploreType exploreType = Utils.Explore.getExploreType(singleExplore);
372373
if ((exploreType == Utils.ExploreType.PARKING) || (exploreType == Utils.ExploreType.MTD_STOP)) {
373374
LatLng latLng = Utils.Explore.optLocationLatLng(singleExplore);
374375
if (latLng != null) {
375376
this.exploreLocation = Utils.Explore.createLocationMap(latLng);
376377
}
378+
} else if (exploreType == Utils.ExploreType.BUILDING) {
379+
boolean requireAda = Utils.Map.getValueFromPath(options, "requireAda", false);
380+
this.exploreLocation = Utils.Explore.optBuildingDestinationLocation(singleExplore, location, requireAda);
377381
} else if (exploreType == Utils.ExploreType.STUDENT_COURSE) {
378-
this.exploreLocation = Utils.Explore.optStudentCourseLocation(singleExplore, true);
382+
boolean requireAda = Utils.Map.getValueFromPath(options, "requireAda", false);
383+
HashMap buildingMap = Utils.Explore.optStudentCourseBuilding(singleExplore);
384+
this.exploreLocation = Utils.Explore.optBuildingDestinationLocation(singleExplore, location, requireAda);
379385
} else {
380386
this.exploreLocation = Utils.Explore.optLocation(singleExplore);
381387
}

assets/extra/appointments.json

Lines changed: 96 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,99 @@
11
[
2+
{
3+
"id": "08c122e3-2174-438b-94d4-f231198c26bc",
4+
"account_id": "2222",
5+
"date": "2023-01-14T07:30:444Z",
6+
"type": "InPerson",
7+
"location": {
8+
"id": "555556",
9+
"title": "McKinley Health Center, East wing, 3rd floor",
10+
"latitude": 40.10291,
11+
"longitude": -88.21961,
12+
"phone": "555-333-777"
13+
},
14+
"cancelled": false,
15+
"instructions": "Some instructions 1 ...",
16+
"host": {
17+
"first_name": "John",
18+
"last_name": "Doe"
19+
}
20+
},
21+
{
22+
"id": "08c122e3-2174-438b-94d4-f231198c26ba",
23+
"account_id": "2222",
24+
"date": "2023-01-13T07:30:444Z",
25+
"type": "InPerson",
26+
"location": {
27+
"id": "555555",
28+
"title": "McKinley Health Center, East wing, 3rd floor",
29+
"latitude": 40.10291,
30+
"longitude": -88.21961,
31+
"phone": "555-333-777"
32+
},
33+
"cancelled": false,
34+
"instructions": "Some instructions 1 ...",
35+
"host": {
36+
"first_name": "John",
37+
"last_name": "Doe"
38+
}
39+
},
40+
{
41+
"id": "08c122e3-2174-438b-f231198c26ba",
42+
"account_id": "2222",
43+
"date": "2023-01-12T08:22:444Z",
44+
"type": "Online",
45+
"online_details": {
46+
"url": "https://mymckinley.illinois.edu",
47+
"meeting_id": "asdasd",
48+
"meeting_passcode": "passs"
49+
},
50+
"cancelled": false,
51+
"instructions": "Some instructions 2 ...",
52+
"host": {
53+
"first_name": "JoAnn",
54+
"last_name": "Doe"
55+
}
56+
},
57+
{
58+
"id": "2174-438b-94d4-f231198c26ba",
59+
"account_id": "2222",
60+
"date": "2023-01-11T10:30:444Z",
61+
"type": "InPerson",
62+
"location": {
63+
"id": "777",
64+
"title": "McKinley Health Center 8, South wing, 2nd floor",
65+
"latitude": 40.08514,
66+
"longitude": -88.27801,
67+
"phone": "555-444-777"
68+
},
69+
"cancelled": false,
70+
"instructions": "Some instructions 3 ...",
71+
"host": {
72+
"first_name": "Bill",
73+
"last_name": ""
74+
}
75+
},
76+
{
77+
"id": "08c122e3",
78+
"account_id": "2222",
79+
"date": "2023-01-10T11:34:444Z",
80+
"type": "Online",
81+
"online_details": {
82+
"url": "https://mymckinley.illinois.edu",
83+
"meeting_id": "09jj",
84+
"meeting_passcode": "dfkj3940"
85+
},
86+
"cancelled": false,
87+
"instructions": "Some instructions 4 ...",
88+
"host": {
89+
"first_name": "Peter",
90+
"last_name": "Grow"
91+
}
92+
},
293
{
394
"id": "08c122e3-2174-438b-94d4-f231198c26bc",
495
"account_id": "2222",
5-
"date": "2023-01-14T07:30:444Z",
96+
"date": "2023-02-14T07:30:444Z",
697
"type": "InPerson",
798
"location": {
899
"id": "555556",
@@ -21,7 +112,7 @@
21112
{
22113
"id": "08c122e3-2174-438b-94d4-f231198c26ba",
23114
"account_id": "2222",
24-
"date": "2023-01-13T07:30:444Z",
115+
"date": "2023-02-13T07:30:444Z",
25116
"type": "InPerson",
26117
"location": {
27118
"id": "555555",
@@ -40,7 +131,7 @@
40131
{
41132
"id": "08c122e3-2174-438b-f231198c26ba",
42133
"account_id": "2222",
43-
"date": "2023-01-12T08:22:444Z",
134+
"date": "2023-02-12T08:22:444Z",
44135
"type": "Online",
45136
"online_details": {
46137
"url": "https://mymckinley.illinois.edu",
@@ -57,7 +148,7 @@
57148
{
58149
"id": "2174-438b-94d4-f231198c26ba",
59150
"account_id": "2222",
60-
"date": "2023-01-11T10:30:444Z",
151+
"date": "2023-02-11T10:30:444Z",
61152
"type": "InPerson",
62153
"location": {
63154
"id": "777",
@@ -76,7 +167,7 @@
76167
{
77168
"id": "08c122e3",
78169
"account_id": "2222",
79-
"date": "2023-01-10T11:34:444Z",
170+
"date": "2023-02-10T11:34:444Z",
80171
"type": "Online",
81172
"online_details": {
82173
"url": "https://mymckinley.illinois.edu",

0 commit comments

Comments
 (0)