From 676a3c4bdaf362d75627cf16158da936ad505309 Mon Sep 17 00:00:00 2001 From: enahum Date: Fri, 26 Jan 2018 18:50:08 -0300 Subject: [PATCH] Fix share extension (#1386) * Remove iOS extension garbage code * Fix Android Share Extension crash --- .../mattermost/rnbeta/MainApplication.java | 2 +- index.android.js | 11 ----- index.js | 7 +++ ios/Mattermost/AppDelegate.m | 30 ------------ .../android/extension_post/extension_post.js | 48 +++++++++++-------- 5 files changed, 36 insertions(+), 62 deletions(-) delete mode 100644 index.android.js diff --git a/android/app/src/main/java/com/mattermost/rnbeta/MainApplication.java b/android/app/src/main/java/com/mattermost/rnbeta/MainApplication.java index cf1904b39..01697db6d 100644 --- a/android/app/src/main/java/com/mattermost/rnbeta/MainApplication.java +++ b/android/app/src/main/java/com/mattermost/rnbeta/MainApplication.java @@ -78,7 +78,7 @@ public class MainApplication extends NavigationApplication implements INotificat @Override public String getJSMainModuleName() { - return "index.android"; + return "index"; } @Override diff --git a/index.android.js b/index.android.js deleted file mode 100644 index 3973260de..000000000 --- a/index.android.js +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. -// See License.txt for license information. - -import {AppRegistry} from 'react-native'; - -/* eslint-disable no-unused-vars */ -import Mattermost from 'app/mattermost'; -import ShareExtension from 'share_extension/android'; - -AppRegistry.registerComponent('MattermostShare', () => ShareExtension); -const app = new Mattermost(); diff --git a/index.js b/index.js index 9fd56243b..b60030438 100644 --- a/index.js +++ b/index.js @@ -2,6 +2,13 @@ // See License.txt for license information. /* eslint-disable no-unused-vars */ +import {AppRegistry, Platform} from 'react-native'; + import Mattermost from 'app/mattermost'; +import ShareExtension from 'share_extension/android'; + +if (Platform.OS === 'android') { + AppRegistry.registerComponent('MattermostShare', () => ShareExtension); +} const app = new Mattermost(); diff --git a/ios/Mattermost/AppDelegate.m b/ios/Mattermost/AppDelegate.m index b17397348..1f7db23b9 100644 --- a/ios/Mattermost/AppDelegate.m +++ b/ios/Mattermost/AppDelegate.m @@ -36,36 +36,6 @@ return YES; } --(void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(nonnull NSString *)identifier completionHandler:(nonnull void (^)(void))completionHandler { - - NSUserDefaults *bucket = [[NSUserDefaults alloc] initWithSuiteName: @"group.com.mattermost"]; - NSString *credentialsString = [bucket objectForKey:@"credentials"]; - NSData *credentialsData = [credentialsString dataUsingEncoding:NSUTF8StringEncoding]; - NSDictionary *credentials = [NSJSONSerialization JSONObjectWithData:credentialsData options:NSJSONReadingMutableContainers error:nil]; - NSString *server = [credentials objectForKey:@"url"]; - NSString *token = [credentials objectForKey:@"token"]; - - NSDictionary *post = [NSDictionary dictionaryWithObjectsAndKeys:@"user_id", [bucket objectForKey:@"currentUserId"], @"message", @"Shit fuck", @"channel_id", @"zw43c5ttrjyu9dg7jnudwuz6bw"]; - NSData *postData = [NSJSONSerialization dataWithJSONObject:post options:NSJSONWritingPrettyPrinted error:nil]; - NSString* postAsString = [[NSString alloc] initWithData:postData encoding:NSUTF8StringEncoding]; - - NSURL *createUrl = [NSURL URLWithString:[server stringByAppendingString:@"/api/v4/posts"]]; - NSURLSessionConfiguration* config = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"backgroundSession-post"]; - config.sharedContainerIdentifier = @"group.com.mattermost"; - - NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:createUrl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5.0]; - [request setHTTPMethod:@"POST"]; - [request setValue:[@"Bearer " stringByAppendingString:token] forHTTPHeaderField:@"Authorization"]; - [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; - [request setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; - [request setHTTPBody:[postAsString dataUsingEncoding:NSUTF8StringEncoding]]; - NSURLSession *createSession = [NSURLSession sessionWithConfiguration:config]; - NSURLSessionDataTask *createTask = [createSession dataTaskWithRequest:request]; - [createTask resume]; - - completionHandler(); -} - // Required for orientation - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { return [Orientation getOrientation]; diff --git a/share_extension/android/extension_post/extension_post.js b/share_extension/android/extension_post/extension_post.js index f9eb7ab77..383e97f90 100644 --- a/share_extension/android/extension_post/extension_post.js +++ b/share_extension/android/extension_post/extension_post.js @@ -87,24 +87,29 @@ export default class ExtensionPost extends PureComponent { ); - const headerRight = ( - - - - - - ); + + let headerRight = null; + + if (params.post) { + headerRight = ( + + + + + + ); + } return {headerLeft, headerRight, title}; }; @@ -130,8 +135,7 @@ export default class ExtensionPost extends PureComponent { componentDidMount() { this.props.navigation.setParams({ - close: this.onClose, - post: this.onPost + close: this.onClose }); this.auth(); } @@ -258,6 +262,10 @@ export default class ExtensionPost extends PureComponent { const text = []; const files = []; + this.props.navigation.setParams({ + post: this.onPost + }); + for (let i = 0; i < items.length; i++) { const item = items[i]; switch (item.type) {