Skip to content

Commit cbfde7d

Browse files
author
Reinhard Hafenscher
authored
Merge pull request #364 from PSPDFKit/reinhard/android-6.3
Update PSPDFKit Version to 6.3.0
2 parents c00e086 + c127bf5 commit cbfde7d

File tree

7 files changed

+51
-26
lines changed

7 files changed

+51
-26
lines changed

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* Contains gradle configuration constants
33
*/
44
ext {
5-
PSPDFKIT_VERSION = '6.2.0'
5+
PSPDFKIT_VERSION = '6.3.0'
66
}
77

88
buildscript {

android/src/main/java/com/pspdfkit/views/PdfView.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ private void setupFragment() {
286286
.build();
287287
// We put our internal id so we can track if this fragment belongs to us, used to handle orphaned fragments after hot reloads.
288288
pdfFragment.getArguments().putInt(ARG_ROOT_ID, internalId);
289-
prepareFragment(pdfFragment);
289+
prepareFragment(pdfFragment, true);
290290
} else {
291291
View fragmentView = pdfFragment.getView();
292292
if (pdfFragment.getDocument() != null && !pdfFragment.getDocument().getUid().equals(document.getUid())) {
@@ -298,13 +298,13 @@ private void setupFragment() {
298298
.configuration(configuration)
299299
.fragmentClass(ReactPdfUiFragment.class)
300300
.build();
301-
prepareFragment(pdfFragment);
301+
prepareFragment(pdfFragment, true);
302302
} else if (fragmentView != null && fragmentView.getParent() != this) {
303303
// We only need to detach the fragment if the parent view changed.
304304
fragmentManager.beginTransaction()
305305
.remove(pdfFragment)
306306
.commitNow();
307-
prepareFragment(pdfFragment);
307+
prepareFragment(pdfFragment, true);
308308
}
309309
}
310310

@@ -317,20 +317,24 @@ private void setupFragment() {
317317
}
318318
}
319319

320-
private void prepareFragment(final PdfUiFragment pdfUiFragment) {
321-
fragmentManager.beginTransaction()
322-
.add(pdfUiFragment, fragmentTag)
323-
.commitNow();
324-
View fragmentView = pdfUiFragment.getView();
325-
addView(fragmentView, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
320+
private void prepareFragment(final PdfUiFragment pdfUiFragment, final boolean attachFragment) {
321+
if (attachFragment) {
322+
fragmentManager.beginTransaction()
323+
.add(pdfUiFragment, fragmentTag)
324+
.commitNow();
325+
View fragmentView = pdfUiFragment.getView();
326+
addView(fragmentView, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
327+
}
326328

327329
pdfUiFragment.setOnContextualToolbarLifecycleListener(pdfViewModeController);
328330
pdfUiFragment.getPSPDFKitViews().getFormEditingBarView().addOnFormEditingBarLifecycleListener(pdfViewModeController);
329331
((ReactPdfUiFragment) pdfUiFragment).setReactPdfUiFragmentListener(new ReactPdfUiFragment.ReactPdfUiFragmentListener() {
330332
@Override
331333
public void onConfigurationChanged(@NonNull PdfUiFragment pdfUiFragment) {
332334
// If the configuration was changed from the UI a new fragment will be created, reattach our listeners.
333-
preparePdfFragment(pdfUiFragment.getPdfFragment());
335+
prepareFragment(pdfUiFragment, false);
336+
// Also notify other places that might want to reattach their listeners.
337+
pdfUiFragmentGetter.onNext(Collections.singletonList(pdfUiFragment));
334338
}
335339

336340
@Override

android/src/main/java/com/pspdfkit/views/ReactPdfUiFragment.java

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
package com.pspdfkit.views;
22

3+
import android.os.Bundle;
4+
35
import androidx.annotation.NonNull;
46
import androidx.annotation.Nullable;
57
import androidx.appcompat.widget.Toolbar;
8+
import androidx.fragment.app.Fragment;
9+
import androidx.fragment.app.FragmentManager;
610

7-
import com.pspdfkit.configuration.activity.PdfActivityConfiguration;
811
import com.pspdfkit.react.R;
12+
import com.pspdfkit.ui.PdfFragment;
913
import com.pspdfkit.ui.PdfUiFragment;
1014

1115
/**
@@ -20,19 +24,23 @@ public class ReactPdfUiFragment extends PdfUiFragment {
2024

2125
@Nullable private ReactPdfUiFragmentListener reactPdfUiFragmentListener;
2226

27+
private final FragmentManager.FragmentLifecycleCallbacks fragmentLifecycleCallbacks = new FragmentManager.FragmentLifecycleCallbacks() {
28+
@Override
29+
public void onFragmentCreated(@NonNull FragmentManager fm, @NonNull Fragment f, @Nullable Bundle savedInstanceState) {
30+
super.onFragmentCreated(fm, f, savedInstanceState);
31+
// Whenever a new PdfFragment is created that means the configuration has changed.
32+
if (f instanceof PdfFragment) {
33+
if (reactPdfUiFragmentListener != null) {
34+
reactPdfUiFragmentListener.onConfigurationChanged(ReactPdfUiFragment.this);
35+
}
36+
}
37+
}
38+
};
39+
2340
void setReactPdfUiFragmentListener(@Nullable ReactPdfUiFragmentListener listener) {
2441
this.reactPdfUiFragmentListener = listener;
2542
}
2643

27-
@Override
28-
public void performApplyConfiguration(@NonNull PdfActivityConfiguration configuration) {
29-
super.performApplyConfiguration(configuration);
30-
31-
if (this.reactPdfUiFragmentListener != null) {
32-
reactPdfUiFragmentListener.onConfigurationChanged(this);
33-
}
34-
}
35-
3644
/** When set to true will add a navigation arrow to the toolbar. */
3745
void setShowNavigationButtonInToolbar(final boolean showNavigationButtonInToolbar) {
3846
if (getView() == null) {
@@ -52,12 +60,25 @@ void setShowNavigationButtonInToolbar(final boolean showNavigationButtonInToolba
5260
}
5361
}
5462

63+
@Override
64+
public void onStart() {
65+
super.onStart();
66+
// We want to get notified when a child PdfFragment is created so we can reattach our listeners.
67+
getChildFragmentManager().registerFragmentLifecycleCallbacks(fragmentLifecycleCallbacks, false);
68+
}
69+
70+
@Override
71+
public void onStop() {
72+
super.onStop();
73+
getChildFragmentManager().unregisterFragmentLifecycleCallbacks(fragmentLifecycleCallbacks);
74+
}
75+
5576
/**
5677
* Listener that notifies of actions taken directly in the PdfUiFragment.
5778
*/
5879
public interface ReactPdfUiFragmentListener {
5980

60-
/** Called when the configuration changed, reset your {@link com.pspdfkit.ui.PdfFragment} listeners in here. */
81+
/** Called when the configuration changed, reset your {@link com.pspdfkit.ui.PdfFragment} and {@link PdfUiFragment} listeners in here. */
6182
void onConfigurationChanged(@NonNull PdfUiFragment pdfUiFragment);
6283

6384
/** Called when the back navigation button was clicked. */

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-native-pspdfkit",
3-
"version": "1.28.7",
3+
"version": "1.29.0",
44
"description": "A React Native module for the PSPDFKit library.",
55
"keywords": [
66
"react native",

samples/Catalog/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "Catalog",
3-
"version": "1.28.7",
3+
"version": "1.29.0",
44
"private": true,
55
"scripts": {
66
"start": "react-native start",

samples/NativeCatalog/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "NativeCatalog",
3-
"version": "1.28.7",
3+
"version": "1.29.0",
44
"private": true,
55
"scripts": {
66
"android": "react-native run-android",

0 commit comments

Comments
 (0)