| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 | 
							- using Autofac;
 
- using InABox.Core;
 
- using Microsoft.Maui.ApplicationModel;
 
- namespace InABox.Avalonia
 
- {
 
-     
 
-     public static class MobileUtils
 
-     {
 
-         
 
-         public static void Init()
 
-         {
 
-             Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense(CoreUtils.SyncfusionLicense(SyncfusionVersion.v29_x));
 
-         }
 
-         
 
-         private static async Task<bool> Retry(Func<Task<bool>> action, int interval, int retryCount = 3)
 
-         {
 
-             bool flag = false;
 
-             List<Exception> source = new List<Exception>();
 
-             TimeSpan delay = TimeSpan.FromMilliseconds((double)interval);
 
-             for (int index = 0; index < retryCount; ++index)
 
-             {
 
-                 try
 
-                 {
 
-                     flag = await action();
 
-                     if (flag)
 
-                         return true;
 
-                     Task.Delay(delay).Wait();
 
-                 }
 
-                 catch (Exception ex)
 
-                 {
 
-                     if (source.All<Exception>((Func<Exception, bool>)(x => x.Message != ex.Message)))
 
-                         source.Add(ex);
 
-                     Task.Delay(delay).Wait();
 
-                 }
 
-             }
 
-             if (!flag && !source.Any<Exception>())
 
-                 return false;
 
-             if (source.Count<Exception>() == 1)
 
-                 throw source.First();
 
-             if (source.Count<Exception>() > 1)
 
-                 throw new AggregateException((IEnumerable<Exception>)source);
 
-             return flag;
 
-         }
 
-         
 
-         public static async Task<bool> IsPermitted<TPermission>() where TPermission : Permissions.BasePermission, new()
 
-         {
 
-             try
 
-             {
 
-                 PermissionStatus status = await Permissions.CheckStatusAsync<TPermission>();
 
-                 if (status == PermissionStatus.Granted)
 
-                     return true;
 
-                 var request = await Permissions.RequestAsync<TPermission>();
 
-                 return request == PermissionStatus.Granted;
 
-             }
 
-             catch (TaskCanceledException ex)
 
-             {
 
-                 return false;
 
-             }
 
-         }
 
-         
 
-         // public static async Task<bool> CheckPermissions<TPermission>() where TPermission : Permissions.BasePermission, new()
 
-         // {
 
-         //     var permissionStatus = await CrossPermissions.Current.CheckPermissionStatusAsync(permission);
 
-         //     bool request = false;
 
-         //     if (permissionStatus == PermissionStatus.Denied)
 
-         //     {
 
-         //         if (String.Equals(Device.RuntimePlatform, Device.iOS))
 
-         //         {
 
-         //
 
-         //             var title = $"{permission} Permission";
 
-         //             var question = $"To use this plugin the {permission} permission is required. Please go into Settings and turn on {permission} for the app.";
 
-         //             var positive = "Settings";
 
-         //             var negative = "Maybe Later";
 
-         //             var task = Application.Current?.MainPage?.DisplayAlert(title, question, positive, negative);
 
-         //             if (task == null)
 
-         //                 return false;
 
-         //
 
-         //             var result = await task;
 
-         //             if (result)
 
-         //             {
 
-         //                 CrossPermissions.Current.OpenAppSettings();
 
-         //             }
 
-         //
 
-         //             return false;
 
-         //         }
 
-         //
 
-         //         request = true;
 
-         //
 
-         //     }
 
-         //
 
-         //     if (request || permissionStatus != PermissionStatus.Granted)
 
-         //     {
 
-         //         var newStatus = await CrossPermissions.Current.RequestPermissionsAsync(permission);
 
-         //         if (newStatus.ContainsKey(permission) && newStatus[permission] != PermissionStatus.Granted)
 
-         //         {
 
-         //             var title = $"{permission} Permission";
 
-         //             var question = $"To use the plugin the {permission} permission is required.";
 
-         //             var positive = "Settings";
 
-         //             var negative = "Maybe Later";
 
-         //             var task = Application.Current?.MainPage?.DisplayAlert(title, question, positive, negative);
 
-         //             if (task == null)
 
-         //                 return false;
 
-         //
 
-         //             var result = await task;
 
-         //             if (result)
 
-         //             {
 
-         //                 CrossPermissions.Current.OpenAppSettings();
 
-         //             }
 
-         //             return false;
 
-         //         }
 
-         //     }
 
-         //
 
-         //     return true;
 
-         // }
 
-         // public static byte[] ImageSourceToByteArray(ImageSource source)
 
-         // {
 
-         //     StreamImageSource streamImageSource = (StreamImageSource)source;
 
-         //     System.Threading.CancellationToken cancellationToken = System.Threading.CancellationToken.None;
 
-         //     Task<Stream> task = streamImageSource.Stream(cancellationToken);
 
-         //     Stream stream = task.Result;
 
-         //     byte[] bytes = new byte[stream.Length];
 
-         //     stream.Read(bytes, 0, bytes.Length);
 
-         //     return bytes;
 
-         // }
 
-         //
 
-         // public static string ImageSourceToBase64(ImageSource source)
 
-         // {
 
-         //     var bytes = ImageSourceToByteArray(source); 
 
-         //     string s = Convert.ToBase64String(bytes, Base64FormattingOptions.InsertLineBreaks);
 
-         //     return s;
 
-         // }
 
-         
 
-     }
 
- }
 
 
  |