diff --git a/app/src/main/java/fr/free/nrw/commons/upload/license/MediaLicenseFragment.kt b/app/src/main/java/fr/free/nrw/commons/upload/license/MediaLicenseFragment.kt
index d6cb5a0c1..528662be6 100644
--- a/app/src/main/java/fr/free/nrw/commons/upload/license/MediaLicenseFragment.kt
+++ b/app/src/main/java/fr/free/nrw/commons/upload/license/MediaLicenseFragment.kt
@@ -20,8 +20,9 @@ import fr.free.nrw.commons.databinding.FragmentMediaLicenseBinding
import fr.free.nrw.commons.upload.UploadActivity
import fr.free.nrw.commons.upload.UploadBaseFragment
import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog
-import fr.free.nrw.commons.utils.Licenses
import fr.free.nrw.commons.utils.UrlUtils
+import fr.free.nrw.commons.utils.toLicenseName
+import fr.free.nrw.commons.utils.toLicenseUrl
import timber.log.Timber
import javax.inject.Inject
@@ -127,20 +128,20 @@ class MediaLicenseFragment : UploadBaseFragment(), MediaLicenseContract.View {
}
override fun setSelectedLicense(license: String?) {
- var position = licenses!!.indexOf(getString(Licenses.licenseNameFor(license)))
+ var position = license?.let { licenses!!.indexOf(getString(it.toLicenseName())) } ?: -1
// Check if position is valid
if (position < 0) {
Timber.d("Invalid position: %d. Using default licenses", position)
position = licenses!!.size - 1
- } else {
- Timber.d("Position: %d %s", position, getString(Licenses.licenseNameFor(license)))
}
binding.spinnerLicenseList.setSelection(position)
}
override fun updateLicenseSummary(selectedLicense: String?, numberOfItems: Int) {
- val licenseHyperLink = "" +
- getString(Licenses.licenseNameFor(selectedLicense)) + "
"
+ if (selectedLicense == null) return
+
+ val licenseHyperLink = "" +
+ getString(selectedLicense.toLicenseName()) + "
"
setTextViewHTML(
binding.tvShareLicenseSummary, resources
diff --git a/app/src/main/java/fr/free/nrw/commons/upload/license/MediaLicensePresenter.kt b/app/src/main/java/fr/free/nrw/commons/upload/license/MediaLicensePresenter.kt
index e10e96632..df75019b2 100644
--- a/app/src/main/java/fr/free/nrw/commons/upload/license/MediaLicensePresenter.kt
+++ b/app/src/main/java/fr/free/nrw/commons/upload/license/MediaLicensePresenter.kt
@@ -3,7 +3,7 @@ package fr.free.nrw.commons.upload.license
import fr.free.nrw.commons.kvstore.JsonKvStore
import fr.free.nrw.commons.repository.UploadRepository
import fr.free.nrw.commons.settings.Prefs
-import fr.free.nrw.commons.utils.Licenses
+import fr.free.nrw.commons.utils.toLicenseName
import timber.log.Timber
import java.lang.reflect.Method
import java.lang.reflect.Proxy
@@ -34,12 +34,14 @@ class MediaLicensePresenter @Inject constructor(
val licenses = repository.getLicenses()
view.setLicenses(licenses)
- var selectedLicense = defaultKVStore.getString(
+ //CC_BY_SA_4 is the default one used by the commons web app
+ var selectedLicense: String = defaultKVStore.getString(
Prefs.DEFAULT_LICENSE,
Prefs.Licenses.CC_BY_SA_4
- ) //CC_BY_SA_4 is the default one used by the commons web app
+ ) ?: Prefs.Licenses.CC_BY_SA_4
+
try { //I have to make sure that the stored default license was not one of the deprecated one's
- Licenses.licenseNameFor(selectedLicense)
+ selectedLicense.toLicenseName()
} catch (exception: IllegalStateException) {
Timber.e(exception)
selectedLicense = Prefs.Licenses.CC_BY_SA_4
diff --git a/app/src/main/java/fr/free/nrw/commons/utils/Licenses.java b/app/src/main/java/fr/free/nrw/commons/utils/Licenses.java
deleted file mode 100644
index b7b1b41f8..000000000
--- a/app/src/main/java/fr/free/nrw/commons/utils/Licenses.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package fr.free.nrw.commons.utils;
-
-import androidx.annotation.NonNull;
-import fr.free.nrw.commons.R;
-import fr.free.nrw.commons.settings.Prefs;
-
-public final class Licenses {
-
- /**
- * Generates licence name with given ID
- * @param license License ID
- * @return Name of license
- */
- public static int licenseNameFor(String license) {
- switch (license) {
- case Prefs.Licenses.CC_BY_3:
- return R.string.license_name_cc_by;
- case Prefs.Licenses.CC_BY_4:
- return R.string.license_name_cc_by_four;
- case Prefs.Licenses.CC_BY_SA_3:
- return R.string.license_name_cc_by_sa;
- case Prefs.Licenses.CC_BY_SA_4:
- return R.string.license_name_cc_by_sa_four;
- case Prefs.Licenses.CC0:
- return R.string.license_name_cc0;
- }
- throw new IllegalStateException("Unrecognized license value: " + license);
- }
-
- /**
- * Generates license url with given ID
- * @param license License ID
- * @return Url of license
- */
- @NonNull
- public static String licenseUrlFor(String license) {
- switch (license) {
- case Prefs.Licenses.CC_BY_3:
- return "https://creativecommons.org/licenses/by/3.0/";
- case Prefs.Licenses.CC_BY_4:
- return "https://creativecommons.org/licenses/by/4.0/";
- case Prefs.Licenses.CC_BY_SA_3:
- return "https://creativecommons.org/licenses/by-sa/3.0/";
- case Prefs.Licenses.CC_BY_SA_4:
- return "https://creativecommons.org/licenses/by-sa/4.0/";
- case Prefs.Licenses.CC0:
- return "https://creativecommons.org/publicdomain/zero/1.0/";
- default:
- throw new IllegalStateException("Unrecognized license value: " + license);
- }
- }
-}
diff --git a/app/src/main/java/fr/free/nrw/commons/utils/Licenses.kt b/app/src/main/java/fr/free/nrw/commons/utils/Licenses.kt
new file mode 100644
index 000000000..065a14718
--- /dev/null
+++ b/app/src/main/java/fr/free/nrw/commons/utils/Licenses.kt
@@ -0,0 +1,31 @@
+package fr.free.nrw.commons.utils
+
+import fr.free.nrw.commons.R
+import fr.free.nrw.commons.settings.Prefs
+
+/**
+ * Generates licence name with given ID
+ * @return Name of license
+ */
+fun String.toLicenseName(): Int = when (this) {
+ Prefs.Licenses.CC_BY_3 -> R.string.license_name_cc_by
+ Prefs.Licenses.CC_BY_4 -> R.string.license_name_cc_by_four
+ Prefs.Licenses.CC_BY_SA_3 -> R.string.license_name_cc_by_sa
+ Prefs.Licenses.CC_BY_SA_4 -> R.string.license_name_cc_by_sa_four
+ Prefs.Licenses.CC0 -> R.string.license_name_cc0
+ else -> throw IllegalStateException("Unrecognized license value: $this")
+}
+
+/**
+ * Generates license url with given ID
+ * @return Url of license
+ */
+fun String.toLicenseUrl(): String = when (this) {
+ Prefs.Licenses.CC_BY_3 -> "https://creativecommons.org/licenses/by/3.0/"
+ Prefs.Licenses.CC_BY_4 -> "https://creativecommons.org/licenses/by/4.0/"
+ Prefs.Licenses.CC_BY_SA_3 -> "https://creativecommons.org/licenses/by-sa/3.0/"
+ Prefs.Licenses.CC_BY_SA_4 -> "https://creativecommons.org/licenses/by-sa/4.0/"
+ Prefs.Licenses.CC0 -> "https://creativecommons.org/publicdomain/zero/1.0/"
+ else -> throw IllegalStateException("Unrecognized license value: $this")
+}
+
diff --git a/app/src/test/kotlin/fr/free/nrw/commons/upload/MediaLicensePresenterTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/upload/MediaLicensePresenterTest.kt
index 3aa7fb619..b448df6d2 100644
--- a/app/src/test/kotlin/fr/free/nrw/commons/upload/MediaLicensePresenterTest.kt
+++ b/app/src/test/kotlin/fr/free/nrw/commons/upload/MediaLicensePresenterTest.kt
@@ -6,7 +6,7 @@ import fr.free.nrw.commons.kvstore.JsonKvStore
import fr.free.nrw.commons.repository.UploadRepository
import fr.free.nrw.commons.upload.license.MediaLicenseContract
import fr.free.nrw.commons.upload.license.MediaLicensePresenter
-import fr.free.nrw.commons.utils.Licenses
+import fr.free.nrw.commons.utils.toLicenseName
import org.junit.After
import org.junit.Before
import org.junit.Test
@@ -51,7 +51,6 @@ class MediaLicensePresenterTest {
MockitoAnnotations.openMocks(this)
mediaLicensePresenter.onAttachView(view)
mockedUtil = Mockito.mockStatic(UnderlineUtils::class.java)
- `when`(Licenses.licenseNameFor(ArgumentMatchers.anyString())).thenReturn(1)
}
@After