From f6554fc3777d7a8a5df189c66a7c3c1fa7c4f201 Mon Sep 17 00:00:00 2001 From: RadAzzouz Date: Thu, 11 Apr 2019 09:54:30 -0400 Subject: [PATCH 1/6] Check if document is valid before adding or removing annotations --- ios/RCTPSPDFKit/RCTPSPDFKitView.m | 42 ++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/ios/RCTPSPDFKit/RCTPSPDFKitView.m b/ios/RCTPSPDFKit/RCTPSPDFKitView.m index 31d906c7..d99f8fd5 100644 --- a/ios/RCTPSPDFKit/RCTPSPDFKitView.m +++ b/ios/RCTPSPDFKit/RCTPSPDFKitView.m @@ -190,6 +190,10 @@ - (BOOL)addAnnotation:(id)jsonAnnotation { } PSPDFDocument *document = self.pdfController.document; + if (![document isValid]) { + NSLog(@"Document is invalid."); + return NO; + } PSPDFDocumentProvider *documentProvider = document.documentProviders.firstObject; BOOL success = NO; @@ -207,18 +211,22 @@ - (BOOL)addAnnotation:(id)jsonAnnotation { - (BOOL)removeAnnotationWithUUID:(NSString *)annotationUUID { PSPDFDocument *document = self.pdfController.document; - + if (![document isValid]) { + NSLog(@"Document is invalid."); + return NO; + } + BOOL success = NO; NSArray *allAnnotations = [[document allAnnotationsOfType:PSPDFAnnotationTypeAll].allValues valueForKeyPath:@"@unionOfArrays.self"]; - for (PSPDFAnnotation *annotation in allAnnotations) { - // Remove the annotation if the name matches. - if ([annotation.uuid isEqualToString:annotationUUID]) { - success = [document removeAnnotations:@[annotation] options:nil]; - break; - } + for (PSPDFAnnotation *annotation in allAnnotations) { + // Remove the annotation if the name matches. + if ([annotation.uuid isEqualToString:annotationUUID]) { + success = [document removeAnnotations:@[annotation] options:nil]; + break; } - + } + if (!success) { NSLog(@"Failed to remove annotation."); } @@ -245,12 +253,18 @@ - (BOOL)addAnnotations:(id)jsonAnnotations { PSPDFDataContainerProvider *dataContainerProvider = [[PSPDFDataContainerProvider alloc] initWithData:data]; PSPDFDocument *document = self.pdfController.document; + if (![document isValid]) { + NSLog(@"Document is invalid."); + return NO; + } + PSPDFDocumentProvider *documentProvider = document.documentProviders.firstObject; - BOOL success = [document applyInstantJSONFromDataProvider:dataContainerProvider toDocumentProvider:documentProvider error:NULL]; + BOOL success = [document applyInstantJSONFromDataProvider:dataContainerProvider toDocumentProvider:documentProvider lenient:NO error:NULL]; if (!success) { NSLog(@"Failed to add annotations."); } + [self.pdfController reloadPageAtIndex:self.pdfController.pageIndex animated:NO]; return success; } @@ -263,6 +277,11 @@ - (BOOL)addAnnotations:(id)jsonAnnotations { } PSPDFDocument *document = self.pdfController.document; + if (![document isValid]) { + NSLog(@"Document is invalid."); + return nil; + } + for (PSPDFFormElement *formElement in document.formParser.forms) { if ([formElement.fullyQualifiedFieldName isEqualToString:fullyQualifiedName]) { id formFieldValue = formElement.value; @@ -280,6 +299,11 @@ - (void)setFormFieldValue:(NSString *)value fullyQualifiedName:(NSString *)fully } PSPDFDocument *document = self.pdfController.document; + if (![document isValid]) { + NSLog(@"Document is invalid."); + return; + } + for (PSPDFFormElement *formElement in document.formParser.forms) { if ([formElement.fullyQualifiedFieldName isEqualToString:fullyQualifiedName]) { if ([formElement isKindOfClass:PSPDFButtonFormElement.class]) { From a255e22e36938d969a5e9ebeba5d2aafc00d4d6a Mon Sep 17 00:00:00 2001 From: RadAzzouz Date: Thu, 11 Apr 2019 09:55:05 -0400 Subject: [PATCH 2/6] Update Xcode projects to Xcode 10.2 and fix warnings --- ios/RCTPSPDFKit.xcodeproj/project.pbxproj | 19 +++++++++++++++++- ios/RCTPSPDFKit/RCTPSPDFKitView.h | 4 ++++ .../ios/Catalog.xcodeproj/project.pbxproj | 20 +++++++++++++++++-- .../xcshareddata/xcschemes/Catalog.xcscheme | 2 +- 4 files changed, 41 insertions(+), 4 deletions(-) diff --git a/ios/RCTPSPDFKit.xcodeproj/project.pbxproj b/ios/RCTPSPDFKit.xcodeproj/project.pbxproj index 7e1ee503..3cdb3bc2 100644 --- a/ios/RCTPSPDFKit.xcodeproj/project.pbxproj +++ b/ios/RCTPSPDFKit.xcodeproj/project.pbxproj @@ -130,7 +130,7 @@ 83CBB9F71A601CBA00E9B192 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0800; + LastUpgradeCheck = 1020; ORGANIZATIONNAME = Facebook; TargetAttributes = { 657277141D8312EA00A5E1A8 = { @@ -144,6 +144,7 @@ developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, Base, ); @@ -210,14 +211,22 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -266,14 +275,22 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; diff --git a/ios/RCTPSPDFKit/RCTPSPDFKitView.h b/ios/RCTPSPDFKit/RCTPSPDFKitView.h index 2c9e5c8d..5c2ad779 100644 --- a/ios/RCTPSPDFKit/RCTPSPDFKitView.h +++ b/ios/RCTPSPDFKit/RCTPSPDFKitView.h @@ -13,6 +13,8 @@ @import PSPDFKit; @import PSPDFKitUI; +NS_ASSUME_NONNULL_BEGIN + @interface RCTPSPDFKitView: UIView @property (nonatomic, readonly) PSPDFViewController *pdfController; @@ -47,3 +49,5 @@ - (void)setFormFieldValue:(NSString *)value fullyQualifiedName:(NSString *)fullyQualifiedName; @end + +NS_ASSUME_NONNULL_END diff --git a/samples/Catalog/ios/Catalog.xcodeproj/project.pbxproj b/samples/Catalog/ios/Catalog.xcodeproj/project.pbxproj index beaf4811..6b13fa3e 100644 --- a/samples/Catalog/ios/Catalog.xcodeproj/project.pbxproj +++ b/samples/Catalog/ios/Catalog.xcodeproj/project.pbxproj @@ -655,7 +655,7 @@ isa = PBXProject; attributes = { CLASSPREFIX = RCTPSPDF; - LastUpgradeCheck = 0800; + LastUpgradeCheck = 1020; ORGANIZATIONNAME = "PSPDFKit GmbH"; TargetAttributes = { 00E356ED1AD99517003FC87E = { @@ -666,7 +666,7 @@ }; buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Catalog" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -1168,14 +1168,22 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -1218,14 +1226,22 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; diff --git a/samples/Catalog/ios/Catalog.xcodeproj/xcshareddata/xcschemes/Catalog.xcscheme b/samples/Catalog/ios/Catalog.xcodeproj/xcshareddata/xcschemes/Catalog.xcscheme index bac90a0b..8e728f11 100644 --- a/samples/Catalog/ios/Catalog.xcodeproj/xcshareddata/xcschemes/Catalog.xcscheme +++ b/samples/Catalog/ios/Catalog.xcodeproj/xcshareddata/xcschemes/Catalog.xcscheme @@ -1,6 +1,6 @@ Date: Thu, 11 Apr 2019 10:27:21 -0400 Subject: [PATCH 3/6] Update requirements in the README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b5988a2d..20f6b6bd 100644 --- a/README.md +++ b/README.md @@ -24,8 +24,8 @@ The [PSPDFKit SDK](https://pspdfkit.com/) is a framework that allows you to view #### Requirements -- Xcode 10.1 -- PSPDFKit 8.1.3 for iOS or later +- Xcode 10.2 +- PSPDFKit 8.2.3 for iOS or later - react-native >= 0.57.8 #### Getting Started From a1c159928550ed1e1fdf466d5ef2d58c50f3521f Mon Sep 17 00:00:00 2001 From: Stefan Kieleithner Date: Mon, 15 Apr 2019 07:21:26 -0400 Subject: [PATCH 4/6] Update ios/RCTPSPDFKit/RCTPSPDFKitView.m Co-Authored-By: radazzouz --- ios/RCTPSPDFKit/RCTPSPDFKitView.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/RCTPSPDFKit/RCTPSPDFKitView.m b/ios/RCTPSPDFKit/RCTPSPDFKitView.m index d99f8fd5..2a530de4 100644 --- a/ios/RCTPSPDFKit/RCTPSPDFKitView.m +++ b/ios/RCTPSPDFKit/RCTPSPDFKitView.m @@ -299,7 +299,7 @@ - (void)setFormFieldValue:(NSString *)value fullyQualifiedName:(NSString *)fully } PSPDFDocument *document = self.pdfController.document; - if (![document isValid]) { + if (!document.isValid) { NSLog(@"Document is invalid."); return; } From 9efa44e16614cf9eca82d976f341909c28819a1b Mon Sep 17 00:00:00 2001 From: RadAzzouz Date: Mon, 15 Apr 2019 07:25:54 -0400 Subject: [PATCH 5/6] =?UTF-8?q?=F0=9F=92=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `![document isValid]` -> `!document.isValid` --- ios/RCTPSPDFKit/RCTPSPDFKitView.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ios/RCTPSPDFKit/RCTPSPDFKitView.m b/ios/RCTPSPDFKit/RCTPSPDFKitView.m index 2a530de4..818fd273 100644 --- a/ios/RCTPSPDFKit/RCTPSPDFKitView.m +++ b/ios/RCTPSPDFKit/RCTPSPDFKitView.m @@ -190,7 +190,7 @@ - (BOOL)addAnnotation:(id)jsonAnnotation { } PSPDFDocument *document = self.pdfController.document; - if (![document isValid]) { + if (!document.isValid) { NSLog(@"Document is invalid."); return NO; } @@ -211,7 +211,7 @@ - (BOOL)addAnnotation:(id)jsonAnnotation { - (BOOL)removeAnnotationWithUUID:(NSString *)annotationUUID { PSPDFDocument *document = self.pdfController.document; - if (![document isValid]) { + if (!document.isValid) { NSLog(@"Document is invalid."); return NO; } @@ -253,7 +253,7 @@ - (BOOL)addAnnotations:(id)jsonAnnotations { PSPDFDataContainerProvider *dataContainerProvider = [[PSPDFDataContainerProvider alloc] initWithData:data]; PSPDFDocument *document = self.pdfController.document; - if (![document isValid]) { + if (!document.isValid) { NSLog(@"Document is invalid."); return NO; } @@ -277,7 +277,7 @@ - (BOOL)addAnnotations:(id)jsonAnnotations { } PSPDFDocument *document = self.pdfController.document; - if (![document isValid]) { + if (!document.isValid) { NSLog(@"Document is invalid."); return nil; } From 1028a80c32c52c0d6885b93619d87d8654d80eed Mon Sep 17 00:00:00 2001 From: RadAzzouz Date: Mon, 15 Apr 2019 07:27:06 -0400 Subject: [PATCH 6/6] Update the package version to 1.23.6 --- package-lock.json | 2 +- package.json | 2 +- samples/Catalog/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f1b9504c..7d8a98f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "react-native-pspdfkit", - "version": "1.23.5", + "version": "1.23.6", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 6f893ebe..a837eb84 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-pspdfkit", - "version": "1.23.5", + "version": "1.23.6", "description": "A React Native module for the PSPDFKit library.", "keywords": [ "react native", diff --git a/samples/Catalog/package.json b/samples/Catalog/package.json index 6a8a8df2..aaa4cb27 100644 --- a/samples/Catalog/package.json +++ b/samples/Catalog/package.json @@ -1,6 +1,6 @@ { "name": "Catalog", - "version": "1.23.5", + "version": "1.23.6", "private": true, "scripts": { "start": "node node_modules/react-native/local-cli/cli.js start"