diff --git a/android/src/main/java/com/mattermost/pasteinput/PasteInputEditText.kt b/android/src/main/java/com/mattermost/pasteinput/PasteInputEditText.kt index c883919..4ac5445 100644 --- a/android/src/main/java/com/mattermost/pasteinput/PasteInputEditText.kt +++ b/android/src/main/java/com/mattermost/pasteinput/PasteInputEditText.kt @@ -29,7 +29,7 @@ class PasteInputEditText(context: ThemedReactContext) : ReactEditText(context) { override fun onCreateInputConnection(outAttrs: EditorInfo): InputConnection { val ic = super.onCreateInputConnection(outAttrs) - EditorInfoCompat.setContentMimeTypes(outAttrs, arrayOf("*/*")) + EditorInfoCompat.setContentMimeTypes(outAttrs, arrayOf("image/gif", "image/jpg", "image/jpeg", "image/png", "image/webp", "image/*", "*/*")) val callback = InputConnectionCompat.OnCommitContentListener { inputContentInfo, flags, opts -> val lacksPermission = (flags and InputConnectionCompat.INPUT_CONTENT_GRANT_READ_URI_PERMISSION) != 0 diff --git a/ios/PasteInputTextView.m b/ios/PasteInputTextView.m index 73ed099..aad2774 100644 --- a/ios/PasteInputTextView.m +++ b/ios/PasteInputTextView.m @@ -22,21 +22,21 @@ - (BOOL)canPerformAction:(SEL)action withSender:(id)sender action == @selector(cut:) || action == @selector(_share:); #pragma clang diagnostic pop - + if (_disableCopyPaste && prevent) { return NO; } - + if (action == @selector(paste:) && [UIPasteboard generalPasteboard].numberOfItems > 0) { return true; } - + return [super canPerformAction:action withSender:sender]; } -(void)paste:(id)sender { [super paste:sender]; - + UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; BOOL hasStrings = pasteboard.hasStrings; @@ -49,7 +49,7 @@ -(void)paste:(id)sender { if (pasteboard.hasURLs || hasStrings || pasteboard.hasColors) { return; } - + if (_onPaste) { NSArray *files = [pasteboard getCopiedFiles]; if (files != nil && files.count > 0) { @@ -60,9 +60,9 @@ -(void)paste:(id)sender { return; } } - + // Dismiss contextual menu - [self resignFirstResponder]; + // [self resignFirstResponder]; } @end diff --git a/ios/UIPasteboard+GetImageInfo.m b/ios/UIPasteboard+GetImageInfo.m index df52bb7..db6e260 100644 --- a/ios/UIPasteboard+GetImageInfo.m +++ b/ios/UIPasteboard+GetImageInfo.m @@ -8,7 +8,7 @@ #import "UIPasteboard+GetImageInfo.h" #import "NSData+MimeType.h" -#import "react_native_paste_input-Swift.h" +#import "react_native_paste_input/react_native_paste_input-Swift.h" #import "UIImage+vImageScaling.h" @implementation UIPasteboard (GetImageInfo) @@ -25,18 +25,18 @@ @implementation UIPasteboard (GetImageInfo) } NSString *type = item.allKeys[j]; - + @try { NSString *uri = self.string; NSData *fileData = item[type]; - + if ([type isEqual:@"public.jpeg"] || [type isEqual:@"public.heic"] || [type isEqual:@"public.png"]) { fileData = [self getDataForImageItem:item[type] type:type]; } else if ([type isEqual:@"com.compuserve.gif"]) { fileData = [self dataForPasteboardType:type]; } - + SwimeProxy *swimeProxy = [SwimeProxy shared]; MimeTypeProxy *mimeProxy = [swimeProxy getMimeAndExtensionWithData:fileData uti:type]; NSString *extension; @@ -48,11 +48,11 @@ @implementation UIPasteboard (GetImageInfo) extension = [fileData extension]; mimeType = [fileData mimeType]; } - + if ([extension length] == 0) { continue; } - + NSString *tempFilename = [NSString stringWithFormat:@"%@.%@", [[NSProcessInfo processInfo] globallyUniqueString], extension]; NSURL *tempFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:tempFilename]]; BOOL success = [fileData writeToURL:tempFileURL atomically:YES]; @@ -74,7 +74,7 @@ @implementation UIPasteboard (GetImageInfo) } } } - + return fileInfos; } @@ -93,11 +93,11 @@ -(NSData *) getDataForImageItem:(NSData *)imageData type:(NSString *)type { if (width > 6048 || height > 4032) { image = [image vImageScaledImageWithSize:CGSizeMake(2048, 2048) contentMode:UIViewContentModeScaleAspectFit]; } - + if ([type isEqual:@"public.png"]) { return UIImagePNGRepresentation(image); } - + return UIImageJPEGRepresentation(image, 1.0); }