mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 12:23:58 +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.Parcelable
|
||||
import android.view.View
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
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.UPDATED_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.theme.BaseActivity
|
||||
import fr.free.nrw.commons.upload.UploadMediaDetail
|
||||
import fr.free.nrw.commons.upload.UploadMediaDetailAdapter
|
||||
import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Named
|
||||
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
private lateinit var uploadMediaDetailAdapter: UploadMediaDetailAdapter
|
||||
|
||||
/**
|
||||
* For getting default preference
|
||||
*/
|
||||
@JvmField
|
||||
@Inject
|
||||
@Named("default_preferences")
|
||||
var defaultKvStore: JsonKvStore? = null
|
||||
|
||||
/**
|
||||
* Recyclerview for recycling data in views
|
||||
*/
|
||||
|
|
@ -50,11 +40,19 @@ class DescriptionEditActivity : AppCompatActivity(), UploadMediaDetailAdapter.Ev
|
|||
*/
|
||||
var wikiText: String? = null
|
||||
|
||||
/**
|
||||
* Saved language
|
||||
*/
|
||||
private lateinit var savedLanguageValue: String
|
||||
|
||||
/**
|
||||
* For showing progress dialog
|
||||
*/
|
||||
private var progressDialog: ProgressDialog? = null
|
||||
|
||||
@Inject
|
||||
lateinit var recentLanguagesDao: RecentLanguagesDao
|
||||
|
||||
private lateinit var binding: ActivityDescriptionEditBinding
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
|
|
@ -67,6 +65,7 @@ class DescriptionEditActivity : AppCompatActivity(), UploadMediaDetailAdapter.Ev
|
|||
val descriptionAndCaptions: ArrayList<UploadMediaDetail> =
|
||||
bundle!!.getParcelableArrayList(LIST_OF_DESCRIPTION_AND_CAPTION)!!
|
||||
wikiText = bundle.getString(WIKITEXT)
|
||||
savedLanguageValue = bundle.getString(Prefs.DESCRIPTION_LANGUAGE)!!
|
||||
initRecyclerView(descriptionAndCaptions)
|
||||
|
||||
binding.btnAddDescription.setOnClickListener(::onButtonAddDescriptionClicked)
|
||||
|
|
@ -80,8 +79,7 @@ class DescriptionEditActivity : AppCompatActivity(), UploadMediaDetailAdapter.Ev
|
|||
*/
|
||||
private fun initRecyclerView(descriptionAndCaptions: ArrayList<UploadMediaDetail>?) {
|
||||
uploadMediaDetailAdapter = UploadMediaDetailAdapter(
|
||||
defaultKvStore?.getString(Prefs.DESCRIPTION_LANGUAGE, ""),
|
||||
descriptionAndCaptions)
|
||||
savedLanguageValue, descriptionAndCaptions, recentLanguagesDao)
|
||||
uploadMediaDetailAdapter.setCallback { titleStringID: Int, messageStringId: Int ->
|
||||
showInfoAlert(
|
||||
titleStringID,
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import fr.free.nrw.commons.auth.SignupActivity;
|
|||
import fr.free.nrw.commons.category.CategoryDetailsActivity;
|
||||
import fr.free.nrw.commons.contributions.MainActivity;
|
||||
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.SearchActivity;
|
||||
import fr.free.nrw.commons.notification.NotificationActivity;
|
||||
|
|
@ -71,4 +72,7 @@ public abstract class ActivityBuilderModule {
|
|||
|
||||
@ContributesAndroidInjector
|
||||
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.location.LocationServiceManager;
|
||||
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.upload.categories.UploadCategoriesFragment;
|
||||
import fr.free.nrw.commons.upload.depicts.DepictsFragment;
|
||||
|
|
@ -899,6 +900,7 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment implements
|
|||
final Bundle bundle = new Bundle();
|
||||
bundle.putParcelableArrayList(LIST_OF_DESCRIPTION_AND_CAPTION, descriptionAndCaptions);
|
||||
bundle.putString(WIKITEXT, s);
|
||||
bundle.putString(Prefs.DESCRIPTION_LANGUAGE, applicationKvStore.getString(Prefs.DESCRIPTION_LANGUAGE, ""));
|
||||
intent.putExtras(bundle);
|
||||
startActivityForResult(intent, REQUEST_CODE_EDIT_DESCRIPTION);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,10 +58,11 @@ public class UploadMediaDetailAdapter extends RecyclerView.Adapter<UploadMediaDe
|
|||
}
|
||||
|
||||
public UploadMediaDetailAdapter(final String savedLanguageValue,
|
||||
List<UploadMediaDetail> uploadMediaDetails) {
|
||||
List<UploadMediaDetail> uploadMediaDetails, RecentLanguagesDao recentLanguagesDao) {
|
||||
this.uploadMediaDetails = uploadMediaDetails;
|
||||
selectedLanguages = new HashMap<>();
|
||||
this.savedLanguageValue = savedLanguageValue;
|
||||
this.recentLanguagesDao = recentLanguagesDao;
|
||||
}
|
||||
|
||||
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.description.EditDescriptionConstants.LIST_OF_DESCRIPTION_AND_CAPTION
|
||||
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.UploadMediaDetailAdapter
|
||||
import junit.framework.Assert.assertEquals
|
||||
|
|
@ -65,6 +66,7 @@ class DescriptionEditActivityUnitTest {
|
|||
val bundle = Bundle()
|
||||
bundle.putParcelableArrayList(LIST_OF_DESCRIPTION_AND_CAPTION, uploadMediaDetails)
|
||||
bundle.putString(WIKITEXT, "desc")
|
||||
bundle.putString(Prefs.DESCRIPTION_LANGUAGE, "bn")
|
||||
intent.putExtras(bundle)
|
||||
activity =
|
||||
Robolectric.buildActivity(DescriptionEditActivity::class.java, intent).create().get()
|
||||
|
|
@ -75,6 +77,7 @@ class DescriptionEditActivityUnitTest {
|
|||
Whitebox.setInternalState(activity, "uploadMediaDetailAdapter", uploadMediaDetailAdapter)
|
||||
Whitebox.setInternalState(activity, "rvDescriptions", rvDescriptions)
|
||||
Whitebox.setInternalState(activity, "binding", binding)
|
||||
Whitebox.setInternalState(activity, "savedLanguageValue", "bn")
|
||||
`when`(uploadMediaDetailAdapter.items).thenReturn(uploadMediaDetails)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue