From d7e0c819699670aa36a6941455c996c858040cd7 Mon Sep 17 00:00:00 2001 From: knightshade Date: Fri, 2 Mar 2018 10:28:28 +0530 Subject: [PATCH 1/7] Add multidex library and extend CommonsApplication from MultiDexApplication. Fixes #1225 --- app/build.gradle | 2 ++ app/src/main/java/fr/free/nrw/commons/CommonsApplication.java | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 6f225dc2f..99eabcaf8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,6 +48,8 @@ dependencies { compile 'com.facebook.fresco:fresco:1.3.0' compile 'com.facebook.stetho:stetho:1.5.0' + compile 'com.android.support:multidex:1.0.2' + testCompile 'junit:junit:4.12' testCompile 'org.robolectric:robolectric:3.7.1' diff --git a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java index ab156bab7..e092a90c4 100644 --- a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java +++ b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java @@ -4,6 +4,7 @@ import android.app.Application; import android.content.Context; import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; +import android.support.multidex.MultiDexApplication; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.stetho.Stetho; @@ -40,7 +41,7 @@ import timber.log.Timber; resDialogCommentPrompt = R.string.crash_dialog_comment_prompt, resDialogOkToast = R.string.crash_dialog_ok_toast ) -public class CommonsApplication extends Application { +public class CommonsApplication extends MultiDexApplication { @Inject SessionManager sessionManager; @Inject DBOpenHelper dbOpenHelper; From 2ad985cd73305d66af8006546e0a6d135e266e35 Mon Sep 17 00:00:00 2001 From: Josephine Lim Date: Wed, 7 Mar 2018 20:50:53 +1000 Subject: [PATCH 2/7] Update PULL_REQUEST_TEMPLATE.md --- PULL_REQUEST_TEMPLATE.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md index f58c9225b..34078f07e 100644 --- a/PULL_REQUEST_TEMPLATE.md +++ b/PULL_REQUEST_TEMPLATE.md @@ -4,6 +4,12 @@ Fixes #{GitHub issue number} {Describe the changes made and why they were made.} +## Tests performed + +Tested on {API level & name of device/emulator}, with {build variant, e.g. ProdDebug}. + +{Please test your PR at least once before submitting.} + ## Screenshots showing what changed {Only for user interface changes, otherwise remove this section. See [how to take a screenshot](https://android.stackexchange.com/questions/1759/how-to-take-a-screenshot-with-an-android-device)} From 0acc42dd524365884654b8787c1bfd4934952f30 Mon Sep 17 00:00:00 2001 From: knightshade Date: Wed, 7 Mar 2018 23:09:39 +0530 Subject: [PATCH 3/7] Fixes failing of tests after addition of multidex. --- app/build.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 99eabcaf8..1f593e3e6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,10 +48,11 @@ dependencies { compile 'com.facebook.fresco:fresco:1.3.0' compile 'com.facebook.stetho:stetho:1.5.0' - compile 'com.android.support:multidex:1.0.2' + compile 'com.android.support:multidex:1.0.3' testCompile 'junit:junit:4.12' testCompile 'org.robolectric:robolectric:3.7.1' + testCompile "org.robolectric:multidex:3.4.2" testCompile 'com.squareup.okhttp3:mockwebserver:3.8.1' androidTestCompile 'com.squareup.okhttp3:mockwebserver:3.8.1' From 57bfb7b3283e0a87c0e9dee24a3e87664b9dbd6e Mon Sep 17 00:00:00 2001 From: Tanvi Dadu Date: Sat, 10 Mar 2018 22:47:21 +0530 Subject: [PATCH 4/7] Skip option in Welcome Screen (#1251) * Skip option in Welcome Screen * Tutorial screen Revamped * fixed the prodDebug visibility --- .../free/nrw/commons/WelcomePagerAdapter.java | 14 +++++++-- app/src/main/res/layout/welcome_do_upload.xml | 26 ++++++++++++++-- .../main/res/layout/welcome_dont_upload.xml | 27 +++++++++++++++-- .../main/res/layout/welcome_image_details.xml | 30 +++++++++++++++---- app/src/main/res/layout/welcome_wikipedia.xml | 26 ++++++++++++++-- app/src/main/res/values/strings.xml | 1 + 6 files changed, 111 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/WelcomePagerAdapter.java b/app/src/main/java/fr/free/nrw/commons/WelcomePagerAdapter.java index a346655cf..705de23da 100644 --- a/app/src/main/java/fr/free/nrw/commons/WelcomePagerAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/WelcomePagerAdapter.java @@ -5,6 +5,7 @@ import android.support.v4.view.PagerAdapter; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.TextView; import butterknife.ButterKnife; import butterknife.OnClick; @@ -54,10 +55,18 @@ public class WelcomePagerAdapter extends PagerAdapter { public Object instantiateItem(ViewGroup container, int position) { LayoutInflater inflater = LayoutInflater.from(container.getContext()); ViewGroup layout = (ViewGroup) inflater.inflate(PAGE_LAYOUTS[position], container, false); - - if (position == PAGE_FINAL) { + if( BuildConfig.FLAVOR == "beta"){ + TextView textView = (TextView) layout.findViewById(R.id.welcomeYesButton); + if( textView.getVisibility() != View.VISIBLE){ + textView.setVisibility(View.VISIBLE); + } ViewHolder holder = new ViewHolder(layout); layout.setTag(holder); + } else { + if (position == PAGE_FINAL) { + ViewHolder holder = new ViewHolder(layout); + layout.setTag(holder); + } } container.addView(layout); return layout; @@ -92,5 +101,6 @@ public class WelcomePagerAdapter extends PagerAdapter { callback.onYesClicked(); } } + } } diff --git a/app/src/main/res/layout/welcome_do_upload.xml b/app/src/main/res/layout/welcome_do_upload.xml index fab6452df..bf2401913 100644 --- a/app/src/main/res/layout/welcome_do_upload.xml +++ b/app/src/main/res/layout/welcome_do_upload.xml @@ -1,5 +1,5 @@ - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/welcome_dont_upload.xml b/app/src/main/res/layout/welcome_dont_upload.xml index d819bc035..3e244e1fa 100644 --- a/app/src/main/res/layout/welcome_dont_upload.xml +++ b/app/src/main/res/layout/welcome_dont_upload.xml @@ -1,11 +1,18 @@ - + + - \ No newline at end of file + + + \ No newline at end of file diff --git a/app/src/main/res/layout/welcome_image_details.xml b/app/src/main/res/layout/welcome_image_details.xml index e38eb5979..7202df4c0 100644 --- a/app/src/main/res/layout/welcome_image_details.xml +++ b/app/src/main/res/layout/welcome_image_details.xml @@ -1,12 +1,18 @@ - - + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/welcome_wikipedia.xml b/app/src/main/res/layout/welcome_wikipedia.xml index ece52628e..0708b5ea9 100644 --- a/app/src/main/res/layout/welcome_wikipedia.xml +++ b/app/src/main/res/layout/welcome_wikipedia.xml @@ -1,11 +1,18 @@ - + - \ No newline at end of file + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 15db0cab5..3769d24bd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -240,4 +240,5 @@ %1$s mentioned you on %2$s. Toggle view Rate Us + Skip Tutorial From de673eb4cae0d39f51d54e658ad057bc353af4ba Mon Sep 17 00:00:00 2001 From: Madhur Gupta <30932899+madhurgupta10@users.noreply.github.com> Date: Sat, 10 Mar 2018 23:00:05 +0530 Subject: [PATCH 5/7] Add Forgot Password Option in LoginActivity (#1242) * Add Forgot Password Option in LoginActivity * Add Forgot Password Option in LoginActivity * Add Forgot Password Option in LoginActivity * Update URL for the "beta" flavor * Update forgotPassword function --- app/build.gradle | 2 ++ .../fr/free/nrw/commons/auth/LoginActivity.java | 13 ++++++++++++- app/src/main/res/layout-land/activity_login.xml | 13 ++++++++++++- .../main/res/layout-xlarge/activity_login.xml | 13 ++++++++++++- app/src/main/res/layout/activity_login.xml | 17 ++++++++++++++--- app/src/main/res/values/strings.xml | 3 ++- gradle/wrapper/gradle-wrapper.properties | 3 ++- 7 files changed, 56 insertions(+), 8 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 349a5f432..550019cc5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -154,6 +154,7 @@ android { buildConfigField "String", "EVENTLOG_WIKI", "\"commonswiki\"" buildConfigField "String", "SIGNUP_LANDING_URL", "\"https://commons.m.wikimedia.org/w/index.php?title=Special:CreateAccount&returnto=Main+Page&returntoquery=welcome%3Dyes\"" buildConfigField "String", "SIGNUP_SUCCESS_REDIRECTION_URL", "\"https://commons.m.wikimedia.org/w/index.php?title=Main_Page&welcome=yes\"" + buildConfigField "String", "FORGOT_PASSWORD_URL", "\"https://commons.wikimedia.org/wiki/Special:PasswordReset\"" dimension 'tier' } @@ -168,6 +169,7 @@ android { buildConfigField "String", "EVENTLOG_WIKI", "\"commonswiki\"" buildConfigField "String", "SIGNUP_LANDING_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/w/index.php?title=Special:CreateAccount&returnto=Main+Page&returntoquery=welcome%3Dyes\"" buildConfigField "String", "SIGNUP_SUCCESS_REDIRECTION_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/w/index.php?title=Main_Page&welcome=yes\"" + buildConfigField "String", "FORGOT_PASSWORD_URL", "\"https://commons.wikimedia.beta.wmflabs.org/wiki/Special:PasswordReset\"" dimension 'tier' } } diff --git a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java index cbdff2e0b..8a41664a9 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java @@ -8,6 +8,7 @@ import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.content.SharedPreferences; +import android.net.Uri; import android.os.Bundle; import android.support.annotation.ColorRes; import android.support.annotation.NonNull; @@ -27,6 +28,7 @@ import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; +import android.widget.Toast; import java.io.IOException; @@ -44,6 +46,7 @@ import fr.free.nrw.commons.contributions.ContributionsActivity; import fr.free.nrw.commons.di.ApplicationlessInjection; import fr.free.nrw.commons.mwapi.MediaWikiApi; import fr.free.nrw.commons.theme.NavigationBaseActivity; +import fr.free.nrw.commons.ui.widget.HtmlTextView; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; @@ -73,7 +76,9 @@ public class LoginActivity extends AccountAuthenticatorActivity { @BindView(R.id.error_message_container) ViewGroup errorMessageContainer; @BindView(R.id.error_message) TextView errorMessage; @BindView(R.id.login_credentials) TextView loginCredentials; - @BindView(R.id.two_factor_container)TextInputLayout twoFactorContainer; + @BindView(R.id.two_factor_container) TextInputLayout twoFactorContainer; + @BindView(R.id.forgotPassword) HtmlTextView forgotPasswordText; + ProgressDialog progressDialog; private AppCompatDelegate delegate; private LoginTextWatcher textWatcher = new LoginTextWatcher(); @@ -114,6 +119,8 @@ public class LoginActivity extends AccountAuthenticatorActivity { loginButton.setOnClickListener(view -> performLogin()); signupButton.setOnClickListener(view -> signUp()); + forgotPasswordText.setOnClickListener(view -> forgotPassword()); + if(BuildConfig.FLAVOR == "beta"){ loginCredentials.setText(getString(R.string.login_credential)); } else { @@ -121,6 +128,10 @@ public class LoginActivity extends AccountAuthenticatorActivity { } } + private void forgotPassword() { + Utils.handleWebUrl(this, Uri.parse(BuildConfig.FORGOT_PASSWORD_URL)); + } + public void hideKeyboard(View view) { InputMethodManager inputMethodManager =(InputMethodManager)this.getSystemService(Activity.INPUT_METHOD_SERVICE); diff --git a/app/src/main/res/layout-land/activity_login.xml b/app/src/main/res/layout-land/activity_login.xml index 2914f9530..deb295438 100644 --- a/app/src/main/res/layout-land/activity_login.xml +++ b/app/src/main/res/layout-land/activity_login.xml @@ -187,12 +187,23 @@ + + + + + + + - diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3769d24bd..e7da11672 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,8 +5,9 @@ Settings Username Password - Log in to your Commons Beta account + Log in to your Commons Beta account Log in + Forgot Password? Sign up Logging in Please wait… diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f16d26666..c25f3eb11 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Sat Mar 03 13:58:47 IST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip From bdd7a86cd5bf9f53c0fec4e1b044934d226c6ab5 Mon Sep 17 00:00:00 2001 From: Madhur Gupta <30932899+madhurgupta10@users.noreply.github.com> Date: Sun, 11 Mar 2018 00:56:05 +0530 Subject: [PATCH 6/7] Revamp the Settings page (#1259) * Revamp the Settings page * Update License Test --- .../nrw/commons/SettingsActivityTest.java | 9 +- .../commons/settings/SettingsFragment.java | 4 +- app/src/main/res/values/strings.xml | 8 +- app/src/main/res/xml/preferences.xml | 105 ++++++++++-------- 4 files changed, 68 insertions(+), 58 deletions(-) diff --git a/app/src/androidTest/java/fr/free/nrw/commons/SettingsActivityTest.java b/app/src/androidTest/java/fr/free/nrw/commons/SettingsActivityTest.java index 5be309252..80caf0010 100644 --- a/app/src/androidTest/java/fr/free/nrw/commons/SettingsActivityTest.java +++ b/app/src/androidTest/java/fr/free/nrw/commons/SettingsActivityTest.java @@ -5,6 +5,7 @@ import android.preference.PreferenceManager; import android.support.test.espresso.Espresso; import android.support.test.espresso.action.ViewActions; import android.support.test.espresso.assertion.ViewAssertions; +import android.support.test.espresso.matcher.PreferenceMatchers; import android.support.test.espresso.matcher.ViewMatchers; import android.support.test.filters.LargeTest; import android.support.test.rule.ActivityTestRule; @@ -61,7 +62,7 @@ public class SettingsActivityTest { @Test public void oneLicenseIsChecked() { // click "License" (the first item) - Espresso.onData(Matchers.anything()) + Espresso.onData(PreferenceMatchers.withKey("defaultLicense")) .inAdapterView(ViewMatchers.withId(android.R.id.list)) .atPosition(0) .perform(ViewActions.click()); @@ -74,7 +75,7 @@ public class SettingsActivityTest { @Test public void afterClickingCcby4ItWillStay() { // click "License" (the first item) - Espresso.onData(Matchers.anything()) + Espresso.onData(PreferenceMatchers.withKey("defaultLicense")) .inAdapterView(ViewMatchers.withId(android.R.id.list)) .atPosition(0) .perform(ViewActions.click()); @@ -85,7 +86,7 @@ public class SettingsActivityTest { ).perform(ViewActions.click()); // click "License" (the first item) - Espresso.onData(Matchers.anything()) + Espresso.onData(PreferenceMatchers.withKey("defaultLicense")) .inAdapterView(ViewMatchers.withId(android.R.id.list)) .atPosition(0) .perform(ViewActions.click()); @@ -96,4 +97,4 @@ public class SettingsActivityTest { ViewMatchers.withText(R.string.license_name_cc_by_four) )); } -} \ No newline at end of file +} diff --git a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java index 66be88e3f..c7ee3df48 100644 --- a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java @@ -10,7 +10,7 @@ import android.content.pm.PackageManager; import android.net.Uri; import android.os.Build; import android.os.Bundle; -import android.preference.CheckBoxPreference; +import android.preference.SwitchPreference; import android.preference.EditTextPreference; import android.preference.ListPreference; import android.preference.Preference; @@ -59,7 +59,7 @@ public class SettingsFragment extends PreferenceFragment { return true; }); - CheckBoxPreference themePreference = (CheckBoxPreference) findPreference("theme"); + SwitchPreference themePreference = (SwitchPreference) findPreference("theme"); themePreference.setOnPreferenceChangeListener((preference, newValue) -> { getActivity().recreate(); return true; diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e7da11672..2aa47bcfd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,9 @@ + Appearance + General + Feedback + Location Commons Settings @@ -94,7 +98,7 @@ This image will be licensed under %1$s By submitting this picture, I declare that this is my own work, that it does not contain copyrighted material or selfies, and otherwise adheres to <a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\">Wikimedia Commons policies</a>. Download - License + Default License Use previous title/description Automatically get current location Retrieve current location to offer category suggestions if image is not geotagged @@ -170,8 +174,6 @@ Become a Beta Tester Opt-in to our beta channel on Google Play and get early access to new features and bug fixes https://play.google.com/apps/testing/fr.free.nrw.commons - Use Wikidata - (Warning: disabling this may cause large mobile data consumption) mapbox://styles/mapbox/traffic-day-v2 mapbox://styles/mapbox/traffic-night-v2 pk.eyJ1IjoibWFza2FyYXZpdmVrIiwiYSI6ImNqMmxvdzFjMTAwMHYzM283ZWM3eW5tcDAifQ.ib5SZ9EVjwJe6GSKve0bcg diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index b7b63d39c..70ab2736f 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -1,61 +1,68 @@ + xmlns:android="http://schemas.android.com/apk/res/android"> - + - + - - - + - + - + - + - + - + + + + + + + + + + + + + + + + + \ No newline at end of file From ede8c76d4593ae0381b568f4021f49d429135406 Mon Sep 17 00:00:00 2001 From: Ujjwal Agrawal Date: Sun, 11 Mar 2018 13:28:26 +0530 Subject: [PATCH 7/7] Faqs added in About Activity (#1256) * Faqs added in About Activity * Added CDATA in strings * removed cdata, added SpannableString --- .../main/java/fr/free/nrw/commons/AboutActivity.java | 12 +++++++++++- app/src/main/res/layout/activity_about.xml | 10 ++++++++++ app/src/main/res/values/strings.xml | 3 ++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/AboutActivity.java b/app/src/main/java/fr/free/nrw/commons/AboutActivity.java index bb7b1fc1e..97fe27aa4 100644 --- a/app/src/main/java/fr/free/nrw/commons/AboutActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/AboutActivity.java @@ -4,6 +4,8 @@ import android.annotation.SuppressLint; import android.content.Intent; import android.net.Uri; import android.os.Bundle; +import android.text.SpannableString; +import android.text.style.UnderlineSpan; import android.util.Log; import android.support.customtabs.CustomTabsIntent; import android.support.v4.content.ContextCompat; @@ -25,6 +27,7 @@ import static android.widget.Toast.LENGTH_SHORT; public class AboutActivity extends NavigationBaseActivity { @BindView(R.id.about_version) TextView versionText; @BindView(R.id.about_license) HtmlTextView aboutLicenseText; + @BindView(R.id.about_faq) TextView faqText; /** * This method helps in the creation About screen @@ -40,7 +43,9 @@ public class AboutActivity extends NavigationBaseActivity { ButterKnife.bind(this); String aboutText = getString(R.string.about_license); aboutLicenseText.setHtmlText(aboutText); - + SpannableString content = new SpannableString(getString(R.string.about_faq)); + content.setSpan(new UnderlineSpan(), 0, content.length(), 0); + faqText.setText(content); versionText.setText(BuildConfig.VERSION_NAME); initDrawer(); } @@ -113,4 +118,9 @@ public class AboutActivity extends NavigationBaseActivity { } } + @OnClick(R.id.about_faq) + public void launchFrequentlyAskedQuesions(View view) { + Utils.handleWebUrl(this,Uri.parse("https://github.com/commons-app/apps-android-commons/wiki/Frequently-Asked-Questions\\")); + } + } diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml index 00c7fa5b8..f4a295d95 100644 --- a/app/src/main/res/layout/activity_about.xml +++ b/app/src/main/res/layout/activity_about.xml @@ -133,6 +133,16 @@ android:gravity="center" android:text="@string/about_credits" /> + + %1$s mentioned you on %2$s. Toggle view Rate Us - Skip Tutorial + Frequently Asked Questions + Skip Tutorial