Yuvipanda has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/106716


Change subject: Refresh page when an edit successfully completes
......................................................................

Refresh page when an edit successfully completes

Change-Id: I3b9799a3914b866ff4400b0c80a88456fb91330b
---
M wikipedia/src/main/java/org/wikipedia/editing/EditHandler.java
M wikipedia/src/main/java/org/wikipedia/editing/EditSectionActivity.java
M wikipedia/src/main/java/org/wikipedia/page/PageViewFragment.java
3 files changed, 33 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/16/106716/1

diff --git a/wikipedia/src/main/java/org/wikipedia/editing/EditHandler.java 
b/wikipedia/src/main/java/org/wikipedia/editing/EditHandler.java
index 4324ebf..f99b82d 100644
--- a/wikipedia/src/main/java/org/wikipedia/editing/EditHandler.java
+++ b/wikipedia/src/main/java/org/wikipedia/editing/EditHandler.java
@@ -1,7 +1,9 @@
 package org.wikipedia.editing;
 
+import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
+import android.support.v4.app.Fragment;
 import org.json.JSONObject;
 import org.wikipedia.CommunicationBridge;
 import org.wikipedia.WikipediaApp;
@@ -11,12 +13,15 @@
 import java.util.List;
 
 public class EditHandler implements CommunicationBridge.JSEventListener {
-    private final Context context;
+    public static final int REQUEST_EDIT_SECTION = 1;
+    public static final int RESULT_REFRESH_PAGE = 1;
+
+    private final Fragment fragment;
     private final CommunicationBridge bridge;
     private final Page currentPage;
 
-    public EditHandler(Context context, CommunicationBridge bridge, Page 
currentPage) {
-        this.context = context;
+    public EditHandler(Fragment fragment, CommunicationBridge bridge, Page 
currentPage) {
+        this.fragment = fragment;
         this.bridge = bridge;
         this.currentPage = currentPage;
 
@@ -28,11 +33,11 @@
         if (messageType.equals("editSectionClicked")) {
             int id = Integer.valueOf(messagePayload.optInt("sectionID"));
             Section section = 
Section.findSectionForID(currentPage.getSections(), id);
-            Intent intent = new Intent(context, EditSectionActivity.class);
+            Intent intent = new Intent(fragment.getActivity(), 
EditSectionActivity.class);
             intent.setAction(EditSectionActivity.ACTION_EDIT_SECTION);
             intent.putExtra(EditSectionActivity.EXTRA_SECTION, section);
             intent.putExtra(EditSectionActivity.EXTRA_TITLE, 
currentPage.getTitle());
-            context.startActivity(intent);
+            fragment.startActivityForResult(intent, REQUEST_EDIT_SECTION);
         }
         return null;
     }
diff --git 
a/wikipedia/src/main/java/org/wikipedia/editing/EditSectionActivity.java 
b/wikipedia/src/main/java/org/wikipedia/editing/EditSectionActivity.java
index 6e1b5c2..cec3baa 100644
--- a/wikipedia/src/main/java/org/wikipedia/editing/EditSectionActivity.java
+++ b/wikipedia/src/main/java/org/wikipedia/editing/EditSectionActivity.java
@@ -12,6 +12,7 @@
 import org.wikipedia.PageTitle;
 import org.wikipedia.R;
 import org.wikipedia.Utils;
+import org.wikipedia.WikipediaApp;
 import org.wikipedia.page.Section;
 
 public class EditSectionActivity extends Activity {
@@ -80,6 +81,7 @@
             @Override
             public void onFinish(String result) {
                 dialog.hide();
+                setResult(EditHandler.RESULT_REFRESH_PAGE);
                 finish();
             }
         }.execute();
diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragment.java 
b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragment.java
index 6d91fe2..252eec8 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragment.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragment.java
@@ -1,11 +1,13 @@
 package org.wikipedia.page;
 
+import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.webkit.WebView;
 import android.widget.FrameLayout;
 import android.widget.ProgressBar;
 import android.widget.Toast;
@@ -113,7 +115,7 @@
             }
             wrapper.putOpt("sectionHeadings", allSectionsPayload);
             bridge.sendMessage("displaySectionsList", wrapper);
-            editHandler = new EditHandler(getActivity(), bridge, page);
+            editHandler = new EditHandler(this, bridge, page);
         } catch (JSONException e) {
             throw new RuntimeException(e);
         }
@@ -157,9 +159,8 @@
         webView.getSettings().setBuiltInZoomControls(true);
         webView.getSettings().setDisplayZoomControls(false);
 
-        bridge = new CommunicationBridge(webView, 
"file:///android_asset/index.html");
+        setupBridge();
         linkHandler = new LinkHandler(getActivity(), bridge, title.getSite());
-        Utils.addUtilityMethodsToBridge(getActivity(), bridge);
         app = (WikipediaApp)getActivity().getApplicationContext();
         api = 
((WikipediaApp)getActivity().getApplicationContext()).getAPIForSite(title.getSite());
 
@@ -183,6 +184,23 @@
         return parentView;
     }
 
+    // This also resets everything on the page
+    // FIXME: Also save scroll position
+    private void setupBridge() {
+        bridge = new CommunicationBridge(webView, 
"file:///android_asset/index.html");
+        Utils.addUtilityMethodsToBridge(getActivity(), bridge);
+    }
+
+    @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data) 
{
+        super.onActivityResult(requestCode, resultCode, data);
+        if (resultCode == EditHandler.RESULT_REFRESH_PAGE) {
+            Utils.crossFade(webView, loadProgress);
+            setState(STATE_NO_FETCH);
+            performActionForState(state);
+        }
+    }
+
     private void performActionForState(int state) {
         switch (state) {
             case STATE_NO_FETCH:

-- 
To view, visit https://gerrit.wikimedia.org/r/106716
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3b9799a3914b866ff4400b0c80a88456fb91330b
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to