public async Task <ActionResult> StopSharingFileWithUser(ShareFileRequest request) { var userId = AuthenticationManager.GetUserId(User); if (request.UserId == userId.ToString()) { return(BadRequest("You can't stop sharing file with yourself")); } var file = await _filesRepository.FindByIdAsync(request.FileId); if (!file.AllowedUsers.Contains(new ObjectId(request.UserId))) { return(BadRequest("File is not shared with this user")); } var updatedAllowedList = file.AllowedUsers; updatedAllowedList.Remove(new ObjectId(request.UserId)); if (!FileFolderManager.CanDeleteFile(userId, file)) { return(BadRequest("You don't have rights to stop sharing this file")); } await _filesRepository.UpdateOneAsync(request.FileId, "AllowedUsers", updatedAllowedList); return(Ok()); }
public async Task <ActionResult> ShareFileWithUser(ShareFileRequest request) { var userId = AuthenticationManager.GetUserId(User); if (request.UserId == userId.ToString()) { return(BadRequest("You already have access to this file")); } var file = await _filesRepository.FindByIdAsync(request.FileId); if (file.AllowedUsers.Contains(new ObjectId(request.UserId))) { return(BadRequest("User already has access to this file")); } var updatedAllowedList = file.AllowedUsers; updatedAllowedList.Add(new ObjectId(request.UserId)); if (!FileFolderManager.CanDeleteFile(userId, file)) { return(BadRequest("You don't have rights to share this file")); } await _filesRepository.UpdateOneAsync(request.FileId, "AllowedUsers", updatedAllowedList); return(Ok()); }
public Task ShareFileAsync(string filePath) { var shareFile = new ShareFile(filePath); var shareRequest = new ShareFileRequest(shareFile); return(Share.RequestAsync(shareRequest)); }
static Task PlatformRequestAsync(ShareFileRequest request) { if (string.IsNullOrEmpty(request.File.FullPath)) { throw new ArgumentNullException(nameof(request.File.FullPath)); } Permissions.EnsureDeclared <Permissions.LaunchApp>(); var appControl = new AppControl { Operation = AppControlOperations.ShareText, }; if (!string.IsNullOrEmpty(request.File.FullPath)) { appControl.ExtraData.Add("http://tizen.org/appcontrol/data/path", request.File.FullPath); } if (!string.IsNullOrEmpty(request.Title)) { appControl.ExtraData.Add("http://tizen.org/appcontrol/data/title", request.Title); } AppControl.SendLaunchRequest(appControl); return(Task.CompletedTask); }
static Task PlatformRequestAsync(ShareFileRequest request) { var items = new List <NSObject>(); var fileUrl = NSUrl.FromFilename(request.File.FullPath); if (!string.IsNullOrEmpty(request.Title)) { items.Add(new ShareActivityItemSource(fileUrl, request.Title)); // Share with title (subject) } else { items.Add(fileUrl); // No title specified } var activityController = new UIActivityViewController(items.ToArray(), null); var vc = Platform.GetCurrentViewController(); if (activityController.PopoverPresentationController != null) { activityController.PopoverPresentationController.SourceView = vc.View; } return(vc.PresentViewControllerAsync(activityController, true)); }
/// <summary> /// Share the current sketch as a JPEG with EXIF data /// </summary> /// <param name="parameter">the parameter is not used</param> /// <returns>an async task</returns> protected override async Task ExecuteAsync(object parameter) { var data = App.GetSketchData(); var title = string.IsNullOrWhiteSpace(data.Name) ? "Sketch" : data.Name; var filename = Path.Combine(FileSystem.CacheDirectory, title + ".jpeg"); using (var stream = File.Create(filename)) { InkRenderer.RenderImage(data.Width, data.Height, data.BackgroundColor, data.InkStrokes.ToList(), stream, data.Width); } var photoLibrary = DependencyService.Get <IPhotoLibrary>(); photoLibrary.AddExifData(filename); var request = new ShareFileRequest(title + " #Sketch360", new ShareFile(filename)); await Share.RequestAsync(request).ConfigureAwait(false); var properties = new Dictionary <string, string> { ["width"] = data.Width.ToString(CultureInfo.InvariantCulture), ["inkstrokes"] = data.InkStrokes.Count().ToString(CultureInfo.InvariantCulture), ["background"] = data.BackgroundColor.ToHex(), ["duration"] = data.Duration.TotalMinutes.ToString(CultureInfo.InvariantCulture) }; Analytics.TrackEvent("Share", properties); }
static Task PlatformRequestAsync(ShareFileRequest request) { var items = new List <NSObject>(); var fileUrl = NSUrl.FromFilename(request.File.FullPath); if (!string.IsNullOrEmpty(request.Title)) { items.Add(new ShareActivityItemSource(fileUrl, request.Title)); // Share with title (subject) } else { items.Add(fileUrl); // No title specified } var activityController = new UIActivityViewController(items.ToArray(), null); var vc = Platform.GetCurrentViewController(); if (activityController.PopoverPresentationController != null) { activityController.PopoverPresentationController.SourceView = vc.View; if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad) { var sr = new CoreGraphics.CGRect(vc.View.Bounds.Width, 20, 0, 0); activityController.PopoverPresentationController.SourceRect = sr; } } return(vc.PresentViewControllerAsync(activityController, true)); }
public async Task Share_ShareFileRequestWithInvalidFilePath() { var request = new ShareFileRequest { File = new ShareFile(fullPath: null) }; await Assert.ThrowsAsync <ArgumentException>(() => Share.RequestAsync(request)); }
public static Task RequestAsync(ShareFileRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (request.File == null) { throw new ArgumentException(FileNullExeption(nameof(request.File))); } return(PlatformRequestAsync((ShareMultipleFilesRequest)request)); }
static Task PlatformRequestAsync(ShareFileRequest request) { var items = new List <NSObject>(); if (!string.IsNullOrWhiteSpace(request.Title)) { items.Add(new NSString(request.Title)); } if (request.File != null) { items.Add(NSUrl.FromFilename(request.File.FullPath)); } return(PlatformShowRequestAsync(request, items)); }
public static Task RequestAsync(ShareFileRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (request.File == null) { throw new ArgumentException($"The {nameof(request.File)} in the request is invalid."); } if (string.IsNullOrEmpty(request.File.FullPath)) { throw new ArgumentException($"The request file's {nameof(request.File.FullPath)} is invalid."); } return(PlatformRequestAsync(request)); }
static async Task PlatformRequestAsync(ShareFileRequest request) { var storageFile = request.File.File ?? await StorageFile.GetFileFromPathAsync(request.File.FullPath); var dataTransferManager = DataTransferManager.GetForCurrentView(); dataTransferManager.DataRequested += ShareTextHandler; DataTransferManager.ShowShareUI(); void ShareTextHandler(DataTransferManager sender, DataRequestedEventArgs e) { var newRequest = e.Request; newRequest.Data.SetStorageItems(new IStorageItem[] { storageFile }); newRequest.Data.Properties.Title = request.Title ?? AppInfo.Name; dataTransferManager.DataRequested -= ShareTextHandler; } }
/// <summary> /// Shows native share sheet that exports all features. /// </summary> /// <returns></returns> private async Task ShowShareSheet() { if (IsBusy) { return; } IsBusy = true; ShareFileRequest share = new ShareFileRequest { Title = "Share Features", File = new ShareFile(await FeatureStore.ExportFeatures(FeatureList), "application/json"), }; share.PresentationSourceBounds = DeviceInfo.Platform == DevicePlatform.iOS && DeviceInfo.Idiom == DeviceIdiom.Tablet ? new System.Drawing.Rectangle((int)(DeviceDisplay.MainDisplayInfo.Width * .474), 80, 0, 0) : System.Drawing.Rectangle.Empty; await Share.RequestAsync(share); IsBusy = false; }
static Task PlatformRequestAsync(ShareFileRequest request) { var contentUri = Platform.GetShareableFileUri(request.File); var intent = new Intent(Intent.ActionSend); intent.SetType(request.File.ContentType); intent.SetFlags(ActivityFlags.GrantReadUriPermission); intent.PutExtra(Intent.ExtraStream, contentUri); if (!string.IsNullOrEmpty(request.Title)) { intent.PutExtra(Intent.ExtraTitle, request.Title); } var chooserIntent = Intent.CreateChooser(intent, request.Title ?? string.Empty); var flags = ActivityFlags.ClearTop | ActivityFlags.NewTask; chooserIntent.SetFlags(flags); Platform.AppContext.StartActivity(chooserIntent); return(Task.CompletedTask); }
Task PlatformRequestAsync(ShareFileRequest request) => PlatformRequestAsync((ShareMultipleFilesRequest)request);
public void Post([FromBody] ShareFileRequest shareFileRequest) { shareFileCommandHandler.Handle(shareFileRequest); }
public static Task RequestAsync(ShareFileRequest request) { ExperimentalFeatures.VerifyEnabled(ExperimentalFeatures.ShareFileRequest); return(PlatformRequestAsync(request)); }
public async Task <IActionResult> ShareFile([FromBody] ShareFileRequest shareRequest) { var uniqueId = User.GetUniqueId(); var file = await _dbContext.File.Include(x => x.ReadPermissions).Include(x => x.WritePermissions) .Where(x => x.FileId == new Guid(shareRequest.FileId) && ( x.OwnedByUniqueId == new Guid(uniqueId) || x.WritePermissions.Any(y => y.UniqueId == new Guid(uniqueId)) ) ) .FirstOrDefaultAsync(); if (file != null) { _dbContext.File.Attach(file); if (!shareRequest.Email.Equals(String.Empty)) { var user = await _dbContext.Profile.FirstOrDefaultAsync(x => x.Email.Equals(shareRequest.Email)); if (user != null) { if (shareRequest.WritePermission && !file.WritePermissions.Any(y => y.UniqueId == user.UniqueId)) { file.WritePermissions.Add(new Write { SharedByUniqueId = new Guid(uniqueId), UniqueId = user.UniqueId, }); file.ReadPermissions.Add(new Read { SharedByUniqueId = new Guid(uniqueId), UniqueId = user.UniqueId, }); } else if (shareRequest.ReadPermission && !file.ReadPermissions.Any(y => y.UniqueId == user.UniqueId)) { file.ReadPermissions.Add(new Read { SharedByUniqueId = new Guid(uniqueId), UniqueId = user.UniqueId, }); } } else { var NotAcceptable = BadRequest($"User with email '{shareRequest.Email}' don't exist!"); NotAcceptable.StatusCode = 406; return(NotAcceptable); } } else if (shareRequest.Email.Equals(String.Empty) && (shareRequest.WritePermission || shareRequest.ReadPermission)) { var NotAcceptable = BadRequest("Email required!"); NotAcceptable.StatusCode = 406; return(NotAcceptable); } if (shareRequest.PublicPermission) { file.IsPublic = true; } if (await _dbContext.SaveChangesAsync() >= 0) { return(Ok()); } } return(BadRequest("Something happen try again later!")); }
public static Task RequestAsync(ShareFileRequest request) => Current.RequestAsync(request);
public async Task Share_NullShareFileRequest() { ShareFileRequest request = null; await Assert.ThrowsAsync <ArgumentNullException>(() => Share.RequestAsync(request)); }
public Task RequestAsync(ShareFileRequest request) { return(Xamarin.Essentials.Share.RequestAsync(request)); }
static Task PlatformRequestAsync(ShareFileRequest request) => throw new NotImplementedInReferenceAssemblyException();
static Task PlatformRequestAsync(ShareFileRequest request) => throw ExceptionUtils.NotSupportedOrImplementedException;
public static Task RequestAsync(ShareFileRequest request) { return(PlatformRequestAsync(request)); }
static Task PlatformRequestAsync(ShareFileRequest request) => throw new System.PlatformNotSupportedException();