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