Skip to content
This repository was archived by the owner on May 1, 2024. It is now read-only.

Commit 0ee1136

Browse files
committed
Extract OnActionClick method
1 parent c232152 commit 0ee1136

File tree

8 files changed

+49
-66
lines changed

8 files changed

+49
-66
lines changed

src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Snackbar/SnackBar.android.cs

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515

1616
namespace Xamarin.CommunityToolkit.UI.Views
1717
{
18-
class SnackBar
18+
partial class SnackBar
1919
{
20-
internal async ValueTask Show(VisualElement sender, SnackBarOptions arguments)
20+
internal partial async ValueTask Show(VisualElement sender, SnackBarOptions arguments)
2121
{
2222
var renderer = await GetRendererWithRetries(sender) ?? throw new ArgumentException("Provided VisualElement cannot be parent to SnackBar", nameof(sender));
2323
var snackBar = AndroidSnackBar.Make(renderer.View, arguments.MessageOptions.Message, (int)arguments.Duration.TotalMilliseconds);
@@ -87,20 +87,7 @@ internal async ValueTask Show(VisualElement sender, SnackBarOptions arguments)
8787

8888
foreach (var action in arguments.Actions)
8989
{
90-
snackBar.SetAction(action.Text, async _ =>
91-
{
92-
try
93-
{
94-
if (action.Action != null)
95-
await action.Action();
96-
97-
arguments.SetResult(true);
98-
}
99-
catch (Exception ex)
100-
{
101-
arguments.SetException(ex);
102-
}
103-
});
90+
snackBar.SetAction(action.Text, async _ => await OnActionClick(action, arguments).ConfigureAwait(false));
10491
if (action.ForegroundColor != Forms.Color.Default)
10592
{
10693
snackBar.SetActionTextColor(action.ForegroundColor.ToAndroid());

src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Snackbar/SnackBar.gtk.cs

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111

1212
namespace Xamarin.CommunityToolkit.UI.Views
1313
{
14-
class SnackBar
14+
partial class SnackBar
1515
{
1616
Timer? snackBarTimer;
1717

18-
public ValueTask Show(VisualElement visualElement, SnackBarOptions arguments)
18+
internal partial ValueTask Show(VisualElement visualElement, SnackBarOptions arguments)
1919
{
2020
var mainWindow = (Platform.GetRenderer(visualElement).Container.Child as Forms.Platform.GTK.Controls.Page)?.Children[0] as VBox;
2121
var snackBarLayout = GetSnackBarLayout(mainWindow, arguments);
@@ -56,20 +56,10 @@ HBox GetSnackBarLayout(Container? container, SnackBarOptions arguments)
5656
button.ModifyBg(StateType.Normal, action.BackgroundColor.ToGtkColor());
5757
button.ModifyFg(StateType.Normal, action.ForegroundColor.ToGtkColor());
5858

59-
button.Clicked += async (sender, e) =>
59+
button.Clicked += async (_, _) =>
6060
{
6161
snackBarTimer?.Stop();
62-
try
63-
{
64-
if (action.Action != null)
65-
await action.Action();
66-
67-
arguments.SetResult(true);
68-
}
69-
catch (Exception ex)
70-
{
71-
arguments.SetException(ex);
72-
}
62+
await OnActionClick(action, arguments).ConfigureAwait(false);
7363
container?.Remove(snackBarLayout);
7464
};
7565

src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Snackbar/SnackBar.ios.macos.cs

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515

1616
namespace Xamarin.CommunityToolkit.UI.Views
1717
{
18-
class SnackBar
18+
partial class SnackBar
1919
{
20-
internal ValueTask Show(VisualElement sender, SnackBarOptions arguments)
20+
internal partial ValueTask Show(VisualElement sender, SnackBarOptions arguments)
2121
{
2222
var snackBar = NativeSnackBar.MakeSnackBar(arguments.MessageOptions.Message)
2323
.SetDuration(arguments.Duration)
@@ -123,17 +123,7 @@ internal ValueTask Show(VisualElement sender, SnackBarOptions arguments)
123123
actionButton.SetAction(async () =>
124124
{
125125
snackBar.Dismiss();
126-
try
127-
{
128-
if (action.Action != null)
129-
await action.Action();
130-
131-
arguments.SetResult(true);
132-
}
133-
catch (Exception ex)
134-
{
135-
arguments.SetException(ex);
136-
}
126+
await OnActionClick(action, arguments).ConfigureAwait(false);
137127
});
138128

139129
snackBar.Actions.Add(actionButton);

src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Snackbar/SnackBar.netstandard.tvos.watchos.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55

66
namespace Xamarin.CommunityToolkit.UI.Views
77
{
8-
class SnackBar
8+
partial class SnackBar
99
{
10-
internal ValueTask Show(VisualElement sender, SnackBarOptions arguments) => throw new PlatformNotSupportedException();
10+
internal partial ValueTask Show(VisualElement sender, SnackBarOptions arguments) => throw new PlatformNotSupportedException();
1111
}
1212
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System;
2+
using System.Threading.Tasks;
3+
using Xamarin.CommunityToolkit.UI.Views.Options;
4+
using Xamarin.Forms;
5+
6+
namespace Xamarin.CommunityToolkit.UI.Views
7+
{
8+
partial class SnackBar
9+
{
10+
internal partial ValueTask Show(VisualElement sender, SnackBarOptions arguments);
11+
12+
async Task OnActionClick(SnackBarActionOptions action, SnackBarOptions arguments)
13+
{
14+
try
15+
{
16+
if (action.Action != null)
17+
await action.Action();
18+
19+
arguments.SetResult(true);
20+
}
21+
catch (Exception ex)
22+
{
23+
arguments.SetException(ex);
24+
}
25+
}
26+
}
27+
}

src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Snackbar/SnackBar.tizen.cs

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66

77
namespace Xamarin.CommunityToolkit.UI.Views
88
{
9-
class SnackBar
9+
partial class SnackBar
1010
{
11-
internal ValueTask Show(Forms.VisualElement sender, SnackBarOptions arguments)
11+
internal partial ValueTask Show(Forms.VisualElement sender, SnackBarOptions arguments)
1212
{
1313
var snackBarDialog =
1414
Forms.Platform.Tizen.Native.Dialog.CreateDialog(Forms.Forms.NativeParent,
@@ -25,25 +25,14 @@ internal ValueTask Show(Forms.VisualElement sender, SnackBarOptions arguments)
2525
{
2626
var ok = new EButton(snackBarDialog) { Text = action.Text };
2727
snackBarDialog.NeutralButton = ok;
28-
ok.Clicked += async (s, evt) =>
28+
ok.Clicked += async (_, _) =>
2929
{
3030
snackBarDialog.Dismiss();
31-
try
32-
{
33-
if (action.Action != null)
34-
await action.Action();
35-
36-
arguments.SetResult(true);
37-
}
38-
catch (Exception ex)
39-
{
40-
arguments.SetException(ex);
41-
}
42-
};
31+
await OnActionClick(action, arguments).ConfigureAwait(false); };
4332
}
4433

45-
snackBarDialog.TimedOut += (s, evt) => DismissSnackBar();
46-
snackBarDialog.BackButtonPressed += (s, evt) => DismissSnackBar();
34+
snackBarDialog.TimedOut += (_, _) => DismissSnackBar();
35+
snackBarDialog.BackButtonPressed += (_, _) => DismissSnackBar();
4736
snackBarDialog.Show();
4837

4938
return default;

src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Snackbar/SnackBar.uwp.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
namespace Xamarin.CommunityToolkit.UI.Views
1111
{
12-
class SnackBar
12+
partial class SnackBar
1313
{
1414
DispatcherTimer? snackBarTimer;
1515

@@ -35,7 +35,7 @@ class SnackBar
3535
return null;
3636
}
3737

38-
internal ValueTask Show(Forms.VisualElement visualElement, SnackBarOptions arguments)
38+
internal partial ValueTask Show(Forms.VisualElement visualElement, SnackBarOptions arguments)
3939
{
4040
var snackBarLayout = new SnackBarLayout(arguments);
4141
var pageControl = Platform.GetRenderer(visualElement).ContainerElement.Parent;

src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Snackbar/SnackBar.wpf.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111

1212
namespace Xamarin.CommunityToolkit.UI.Views
1313
{
14-
class SnackBar
14+
partial class SnackBar
1515
{
1616
Timer? snackBarTimer;
1717

18-
internal ValueTask Show(Forms.VisualElement visualElement, SnackBarOptions arguments)
18+
internal partial ValueTask Show(Forms.VisualElement visualElement, SnackBarOptions arguments)
1919
{
2020
var formsAppBar = System.Windows.Application.Current.MainWindow.FindChild<FormsAppBar>("PART_BottomAppBar");
2121
var currentContent = formsAppBar.Content;

0 commit comments

Comments
 (0)