Skip to content

Commit

Permalink
Broaden usage of android edit tags in comments (#4462)
Browse files Browse the repository at this point in the history
* Broaden usage of android edit tags

* Updated diffview to recognize watchlist as source so we can send the tag

* Code review comments addressed

* Remove unused.

---------

Co-authored-by: Sharvani Haran <[email protected]>
Co-authored-by: Dmitry Brant <[email protected]>
  • Loading branch information
3 people authored Feb 14, 2024
1 parent f4658f7 commit 37cac1b
Show file tree
Hide file tree
Showing 9 changed files with 32 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -545,6 +545,7 @@ class DescriptionEditFragment : Fragment() {
const val SUGGESTED_EDITS_TRANSLATE_DESC_COMMENT = "#suggestededit-translate-desc $SUGGESTED_EDITS_UI_VERSION"
const val SUGGESTED_EDITS_ADD_CAPTION_COMMENT = "#suggestededit-add-caption $SUGGESTED_EDITS_UI_VERSION"
const val SUGGESTED_EDITS_TRANSLATE_CAPTION_COMMENT = "#suggestededit-translate-caption $SUGGESTED_EDITS_UI_VERSION"
const val SUGGESTED_EDITS_IMAGE_TAGS_COMMENT = "#suggestededit-add-tag $SUGGESTED_EDITS_UI_VERSION"

private val DESCRIPTION_TEMPLATES = arrayOf("Short description", "SHORTDESC")
// Don't remove the ending escaped `\\}`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.fragment.app.commit
import org.wikipedia.Constants.INTENT_EXTRA_INVOKE_SOURCE
import org.wikipedia.Constants.InvokeSource
import org.wikipedia.activity.BaseActivity
import org.wikipedia.databinding.ActivityArticleEditDetailsBinding
import org.wikipedia.extensions.parcelableExtra
Expand All @@ -23,7 +25,7 @@ class ArticleEditDetailsActivity : BaseActivity() {
intent.getIntExtra(EXTRA_PAGE_ID, -1),
intent.getLongExtra(EXTRA_EDIT_REVISION_FROM, -1),
intent.getLongExtra(EXTRA_EDIT_REVISION_TO, -1),
intent.getBooleanExtra(EXTRA_FROM_RECENT_EDITS, false))
intent.getSerializableExtra(INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource)

if (savedInstanceState == null) {
supportFragmentManager.commit { add(binding.fragmentContainer.id, fragment) }
Expand All @@ -35,23 +37,18 @@ class ArticleEditDetailsActivity : BaseActivity() {
const val EXTRA_PAGE_ID = "pageId"
const val EXTRA_EDIT_REVISION_FROM = "revisionFrom"
const val EXTRA_EDIT_REVISION_TO = "revisionTo"
const val EXTRA_FROM_RECENT_EDITS = "fromRecentEdits"

fun newIntent(context: Context, title: PageTitle, revisionTo: Long): Intent {
return newIntent(context, title, -1, -1, revisionTo)
}

fun newIntent(context: Context, title: PageTitle, pageId: Int, revisionTo: Long): Intent {
return newIntent(context, title, pageId, -1, revisionTo)
}

fun newIntent(context: Context, title: PageTitle, pageId: Int, revisionFrom: Long = -1, revisionTo: Long, fromRecentEdits: Boolean = false): Intent {
fun newIntent(context: Context, title: PageTitle, pageId: Int, revisionFrom: Long = -1, revisionTo: Long, source: InvokeSource = InvokeSource.DIFF_ACTIVITY): Intent {
return Intent(context, ArticleEditDetailsActivity::class.java)
.putExtra(EXTRA_ARTICLE_TITLE, title)
.putExtra(EXTRA_PAGE_ID, pageId)
.putExtra(EXTRA_EDIT_REVISION_FROM, revisionFrom)
.putExtra(EXTRA_EDIT_REVISION_TO, revisionTo)
.putExtra(EXTRA_FROM_RECENT_EDITS, fromRecentEdits)
.putExtra(INTENT_EXTRA_INVOKE_SOURCE, source)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
import org.wikipedia.Constants
import org.wikipedia.Constants.InvokeSource
import org.wikipedia.R
import org.wikipedia.activity.FragmentUtil
Expand Down Expand Up @@ -697,13 +698,16 @@ class ArticleEditDetailsFragment : Fragment(), WatchlistExpiryDialog.Callback, M
}

companion object {
fun newInstance(title: PageTitle, pageId: Int, revisionFrom: Long, revisionTo: Long, fromRecentEdits: Boolean): ArticleEditDetailsFragment {
const val DIFF_UNDO_COMMENT = "#diff-undo"
const val DIFF_ROLLBACK_COMMENT = "#diff-rollback"

fun newInstance(title: PageTitle, pageId: Int, revisionFrom: Long, revisionTo: Long, source: InvokeSource): ArticleEditDetailsFragment {
return ArticleEditDetailsFragment().apply {
arguments = bundleOf(ArticleEditDetailsActivity.EXTRA_ARTICLE_TITLE to title,
ArticleEditDetailsActivity.EXTRA_PAGE_ID to pageId,
ArticleEditDetailsActivity.EXTRA_EDIT_REVISION_FROM to revisionFrom,
ArticleEditDetailsActivity.EXTRA_EDIT_REVISION_TO to revisionTo,
ArticleEditDetailsActivity.EXTRA_FROM_RECENT_EDITS to fromRecentEdits)
Constants.INTENT_EXTRA_INVOKE_SOURCE to source)
}
}
}
Expand Down
21 changes: 11 additions & 10 deletions app/src/main/java/org/wikipedia/diff/ArticleEditDetailsViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.CoroutineExceptionHandler
import kotlinx.coroutines.async
import kotlinx.coroutines.launch
import org.wikipedia.Constants
import org.wikipedia.Constants.InvokeSource
import org.wikipedia.analytics.eventplatform.WatchlistAnalyticsHelper
import org.wikipedia.dataclient.Service
import org.wikipedia.dataclient.ServiceFactory
Expand All @@ -27,9 +29,13 @@ import org.wikipedia.suggestededits.provider.EditingSuggestionsProvider
import org.wikipedia.util.Resource
import org.wikipedia.util.SingleLiveData
import org.wikipedia.watchlist.WatchlistExpiry
import org.wikipedia.watchlist.WatchlistFragment

class ArticleEditDetailsViewModel(bundle: Bundle) : ViewModel() {

private val invokeSource = bundle.getSerializable(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource
private val fromWatchList = invokeSource == InvokeSource.WATCHLIST_ACTIVITY

val watchedStatus = MutableLiveData<Resource<MwQueryPage>>()
val rollbackRights = MutableLiveData<Resource<Boolean>>()
val revisionDetails = MutableLiveData<Resource<Unit>>()
Expand All @@ -40,9 +46,7 @@ class ArticleEditDetailsViewModel(bundle: Bundle) : ViewModel() {
val undoEditResponse = SingleLiveData<Resource<Edit>>()
val rollbackResponse = SingleLiveData<Resource<RollbackPostResponse>>()

var watchlistExpiryChanged = false

val fromRecentEdits = bundle.getBoolean(ArticleEditDetailsActivity.EXTRA_FROM_RECENT_EDITS, false)
val fromRecentEdits = invokeSource == InvokeSource.SUGGESTED_EDITS_RECENT_EDITS

var pageTitle = bundle.parcelable<PageTitle>(ArticleEditDetailsActivity.EXTRA_ARTICLE_TITLE)!!
private set
Expand Down Expand Up @@ -226,9 +230,8 @@ class ArticleEditDetailsViewModel(bundle: Bundle) : ViewModel() {
val msgResponse = ServiceFactory.get(title.wikiSite).getMessages("undo-summary", "$revisionId|$user")
val undoMessage = msgResponse.query?.allmessages?.find { it.name == "undo-summary" }?.content
var summary = if (undoMessage != null) "$undoMessage $comment" else comment
if (fromRecentEdits) {
summary += DescriptionEditFragment.SUGGESTED_EDITS_PATROLLER_TASKS_UNDO
}
summary += if (fromRecentEdits) DescriptionEditFragment.SUGGESTED_EDITS_PATROLLER_TASKS_UNDO else if (fromWatchList) WatchlistFragment.WATCHLIST_UNDO_COMMENT
else ArticleEditDetailsFragment.DIFF_UNDO_COMMENT
val token = ServiceFactory.get(title.wikiSite).getToken().query!!.csrfToken()!!
val undoResponse = ServiceFactory.get(title.wikiSite).postUndoEdit(title.prefixedText, summary,
null, token, revisionId, if (revisionIdAfter > 0) revisionIdAfter else null)
Expand All @@ -241,10 +244,8 @@ class ArticleEditDetailsViewModel(bundle: Bundle) : ViewModel() {
rollbackResponse.postValue(Resource.Error(throwable))
}) {
val rollbackToken = ServiceFactory.get(title.wikiSite).getToken("rollback").query!!.rollbackToken()!!
var summary: String? = null
if (fromRecentEdits) {
summary = DescriptionEditFragment.SUGGESTED_EDITS_PATROLLER_TASKS_ROLLBACK
}
val summary = if (fromRecentEdits) DescriptionEditFragment.SUGGESTED_EDITS_PATROLLER_TASKS_ROLLBACK else if (fromWatchList) WatchlistFragment.WATCHLIST_ROLLBACK_COMMENT
else ArticleEditDetailsFragment.DIFF_ROLLBACK_COMMENT
val rollbackPostResponse = ServiceFactory.get(title.wikiSite).postRollback(title.prefixedText, summary, user, rollbackToken)
rollbackResponse.postValue(Resource.Success(rollbackPostResponse))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -432,7 +432,7 @@ class EditHistoryListActivity : BaseActivity() {
toggleSelectState()
} else {
startActivity(ArticleEditDetailsActivity.newIntent(this@EditHistoryListActivity,
viewModel.pageTitle, viewModel.pageId, revision.revId))
viewModel.pageTitle, viewModel.pageId, revisionTo = revision.revId))
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import org.wikipedia.dataclient.ServiceFactory
import org.wikipedia.dataclient.WikiSite
import org.wikipedia.dataclient.mwapi.MwQueryPage
import org.wikipedia.descriptions.DescriptionEditActivity
import org.wikipedia.descriptions.DescriptionEditFragment
import org.wikipedia.language.LanguageUtil
import org.wikipedia.page.PageTitle
import org.wikipedia.settings.Prefs
Expand Down Expand Up @@ -377,7 +378,7 @@ class SuggestedEditsImageTagsFragment : SuggestedEditsItemFragment(), CompoundBu
commentStr += label.wikidataId + "|" + label.label.replace("|", "").replace(",", "")
}
claimStr += "]}"
commentStr += " */"
commentStr += " */" + DescriptionEditFragment.SUGGESTED_EDITS_IMAGE_TAGS_COMMENT

disposables.add(ServiceFactory.get(Constants.commonsWikiSite).postEditEntity(mId, token, claimStr, commentStr, null)
.subscribeOn(Schedulers.io())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import org.wikipedia.Constants
import org.wikipedia.databinding.FragmentSuggestedEditsVandalismItemBinding
import org.wikipedia.dataclient.WikiSite
import org.wikipedia.diff.ArticleEditDetailsFragment
Expand All @@ -23,7 +24,7 @@ class SuggestedEditsVandalismPatrolFragment : SuggestedEditsItemFragment(), Arti
if (savedInstanceState == null) {
childFragmentManager.beginTransaction()
.add(binding.suggestedEditsItemRootView.id, ArticleEditDetailsFragment
.newInstance(PageTitle("", WikiSite.forLanguageCode(targetWikiLangCode)), -1, -1, -1, fromRecentEdits = true))
.newInstance(PageTitle("", WikiSite.forLanguageCode(targetWikiLangCode)), -1, -1, -1, Constants.InvokeSource.SUGGESTED_EDITS_RECENT_EDITS))
.commit()
}
return binding.root
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,7 @@ class UserContribListActivity : BaseActivity() {

override fun onClick() {
startActivity(ArticleEditDetailsActivity.newIntent(this@UserContribListActivity,
PageTitle(contrib.title, viewModel.wikiSite), contrib.pageid, contrib.revid))
PageTitle(contrib.title, viewModel.wikiSite), contrib.pageid, revisionTo = contrib.revid))
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ class WatchlistFragment : Fragment(), WatchlistItemView.Callback, MenuProvider {
return
}
startActivity(ArticleEditDetailsActivity.newIntent(requireContext(),
PageTitle(item.title, item.wiki!!), item.pageId, item.revid))
PageTitle(item.title, item.wiki!!), item.pageId, revisionTo = item.revid, source = Constants.InvokeSource.WATCHLIST_ACTIVITY))
}

override fun onUserClick(item: MwQueryResult.WatchlistItem, view: View) {
Expand All @@ -365,6 +365,8 @@ class WatchlistFragment : Fragment(), WatchlistItemView.Callback, MenuProvider {
const val VIEW_TYPE_SEARCH_BAR = 0
const val VIEW_TYPE_DATE = 1
const val VIEW_TYPE_ITEM = 2
const val WATCHLIST_UNDO_COMMENT = "#watchlist-undo"
const val WATCHLIST_ROLLBACK_COMMENT = "#watchlist-rollback"

fun newInstance(): WatchlistFragment {
return WatchlistFragment()
Expand Down

0 comments on commit 37cac1b

Please sign in to comment.