mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			121 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Objective-C
		
	
			
		
		
	
	
			121 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Objective-C
		
	
| //
 | |
| //  Copyright (c) 2018 Open Whisper Systems. All rights reserved.
 | |
| //
 | |
| 
 | |
| #import "AttachmentSharing.h"
 | |
| #import "UIUtil.h"
 | |
| #import <SessionCoreKit/Threading.h>
 | |
| #import <SessionServiceKit/AppContext.h>
 | |
| #import <SessionServiceKit/TSAttachmentStream.h>
 | |
| 
 | |
| NS_ASSUME_NONNULL_BEGIN
 | |
| 
 | |
| @implementation AttachmentSharing
 | |
| 
 | |
| + (void)showShareUIForAttachments:(NSArray<TSAttachmentStream *> *)attachmentStreams
 | |
|                        completion:(nullable AttachmentSharingCompletion)completion
 | |
| {
 | |
|     OWSAssertDebug(attachmentStreams.count > 0);
 | |
| 
 | |
|     NSMutableArray<NSURL *> *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<NSURL *> *)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
 |