Skip to content

Commit 4121901

Browse files
committed
Wrap service calls in try-catch blocks
1 parent facd830 commit 4121901

File tree

5 files changed

+72
-22
lines changed

5 files changed

+72
-22
lines changed

src/Tracked/Contexts/UIContext.cs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,9 @@ public async Task GoToRecordScreenAsync() {
7777

7878
public async Task GoToRideReviewScreenAsync(int id) {
7979
RideReviewScreenViewModel viewModel = new RideReviewScreenViewModel(context);
80-
await viewModel.Load(id);
81-
await GoToScreenAsync(new RideReviewScreen(viewModel));
80+
if (await viewModel.Load(id)) {
81+
await GoToScreenAsync(new RideReviewScreen(viewModel));
82+
}
8283
}
8384

8485
public async Task GoToMapScreenAsync(RideDto ride) {
@@ -91,8 +92,9 @@ public async Task GoToCreateTrailScreenAsync(RideDto ride = null) {
9192

9293
public async Task GoToTrailScreenAsync(int trailId) {
9394
TrailScreenViewModel viewModel = new TrailScreenViewModel(context);
94-
await viewModel.Load(trailId);
95-
await GoToScreenAsync(new TrailScreen(viewModel));
95+
if (await viewModel.Load(trailId)) {
96+
await GoToScreenAsync(new TrailScreen(viewModel));
97+
}
9698
}
9799

98100
public async Task GoToSpeedAnalysisScreenAsync(IList<RideLocationDto> rideLocation) {
@@ -101,8 +103,9 @@ public async Task GoToSpeedAnalysisScreenAsync(IList<RideLocationDto> rideLocati
101103

102104
public async Task GoToProfileScreenAsync() {
103105
var viewModel = new ProfileScreenViewModel(context);
104-
await viewModel.Load();
105-
await ReplaceScreenAsync(new ProfileScreen(viewModel));
106+
if (await viewModel.Load()) {
107+
await ReplaceScreenAsync(new ProfileScreen(viewModel));
108+
}
106109
}
107110

108111
public async Task GoToSettingsScreenAsync() {

src/Tracked/Screens/Profile/ProfileScreenViewModel.cs

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using Shared.Dtos;
33
using Tracked.Contexts;
44
using Tracked.Models;
5+
using Tracked.Utilities;
56

67
namespace Tracked.Screens.Profile {
78
public class ProfileScreenViewModel : TabbedViewModelBase {
@@ -51,8 +52,16 @@ public string Bio {
5152

5253
public override string Title => IsCurrentUser ? "Profile" : User.Name;
5354

54-
public async Task Load() {
55-
User = await Context.Services.GetProfile();
55+
public async Task<bool> Load() {
56+
try {
57+
User = await Context.Services.GetProfile();
58+
59+
return true;
60+
} catch (ServiceException ex) {
61+
Toast.LongAlert(ex.Message);
62+
63+
return false;
64+
}
5665
}
5766

5867
public async Task EditBio() {
@@ -62,11 +71,15 @@ public async Task EditBio() {
6271
return;
6372
}
6473

65-
await Context.Services.UpdateBio(newBio);
74+
try {
75+
await Context.Services.UpdateBio(newBio);
6676

67-
User.Bio = newBio;
77+
User.Bio = newBio;
6878

69-
OnPropertyChanged(nameof(Bio));
79+
OnPropertyChanged(nameof(Bio));
80+
} catch (ServiceException ex) {
81+
Toast.LongAlert(ex.Message);
82+
}
7083
}
7184

7285
public async Task GoToSettings() {

src/Tracked/Screens/Rides/RideReviewScreenViewModel.cs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Threading.Tasks;
55
using Shared.Dtos;
66
using Tracked.Contexts;
7+
using Tracked.Utilities;
78

89
namespace Tracked.Screens.Rides {
910
public class RideReviewScreenViewModel : RideMapViewModelBase {
@@ -28,10 +29,18 @@ public RideReviewScreenViewModel(MainContext context) : base(context) {
2829
public IList<AchievementDto> Achievements => Ride.Achievements;
2930
public bool CanCreateTrail => Context.Security.IsAdmin;
3031

31-
public async Task Load(int id) {
32-
ride = await Context.Services.GetRide(id);
32+
public async Task<bool> Load(int id) {
33+
try {
34+
ride = await Context.Services.GetRide(id);
3335

34-
OnPropertyChanged();
36+
OnPropertyChanged();
37+
38+
return true;
39+
} catch (ServiceException ex) {
40+
Toast.LongAlert(ex.Message);
41+
42+
return false;
43+
}
3544
}
3645

3746
private async void MapViewModel_MapControlTapped(object sender, EventArgs e) {
@@ -51,7 +60,11 @@ public async Task CreateTrail() {
5160
}
5261

5362
public async Task Delete() {
54-
await Context.Services.DeleteRide(Ride.RideId.Value);
63+
try {
64+
await Context.Services.DeleteRide(Ride.RideId.Value);
65+
} catch (ServiceException ex) {
66+
Toast.LongAlert(ex.Message);
67+
}
5568
}
5669

5770
public async Task GoToMapScreen() {

src/Tracked/Screens/Trails/CreateTrailScreenViewModel.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,13 @@ public async Task Save(INavigation nav) {
6060

6161
trail.Name = newName;
6262

63-
await Context.Services.UploadTrail(trail);
63+
try {
64+
await Context.Services.UploadTrail(trail);
6465

65-
await nav.PopAsync();
66+
await nav.PopAsync();
67+
} catch (ServiceException ex) {
68+
Toast.LongAlert(ex.Message);
69+
}
6670
}
6771

6872
public void AddPin(double latitude, double longitude) {

src/Tracked/Screens/Trails/TrailScreenViewModel.cs

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,18 @@ public TrailDto Trail {
2626
}
2727
}
2828

29-
public async Task Load(int id) {
30-
Trail = await Context.Services.GetTrail(id);
29+
public async Task<bool> Load(int id) {
30+
try {
31+
Trail = await Context.Services.GetTrail(id);
3132

32-
OnPropertyChanged();
33+
OnPropertyChanged();
34+
35+
return true;
36+
} catch (ServiceException ex) {
37+
Toast.LongAlert(ex.Message);
38+
39+
return false;
40+
}
3341
}
3442

3543
public async Task ChangeName() {
@@ -44,12 +52,21 @@ public async Task ChangeName() {
4452
OnPropertyChanged(nameof(Title));
4553
OnPropertyChanged(nameof(Trail));
4654

47-
await Context.Services.ChangeTrailName(Trail.TrailId.Value, newName);
55+
try {
56+
await Context.Services.ChangeTrailName(Trail.TrailId.Value, newName);
57+
} catch (ServiceException ex) {
58+
Toast.LongAlert(ex.Message);
59+
}
4860
}
4961

5062
public async Task Delete() {
51-
await Context.Services.DeleteTrail(Trail.TrailId.Value);
63+
try {
64+
await Context.Services.DeleteTrail(Trail.TrailId.Value);
65+
} catch (ServiceException ex) {
66+
Toast.LongAlert(ex.Message);
67+
}
5268
}
69+
5370
protected override ILatLng Centre => Trail.Locations.Midpoint();
5471

5572
protected override IEnumerable<MapPin> GetPins() {

0 commit comments

Comments
 (0)