BearND has uploaded a new change for review.
https://gerrit.wikimedia.org/r/294257
Change subject: Switch RB and MW backend servers without restart
......................................................................
Switch RB and MW backend servers without restart
Listen for SharedPreference changes and update the respective EndpointCache to
facilitate a faster switch of backend servers by not requiring the app to
restart.
Change-Id: Ie806452d03af1dfed0a84d7dc25eba63f9de71b9
---
M app/src/main/java/org/wikipedia/server/mwapi/MwPageEndpointsCache.java
M app/src/main/java/org/wikipedia/server/restbase/RbPageEndpointsCache.java
M app/src/main/java/org/wikipedia/settings/DeveloperSettingsFragment.java
M app/src/main/res/xml/developer_preferences.xml
4 files changed, 46 insertions(+), 4 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/57/294257/1
diff --git
a/app/src/main/java/org/wikipedia/server/mwapi/MwPageEndpointsCache.java
b/app/src/main/java/org/wikipedia/server/mwapi/MwPageEndpointsCache.java
index fbb8024..1d8631b 100644
--- a/app/src/main/java/org/wikipedia/server/mwapi/MwPageEndpointsCache.java
+++ b/app/src/main/java/org/wikipedia/server/mwapi/MwPageEndpointsCache.java
@@ -26,6 +26,12 @@
return cachedWebService;
}
+ public void update() {
+ if (site != null) {
+ cachedWebService = createMwService(site);
+ }
+ }
+
private MwPageService.MwPageEndpoints createMwService(Site site) {
return
RetrofitFactory.newInstance(site).create(MwPageService.MwPageEndpoints.class);
}
diff --git
a/app/src/main/java/org/wikipedia/server/restbase/RbPageEndpointsCache.java
b/app/src/main/java/org/wikipedia/server/restbase/RbPageEndpointsCache.java
index a0596f3..d14601b 100644
--- a/app/src/main/java/org/wikipedia/server/restbase/RbPageEndpointsCache.java
+++ b/app/src/main/java/org/wikipedia/server/restbase/RbPageEndpointsCache.java
@@ -34,6 +34,12 @@
return cachedWebService;
}
+ public void update() {
+ if (site != null) {
+ cachedWebService = createRbService(site);
+ }
+ }
+
private RbPageService.RbEndpoints createRbService(Site site) {
retrofit = RetrofitFactory.newInstance(site,
String.format(Locale.ROOT, Prefs.getRestbaseUriFormat(),
site.scheme(), site.authority()));
diff --git
a/app/src/main/java/org/wikipedia/settings/DeveloperSettingsFragment.java
b/app/src/main/java/org/wikipedia/settings/DeveloperSettingsFragment.java
index 5df3cd5..c17de26 100644
--- a/app/src/main/java/org/wikipedia/settings/DeveloperSettingsFragment.java
+++ b/app/src/main/java/org/wikipedia/settings/DeveloperSettingsFragment.java
@@ -1,13 +1,45 @@
package org.wikipedia.settings;
+import org.wikipedia.R;
+import org.wikipedia.server.mwapi.MwPageEndpointsCache;
+import org.wikipedia.server.restbase.RbPageEndpointsCache;
+
+import android.content.SharedPreferences;
+
public class DeveloperSettingsFragment extends PreferenceLoaderFragment {
public static DeveloperSettingsFragment newInstance() {
return new DeveloperSettingsFragment();
}
+ private final SharedPreferences.OnSharedPreferenceChangeListener
onChangeListener
+ = new SharedPreferences.OnSharedPreferenceChangeListener() {
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences
sharedPreferences, String key) {
+ if
(getString(R.string.preference_key_restbase_uri_format).equals(key)) {
+ RbPageEndpointsCache.INSTANCE.update();
+ } else if
(getString(R.string.preference_key_mediawiki_base_uri).equals(key)) {
+ MwPageEndpointsCache.INSTANCE.update();
+ }
+ }
+ };
+
@Override
public void loadPreferences() {
PreferenceLoader preferenceLoader = new
DeveloperSettingsPreferenceLoader(this);
preferenceLoader.loadPreferences();
}
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ getPreferenceScreen().getSharedPreferences()
+ .registerOnSharedPreferenceChangeListener(onChangeListener);
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ getPreferenceScreen().getSharedPreferences()
+ .unregisterOnSharedPreferenceChangeListener(onChangeListener);
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/xml/developer_preferences.xml
b/app/src/main/res/xml/developer_preferences.xml
index adee305..7c20c1f 100644
--- a/app/src/main/res/xml/developer_preferences.xml
+++ b/app/src/main/res/xml/developer_preferences.xml
@@ -41,8 +41,7 @@
\nLabs: http://appservice.wmflabs.org/%2$s/v1/
\nDev: http://host:6927/%2$s/v1/
\n%1$s ➛ protocol (https if omitted)
- \n%2$s ➛ WP host
- \nNote: change requires restart." />
+ \n%2$s ➛ WP host" />
<!--suppress AndroidUnknownAttribute -->
<org.wikipedia.settings.EditTextAutoSummarizePreference
@@ -52,8 +51,7 @@
android:dialogMessage="Prod (default if blank):
https://wikipedia.org
\nDev: http://host:8080
\nBeta cluster (switch app language to Simple English):
http://wikipedia.beta.wmflabs.org
- \nAuth manager (disable language code):
http://authmanager.wmflabs.org
- \nNote: change requires restart." />
+ \nAuth manager (disable language code):
http://authmanager.wmflabs.org" />
<SwitchPreferenceCompat
android:key="@string/preference_key_mediawiki_base_uri_supports_lang_code"
--
To view, visit https://gerrit.wikimedia.org/r/294257
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie806452d03af1dfed0a84d7dc25eba63f9de71b9
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: BearND <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits