Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Experiment with non-modal link previews. #4777

Open
wants to merge 8 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import android.widget.TextView
import androidx.activity.viewModels
import androidx.annotation.StringRes
import androidx.core.view.isVisible
import androidx.fragment.app.commit
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
Expand Down Expand Up @@ -139,7 +140,9 @@ class CategoryActivity : BaseActivity() {
startActivity(newIntent(this, title))
} else {
val entry = HistoryEntry(title, HistoryEntry.SOURCE_CATEGORY)
ExclusiveBottomSheetPresenter.show(supportFragmentManager, LinkPreviewDialog.newInstance(entry))
supportFragmentManager.commit {
add(LinkPreviewDialog.newInstance(entry), "foo")
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.annotation.ColorInt
import androidx.fragment.app.commit
import org.wikipedia.Constants
import org.wikipedia.Constants.InvokeSource
import org.wikipedia.activity.SingleFragmentActivity
Expand Down Expand Up @@ -78,11 +79,12 @@ class DescriptionEditActivity : SingleFragmentActivity<DescriptionEditFragment>(
ExclusiveBottomSheetPresenter.show(supportFragmentManager,
ImagePreviewDialog.newInstance(summary, action))
} else {
ExclusiveBottomSheetPresenter.show(supportFragmentManager,
LinkPreviewDialog.newInstance(HistoryEntry(summary.pageTitle,
if (intent.hasExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) && intent.getSerializableExtra
(Constants.INTENT_EXTRA_INVOKE_SOURCE) === InvokeSource.PAGE_ACTIVITY)
HistoryEntry.SOURCE_EDIT_DESCRIPTION else HistoryEntry.SOURCE_SUGGESTED_EDITS)))
supportFragmentManager.commit {
add(LinkPreviewDialog.newInstance(HistoryEntry(summary.pageTitle,
if (intent.hasExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) && intent.getSerializableExtra
(Constants.INTENT_EXTRA_INVOKE_SOURCE) === InvokeSource.PAGE_ACTIVITY)
HistoryEntry.SOURCE_EDIT_DESCRIPTION else HistoryEntry.SOURCE_SUGGESTED_EDITS)), "foo")
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import androidx.core.view.MenuProvider
import androidx.core.view.isVisible
import androidx.core.widget.ImageViewCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.commit
import androidx.fragment.app.viewModels
import androidx.lifecycle.Lifecycle
import androidx.recyclerview.widget.LinearLayoutManager
Expand Down Expand Up @@ -285,8 +286,10 @@ class ArticleEditDetailsFragment : Fragment(), WatchlistExpiryDialog.Callback, M
viewModel.pageTitle.wikiSite.dbName() == Constants.COMMONS_DB_NAME) {
CustomTabsUtil.openInCustomTab(requireContext(), viewModel.pageTitle.mobileUri)
} else {
ExclusiveBottomSheetPresenter.show(childFragmentManager, LinkPreviewDialog.newInstance(
HistoryEntry(viewModel.pageTitle, HistoryEntry.SOURCE_EDIT_DIFF_DETAILS)))
childFragmentManager.commit {
add(LinkPreviewDialog.newInstance(
HistoryEntry(viewModel.pageTitle, HistoryEntry.SOURCE_EDIT_DIFF_DETAILS)), "foo")
}
}
}
binding.newerIdButton.setOnClickListener {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isVisible
import androidx.fragment.app.commit
import org.wikipedia.Constants
import org.wikipedia.analytics.eventplatform.PatrollerExperienceEvent
import org.wikipedia.edit.insertmedia.InsertMediaActivity
Expand Down Expand Up @@ -74,8 +75,10 @@ class SyntaxHighlightViewAdapter(
}

override fun onPreviewLink(title: String) {
ExclusiveBottomSheetPresenter.show(activity.supportFragmentManager,
LinkPreviewDialog.newInstance(HistoryEntry(PageTitle(title, pageTitle.wikiSite), HistoryEntry.SOURCE_INTERNAL_LINK)))
val dialog = LinkPreviewDialog.newInstance(HistoryEntry(PageTitle(title, pageTitle.wikiSite), HistoryEntry.SOURCE_INTERNAL_LINK))
activity.supportFragmentManager.commit {
add(dialog, "foo")
}
}

override fun onRequestInsertMedia() {
Expand Down
7 changes: 4 additions & 3 deletions app/src/main/java/org/wikipedia/gallery/GalleryActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import androidx.fragment.app.Fragment
import androidx.fragment.app.commit
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
Expand All @@ -38,7 +39,6 @@ import org.wikipedia.dataclient.WikiSite
import org.wikipedia.dataclient.wikidata.Entities
import org.wikipedia.descriptions.DescriptionEditActivity
import org.wikipedia.history.HistoryEntry
import org.wikipedia.page.ExclusiveBottomSheetPresenter
import org.wikipedia.page.LinkMovementMethodExt
import org.wikipedia.page.PageActivity
import org.wikipedia.page.PageTitle
Expand Down Expand Up @@ -395,8 +395,9 @@ class GalleryActivity : BaseActivity(), LinkPreviewDialog.LoadPageCallback, Gall
}

private fun showLinkPreview(title: PageTitle) {
ExclusiveBottomSheetPresenter.show(supportFragmentManager,
LinkPreviewDialog.newInstance(HistoryEntry(title, HistoryEntry.SOURCE_GALLERY)))
supportFragmentManager.commit {
add(LinkPreviewDialog.newInstance(HistoryEntry(title, HistoryEntry.SOURCE_GALLERY)), "foo")
}
}

private val linkMovementMethod = LinkMovementMethodExt { urlStr ->
Expand Down
4 changes: 0 additions & 4 deletions app/src/main/java/org/wikipedia/page/PageActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -401,10 +401,6 @@ class PageActivity : BaseActivity(), PageFragment.Callback, LinkPreviewDialog.Lo
loadPage(title, entry, TabPosition.CURRENT_TAB)
}

override fun onPageShowLinkPreview(entry: HistoryEntry) {
ExclusiveBottomSheetPresenter.show(supportFragmentManager, LinkPreviewDialog.newInstance(entry))
}

override fun onPageLoadMainPageInForegroundTab() {
loadMainPage(TabPosition.EXISTING_TAB)
}
Expand Down
20 changes: 18 additions & 2 deletions app/src/main/java/org/wikipedia/page/PageFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import androidx.core.graphics.Insets
import androidx.core.view.forEach
import androidx.core.widget.TextViewCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.commit
import androidx.lifecycle.lifecycleScope
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
Expand Down Expand Up @@ -86,6 +87,7 @@ import org.wikipedia.page.campaign.CampaignDialog
import org.wikipedia.page.edithistory.EditHistoryListActivity
import org.wikipedia.page.issues.PageIssuesDialog
import org.wikipedia.page.leadimages.LeadImagesHandler
import org.wikipedia.page.linkpreview.LinkPreviewDialog
import org.wikipedia.page.references.PageReferences
import org.wikipedia.page.references.ReferenceDialog
import org.wikipedia.page.shareafact.ShareHandler
Expand Down Expand Up @@ -123,7 +125,6 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi
fun onPageLoadComplete()
fun onPageLoadPage(title: PageTitle, entry: HistoryEntry)
fun onPageInitWebView(v: ObservableWebView)
fun onPageShowLinkPreview(entry: HistoryEntry)
fun onPageLoadMainPageInForegroundTab()
fun onPageUpdateProgressBar(visible: Boolean)
fun onPageStartSupportActionMode(callback: ActionMode.Callback)
Expand Down Expand Up @@ -314,6 +315,12 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi
override fun onBackPressed(): Boolean {
articleInteractionEvent?.logBackClick()
metricsPlatformArticleEventToolbarInteraction.logBackClick()

if (LinkPreviewDialog.isShowing(childFragmentManager)) {
LinkPreviewDialog.hide(childFragmentManager)
return true
}

if (sidePanelHandler.isVisible) {
sidePanelHandler.hide()
return true
Expand Down Expand Up @@ -382,6 +389,15 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi
app.appSessionEvent.touchSession()
}
webView.addOnContentHeightChangedListener(scrollTriggerListener)



webView.addOnScrollChangeListener { oldScrollY, scrollY, isHumanScroll ->
LinkPreviewDialog.hide(childFragmentManager)
}



webView.webViewClient = object : OkHttpWebViewClient() {

override val model get() = [email protected]
Expand Down Expand Up @@ -488,7 +504,7 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi
if (title.namespace() !== Namespace.MAIN || !Prefs.isLinkPreviewEnabled) {
loadPage(title, historyEntry)
} else {
callback()?.onPageShowLinkPreview(historyEntry)
LinkPreviewDialog.show(childFragmentManager, R.id.page_contents_container, historyEntry)
}
}

Expand Down
Loading
Loading