mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 20:33:53 +01:00
Fixes 4922 : Crash when trying to edit description (in Media details) (#4929)
* DescriptionEditActivity handled * Minor change * Minor changes
This commit is contained in:
parent
644cd473f8
commit
7655562272
5 changed files with 24 additions and 16 deletions
|
|
@ -5,7 +5,6 @@ import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
|
|
@ -13,32 +12,23 @@ import fr.free.nrw.commons.databinding.ActivityDescriptionEditBinding
|
||||||
import fr.free.nrw.commons.description.EditDescriptionConstants.LIST_OF_DESCRIPTION_AND_CAPTION
|
import fr.free.nrw.commons.description.EditDescriptionConstants.LIST_OF_DESCRIPTION_AND_CAPTION
|
||||||
import fr.free.nrw.commons.description.EditDescriptionConstants.UPDATED_WIKITEXT
|
import fr.free.nrw.commons.description.EditDescriptionConstants.UPDATED_WIKITEXT
|
||||||
import fr.free.nrw.commons.description.EditDescriptionConstants.WIKITEXT
|
import fr.free.nrw.commons.description.EditDescriptionConstants.WIKITEXT
|
||||||
import fr.free.nrw.commons.kvstore.JsonKvStore
|
import fr.free.nrw.commons.recentlanguages.RecentLanguagesDao
|
||||||
import fr.free.nrw.commons.settings.Prefs
|
import fr.free.nrw.commons.settings.Prefs
|
||||||
|
import fr.free.nrw.commons.theme.BaseActivity
|
||||||
import fr.free.nrw.commons.upload.UploadMediaDetail
|
import fr.free.nrw.commons.upload.UploadMediaDetail
|
||||||
import fr.free.nrw.commons.upload.UploadMediaDetailAdapter
|
import fr.free.nrw.commons.upload.UploadMediaDetailAdapter
|
||||||
import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog
|
import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog
|
||||||
import java.util.*
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import javax.inject.Named
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Activity for populating and editing existing description and caption
|
* Activity for populating and editing existing description and caption
|
||||||
*/
|
*/
|
||||||
class DescriptionEditActivity : AppCompatActivity(), UploadMediaDetailAdapter.EventListener {
|
class DescriptionEditActivity : BaseActivity(), UploadMediaDetailAdapter.EventListener {
|
||||||
/**
|
/**
|
||||||
* Adapter for showing UploadMediaDetail in the activity
|
* Adapter for showing UploadMediaDetail in the activity
|
||||||
*/
|
*/
|
||||||
private lateinit var uploadMediaDetailAdapter: UploadMediaDetailAdapter
|
private lateinit var uploadMediaDetailAdapter: UploadMediaDetailAdapter
|
||||||
|
|
||||||
/**
|
|
||||||
* For getting default preference
|
|
||||||
*/
|
|
||||||
@JvmField
|
|
||||||
@Inject
|
|
||||||
@Named("default_preferences")
|
|
||||||
var defaultKvStore: JsonKvStore? = null
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Recyclerview for recycling data in views
|
* Recyclerview for recycling data in views
|
||||||
*/
|
*/
|
||||||
|
|
@ -50,11 +40,19 @@ class DescriptionEditActivity : AppCompatActivity(), UploadMediaDetailAdapter.Ev
|
||||||
*/
|
*/
|
||||||
var wikiText: String? = null
|
var wikiText: String? = null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Saved language
|
||||||
|
*/
|
||||||
|
private lateinit var savedLanguageValue: String
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For showing progress dialog
|
* For showing progress dialog
|
||||||
*/
|
*/
|
||||||
private var progressDialog: ProgressDialog? = null
|
private var progressDialog: ProgressDialog? = null
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
lateinit var recentLanguagesDao: RecentLanguagesDao
|
||||||
|
|
||||||
private lateinit var binding: ActivityDescriptionEditBinding
|
private lateinit var binding: ActivityDescriptionEditBinding
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
|
@ -67,6 +65,7 @@ class DescriptionEditActivity : AppCompatActivity(), UploadMediaDetailAdapter.Ev
|
||||||
val descriptionAndCaptions: ArrayList<UploadMediaDetail> =
|
val descriptionAndCaptions: ArrayList<UploadMediaDetail> =
|
||||||
bundle!!.getParcelableArrayList(LIST_OF_DESCRIPTION_AND_CAPTION)!!
|
bundle!!.getParcelableArrayList(LIST_OF_DESCRIPTION_AND_CAPTION)!!
|
||||||
wikiText = bundle.getString(WIKITEXT)
|
wikiText = bundle.getString(WIKITEXT)
|
||||||
|
savedLanguageValue = bundle.getString(Prefs.DESCRIPTION_LANGUAGE)!!
|
||||||
initRecyclerView(descriptionAndCaptions)
|
initRecyclerView(descriptionAndCaptions)
|
||||||
|
|
||||||
binding.btnAddDescription.setOnClickListener(::onButtonAddDescriptionClicked)
|
binding.btnAddDescription.setOnClickListener(::onButtonAddDescriptionClicked)
|
||||||
|
|
@ -80,8 +79,7 @@ class DescriptionEditActivity : AppCompatActivity(), UploadMediaDetailAdapter.Ev
|
||||||
*/
|
*/
|
||||||
private fun initRecyclerView(descriptionAndCaptions: ArrayList<UploadMediaDetail>?) {
|
private fun initRecyclerView(descriptionAndCaptions: ArrayList<UploadMediaDetail>?) {
|
||||||
uploadMediaDetailAdapter = UploadMediaDetailAdapter(
|
uploadMediaDetailAdapter = UploadMediaDetailAdapter(
|
||||||
defaultKvStore?.getString(Prefs.DESCRIPTION_LANGUAGE, ""),
|
savedLanguageValue, descriptionAndCaptions, recentLanguagesDao)
|
||||||
descriptionAndCaptions)
|
|
||||||
uploadMediaDetailAdapter.setCallback { titleStringID: Int, messageStringId: Int ->
|
uploadMediaDetailAdapter.setCallback { titleStringID: Int, messageStringId: Int ->
|
||||||
showInfoAlert(
|
showInfoAlert(
|
||||||
titleStringID,
|
titleStringID,
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import fr.free.nrw.commons.auth.SignupActivity;
|
||||||
import fr.free.nrw.commons.category.CategoryDetailsActivity;
|
import fr.free.nrw.commons.category.CategoryDetailsActivity;
|
||||||
import fr.free.nrw.commons.contributions.MainActivity;
|
import fr.free.nrw.commons.contributions.MainActivity;
|
||||||
import fr.free.nrw.commons.customselector.ui.selector.CustomSelectorActivity;
|
import fr.free.nrw.commons.customselector.ui.selector.CustomSelectorActivity;
|
||||||
|
import fr.free.nrw.commons.description.DescriptionEditActivity;
|
||||||
import fr.free.nrw.commons.explore.depictions.WikidataItemDetailsActivity;
|
import fr.free.nrw.commons.explore.depictions.WikidataItemDetailsActivity;
|
||||||
import fr.free.nrw.commons.explore.SearchActivity;
|
import fr.free.nrw.commons.explore.SearchActivity;
|
||||||
import fr.free.nrw.commons.notification.NotificationActivity;
|
import fr.free.nrw.commons.notification.NotificationActivity;
|
||||||
|
|
@ -71,4 +72,7 @@ public abstract class ActivityBuilderModule {
|
||||||
|
|
||||||
@ContributesAndroidInjector
|
@ContributesAndroidInjector
|
||||||
abstract ReviewActivity bindReviewActivity();
|
abstract ReviewActivity bindReviewActivity();
|
||||||
|
|
||||||
|
@ContributesAndroidInjector
|
||||||
|
abstract DescriptionEditActivity bindDescriptionEditActivity();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,7 @@ import fr.free.nrw.commons.explore.depictions.WikidataItemDetailsActivity;
|
||||||
import fr.free.nrw.commons.kvstore.JsonKvStore;
|
import fr.free.nrw.commons.kvstore.JsonKvStore;
|
||||||
import fr.free.nrw.commons.location.LocationServiceManager;
|
import fr.free.nrw.commons.location.LocationServiceManager;
|
||||||
import fr.free.nrw.commons.profile.ProfileActivity;
|
import fr.free.nrw.commons.profile.ProfileActivity;
|
||||||
|
import fr.free.nrw.commons.settings.Prefs;
|
||||||
import fr.free.nrw.commons.ui.widget.HtmlTextView;
|
import fr.free.nrw.commons.ui.widget.HtmlTextView;
|
||||||
import fr.free.nrw.commons.upload.categories.UploadCategoriesFragment;
|
import fr.free.nrw.commons.upload.categories.UploadCategoriesFragment;
|
||||||
import fr.free.nrw.commons.upload.depicts.DepictsFragment;
|
import fr.free.nrw.commons.upload.depicts.DepictsFragment;
|
||||||
|
|
@ -899,6 +900,7 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment implements
|
||||||
final Bundle bundle = new Bundle();
|
final Bundle bundle = new Bundle();
|
||||||
bundle.putParcelableArrayList(LIST_OF_DESCRIPTION_AND_CAPTION, descriptionAndCaptions);
|
bundle.putParcelableArrayList(LIST_OF_DESCRIPTION_AND_CAPTION, descriptionAndCaptions);
|
||||||
bundle.putString(WIKITEXT, s);
|
bundle.putString(WIKITEXT, s);
|
||||||
|
bundle.putString(Prefs.DESCRIPTION_LANGUAGE, applicationKvStore.getString(Prefs.DESCRIPTION_LANGUAGE, ""));
|
||||||
intent.putExtras(bundle);
|
intent.putExtras(bundle);
|
||||||
startActivityForResult(intent, REQUEST_CODE_EDIT_DESCRIPTION);
|
startActivityForResult(intent, REQUEST_CODE_EDIT_DESCRIPTION);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,10 +58,11 @@ public class UploadMediaDetailAdapter extends RecyclerView.Adapter<UploadMediaDe
|
||||||
}
|
}
|
||||||
|
|
||||||
public UploadMediaDetailAdapter(final String savedLanguageValue,
|
public UploadMediaDetailAdapter(final String savedLanguageValue,
|
||||||
List<UploadMediaDetail> uploadMediaDetails) {
|
List<UploadMediaDetail> uploadMediaDetails, RecentLanguagesDao recentLanguagesDao) {
|
||||||
this.uploadMediaDetails = uploadMediaDetails;
|
this.uploadMediaDetails = uploadMediaDetails;
|
||||||
selectedLanguages = new HashMap<>();
|
selectedLanguages = new HashMap<>();
|
||||||
this.savedLanguageValue = savedLanguageValue;
|
this.savedLanguageValue = savedLanguageValue;
|
||||||
|
this.recentLanguagesDao = recentLanguagesDao;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCallback(Callback callback) {
|
public void setCallback(Callback callback) {
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import fr.free.nrw.commons.TestCommonsApplication
|
||||||
import fr.free.nrw.commons.databinding.ActivityDescriptionEditBinding
|
import fr.free.nrw.commons.databinding.ActivityDescriptionEditBinding
|
||||||
import fr.free.nrw.commons.description.EditDescriptionConstants.LIST_OF_DESCRIPTION_AND_CAPTION
|
import fr.free.nrw.commons.description.EditDescriptionConstants.LIST_OF_DESCRIPTION_AND_CAPTION
|
||||||
import fr.free.nrw.commons.description.EditDescriptionConstants.WIKITEXT
|
import fr.free.nrw.commons.description.EditDescriptionConstants.WIKITEXT
|
||||||
|
import fr.free.nrw.commons.settings.Prefs
|
||||||
import fr.free.nrw.commons.upload.UploadMediaDetail
|
import fr.free.nrw.commons.upload.UploadMediaDetail
|
||||||
import fr.free.nrw.commons.upload.UploadMediaDetailAdapter
|
import fr.free.nrw.commons.upload.UploadMediaDetailAdapter
|
||||||
import junit.framework.Assert.assertEquals
|
import junit.framework.Assert.assertEquals
|
||||||
|
|
@ -65,6 +66,7 @@ class DescriptionEditActivityUnitTest {
|
||||||
val bundle = Bundle()
|
val bundle = Bundle()
|
||||||
bundle.putParcelableArrayList(LIST_OF_DESCRIPTION_AND_CAPTION, uploadMediaDetails)
|
bundle.putParcelableArrayList(LIST_OF_DESCRIPTION_AND_CAPTION, uploadMediaDetails)
|
||||||
bundle.putString(WIKITEXT, "desc")
|
bundle.putString(WIKITEXT, "desc")
|
||||||
|
bundle.putString(Prefs.DESCRIPTION_LANGUAGE, "bn")
|
||||||
intent.putExtras(bundle)
|
intent.putExtras(bundle)
|
||||||
activity =
|
activity =
|
||||||
Robolectric.buildActivity(DescriptionEditActivity::class.java, intent).create().get()
|
Robolectric.buildActivity(DescriptionEditActivity::class.java, intent).create().get()
|
||||||
|
|
@ -75,6 +77,7 @@ class DescriptionEditActivityUnitTest {
|
||||||
Whitebox.setInternalState(activity, "uploadMediaDetailAdapter", uploadMediaDetailAdapter)
|
Whitebox.setInternalState(activity, "uploadMediaDetailAdapter", uploadMediaDetailAdapter)
|
||||||
Whitebox.setInternalState(activity, "rvDescriptions", rvDescriptions)
|
Whitebox.setInternalState(activity, "rvDescriptions", rvDescriptions)
|
||||||
Whitebox.setInternalState(activity, "binding", binding)
|
Whitebox.setInternalState(activity, "binding", binding)
|
||||||
|
Whitebox.setInternalState(activity, "savedLanguageValue", "bn")
|
||||||
`when`(uploadMediaDetailAdapter.items).thenReturn(uploadMediaDetails)
|
`when`(uploadMediaDetailAdapter.items).thenReturn(uploadMediaDetails)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue