Skip to content

Commit 7655562

Browse files
authored
Fixes 4922 : Crash when trying to edit description (in Media details) (commons-app#4929)
* DescriptionEditActivity handled * Minor change * Minor changes
1 parent 644cd47 commit 7655562

File tree

5 files changed

+24
-16
lines changed

5 files changed

+24
-16
lines changed

app/src/main/java/fr/free/nrw/commons/description/DescriptionEditActivity.kt

+13-15
Original file line numberDiff line numberDiff line change
@@ -5,40 +5,30 @@ import android.content.Intent
55
import android.os.Bundle
66
import android.os.Parcelable
77
import android.view.View
8-
import androidx.appcompat.app.AppCompatActivity
98
import androidx.recyclerview.widget.LinearLayoutManager
109
import androidx.recyclerview.widget.RecyclerView
1110
import fr.free.nrw.commons.R
1211
import fr.free.nrw.commons.databinding.ActivityDescriptionEditBinding
1312
import fr.free.nrw.commons.description.EditDescriptionConstants.LIST_OF_DESCRIPTION_AND_CAPTION
1413
import fr.free.nrw.commons.description.EditDescriptionConstants.UPDATED_WIKITEXT
1514
import fr.free.nrw.commons.description.EditDescriptionConstants.WIKITEXT
16-
import fr.free.nrw.commons.kvstore.JsonKvStore
15+
import fr.free.nrw.commons.recentlanguages.RecentLanguagesDao
1716
import fr.free.nrw.commons.settings.Prefs
17+
import fr.free.nrw.commons.theme.BaseActivity
1818
import fr.free.nrw.commons.upload.UploadMediaDetail
1919
import fr.free.nrw.commons.upload.UploadMediaDetailAdapter
2020
import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog
21-
import java.util.*
2221
import javax.inject.Inject
23-
import javax.inject.Named
2422

2523
/**
2624
* Activity for populating and editing existing description and caption
2725
*/
28-
class DescriptionEditActivity : AppCompatActivity(), UploadMediaDetailAdapter.EventListener {
26+
class DescriptionEditActivity : BaseActivity(), UploadMediaDetailAdapter.EventListener {
2927
/**
3028
* Adapter for showing UploadMediaDetail in the activity
3129
*/
3230
private lateinit var uploadMediaDetailAdapter: UploadMediaDetailAdapter
3331

34-
/**
35-
* For getting default preference
36-
*/
37-
@JvmField
38-
@Inject
39-
@Named("default_preferences")
40-
var defaultKvStore: JsonKvStore? = null
41-
4232
/**
4333
* Recyclerview for recycling data in views
4434
*/
@@ -50,11 +40,19 @@ class DescriptionEditActivity : AppCompatActivity(), UploadMediaDetailAdapter.Ev
5040
*/
5141
var wikiText: String? = null
5242

43+
/**
44+
* Saved language
45+
*/
46+
private lateinit var savedLanguageValue: String
47+
5348
/**
5449
* For showing progress dialog
5550
*/
5651
private var progressDialog: ProgressDialog? = null
5752

53+
@Inject
54+
lateinit var recentLanguagesDao: RecentLanguagesDao
55+
5856
private lateinit var binding: ActivityDescriptionEditBinding
5957

6058
override fun onCreate(savedInstanceState: Bundle?) {
@@ -67,6 +65,7 @@ class DescriptionEditActivity : AppCompatActivity(), UploadMediaDetailAdapter.Ev
6765
val descriptionAndCaptions: ArrayList<UploadMediaDetail> =
6866
bundle!!.getParcelableArrayList(LIST_OF_DESCRIPTION_AND_CAPTION)!!
6967
wikiText = bundle.getString(WIKITEXT)
68+
savedLanguageValue = bundle.getString(Prefs.DESCRIPTION_LANGUAGE)!!
7069
initRecyclerView(descriptionAndCaptions)
7170

7271
binding.btnAddDescription.setOnClickListener(::onButtonAddDescriptionClicked)
@@ -80,8 +79,7 @@ class DescriptionEditActivity : AppCompatActivity(), UploadMediaDetailAdapter.Ev
8079
*/
8180
private fun initRecyclerView(descriptionAndCaptions: ArrayList<UploadMediaDetail>?) {
8281
uploadMediaDetailAdapter = UploadMediaDetailAdapter(
83-
defaultKvStore?.getString(Prefs.DESCRIPTION_LANGUAGE, ""),
84-
descriptionAndCaptions)
82+
savedLanguageValue, descriptionAndCaptions, recentLanguagesDao)
8583
uploadMediaDetailAdapter.setCallback { titleStringID: Int, messageStringId: Int ->
8684
showInfoAlert(
8785
titleStringID,

app/src/main/java/fr/free/nrw/commons/di/ActivityBuilderModule.java

+4
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import fr.free.nrw.commons.category.CategoryDetailsActivity;
1111
import fr.free.nrw.commons.contributions.MainActivity;
1212
import fr.free.nrw.commons.customselector.ui.selector.CustomSelectorActivity;
13+
import fr.free.nrw.commons.description.DescriptionEditActivity;
1314
import fr.free.nrw.commons.explore.depictions.WikidataItemDetailsActivity;
1415
import fr.free.nrw.commons.explore.SearchActivity;
1516
import fr.free.nrw.commons.notification.NotificationActivity;
@@ -71,4 +72,7 @@ public abstract class ActivityBuilderModule {
7172

7273
@ContributesAndroidInjector
7374
abstract ReviewActivity bindReviewActivity();
75+
76+
@ContributesAndroidInjector
77+
abstract DescriptionEditActivity bindDescriptionEditActivity();
7478
}

app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java

+2
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
import fr.free.nrw.commons.kvstore.JsonKvStore;
7777
import fr.free.nrw.commons.location.LocationServiceManager;
7878
import fr.free.nrw.commons.profile.ProfileActivity;
79+
import fr.free.nrw.commons.settings.Prefs;
7980
import fr.free.nrw.commons.ui.widget.HtmlTextView;
8081
import fr.free.nrw.commons.upload.categories.UploadCategoriesFragment;
8182
import fr.free.nrw.commons.upload.depicts.DepictsFragment;
@@ -899,6 +900,7 @@ private void extractCaptionDescription(final String s) {
899900
final Bundle bundle = new Bundle();
900901
bundle.putParcelableArrayList(LIST_OF_DESCRIPTION_AND_CAPTION, descriptionAndCaptions);
901902
bundle.putString(WIKITEXT, s);
903+
bundle.putString(Prefs.DESCRIPTION_LANGUAGE, applicationKvStore.getString(Prefs.DESCRIPTION_LANGUAGE, ""));
902904
intent.putExtras(bundle);
903905
startActivityForResult(intent, REQUEST_CODE_EDIT_DESCRIPTION);
904906
}

app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailAdapter.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,11 @@ public UploadMediaDetailAdapter(String savedLanguageValue, RecentLanguagesDao re
5858
}
5959

6060
public UploadMediaDetailAdapter(final String savedLanguageValue,
61-
List<UploadMediaDetail> uploadMediaDetails) {
61+
List<UploadMediaDetail> uploadMediaDetails, RecentLanguagesDao recentLanguagesDao) {
6262
this.uploadMediaDetails = uploadMediaDetails;
6363
selectedLanguages = new HashMap<>();
6464
this.savedLanguageValue = savedLanguageValue;
65+
this.recentLanguagesDao = recentLanguagesDao;
6566
}
6667

6768
public void setCallback(Callback callback) {

app/src/test/kotlin/fr/free/nrw/commons/description/DescriptionEditActivityUnitTest.kt

+3
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import fr.free.nrw.commons.TestCommonsApplication
1515
import fr.free.nrw.commons.databinding.ActivityDescriptionEditBinding
1616
import fr.free.nrw.commons.description.EditDescriptionConstants.LIST_OF_DESCRIPTION_AND_CAPTION
1717
import fr.free.nrw.commons.description.EditDescriptionConstants.WIKITEXT
18+
import fr.free.nrw.commons.settings.Prefs
1819
import fr.free.nrw.commons.upload.UploadMediaDetail
1920
import fr.free.nrw.commons.upload.UploadMediaDetailAdapter
2021
import junit.framework.Assert.assertEquals
@@ -65,6 +66,7 @@ class DescriptionEditActivityUnitTest {
6566
val bundle = Bundle()
6667
bundle.putParcelableArrayList(LIST_OF_DESCRIPTION_AND_CAPTION, uploadMediaDetails)
6768
bundle.putString(WIKITEXT, "desc")
69+
bundle.putString(Prefs.DESCRIPTION_LANGUAGE, "bn")
6870
intent.putExtras(bundle)
6971
activity =
7072
Robolectric.buildActivity(DescriptionEditActivity::class.java, intent).create().get()
@@ -75,6 +77,7 @@ class DescriptionEditActivityUnitTest {
7577
Whitebox.setInternalState(activity, "uploadMediaDetailAdapter", uploadMediaDetailAdapter)
7678
Whitebox.setInternalState(activity, "rvDescriptions", rvDescriptions)
7779
Whitebox.setInternalState(activity, "binding", binding)
80+
Whitebox.setInternalState(activity, "savedLanguageValue", "bn")
7881
`when`(uploadMediaDetailAdapter.items).thenReturn(uploadMediaDetails)
7982
}
8083

0 commit comments

Comments
 (0)