public static void MakeGlobalDefault(this AccessDenialResponse accessDenialResponse)
 {
     if (accessDenialResponse != AccessDenialResponse.GlobalDefault)
     {
         PlatformDelegate.DefaultAccessDenialResponse = accessDenialResponse;
     }
 }
Пример #2
0
        /*
         #region Private Methods
         * internal override async Task<bool> RequestAccess(string message)
         * {
         *  if (await base.RequestAccess(message))
         *  {
         *      if (await FilePicker.PickSingleFileAsync(this) is IStorageFile iStorageFile && iStorageFile is StorageFile storageFile)
         *      {
         *          Url = storageFile.Url;
         *          Bookmark = BookmarkExtensions.GetOrCreateBookmark(Url);
         *          return CanWrite();
         *      }
         *  }
         *  return false;
         * }
         #endregion
         */


        #region IStorageFile

        #region Check Access

        /*
         * public async Task<bool> CanRead()
         * {
         *  var result = NSFileManager.DefaultManager.IsReadableFile(Path);
         *  return result;
         * }
         *
         * public bool CanWrite()
         * {
         *  var result = NSFileManager.DefaultManager.IsWritableFile(Path);
         *  return result;
         * }
         */

        internal async Task <bool> StartReadAccess(Action action = null)
        {
            if (!await StartAccess())
            {
                return(false);
            }

            var accessDenialResponse = AccessDenialResponse.Value();

            if (!CanRead && accessDenialResponse == AccessDenialResponse.RequestAccess)
            {
                await RequestAccess(Path);
            }
            if (!CanRead)
            {
                if (action != null)
                {
                    action.Invoke();
                }
                StopAccess();
                if (accessDenialResponse == AccessDenialResponse.Exception)
                {
                    ThrowAccessException();
                }
                return(false);
            }

            return(true);
        }
 public static AccessDenialResponse Value(this AccessDenialResponse accessDenialResponse)
 {
     if (accessDenialResponse == AccessDenialResponse.GlobalDefault || accessDenialResponse == AccessDenialResponse.Exception)
     {
         return(PlatformDelegate.DefaultAccessDenialResponse);
     }
     //return AccessDenialResponse.RequestAccess;
     return(accessDenialResponse);
 }
Пример #4
0
        internal async Task <bool> StartWriteAccess(Action action = null)
        {
            if (!Exists() && GetParent() is StorageFolder folder)
            {
                if (folder.CanWrite)
                {
                    return(true);
                }
                await folder.RequestAccess(folder.Path);

                return(folder.CanWrite);
            }

            if (!await StartAccess())
            {
                return(false);
            }

            var accessDenialResponse = AccessDenialResponse.Value();

            if (!CanWrite && accessDenialResponse == AccessDenialResponse.RequestAccess)
            {
                await RequestAccess(Path);
            }
            if (!CanWrite)
            {
                if (action != null)
                {
                    action.Invoke();
                }
                StopAccess();
                if (accessDenialResponse == AccessDenialResponse.Exception)
                {
                    ThrowAccessException();
                }
                return(false);
            }

            return(true);
        }