// // Copyright (c) 2018 Open Whisper Systems. All rights reserved. // #import "AttachmentSharing.h" #import "UIUtil.h" #import #import NS_ASSUME_NONNULL_BEGIN @implementation AttachmentSharing + (void)showShareUIForAttachments:(NSArray *)attachmentStreams completion:(nullable AttachmentSharingCompletion)completion { OWSAssertDebug(attachmentStreams.count > 0); NSMutableArray *urls = [NSMutableArray new]; for (TSAttachmentStream *attachmentStream in attachmentStreams) { [urls addObject:attachmentStream.originalMediaURL]; } [AttachmentSharing showShareUIForActivityItems:urls completion:completion]; } + (void)showShareUIForAttachment:(TSAttachmentStream *)stream { OWSAssertDebug(stream); [self showShareUIForURL:stream.originalMediaURL]; } + (void)showShareUIForURL:(NSURL *)url { [self showShareUIForURL:url completion:nil]; } + (void)showShareUIForURL:(NSURL *)url completion:(nullable AttachmentSharingCompletion)completion { OWSAssertDebug(url); [AttachmentSharing showShareUIForActivityItems:@[ url, ] completion:completion]; } + (void)showShareUIForURLs:(NSArray *)urls completion:(nullable AttachmentSharingCompletion)completion { OWSAssertDebug(urls.count > 0); [AttachmentSharing showShareUIForActivityItems:urls completion:completion]; } + (void)showShareUIForText:(NSString *)text { [self showShareUIForText:text completion:nil]; } + (void)showShareUIForText:(NSString *)text completion:(nullable AttachmentSharingCompletion)completion { OWSAssertDebug(text); [AttachmentSharing showShareUIForActivityItems:@[ text, ] completion:completion]; } #ifdef DEBUG + (void)showShareUIForUIImage:(UIImage *)image { OWSAssertDebug(image); [AttachmentSharing showShareUIForActivityItems:@[ image, ] completion:nil]; } #endif + (void)showShareUIForActivityItems:(NSArray *)activityItems completion:(nullable AttachmentSharingCompletion)completion { OWSAssertDebug(activityItems); DispatchMainThreadSafe(^{ UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:@[]]; [activityViewController setCompletionWithItemsHandler:^(UIActivityType __nullable activityType, BOOL completed, NSArray *__nullable returnedItems, NSError *__nullable activityError) { if (activityError) { OWSLogInfo(@"Failed to share with activityError: %@", activityError); } else if (completed) { OWSLogInfo(@"Did share with activityType: %@", activityType); } if (completion) { DispatchMainThreadSafe(completion); } }]; UIViewController *fromViewController = CurrentAppContext().frontmostViewController; while (fromViewController.presentedViewController) { fromViewController = fromViewController.presentedViewController; } OWSAssertDebug(fromViewController); [fromViewController presentViewController:activityViewController animated:YES completion:nil]; }); } @end NS_ASSUME_NONNULL_END