Skip to content

Commit 3b61f82

Browse files
committed
Saves all revision values to database
1 parent 8bdef04 commit 3b61f82

3 files changed

Lines changed: 26 additions & 19 deletions

File tree

WordPress/src/main/java/org/wordpress/android/ui/history/HistoryDetailContainerFragment.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.wordpress.android.analytics.AnalyticsTracker.Stat;
3131
import org.wordpress.android.databinding.HistoryDetailContainerFragmentBinding;
3232
import org.wordpress.android.editor.EditorMediaUtils;
33+
import org.wordpress.android.editor.savedinstance.SavedInstanceDatabase;
3334
import org.wordpress.android.fluxc.model.revisions.RevisionModel;
3435
import org.wordpress.android.fluxc.store.PostStore;
3536
import org.wordpress.android.ui.history.HistoryListItem.Revision;
@@ -245,7 +246,10 @@ public void onPrepareOptionsMenu(@NonNull Menu menu) {
245246
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
246247
if (item.getItemId() == R.id.history_load) {
247248
Intent intent = new Intent();
248-
intent.putExtra(KEY_REVISION, mRevision);
249+
SavedInstanceDatabase db = SavedInstanceDatabase.Companion.getDatabase(WordPress.getContext());
250+
if (db != null) {
251+
db.addParcel(KEY_REVISION, mRevision);
252+
}
249253

250254
requireActivity().setResult(Activity.RESULT_OK, intent);
251255
requireActivity().finish();

WordPress/src/main/java/org/wordpress/android/ui/history/HistoryDetailFragment.kt

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ import android.view.LayoutInflater
55
import android.view.View
66
import android.view.ViewGroup
77
import androidx.fragment.app.Fragment
8+
import kotlinx.parcelize.parcelableCreator
89
import org.wordpress.android.R
10+
import org.wordpress.android.WordPress
11+
import org.wordpress.android.editor.savedinstance.SavedInstanceDatabase.Companion.getDatabase
912
import org.wordpress.android.ui.history.HistoryListItem.Revision
10-
import org.wordpress.android.util.extensions.getParcelableCompat
1113
import org.wordpress.android.widgets.DiffView
1214

1315
class HistoryDetailFragment : Fragment() {
@@ -16,10 +18,10 @@ class HistoryDetailFragment : Fragment() {
1618
override fun onCreate(savedInstanceState: Bundle?) {
1719
super.onCreate(savedInstanceState)
1820

19-
mRevision = if (savedInstanceState != null) {
20-
savedInstanceState.getParcelableCompat(KEY_REVISION)
21+
mRevision = if (getDatabase(WordPress.getContext())?.hasParcel(KEY_REVISION) == true) {
22+
getDatabase(WordPress.getContext())?.getParcel(KEY_REVISION, parcelableCreator<Revision>())
2123
} else {
22-
arguments?.getParcelableCompat(EXTRA_REVISION)
24+
getDatabase(WordPress.getContext())?.getParcel(EXTRA_REVISION, parcelableCreator<Revision>())
2325
}
2426
}
2527

@@ -32,19 +34,16 @@ class HistoryDetailFragment : Fragment() {
3234

3335
override fun onSaveInstanceState(outState: Bundle) {
3436
super.onSaveInstanceState(outState)
35-
outState.putParcelable(KEY_REVISION, mRevision)
37+
getDatabase(WordPress.getContext())?.addParcel(KEY_REVISION, mRevision)
3638
}
3739

3840
companion object {
3941
const val EXTRA_REVISION = "EXTRA_REVISION"
4042
const val KEY_REVISION = "KEY_REVISION"
4143

4244
fun newInstance(revision: Revision): HistoryDetailFragment {
43-
val fragment = HistoryDetailFragment()
44-
val bundle = Bundle()
45-
bundle.putParcelable(EXTRA_REVISION, revision)
46-
fragment.arguments = bundle
47-
return fragment
45+
getDatabase(WordPress.getContext())?.addParcel(EXTRA_REVISION, revision)
46+
return HistoryDetailFragment()
4847
}
4948
}
5049
}

WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivity.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -712,9 +712,8 @@ public void handleOnBackPressed() {
712712
updatePostLoadingAndDialogState(PostLoadingState.fromInt(
713713
savedInstanceState.getInt(STATE_KEY_POST_LOADING_STATE, 0)));
714714

715-
SavedInstanceDatabase db = SavedInstanceDatabase.Companion.getDatabase(WordPress.getContext());
716-
if (db != null) {
717-
mRevision = db.getParcel(STATE_KEY_REVISION, Revision.CREATOR);
715+
if (getDB() != null) {
716+
mRevision = getDB().getParcel(STATE_KEY_REVISION, Revision.CREATOR);
718717
}
719718

720719
mPostEditorAnalyticsSession = PostEditorAnalyticsSession
@@ -1158,6 +1157,8 @@ private void removePostOpenInEditorStickyEvent() {
11581157

11591158
@Override
11601159
protected void onSaveInstanceState(Bundle outState) {
1160+
outState.remove("android:viewHierarchyState");
1161+
outState.remove("androidx.lifecycle.BundlableSavedStateRegistry.key");
11611162
super.onSaveInstanceState(outState);
11621163
// Saves both post objects so we can restore them in onCreate()
11631164
updateAndSavePostAsync();
@@ -1173,9 +1174,8 @@ protected void onSaveInstanceState(Bundle outState) {
11731174
outState.putBoolean(STATE_KEY_REDO, mMenuHasRedo);
11741175
outState.putSerializable(WordPress.SITE, mSite);
11751176

1176-
SavedInstanceDatabase db = SavedInstanceDatabase.Companion.getDatabase(WordPress.getContext());
1177-
if (db != null) {
1178-
db.addParcel(STATE_KEY_REVISION, mRevision);
1177+
if (getDB() != null) {
1178+
getDB().addParcel(STATE_KEY_REVISION, mRevision);
11791179
}
11801180

11811181
outState.putSerializable(STATE_KEY_EDITOR_SESSION_DATA, mPostEditorAnalyticsSession);
@@ -2886,10 +2886,10 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
28862886
}
28872887
break;
28882888
case RequestCodes.HISTORY_DETAIL:
2889-
if (data.hasExtra(KEY_REVISION)) {
2889+
if (getDB() != null && getDB().hasParcel(KEY_REVISION)) {
28902890
mViewPager.setCurrentItem(PAGE_CONTENT);
28912891

2892-
mRevision = data.getParcelableExtra(KEY_REVISION);
2892+
mRevision = getDB().getParcel(KEY_REVISION, Revision.CREATOR);
28932893
new Handler().postDelayed(this::loadRevision,
28942894
getResources().getInteger(R.integer.full_screen_dialog_animation_duration));
28952895
}
@@ -3958,4 +3958,8 @@ public void showJetpackSettings() {
39583958
public LiveData<DialogVisibility> getSavingInProgressDialogVisibility() {
39593959
return mViewModel.getSavingInProgressDialogVisibility();
39603960
}
3961+
3962+
@Nullable private SavedInstanceDatabase getDB() {
3963+
return SavedInstanceDatabase.Companion.getDatabase(WordPress.getContext());
3964+
}
39613965
}

0 commit comments

Comments
 (0)