|
13 | 13 | import com.facebook.react.uimanager.ViewGroupManager;
|
14 | 14 | import com.facebook.react.uimanager.annotations.ReactProp;
|
15 | 15 | import com.pspdfkit.annotations.Annotation;
|
| 16 | +import com.pspdfkit.configuration.activity.PdfActivityConfiguration; |
16 | 17 | import com.pspdfkit.preferences.PSPDFKitPreferences;
|
17 |
| -import com.pspdfkit.react.events.PdfViewAnnotationChangedEvent; |
18 |
| -import com.pspdfkit.react.events.PdfViewAnnotationTappedEvent; |
19 | 18 | import com.pspdfkit.react.events.PdfViewDataReturnedEvent;
|
20 |
| -import com.pspdfkit.react.events.PdfViewDocumentLoadFailedEvent; |
21 |
| -import com.pspdfkit.react.events.PdfViewDocumentSaveFailedEvent; |
22 |
| -import com.pspdfkit.react.events.PdfViewDocumentSavedEvent; |
23 |
| -import com.pspdfkit.react.events.PdfViewStateChangedEvent; |
24 | 19 | import com.pspdfkit.react.menu.ReactGroupingRule;
|
25 | 20 | import com.pspdfkit.views.PdfView;
|
26 | 21 |
|
@@ -56,6 +51,11 @@ public class ReactPdfViewManager extends ViewGroupManager<PdfView> {
|
56 | 51 |
|
57 | 52 | private CompositeDisposable annotationDisposables = new CompositeDisposable();
|
58 | 53 |
|
| 54 | + /** |
| 55 | + * Value of the form editing enabled property so we can make sure configuration does not override it. |
| 56 | + */ |
| 57 | + private boolean isFormEditingEnabled = true; |
| 58 | + |
59 | 59 | @Override
|
60 | 60 | public String getName() {
|
61 | 61 | return "RCTPSPDFKitView";
|
@@ -112,9 +112,36 @@ public void setFragmentTag(PdfView view, @NonNull String fragmentTag) {
|
112 | 112 | }
|
113 | 113 |
|
114 | 114 | @ReactProp(name = "configuration")
|
115 |
| - public void setConfiguration(PdfView view, @NonNull ReadableMap configuration) { |
| 115 | + public void setConfiguration(@NonNull PdfView view, @NonNull ReadableMap configuration) { |
116 | 116 | ConfigurationAdapter configurationAdapter = new ConfigurationAdapter(view.getContext(), configuration);
|
117 |
| - view.setConfiguration(configurationAdapter.build()); |
| 117 | + view.setConfiguration(updateReactPropsInConfiguration(configurationAdapter.build())); |
| 118 | + } |
| 119 | + |
| 120 | + @ReactProp(name = "enableFormEditing") |
| 121 | + public void setEnableFormEditing(@NonNull PdfView view, boolean enableFormEditing) { |
| 122 | + this.isFormEditingEnabled = enableFormEditing; |
| 123 | + |
| 124 | + final PdfActivityConfiguration configuration = view.getConfiguration(); |
| 125 | + final PdfActivityConfiguration updatedConfiguration = updateReactPropsInConfiguration(configuration); |
| 126 | + if (!updatedConfiguration.equals(configuration)) { |
| 127 | + view.setConfiguration(updatedConfiguration); |
| 128 | + } |
| 129 | + } |
| 130 | + |
| 131 | + @NonNull |
| 132 | + private PdfActivityConfiguration updateReactPropsInConfiguration(@NonNull PdfActivityConfiguration configuration) { |
| 133 | + // Check if the configuration needs update according to current react properties. |
| 134 | + if (configuration.getConfiguration().isFormEditingEnabled() == isFormEditingEnabled) { |
| 135 | + return configuration; |
| 136 | + } |
| 137 | + |
| 138 | + PdfActivityConfiguration.Builder updatedConfigurationBuilder = new PdfActivityConfiguration.Builder(configuration); |
| 139 | + if (isFormEditingEnabled) { |
| 140 | + updatedConfigurationBuilder.enableFormEditing(); |
| 141 | + } else { |
| 142 | + updatedConfigurationBuilder.disableFormEditing(); |
| 143 | + } |
| 144 | + return updatedConfigurationBuilder.build(); |
118 | 145 | }
|
119 | 146 |
|
120 | 147 | @ReactProp(name = "document")
|
|
0 commit comments