From e7ea0b62ef8455ab983be59aac101321f5c3a40f Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Sat, 26 Feb 2022 18:31:21 +0000 Subject: [PATCH 1/3] Access device specific data --- .../ViewModelTests/LoginPageViewModelTests.cs | 1 + .../MobileTopupFailedPageViewModelTests.cs | 1 + ...bileTopupPerformTopupPageViewModelTests.cs | 1 + ...leTopupSelectOperatorPageViewModelTests.cs | 1 + ...ileTopupSelectProductPageViewModelTests.cs | 1 + .../MobileTopupSuccessPageViewModelTests.cs | 1 + .../TransactionsPageViewModelTests.cs | 1 + .../VoucherIssueFailedPageViewModelTests.cs | 1 + ...herIssueSelectProductPageViewModelTests.cs | 1 + .../VoucherIssueSuccessPageViewModelTests.cs | 1 + .../VoucherPerformIssuePageViewModelTests.cs | 1 + ...VoucherSelectOperatorPageViewModelTests.cs | 1 + .../UIServices/IDeviceService.cs | 17 + .../ViewModels/LoginPageViewModel.cs | 1 + .../Support/SupportPageViewModel.cs | 38 +++ .../MobileTopupFailedPageViewModel.cs | 1 + .../MobileTopupPerformTopupPageViewModel.cs | 1 + .../MobileTopupSelectOperatorPageViewModel.cs | 1 + .../MobileTopupSelectProductPageViewModel.cs | 1 + .../MobileTopupSuccessPageViewModel.cs | 1 + .../Transactions/TransactionsPageViewModel.cs | 1 + .../VoucherIssueFailedPageViewModel.cs | 1 + .../VoucherIssueSuccessPageViewModel.cs | 1 + .../VoucherPerformIssuePageViewModel.cs | 1 + .../VoucherSelectOperatorPageViewModel.cs | 1 + .../VoucherSelectProductPageViewModel.cs | 1 + TransactionMobile.Maui/AppShell.xaml | 3 +- .../Extensions/MauiAppBuilderExtensions.cs | 3 + TransactionMobile.Maui/MauiProgram.cs | 19 +- .../Pages/Support/SupportPage.xaml | 53 ++++ .../Pages/Support/SupportPage.xaml.cs | 14 + .../Platforms/Android/DeviceService.cs | 61 ++++ .../Platforms/MacCatalyst/DeviceService.cs | 20 ++ .../Platforms/Windows/DeviceService.cs | 40 +++ .../Platforms/iOS/DeviceService.cs | 298 ++++++++++++++++++ .../TransactionMobile.Maui.csproj | 6 + .../UIServices/DeviceInformationService.cs | 14 + .../UIServices/DeviceService.cs | 29 ++ 38 files changed, 627 insertions(+), 12 deletions(-) create mode 100644 TransactionMobile.Maui.BusinessLogic/UIServices/IDeviceService.cs create mode 100644 TransactionMobile.Maui.BusinessLogic/ViewModels/Support/SupportPageViewModel.cs create mode 100644 TransactionMobile.Maui/Pages/Support/SupportPage.xaml create mode 100644 TransactionMobile.Maui/Pages/Support/SupportPage.xaml.cs create mode 100644 TransactionMobile.Maui/Platforms/Android/DeviceService.cs create mode 100644 TransactionMobile.Maui/Platforms/MacCatalyst/DeviceService.cs create mode 100644 TransactionMobile.Maui/Platforms/Windows/DeviceService.cs create mode 100644 TransactionMobile.Maui/Platforms/iOS/DeviceService.cs create mode 100644 TransactionMobile.Maui/UIServices/DeviceInformationService.cs create mode 100644 TransactionMobile.Maui/UIServices/DeviceService.cs diff --git a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/LoginPageViewModelTests.cs b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/LoginPageViewModelTests.cs index 86d07dd9..cb6bc877 100644 --- a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/LoginPageViewModelTests.cs +++ b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/LoginPageViewModelTests.cs @@ -1,6 +1,7 @@ namespace TransactionMobile.Maui.BusinessLogic.Tests.ViewModelTests; using System.Threading; +using Maui.UIServices; using MediatR; using Moq; using Requests; diff --git a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupFailedPageViewModelTests.cs b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupFailedPageViewModelTests.cs index 783f5a72..f6e9536c 100644 --- a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupFailedPageViewModelTests.cs +++ b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupFailedPageViewModelTests.cs @@ -1,5 +1,6 @@ namespace TransactionMobile.Maui.BusinessLogic.Tests.ViewModelTests; +using Maui.UIServices; using Moq; using UIServices; using ViewModels.Transactions; diff --git a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupPerformTopupPageViewModelTests.cs b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupPerformTopupPageViewModelTests.cs index 0fca00d9..c0c44bd1 100644 --- a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupPerformTopupPageViewModelTests.cs +++ b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupPerformTopupPageViewModelTests.cs @@ -3,6 +3,7 @@ namespace TransactionMobile.Maui.BusinessLogic.Tests.ViewModelTests; using System; using System.Collections.Generic; using System.Threading; +using Maui.UIServices; using MediatR; using Moq; using Requests; diff --git a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupSelectOperatorPageViewModelTests.cs b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupSelectOperatorPageViewModelTests.cs index cdf7bfcc..f0ec1937 100644 --- a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupSelectOperatorPageViewModelTests.cs +++ b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupSelectOperatorPageViewModelTests.cs @@ -2,6 +2,7 @@ namespace TransactionMobile.Maui.BusinessLogic.Tests.ViewModelTests; using System.Threading; using System.Threading.Tasks; +using Maui.UIServices; using MediatR; using Models; using Moq; diff --git a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupSelectProductPageViewModelTests.cs b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupSelectProductPageViewModelTests.cs index 8b2aebbf..1c09a60e 100644 --- a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupSelectProductPageViewModelTests.cs +++ b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupSelectProductPageViewModelTests.cs @@ -4,6 +4,7 @@ namespace TransactionMobile.Maui.BusinessLogic.Tests.ViewModelTests; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using Maui.UIServices; using MediatR; using Models; using Moq; diff --git a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupSuccessPageViewModelTests.cs b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupSuccessPageViewModelTests.cs index dc9d21e4..59ea016c 100644 --- a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupSuccessPageViewModelTests.cs +++ b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/MobileTopupSuccessPageViewModelTests.cs @@ -1,5 +1,6 @@ namespace TransactionMobile.Maui.BusinessLogic.Tests.ViewModelTests; +using Maui.UIServices; using Moq; using UIServices; using ViewModels.Transactions; diff --git a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/TransactionsPageViewModelTests.cs b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/TransactionsPageViewModelTests.cs index e9b98529..dfa82bd1 100644 --- a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/TransactionsPageViewModelTests.cs +++ b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/TransactionsPageViewModelTests.cs @@ -1,5 +1,6 @@ namespace TransactionMobile.Maui.BusinessLogic.Tests.ViewModelTests; +using Maui.UIServices; using Moq; using UIServices; using ViewModels.Transactions; diff --git a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherIssueFailedPageViewModelTests.cs b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherIssueFailedPageViewModelTests.cs index 34df6879..c7150f57 100644 --- a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherIssueFailedPageViewModelTests.cs +++ b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherIssueFailedPageViewModelTests.cs @@ -1,5 +1,6 @@ namespace TransactionMobile.Maui.BusinessLogic.Tests.ViewModelTests; +using Maui.UIServices; using Moq; using UIServices; using ViewModels.Transactions; diff --git a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherIssueSelectProductPageViewModelTests.cs b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherIssueSelectProductPageViewModelTests.cs index cbddeb80..1e496d76 100644 --- a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherIssueSelectProductPageViewModelTests.cs +++ b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherIssueSelectProductPageViewModelTests.cs @@ -4,6 +4,7 @@ namespace TransactionMobile.Maui.BusinessLogic.Tests.ViewModelTests; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using Maui.UIServices; using MediatR; using Models; using Moq; diff --git a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherIssueSuccessPageViewModelTests.cs b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherIssueSuccessPageViewModelTests.cs index 8ddc15a6..90871977 100644 --- a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherIssueSuccessPageViewModelTests.cs +++ b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherIssueSuccessPageViewModelTests.cs @@ -1,5 +1,6 @@ namespace TransactionMobile.Maui.BusinessLogic.Tests.ViewModelTests; +using Maui.UIServices; using Moq; using UIServices; using ViewModels.Transactions; diff --git a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherPerformIssuePageViewModelTests.cs b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherPerformIssuePageViewModelTests.cs index 2ab91d8c..ec4db14e 100644 --- a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherPerformIssuePageViewModelTests.cs +++ b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherPerformIssuePageViewModelTests.cs @@ -3,6 +3,7 @@ namespace TransactionMobile.Maui.BusinessLogic.Tests.ViewModelTests; using System; using System.Collections.Generic; using System.Threading; +using Maui.UIServices; using MediatR; using Moq; using Requests; diff --git a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherSelectOperatorPageViewModelTests.cs b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherSelectOperatorPageViewModelTests.cs index 7f47134b..fd5036bf 100644 --- a/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherSelectOperatorPageViewModelTests.cs +++ b/TransactionMobile.Maui.BusinessLogic.Tests/ViewModelTests/VoucherSelectOperatorPageViewModelTests.cs @@ -2,6 +2,7 @@ namespace TransactionMobile.Maui.BusinessLogic.Tests.ViewModelTests; using System.Threading; using System.Threading.Tasks; +using Maui.UIServices; using MediatR; using Models; using Moq; diff --git a/TransactionMobile.Maui.BusinessLogic/UIServices/IDeviceService.cs b/TransactionMobile.Maui.BusinessLogic/UIServices/IDeviceService.cs new file mode 100644 index 00000000..99718b5f --- /dev/null +++ b/TransactionMobile.Maui.BusinessLogic/UIServices/IDeviceService.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TransactionMobile.Maui.BusinessLogic.UIServices +{ + public interface IDeviceService + { + String GetModel(); + + String GetPlatform(); + + String GetIdentifier(); + } +} diff --git a/TransactionMobile.Maui.BusinessLogic/ViewModels/LoginPageViewModel.cs b/TransactionMobile.Maui.BusinessLogic/ViewModels/LoginPageViewModel.cs index 2cc88d99..0f75b0de 100644 --- a/TransactionMobile.Maui.BusinessLogic/ViewModels/LoginPageViewModel.cs +++ b/TransactionMobile.Maui.BusinessLogic/ViewModels/LoginPageViewModel.cs @@ -1,6 +1,7 @@ namespace TransactionMobile.Maui.BusinessLogic.ViewModels { using System.Windows.Input; + using Maui.UIServices; using MediatR; using Models; using MvvmHelpers; diff --git a/TransactionMobile.Maui.BusinessLogic/ViewModels/Support/SupportPageViewModel.cs b/TransactionMobile.Maui.BusinessLogic/ViewModels/Support/SupportPageViewModel.cs new file mode 100644 index 00000000..469b95d9 --- /dev/null +++ b/TransactionMobile.Maui.BusinessLogic/ViewModels/Support/SupportPageViewModel.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TransactionMobile.Maui.BusinessLogic.ViewModels.Support +{ + using MvvmHelpers; + using UIServices; + + public class SupportPageViewModel : BaseViewModel + { + private readonly IDeviceService DeviceService; + + public SupportPageViewModel(IDeviceService deviceService) + { + this.DeviceService = deviceService; + } + public string AppVersion => $"Version: {AppInfo.VersionString}{Environment.NewLine}Copyright © 2022 Stuart Ferguson"; + + //public string Description => "A playground for experiments with .Net MAUI. All code is available on GitHub and development is documented on my blog 'Sailing the Sharp Sea'."; + + public string Platform + { + get + { + StringBuilder platform = new(); + platform.Append("Platform: ").AppendLine(this.DeviceService.GetPlatform()); + platform.Append("Manufacturer: ").AppendLine(DeviceInfo.Manufacturer); + platform.Append("Device: ").AppendLine(this.DeviceService.GetModel()); + + return platform.ToString(); + } + } + + } +} diff --git a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupFailedPageViewModel.cs b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupFailedPageViewModel.cs index f8f28cf6..3032ffe6 100644 --- a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupFailedPageViewModel.cs +++ b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupFailedPageViewModel.cs @@ -1,6 +1,7 @@ namespace TransactionMobile.Maui.BusinessLogic.ViewModels.Transactions; using System.Windows.Input; +using Maui.UIServices; using MvvmHelpers; using MvvmHelpers.Commands; using UIServices; diff --git a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupPerformTopupPageViewModel.cs b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupPerformTopupPageViewModel.cs index 366653ad..33c8875e 100644 --- a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupPerformTopupPageViewModel.cs +++ b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupPerformTopupPageViewModel.cs @@ -2,6 +2,7 @@ using System.Web; using System.Windows.Input; +using Maui.UIServices; using MediatR; using Microsoft.Maui.Controls; using MvvmHelpers; diff --git a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupSelectOperatorPageViewModel.cs b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupSelectOperatorPageViewModel.cs index 43114374..c2f55548 100644 --- a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupSelectOperatorPageViewModel.cs +++ b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupSelectOperatorPageViewModel.cs @@ -1,6 +1,7 @@ namespace TransactionMobile.Maui.BusinessLogic.ViewModels.Transactions; using System.Windows.Input; +using Maui.UIServices; using MediatR; using Models; using MvvmHelpers; diff --git a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupSelectProductPageViewModel.cs b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupSelectProductPageViewModel.cs index c30b1d92..7f29aab8 100644 --- a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupSelectProductPageViewModel.cs +++ b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupSelectProductPageViewModel.cs @@ -2,6 +2,7 @@ using System.Web; using System.Windows.Input; +using Maui.UIServices; using MediatR; using Microsoft.Maui.Controls; using Models; diff --git a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupSuccessPageViewModel.cs b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupSuccessPageViewModel.cs index 8985957f..fbf58c7b 100644 --- a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupSuccessPageViewModel.cs +++ b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/MobileTopupSuccessPageViewModel.cs @@ -1,6 +1,7 @@ namespace TransactionMobile.Maui.BusinessLogic.ViewModels.Transactions { using System.Windows.Input; + using Maui.UIServices; using MvvmHelpers; using MvvmHelpers.Commands; using UIServices; diff --git a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/TransactionsPageViewModel.cs b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/TransactionsPageViewModel.cs index 4fee1492..b76b7ae1 100644 --- a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/TransactionsPageViewModel.cs +++ b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/TransactionsPageViewModel.cs @@ -1,6 +1,7 @@ namespace TransactionMobile.Maui.BusinessLogic.ViewModels.Transactions { using System.Windows.Input; + using Maui.UIServices; using MvvmHelpers; using MvvmHelpers.Commands; using UIServices; diff --git a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherIssueFailedPageViewModel.cs b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherIssueFailedPageViewModel.cs index 11627331..f96eca15 100644 --- a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherIssueFailedPageViewModel.cs +++ b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherIssueFailedPageViewModel.cs @@ -1,6 +1,7 @@ namespace TransactionMobile.Maui.BusinessLogic.ViewModels.Transactions; using System.Windows.Input; +using Maui.UIServices; using MvvmHelpers; using MvvmHelpers.Commands; using UIServices; diff --git a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherIssueSuccessPageViewModel.cs b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherIssueSuccessPageViewModel.cs index 50ad93cd..ca52db12 100644 --- a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherIssueSuccessPageViewModel.cs +++ b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherIssueSuccessPageViewModel.cs @@ -1,6 +1,7 @@ namespace TransactionMobile.Maui.BusinessLogic.ViewModels.Transactions { using System.Windows.Input; + using Maui.UIServices; using MvvmHelpers; using MvvmHelpers.Commands; using UIServices; diff --git a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherPerformIssuePageViewModel.cs b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherPerformIssuePageViewModel.cs index c059c26c..fa29608c 100644 --- a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherPerformIssuePageViewModel.cs +++ b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherPerformIssuePageViewModel.cs @@ -2,6 +2,7 @@ using System.Web; using System.Windows.Input; +using Maui.UIServices; using MediatR; using MvvmHelpers; using MvvmHelpers.Commands; diff --git a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherSelectOperatorPageViewModel.cs b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherSelectOperatorPageViewModel.cs index e9bd5c15..86fa3035 100644 --- a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherSelectOperatorPageViewModel.cs +++ b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherSelectOperatorPageViewModel.cs @@ -1,6 +1,7 @@ namespace TransactionMobile.Maui.BusinessLogic.ViewModels.Transactions; using System.Windows.Input; +using Maui.UIServices; using MediatR; using Models; using MvvmHelpers; diff --git a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherSelectProductPageViewModel.cs b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherSelectProductPageViewModel.cs index 31f2a260..6ae1fd02 100644 --- a/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherSelectProductPageViewModel.cs +++ b/TransactionMobile.Maui.BusinessLogic/ViewModels/Transactions/VoucherSelectProductPageViewModel.cs @@ -2,6 +2,7 @@ using System.Web; using System.Windows.Input; +using Maui.UIServices; using MediatR; using Models; using MvvmHelpers; diff --git a/TransactionMobile.Maui/AppShell.xaml b/TransactionMobile.Maui/AppShell.xaml index b776fa7a..dfb86e4f 100644 --- a/TransactionMobile.Maui/AppShell.xaml +++ b/TransactionMobile.Maui/AppShell.xaml @@ -6,6 +6,7 @@ xmlns:home="clr-namespace:TransactionMobile.Maui.Pages.AppHome" xmlns:transactions="clr-namespace:TransactionMobile.Maui.Pages.Transactions" xmlns:reports="clr-namespace:TransactionMobile.Maui.Pages.Reports" + xmlns:support="clr-namespace:TransactionMobile.Maui.Pages.Support" xmlns:myaccount="clr-namespace:TransactionMobile.Maui.Pages.MyAccount"> \ No newline at end of file diff --git a/TransactionMobile.Maui/Extensions/MauiAppBuilderExtensions.cs b/TransactionMobile.Maui/Extensions/MauiAppBuilderExtensions.cs index 7c45621c..6a5a390a 100644 --- a/TransactionMobile.Maui/Extensions/MauiAppBuilderExtensions.cs +++ b/TransactionMobile.Maui/Extensions/MauiAppBuilderExtensions.cs @@ -5,6 +5,7 @@ using BusinessLogic.Requests; using BusinessLogic.Services; using BusinessLogic.ViewModels; + using BusinessLogic.ViewModels.Support; using BusinessLogic.ViewModels.Transactions; using MediatR; using UIServices; @@ -60,6 +61,8 @@ public static MauiAppBuilder ConfigureViewModels(this MauiAppBuilder builder) builder.Services.AddTransient(); builder.Services.AddTransient(); + builder.Services.AddTransient(); + return builder; } diff --git a/TransactionMobile.Maui/MauiProgram.cs b/TransactionMobile.Maui/MauiProgram.cs index cfd3f057..a8e742c9 100644 --- a/TransactionMobile.Maui/MauiProgram.cs +++ b/TransactionMobile.Maui/MauiProgram.cs @@ -2,7 +2,9 @@ namespace TransactionMobile.Maui; +using BusinessLogic.UIServices; using CommunityToolkit.Maui; +using UIServices; public static class MauiProgram { @@ -10,17 +12,12 @@ public static class MauiProgram public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); - builder - .UseMauiApp() - .ConfigureRequestHandlers() - .ConfigureViewModels() - .ConfigureAppServices() - .ConfigureUIServices() - .UseMauiCommunityToolkit() - .ConfigureFonts(fonts => - { - fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); - }); + builder.UseMauiApp().ConfigureRequestHandlers().ConfigureViewModels().ConfigureAppServices().ConfigureUIServices().UseMauiCommunityToolkit() + .ConfigureFonts(fonts => + { + fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); + }) + .Services.AddTransient(); Container = builder.Build(); return Container; diff --git a/TransactionMobile.Maui/Pages/Support/SupportPage.xaml b/TransactionMobile.Maui/Pages/Support/SupportPage.xaml new file mode 100644 index 00000000..80318af4 --- /dev/null +++ b/TransactionMobile.Maui/Pages/Support/SupportPage.xaml @@ -0,0 +1,53 @@ + + + + + \ No newline at end of file diff --git a/TransactionMobile.Maui/Pages/Support/SupportPage.xaml.cs b/TransactionMobile.Maui/Pages/Support/SupportPage.xaml.cs new file mode 100644 index 00000000..703609a5 --- /dev/null +++ b/TransactionMobile.Maui/Pages/Support/SupportPage.xaml.cs @@ -0,0 +1,14 @@ +namespace TransactionMobile.Maui.Pages.Support; + +using BusinessLogic.ViewModels.Support; + +public partial class SupportPage : ContentPage +{ + private SupportPageViewModel viewModel => BindingContext as SupportPageViewModel; + + public SupportPage(SupportPageViewModel vm) + { + InitializeComponent(); + BindingContext = vm; + } +} \ No newline at end of file diff --git a/TransactionMobile.Maui/Platforms/Android/DeviceService.cs b/TransactionMobile.Maui/Platforms/Android/DeviceService.cs new file mode 100644 index 00000000..24e30f0f --- /dev/null +++ b/TransactionMobile.Maui/Platforms/Android/DeviceService.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TransactionMobile.Maui.Platforms.Services +{ + using Android.Content; + using Android.OS; + using Android.Provider; + using Android.Util; + + public partial class DeviceInformationService + { + public partial String Identifier() + { + String id = Build.Serial; + //if (string.IsNullOrWhiteSpace(id) || id == Build.Unknown || id == "0") + //{ + // try + // { + // Application.Current.Con + // //Context context = Application.Context; + // //id = Settings.Secure.GetString(context.ContentResolver, Settings.Secure.AndroidId); + // } + // catch (Exception ex) + // { + // Log.Warn("DeviceInfo", "Unable to get id: " + ex); + // } + //} + + return id; + } + public partial String Model() => Build.Model; + + public partial String Platform() + { + return $"Android {Build.VERSION.Release} (API {AndroidSDK} - {AndroidCodename()})"; + } + + private static string AndroidCodename() + { + return (int)Build.VERSION.SdkInt switch + { + (int)BuildVersionCodes.Lollipop or (int)BuildVersionCodes.LollipopMr1 => "Lollipop", + (int)BuildVersionCodes.M => "Marshmallow", + (int)BuildVersionCodes.N or (int)BuildVersionCodes.NMr1 => "Nougat", + (int)BuildVersionCodes.O or (int)BuildVersionCodes.OMr1 => "Oreo", + (int)BuildVersionCodes.P => "Pie", + (int)BuildVersionCodes.Q => "Q", + (int)BuildVersionCodes.R => "R", + (int)BuildVersionCodes.S => "S", + 32 => "Sv2", + _ => "Unknown", + }; + } + + private static int AndroidSDK => (int)Build.VERSION.SdkInt; + } +} diff --git a/TransactionMobile.Maui/Platforms/MacCatalyst/DeviceService.cs b/TransactionMobile.Maui/Platforms/MacCatalyst/DeviceService.cs new file mode 100644 index 00000000..8facc9ff --- /dev/null +++ b/TransactionMobile.Maui/Platforms/MacCatalyst/DeviceService.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TransactionMobile.Maui.Platforms.Services +{ + public partial class DeviceInformationService + { + public partial String Model() => DeviceInfo.Model; + + public partial String Platform() => $"{DeviceInfo.Platform} {DeviceInfo.VersionString}"; + + public partial String DeviceIdentifier() + { + return ""; + } + } +} diff --git a/TransactionMobile.Maui/Platforms/Windows/DeviceService.cs b/TransactionMobile.Maui/Platforms/Windows/DeviceService.cs new file mode 100644 index 00000000..d2eb2641 --- /dev/null +++ b/TransactionMobile.Maui/Platforms/Windows/DeviceService.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Windows.Security.ExchangeActiveSyncProvisioning; +using Windows.System.Profile; + +namespace TransactionMobile.Maui.Platforms.Services +{ + public partial class DeviceInformationService + { + public partial String Model() => new EasClientDeviceInformation().SystemProductName; + + public partial String Platform() => $"UWP {GetVersionString()}"; + + private static string GetVersionString() + { + var version = AnalyticsInfo.VersionInfo.DeviceFamilyVersion; + + if (ulong.TryParse(version, out var v)) + { + var v1 = (v & 0xFFFF000000000000L) >> 48; + var v2 = (v & 0x0000FFFF00000000L) >> 32; + var v3 = (v & 0x00000000FFFF0000L) >> 16; + var v4 = v & 0x000000000000FFFFL; + return $"{v1}.{v2}.{v3}.{v4}"; + } + + return version; + } + + + public partial String DeviceIdentifier() + { + var deviceInformation = new EasClientDeviceInformation(); + string Id = deviceInformation.Id.ToString(); + } + } +} diff --git a/TransactionMobile.Maui/Platforms/iOS/DeviceService.cs b/TransactionMobile.Maui/Platforms/iOS/DeviceService.cs new file mode 100644 index 00000000..0374cf29 --- /dev/null +++ b/TransactionMobile.Maui/Platforms/iOS/DeviceService.cs @@ -0,0 +1,298 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TransactionMobile.Maui.Platforms.Services +{ + using System.Runtime.InteropServices; + using Foundation; + using UIKit; + + public partial class DeviceInformationService + { + // based on code from https://github.com/dannycabrera/Get-iOS-Model + + private const string HardwareProperty = "hw.machine"; + + [DllImport(ObjCRuntime.Constants.SystemLibrary)] + private static extern int sysctlbyname([MarshalAs(UnmanagedType.LPStr)] string property, + IntPtr output, + IntPtr oldLen, + IntPtr newp, + uint newlen); + + public partial String Model() + { + string version = FindVersion(); + if (version == "i386" || version == "x86_64") + { + return GetModel(NSProcessInfo.ProcessInfo.Environment["SIMULATOR_MODEL_IDENTIFIER"].ToString()) + " Simulator"; + } + return GetModel(version); + } + + public partial String Platform() => $"{DeviceInfo.Platform} {UIDevice.CurrentDevice.SystemVersion}"; + + private static string FindVersion() + { + try + { + // get the length of the string that will be returned + var pLen = Marshal.AllocHGlobal(sizeof(int)); + _ = sysctlbyname(HardwareProperty, IntPtr.Zero, pLen, IntPtr.Zero, 0); + + var length = Marshal.ReadInt32(pLen); + + // check to see if we got a length + if (length == 0) + { + Marshal.FreeHGlobal(pLen); + return "Unknown"; + } + + // get the hardware string + var pStr = Marshal.AllocHGlobal(length); + _ = sysctlbyname(HardwareProperty, pStr, pLen, IntPtr.Zero, 0); + + // convert the native string into a C# string + var hardwareStr = Marshal.PtrToStringAnsi(pStr); + + // cleanup + Marshal.FreeHGlobal(pLen); + Marshal.FreeHGlobal(pStr); + + return hardwareStr; + } + catch (Exception ex) + { + Console.WriteLine("DeviceHardware.Version Ex: " + ex.Message); + } + + return "Unknown"; + } + + public partial String DeviceIdentifier() + { + return UIDevice.CurrentDevice.IdentifierForVendor.AsString().Replace("-", ""); + } + + private static string GetModel(string version) + { + if (version.StartsWith("iPhone")) + { + switch (version) + { + case "iPhone14,2": + return "iPhone 13 Pro"; + case "iPhone14,3": + return "iPhone 13 Pro Max"; + case "iPhone14,4": + return "iPhone 13 mini"; + case "iPhone14,5": + return "iPhone 13"; + case "iPhone13,1": + return "iPhone 12 mini"; + case "iPhone13,2": + return "iPhone 12"; + case "iPhone13,3": + return "iPhone 12 Pro"; + case "iPhone13,4": + return "iPhone 12 Pro Max"; + case "iPhone12,8": + return "iPhone SE (2nd generation)"; + case "iPhone12,5": + return "iPhone 11 Pro Max"; + case "iPhone12,3": + return "iPhone 11 Pro"; + case "iPhone12,1": + return "iPhone 11"; + case "iPhone11,2": + return "iPhone XS"; + case "iPhone11,4": + case "iPhone11,6": + return "iPhone XS Max"; + case "iPhone11,8": + return "iPhone XR"; + case "iPhone10,3": + case "iPhone10,6": + return "iPhone X"; + case "iPhone10,2": + case "iPhone10,5": + return "iPhone 8 Plus"; + case "iPhone10,1": + case "iPhone10,4": + return "iPhone 8"; + case "iPhone9,2": + case "iPhone9,4": + return "iPhone 7 Plus"; + case "iPhone9,1": + case "iPhone9,3": + return "iPhone 7"; + case "iPhone8,4": + return "iPhone SE"; + case "iPhone8,2": + return "iPhone 6S Plus"; + case "iPhone8,1": + return "iPhone 6S"; + case "iPhone7,1": + return "iPhone 6 Plus"; + case "iPhone7,2": + return "iPhone 6"; + case "iPhone6,2": + return "iPhone 5S Global"; + case "iPhone6,1": + return "iPhone 5S GSM"; + case "iPhone5,4": + return "iPhone 5C Global"; + case "iPhone5,3": + return "iPhone 5C GSM"; + case "iPhone5,2": + return "iPhone 5 Global"; + case "iPhone5,1": + return "iPhone 5 GSM"; + } + } + + if (version.StartsWith("iPod")) + { + switch (version) + { + case "iPod9,1": + return "iPod touch 7G"; + case "iPod7,1": + return "iPod touch 6G"; + } + } + + if (version.StartsWith("iPad")) + { + switch (version) + { + case "iPad14,2": + return "iPad mini (6th generation) Wi-FI + Cellular"; + case "iPad14,1": + return "iPad mini (6th generation) Wi-FI"; + case "iPad13,11": + case "iPad13,10": + return "iPad Pro (12.9-inch) (5th generation) Wi-Fi + Cellular"; + case "iPad13,9": + case "iPad13,8": + return "iPad Pro (12.9-inch) (5th generation) Wi-Fi"; + case "iPad13,7": + case "iPad13,6": + return "iPad Pro (11-inch) (3rd generation) Wi-Fi + Cellular"; + case "iPad13,5": + case "iPad13,4": + return "iPad Pro (11-inch) (3rd generation) Wi-Fi"; + case "iPad13,2": + return "iPad Air (4th generation) Wi-Fi + Cellular"; + case "iPad13,1": + return "iPad Air (4th generation) Wi-Fi"; + case "iPad12,2": + return "iPad (9th Generation) Wi-Fi + Cellular"; + case "iPad12,1": + return "iPad (9th generation) Wi-Fi"; + case "iPad11,7": + return "iPad (8th Generation) Wi-Fi + Cellular"; + case "iPad11,6": + return "iPad (8th Generation) Wi-Fi"; + case "iPad11,4": + return "iPad Air (3rd generation) Wi-Fi + Cellular"; + case "iPad11,3": + return "iPad Air (3rd generation) Wi-Fi"; + case "iPad11,2": + return "iPad mini (5th generation) Wi-Fi + Cellular"; + case "iPad11,1": + return "iPad mini (5th generation) Wi-Fi"; + case "iPad8,12": + return "iPad Pro (12.9-inch) (4th generation) Wi-Fi + Cellular"; + case "iPad8,11": + return "iPad Pro (12.9-inch) (4th generation) Wi-Fi"; + case "iPad8,10": + return "iPad Pro (11-inch) (2nd generation) Wi-Fi + Cellular"; + case "iPad8,9": + return "iPad Pro (11-inch) (2nd generation) Wi-Fi"; + case "iPad8,8": + return "iPad Pro 12.9-inch (3rd Generation)"; + case "iPad8,7": + return "iPad Pro 12.9-inch (3rd generation) Wi-Fi + Cellular"; + case "iPad8,6": + case "iPad8,5": + return "iPad Pro 12.9-inch (3rd Generation)"; + case "iPad8,4": + return "iPad Pro 11-inch"; + case "iPad8,3": + return "iPad Pro 11-inch Wi-Fi + Cellular"; + case "iPad8,2": + return "iPad Pro 11-inch"; + case "iPad8,1": + return "iPad Pro 11-inch Wi-Fi"; + case "iPad7,12": + return "iPad (7th generation) Wi-Fi + Cellular"; + case "iPad7,11": + return "iPad (7th generation) Wi-Fi"; + case "iPad7,6": + return "iPad (6th generation) Wi-Fi + Cellular"; + case "iPad7,5": + return "iPad (6th generation) Wi-Fi"; + case "iPad7,4": + return "iPad Pro (10.5-inch) Wi-Fi + Cellular"; + case "iPad7,3": + return "iPad Pro (10.5-inch) Wi-Fi"; + case "iPad7,2": + return "iPad Pro 12.9-inch (2nd generation) Wi-Fi + Cellular"; + case "iPad7,1": + return "iPad Pro 12.9-inch (2nd generation) Wi-Fi"; + case "iPad6,12": + return "iPad (5th generation) Wi-Fi + Cellular"; + case "iPad6,11": + return "iPad (5th generation) Wi-Fi"; + case "iPad6,8": + return "iPad Pro 12.9-inch Wi-Fi + Cellular"; + case "iPad6,7": + return "iPad Pro 12.9-inch Wi-Fi"; + case "iPad6,4": + return "iPad Pro (9.7-inch) Wi-Fi + Cellular"; + case "iPad6,3": + return "iPad Pro (9.7-inch) Wi-Fi"; + case "iPad5,4": + return "iPad Air 2 Wi-Fi + Cellular"; + case "iPad5,3": + return "iPad Air 2 Wi-Fi"; + case "iPad5,2": + return "iPad mini 4 Wi-Fi + Cellular"; + case "iPad5,1": + return "iPad mini 4 Wi-Fi"; + case "iPad4,9": + return "iPad mini 3 Wi-Fi + Cellular (TD-LTE)"; + case "iPad4,8": + return "iPad mini 3 Wi-Fi + Cellular"; + case "iPad4,7": + return "iPad mini 3 Wi-Fi"; + case "iPad4,6": + return "iPad mini 2 Wi-Fi + Cellular (TD-LTE)"; + case "iPad4,5": + return "iPad mini 2 Wi-Fi + Cellular"; + case "iPad4,4": + return "iPad mini 2 Wi-Fi"; + case "iPad4,3": + return "iPad Air Wi-Fi + Cellular (TD-LTE)"; + case "iPad4,2": + return "iPad Air Wi-Fi + Cellular"; + case "iPad4,1": + return "iPad Air Wi-Fi"; + case "iPad3,6": + return "iPad (4th generation) Wi-Fi + Cellular (MM)"; + case "iPad3,5": + return "iPad (4th generation) Wi-Fi + Cellular"; + case "iPad3,4": + return "iPad (4th generation) Wi-Fi"; + } + } + + return string.IsNullOrWhiteSpace(version) ? "Unknown" : version; + } + } +} diff --git a/TransactionMobile.Maui/TransactionMobile.Maui.csproj b/TransactionMobile.Maui/TransactionMobile.Maui.csproj index aaa36385..209ff94c 100644 --- a/TransactionMobile.Maui/TransactionMobile.Maui.csproj +++ b/TransactionMobile.Maui/TransactionMobile.Maui.csproj @@ -69,6 +69,9 @@ ReportsPage.xaml + + SupportPage.xaml + MobileTopupPerformTopupPage.xaml @@ -115,6 +118,9 @@ MSBuild:Compile + + MSBuild:Compile + Designer MSBuild:Compile diff --git a/TransactionMobile.Maui/UIServices/DeviceInformationService.cs b/TransactionMobile.Maui/UIServices/DeviceInformationService.cs new file mode 100644 index 00000000..87583324 --- /dev/null +++ b/TransactionMobile.Maui/UIServices/DeviceInformationService.cs @@ -0,0 +1,14 @@ +namespace TransactionMobile.Maui.Platforms.Services; + +public partial class DeviceInformationService +{ + #region Methods + + public partial String Identifier(); + + public partial String Model(); + + public partial String Platform(); + + #endregion +} \ No newline at end of file diff --git a/TransactionMobile.Maui/UIServices/DeviceService.cs b/TransactionMobile.Maui/UIServices/DeviceService.cs new file mode 100644 index 00000000..54af927c --- /dev/null +++ b/TransactionMobile.Maui/UIServices/DeviceService.cs @@ -0,0 +1,29 @@ +namespace TransactionMobile.Maui.UIServices; + +using BusinessLogic.UIServices; +using Platforms.Services; + +public class DeviceService : IDeviceService +{ + private readonly DeviceInformationService DeviceInformationService; + + public DeviceService() + { + this.DeviceInformationService = new DeviceInformationService(); + } + + public String GetModel() + { + return this.DeviceInformationService.Model(); + } + + public String GetPlatform() + { + return this.DeviceInformationService.Platform(); + } + + public String GetIdentifier() + { + return this.DeviceInformationService.Identifier(); + } +} \ No newline at end of file From e4d2134cd69230fcd8f2cae34d88988fad56a754 Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Sun, 27 Feb 2022 06:26:38 +0000 Subject: [PATCH 2/3] make device class static --- .../Platforms/Android/DeviceService.cs | 8 ++++---- .../Platforms/MacCatalyst/DeviceService.cs | 8 ++++---- .../Platforms/Windows/DeviceService.cs | 8 ++++---- .../Platforms/iOS/DeviceService.cs | 10 +++++----- .../UIServices/DeviceInformationService.cs | 8 ++++---- TransactionMobile.Maui/UIServices/DeviceService.cs | 13 +++---------- 6 files changed, 24 insertions(+), 31 deletions(-) diff --git a/TransactionMobile.Maui/Platforms/Android/DeviceService.cs b/TransactionMobile.Maui/Platforms/Android/DeviceService.cs index 24e30f0f..3d7ca047 100644 --- a/TransactionMobile.Maui/Platforms/Android/DeviceService.cs +++ b/TransactionMobile.Maui/Platforms/Android/DeviceService.cs @@ -11,9 +11,9 @@ namespace TransactionMobile.Maui.Platforms.Services using Android.Provider; using Android.Util; - public partial class DeviceInformationService + public static partial class DeviceInformationService { - public partial String Identifier() + public static partial String Identifier() { String id = Build.Serial; //if (string.IsNullOrWhiteSpace(id) || id == Build.Unknown || id == "0") @@ -32,9 +32,9 @@ public partial String Identifier() return id; } - public partial String Model() => Build.Model; + public static partial String Model() => Build.Model; - public partial String Platform() + public static partial String Platform() { return $"Android {Build.VERSION.Release} (API {AndroidSDK} - {AndroidCodename()})"; } diff --git a/TransactionMobile.Maui/Platforms/MacCatalyst/DeviceService.cs b/TransactionMobile.Maui/Platforms/MacCatalyst/DeviceService.cs index 8facc9ff..45cc2b01 100644 --- a/TransactionMobile.Maui/Platforms/MacCatalyst/DeviceService.cs +++ b/TransactionMobile.Maui/Platforms/MacCatalyst/DeviceService.cs @@ -6,13 +6,13 @@ namespace TransactionMobile.Maui.Platforms.Services { - public partial class DeviceInformationService + public static partial class DeviceInformationService { - public partial String Model() => DeviceInfo.Model; + public static partial String Model() => DeviceInfo.Model; - public partial String Platform() => $"{DeviceInfo.Platform} {DeviceInfo.VersionString}"; + public static partial String Platform() => $"{DeviceInfo.Platform} {DeviceInfo.VersionString}"; - public partial String DeviceIdentifier() + public static partial String Identifier() { return ""; } diff --git a/TransactionMobile.Maui/Platforms/Windows/DeviceService.cs b/TransactionMobile.Maui/Platforms/Windows/DeviceService.cs index d2eb2641..154ae292 100644 --- a/TransactionMobile.Maui/Platforms/Windows/DeviceService.cs +++ b/TransactionMobile.Maui/Platforms/Windows/DeviceService.cs @@ -8,11 +8,11 @@ namespace TransactionMobile.Maui.Platforms.Services { - public partial class DeviceInformationService + public static partial class DeviceInformationService { - public partial String Model() => new EasClientDeviceInformation().SystemProductName; + public static partial String Model() => new EasClientDeviceInformation().SystemProductName; - public partial String Platform() => $"UWP {GetVersionString()}"; + public static partial String Platform() => $"UWP {GetVersionString()}"; private static string GetVersionString() { @@ -31,7 +31,7 @@ private static string GetVersionString() } - public partial String DeviceIdentifier() + public static partial String Identifier() { var deviceInformation = new EasClientDeviceInformation(); string Id = deviceInformation.Id.ToString(); diff --git a/TransactionMobile.Maui/Platforms/iOS/DeviceService.cs b/TransactionMobile.Maui/Platforms/iOS/DeviceService.cs index 0374cf29..f44c14a5 100644 --- a/TransactionMobile.Maui/Platforms/iOS/DeviceService.cs +++ b/TransactionMobile.Maui/Platforms/iOS/DeviceService.cs @@ -10,7 +10,7 @@ namespace TransactionMobile.Maui.Platforms.Services using Foundation; using UIKit; - public partial class DeviceInformationService + public static partial class DeviceInformationService { // based on code from https://github.com/dannycabrera/Get-iOS-Model @@ -23,7 +23,7 @@ private static extern int sysctlbyname([MarshalAs(UnmanagedType.LPStr)] string p IntPtr newp, uint newlen); - public partial String Model() + public static partial String Model() { string version = FindVersion(); if (version == "i386" || version == "x86_64") @@ -33,7 +33,7 @@ public partial String Model() return GetModel(version); } - public partial String Platform() => $"{DeviceInfo.Platform} {UIDevice.CurrentDevice.SystemVersion}"; + public static partial String Platform() => $"{DeviceInfo.Platform} {UIDevice.CurrentDevice.SystemVersion}"; private static string FindVersion() { @@ -73,12 +73,12 @@ private static string FindVersion() return "Unknown"; } - public partial String DeviceIdentifier() + public static partial String Identifier() { return UIDevice.CurrentDevice.IdentifierForVendor.AsString().Replace("-", ""); } - private static string GetModel(string version) + private static static string GetModel(string version) { if (version.StartsWith("iPhone")) { diff --git a/TransactionMobile.Maui/UIServices/DeviceInformationService.cs b/TransactionMobile.Maui/UIServices/DeviceInformationService.cs index 87583324..f1be6fdf 100644 --- a/TransactionMobile.Maui/UIServices/DeviceInformationService.cs +++ b/TransactionMobile.Maui/UIServices/DeviceInformationService.cs @@ -1,14 +1,14 @@ namespace TransactionMobile.Maui.Platforms.Services; -public partial class DeviceInformationService +public static partial class DeviceInformationService { #region Methods - public partial String Identifier(); + public static partial String Identifier(); - public partial String Model(); + public static partial String Model(); - public partial String Platform(); + public static partial String Platform(); #endregion } \ No newline at end of file diff --git a/TransactionMobile.Maui/UIServices/DeviceService.cs b/TransactionMobile.Maui/UIServices/DeviceService.cs index 54af927c..9249ac3a 100644 --- a/TransactionMobile.Maui/UIServices/DeviceService.cs +++ b/TransactionMobile.Maui/UIServices/DeviceService.cs @@ -5,25 +5,18 @@ public class DeviceService : IDeviceService { - private readonly DeviceInformationService DeviceInformationService; - - public DeviceService() - { - this.DeviceInformationService = new DeviceInformationService(); - } - public String GetModel() { - return this.DeviceInformationService.Model(); + return DeviceInformationService.Model(); } public String GetPlatform() { - return this.DeviceInformationService.Platform(); + return DeviceInformationService.Platform(); } public String GetIdentifier() { - return this.DeviceInformationService.Identifier(); + return DeviceInformationService.Identifier(); } } \ No newline at end of file From bd91a718bd7b2f343824a26a7f8e19a07931d00d Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Sun, 27 Feb 2022 07:45:02 +0000 Subject: [PATCH 3/3] fix minor code crime --- TransactionMobile.Maui/Platforms/iOS/DeviceService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TransactionMobile.Maui/Platforms/iOS/DeviceService.cs b/TransactionMobile.Maui/Platforms/iOS/DeviceService.cs index f44c14a5..65240329 100644 --- a/TransactionMobile.Maui/Platforms/iOS/DeviceService.cs +++ b/TransactionMobile.Maui/Platforms/iOS/DeviceService.cs @@ -78,7 +78,7 @@ public static partial String Identifier() return UIDevice.CurrentDevice.IdentifierForVendor.AsString().Replace("-", ""); } - private static static string GetModel(string version) + private static string GetModel(string version) { if (version.StartsWith("iPhone")) {