From e1712d114a441a63be7dec648b55fa053753784b Mon Sep 17 00:00:00 2001 From: Rutger Bresjer Date: Tue, 24 May 2022 11:39:56 +0200 Subject: [PATCH] Fixes for Twitter sharing --- .../shekarmudaliyar/social_share/SocialSharePlugin.kt | 8 +++++--- ios/Classes/SocialSharePlugin.m | 9 ++++----- lib/social_share.dart | 5 +---- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/android/src/main/kotlin/com/shekarmudaliyar/social_share/SocialSharePlugin.kt b/android/src/main/kotlin/com/shekarmudaliyar/social_share/SocialSharePlugin.kt index 2e086c2d..6ebf6f9e 100644 --- a/android/src/main/kotlin/com/shekarmudaliyar/social_share/SocialSharePlugin.kt +++ b/android/src/main/kotlin/com/shekarmudaliyar/social_share/SocialSharePlugin.kt @@ -18,6 +18,7 @@ import io.flutter.plugin.common.MethodChannel.MethodCallHandler import io.flutter.plugin.common.MethodChannel.Result import io.flutter.plugin.common.PluginRegistry.Registrar import java.io.File +import java.net.URLEncoder class SocialSharePlugin:FlutterPlugin, MethodCallHandler, ActivityAware { private lateinit var channel: MethodChannel @@ -159,9 +160,10 @@ class SocialSharePlugin:FlutterPlugin, MethodCallHandler, ActivityAware { } } else if (call.method == "shareTwitter") { //shares content on twitter - val text: String? = call.argument("captionText") - val url: String? = call.argument("url") - val trailingText: String? = call.argument("trailingText") + val text: String? = URLEncoder.encode(call.argument("captionText"), "utf-8") + val url: String? = URLEncoder.encode(call.argument("url"), "utf-8") + val trailingText: String? = URLEncoder.encode(call.argument("trailingText"), "utf-8") + val urlScheme = "http://www.twitter.com/intent/tweet?text=$text$url$trailingText" Log.d("log",urlScheme) val intent = Intent(Intent.ACTION_VIEW) diff --git a/ios/Classes/SocialSharePlugin.m b/ios/Classes/SocialSharePlugin.m index d896e44b..17d46ced 100644 --- a/ios/Classes/SocialSharePlugin.m +++ b/ios/Classes/SocialSharePlugin.m @@ -126,12 +126,11 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { result([NSNumber numberWithBool:YES]); } else if ([@"shareTwitter" isEqualToString:call.method]) { // NSString *assetImage = call.arguments[@"assetImage"]; - NSString *captionText = call.arguments[@"captionText"]; - NSString *urlstring = call.arguments[@"url"]; - NSString *trailingText = call.arguments[@"trailingText"]; + NSString *captionText = [call.arguments[@"captionText"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + NSString *urlstring = [call.arguments[@"url"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + NSString *trailingText = [call.arguments[@"trailingText"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; - NSString* urlTextEscaped = [urlstring stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; - NSURL *url = [NSURL URLWithString: urlTextEscaped]; + NSURL *url = [NSURL URLWithString: urlstring]; NSURL *urlScheme = [NSURL URLWithString:@"twitter://"]; if ([[UIApplication sharedApplication] canOpenURL:urlScheme]) { //check if twitter app exists diff --git a/lib/social_share.dart b/lib/social_share.dart index 150a42ed..0a17295b 100644 --- a/lib/social_share.dart +++ b/lib/social_share.dart @@ -118,10 +118,7 @@ class SocialShare { modifiedUrl = Uri.parse(url ?? '').toString(); } if (hashtags != null && hashtags.isNotEmpty) { - String tags = ""; - hashtags.forEach((f) { - tags += ("%23" + f.toString() + " ").toString(); - }); + final tags = hashtags.map((t) => '#$t ').join(' '); args = { "captionText": captionText + "\n" + tags.toString(), "url": modifiedUrl,