diff --git a/.gitignore b/.gitignore index 63a882d020..418e4c3808 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ app/src/main/gen/* # IDEA/Android Studio Ignore exceptions !/.idea/codeStyles/ +!/.idea/inspectionProfiles/ # Gradle .gradle diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000000..d18f5be8cf --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,46 @@ + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 52ee3fe1b2..9435bddf8f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -220,7 +220,7 @@ android { 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\"" - buildConfigField "String", "PRIVACY_POLICY_URL", "\"https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\"" + buildConfigField "String", "PRIVACY_POLICY_URL", "\"https://github.com/commons-app/commons-app-documentation/blob/master/android/Privacy-policy.md\"" buildConfigField "String", "ACCOUNT_TYPE", "\"fr.free.nrw.commons\"" buildConfigField "String", "CONTRIBUTION_AUTHORITY", "\"fr.free.nrw.commons.contributions.contentprovider\"" buildConfigField "String", "MODIFICATION_AUTHORITY", "\"fr.free.nrw.commons.modifications.contentprovider\"" @@ -254,7 +254,7 @@ android { 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\"" - buildConfigField "String", "PRIVACY_POLICY_URL", "\"https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\"" + buildConfigField "String", "PRIVACY_POLICY_URL", "\"https://github.com/commons-app/commons-app-documentation/blob/master/android/Privacy-policy.md\"" buildConfigField "String", "ACCOUNT_TYPE", "\"fr.free.nrw.commons.beta\"" buildConfigField "String", "CONTRIBUTION_AUTHORITY", "\"fr.free.nrw.commons.beta.contributions.contentprovider\"" buildConfigField "String", "MODIFICATION_AUTHORITY", "\"fr.free.nrw.commons.beta.modifications.contentprovider\"" 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 eb3c214b1b..6e91e88de2 100644 --- a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java +++ b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java @@ -65,8 +65,7 @@ ) @AcraMailSender( - mailTo = "commons-app-android-private@googlegroups.com", - reportAsFile = false + mailTo = "commons-app-android-private@googlegroups.com" ) @AcraDialog( diff --git a/app/src/main/java/fr/free/nrw/commons/Urls.kt b/app/src/main/java/fr/free/nrw/commons/Urls.kt index 52bbf8f48f..88470bc69e 100644 --- a/app/src/main/java/fr/free/nrw/commons/Urls.kt +++ b/app/src/main/java/fr/free/nrw/commons/Urls.kt @@ -5,7 +5,7 @@ internal object Urls { const val GITHUB_REPO_URL = "https://github.com/commons-app/apps-android-commons" const val WEBSITE_URL = "https://commons-app.github.io" const val CREDITS_URL = "https://github.com/commons-app/apps-android-commons/blob/master/CREDITS" - const val FAQ_URL = "https://github.com/commons-app/apps-android-commons/wiki/Frequently-Asked-Questions" + const val FAQ_URL = "https://github.com/commons-app/commons-app-documentation/blob/master/android/Frequently-Asked-Questions.md" const val PLAY_STORE_PREFIX = "market://details?id=" const val PLAY_STORE_URL_PREFIX = "https://play.google.com/store/apps/details?id=" const val TRANSLATE_WIKI_URL = "https://translatewiki.net/w/i.php?title=Special:Translate&group=commons-android-strings&filter=%21translated&action=translate&language=" diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index 8178f63e3b..58caa3144a 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -9,11 +9,11 @@ import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; -import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; +import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; @@ -33,7 +33,6 @@ import org.apache.commons.lang3.StringUtils; import org.wikipedia.util.DateUtil; -import org.wikipedia.util.StringUtil; import java.util.ArrayList; import java.util.Date; @@ -245,7 +244,15 @@ public void onResume() { .setVisibility(View.GONE); } media = detailProvider.getMediaAtPosition(index); - displayMediaDetails(); + scrollView.getViewTreeObserver().addOnGlobalLayoutListener( + new OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + scrollView.getViewTreeObserver().removeOnGlobalLayoutListener(this); + displayMediaDetails(); + } + } + ); } private void displayMediaDetails() { @@ -264,7 +271,8 @@ private void displayMediaDetails() { private void updateAspectRatio(ImageInfo imageInfo) { if (imageInfo != null) { - int finalHeight = (scrollView.getWidth()*imageInfo.getHeight()) / imageInfo.getWidth(); + int screenWidth = scrollView.getWidth(); + int finalHeight = (screenWidth*imageInfo.getHeight()) / imageInfo.getWidth(); ViewGroup.LayoutParams params = image.getLayoutParams(); params.height = finalHeight; image.setLayoutParams(params); diff --git a/app/src/main/java/fr/free/nrw/commons/utils/CommonsDateUtil.java b/app/src/main/java/fr/free/nrw/commons/utils/CommonsDateUtil.java index fc3b9ff2c9..d03dd8fe4d 100644 --- a/app/src/main/java/fr/free/nrw/commons/utils/CommonsDateUtil.java +++ b/app/src/main/java/fr/free/nrw/commons/utils/CommonsDateUtil.java @@ -25,9 +25,10 @@ public static SimpleDateFormat getIso8601DateFormatShort() { * Gets the timestamp pattern for a date * @return timestamp */ - public static SimpleDateFormat getIso8601DateFormatTimestamp() { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ROOT); - simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); - return simpleDateFormat; + public static SimpleDateFormat getIso8601DateFormatTimestamp() { + final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX", + Locale.ROOT); + simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + return simpleDateFormat; } } diff --git a/app/src/test/kotlin/fr/free/nrw/commons/utils/CommonsDateUtilTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/utils/CommonsDateUtilTest.kt new file mode 100644 index 0000000000..9056cb755f --- /dev/null +++ b/app/src/test/kotlin/fr/free/nrw/commons/utils/CommonsDateUtilTest.kt @@ -0,0 +1,20 @@ +package fr.free.nrw.commons.utils + +import org.hamcrest.core.IsEqual.equalTo +import org.junit.Assert.assertThat +import org.junit.Test + +class CommonsDateUtilTest { + + @Test + fun `Iso8601DateFormatTimestamp parses legal date`() { + val iso8601DateFormatTimestamp = CommonsDateUtil + .getIso8601DateFormatTimestamp() + val parsedDate = iso8601DateFormatTimestamp + .parse("2020-04-07T14:21:57Z") + assertThat( + "2020-04-07T14:21:57Z", + equalTo(iso8601DateFormatTimestamp.format(parsedDate)) + ) + } +} diff --git a/build.gradle b/build.gradle index f067114db9..f11d927aa2 100644 --- a/build.gradle +++ b/build.gradle @@ -1,18 +1,18 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - repositories { - google() - jcenter() - mavenCentral() - maven { url "https://plugins.gradle.org/m2/" } - } - dependencies { - classpath 'com.android.tools.build:gradle:3.6.1' - classpath "com.hiya:jacoco-android:0.2" - classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.2' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$KOTLIN_VERSION" - classpath 'org.codehaus.groovy:groovy-all:2.4.15' - } + repositories { + google() + jcenter() + mavenCentral() + maven { url "https://plugins.gradle.org/m2/" } + } + dependencies { + classpath 'com.android.tools.build:gradle:3.6.2' + classpath "com.hiya:jacoco-android:0.2" + classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.2' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$KOTLIN_VERSION" + classpath 'org.codehaus.groovy:groovy-all:2.4.15' + } } allprojects {