From 599ad28c99a1b2fe84a6f9faf6610629ab470448 Mon Sep 17 00:00:00 2001 From: David Sinclair Date: Fri, 22 May 2020 21:10:06 -0700 Subject: [PATCH] #1231 (sharing crash) - Now extracts the URL title and sets that when sharing, in addition to any user comments. --- .../ios/Share Extension/ShareViewController.m | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/clients/ios/Share Extension/ShareViewController.m b/clients/ios/Share Extension/ShareViewController.m index ac70a71974..323d29ea55 100644 --- a/clients/ios/Share Extension/ShareViewController.m +++ b/clients/ios/Share Extension/ShareViewController.m @@ -11,6 +11,8 @@ @interface ShareViewController () +@property (nonatomic, strong) NSString *itemTitle; + @end @implementation ShareViewController @@ -26,6 +28,8 @@ - (BOOL)isContentValid { } - (void)didSelectPost { + self.itemTitle = nil; + NSItemProvider *itemProvider = [self providerWithURL]; NSLog(@"ShareExt: didSelectPost"); @@ -55,6 +59,12 @@ - (NSItemProvider *)providerWithURL { for (NSExtensionItem *extensionItem in self.extensionContext.inputItems) { for (NSItemProvider *itemProvider in extensionItem.attachments) { if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeURL]) { + self.itemTitle = extensionItem.attributedTitle.string; + + if (!self.itemTitle.length) { + self.itemTitle = extensionItem.attributedContentText.string; + } + return itemProvider; } } @@ -79,14 +89,20 @@ - (void)sendURL:(NSURL *)url orText:(NSString *)text { NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.newsblur.NewsBlur-Group"]; NSString *host = [defaults objectForKey:@"share:host"]; NSString *token = [defaults objectForKey:@"share:token"]; + NSString *title = self.itemTitle; NSString *comments = self.contentText; + if (title && [comments isEqualToString:title]) { + comments = @""; + } + if (text && [comments isEqualToString:text]) { comments = @""; } NSCharacterSet *characterSet = [NSCharacterSet URLQueryAllowedCharacterSet]; NSString *encodedURL = url ? [url.absoluteString stringByAddingPercentEncodingWithAllowedCharacters:characterSet] : @""; + NSString *encodedTitle = title ? [title stringByAddingPercentEncodingWithAllowedCharacters:characterSet] : @""; NSString *encodedContent = text ? [text stringByAddingPercentEncodingWithAllowedCharacters:characterSet] : @""; NSString *encodedComments = [comments stringByAddingPercentEncodingWithAllowedCharacters:characterSet]; // NSInteger time = [[NSDate date] timeIntervalSince1970]; @@ -96,7 +112,7 @@ - (void)sendURL:(NSURL *)url orText:(NSString *)text { NSURL *requestURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@/api/share_story/%@", host, token]]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:requestURL]; request.HTTPMethod = @"POST"; - NSString *postBody = [NSString stringWithFormat:@"story_url=%@&title=&content=%@&comments=%@", encodedURL, encodedContent, encodedComments]; + NSString *postBody = [NSString stringWithFormat:@"story_url=%@&title=%@&content=%@&comments=%@", encodedURL, encodedTitle, encodedContent, encodedComments]; request.HTTPBody = [postBody dataUsingEncoding:NSUTF8StringEncoding]; NSURLSessionTask *myTask = [mySession dataTaskWithRequest:request]; [myTask resume];