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 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/ios/RCTPSPDFKit/RCTPSPDFKitView.m b/ios/RCTPSPDFKit/RCTPSPDFKitView.m index 31d906c7..818fd273 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]) { 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/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 @@