Convert handleWebUrl to kotlin

This commit is contained in:
Paul Hawke 2025-07-02 21:49:47 -05:00
parent 7c06871649
commit ac47ff3ce8
19 changed files with 80 additions and 84 deletions

View file

@ -16,7 +16,6 @@
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" /> <option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
<option name="IMPORT_LAYOUT_TABLE"> <option name="IMPORT_LAYOUT_TABLE">
<value> <value>
<package name="" withSubpackages="true" static="false" module="true" />
<package name="" withSubpackages="true" static="true" /> <package name="" withSubpackages="true" static="true" />
<emptyLine /> <emptyLine />
<package name="" withSubpackages="true" static="false" /> <package name="" withSubpackages="true" static="false" />

View file

@ -5,7 +5,6 @@ import android.content.ActivityNotFoundException
import android.content.Intent import android.content.Intent
import android.content.Intent.ACTION_VIEW import android.content.Intent.ACTION_VIEW
import android.net.Uri import android.net.Uri
import android.net.Uri.parse
import android.os.Bundle import android.os.Bundle
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
@ -18,10 +17,9 @@ import fr.free.nrw.commons.databinding.ActivityAboutBinding
import fr.free.nrw.commons.theme.BaseActivity import fr.free.nrw.commons.theme.BaseActivity
import fr.free.nrw.commons.utils.ConfigUtils.getVersionNameWithSha import fr.free.nrw.commons.utils.ConfigUtils.getVersionNameWithSha
import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog
import fr.free.nrw.commons.utils.UnderlineUtils
import fr.free.nrw.commons.utils.UrlUtils.handleWebUrl
import java.util.Collections import java.util.Collections
import androidx.core.net.toUri import androidx.core.net.toUri
import fr.free.nrw.commons.utils.handleWebUrl
import fr.free.nrw.commons.utils.setUnderlinedText import fr.free.nrw.commons.utils.setUnderlinedText
/** /**
@ -95,27 +93,27 @@ class AboutActivity : BaseActivity() {
fun launchFacebook(view: View?) { fun launchFacebook(view: View?) {
val intent: Intent val intent: Intent
try { try {
intent = Intent(Intent.ACTION_VIEW, Uri.parse(Urls.FACEBOOK_APP_URL)) intent = Intent(ACTION_VIEW, Urls.FACEBOOK_APP_URL.toUri())
intent.setPackage(Urls.FACEBOOK_PACKAGE_NAME) intent.setPackage(Urls.FACEBOOK_PACKAGE_NAME)
startActivity(intent) startActivity(intent)
} catch (e: Exception) { } catch (e: Exception) {
handleWebUrl(this, parse(Urls.FACEBOOK_WEB_URL)) handleWebUrl(this, Urls.FACEBOOK_WEB_URL.toUri())
} }
} }
fun launchGithub(view: View?) { fun launchGithub(view: View?) {
val intent: Intent val intent: Intent
try { try {
intent = Intent(Intent.ACTION_VIEW, Uri.parse(Urls.GITHUB_REPO_URL)) intent = Intent(ACTION_VIEW, Urls.GITHUB_REPO_URL.toUri())
intent.setPackage(Urls.GITHUB_PACKAGE_NAME) intent.setPackage(Urls.GITHUB_PACKAGE_NAME)
startActivity(intent) startActivity(intent)
} catch (e: Exception) { } catch (e: Exception) {
handleWebUrl(this, parse(Urls.GITHUB_REPO_URL)) handleWebUrl(this, Urls.GITHUB_REPO_URL.toUri())
} }
} }
fun launchWebsite(view: View?) { fun launchWebsite(view: View?) {
handleWebUrl(this, parse(Urls.WEBSITE_URL)) handleWebUrl(this, Urls.WEBSITE_URL.toUri())
} }
fun launchRatings(view: View?) { fun launchRatings(view: View?) {
@ -132,19 +130,19 @@ class AboutActivity : BaseActivity() {
} }
fun launchCredits(view: View?) { fun launchCredits(view: View?) {
handleWebUrl(this, parse(Urls.CREDITS_URL)) handleWebUrl(this, Urls.CREDITS_URL.toUri())
} }
fun launchUserGuide(view: View?) { fun launchUserGuide(view: View?) {
handleWebUrl(this, parse(Urls.USER_GUIDE_URL)) handleWebUrl(this, Urls.USER_GUIDE_URL.toUri())
} }
fun launchPrivacyPolicy(view: View?) { fun launchPrivacyPolicy(view: View?) {
handleWebUrl(this, parse(BuildConfig.PRIVACY_POLICY_URL)) handleWebUrl(this, BuildConfig.PRIVACY_POLICY_URL.toUri())
} }
fun launchFrequentlyAskedQuesions(view: View?) { fun launchFrequentlyAskedQuesions(view: View?) {
handleWebUrl(this, parse(Urls.FAQ_URL)) handleWebUrl(this, Urls.FAQ_URL.toUri())
} }
override fun onCreateOptionsMenu(menu: Menu): Boolean { override fun onCreateOptionsMenu(menu: Menu): Boolean {
@ -191,7 +189,7 @@ class AboutActivity : BaseActivity() {
val positiveButtonRunnable = Runnable { val positiveButtonRunnable = Runnable {
val langCode = instance.languageLookUpTable!!.getCodes()[spinner.selectedItemPosition] val langCode = instance.languageLookUpTable!!.getCodes()[spinner.selectedItemPosition]
handleWebUrl(this@AboutActivity, parse(Urls.TRANSLATE_WIKI_URL + langCode)) handleWebUrl(this@AboutActivity, (Urls.TRANSLATE_WIKI_URL + langCode).toUri())
} }
showAlertDialog( showAlertDialog(
this, this,

View file

@ -1,5 +1,7 @@
package fr.free.nrw.commons; package fr.free.nrw.commons;
import static fr.free.nrw.commons.utils.UrlUtilsKt.handleWebUrl;
import android.net.Uri; import android.net.Uri;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -7,7 +9,6 @@ import android.view.ViewGroup;
import android.widget.TextView; import android.widget.TextView;
import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.PagerAdapter;
import fr.free.nrw.commons.utils.UrlUtils;
import fr.free.nrw.commons.utils.UnderlineUtils; import fr.free.nrw.commons.utils.UnderlineUtils;
public class WelcomePagerAdapter extends PagerAdapter { public class WelcomePagerAdapter extends PagerAdapter {
@ -49,7 +50,7 @@ public class WelcomePagerAdapter extends PagerAdapter {
// Add link to more information // Add link to more information
TextView moreInfo = layout.findViewById(R.id.welcomeInfo); TextView moreInfo = layout.findViewById(R.id.welcomeInfo);
UnderlineUtils.setUnderlinedText(moreInfo, R.string.welcome_help_button_text); UnderlineUtils.setUnderlinedText(moreInfo, R.string.welcome_help_button_text);
moreInfo.setOnClickListener(view -> UrlUtils.handleWebUrl( moreInfo.setOnClickListener(view -> handleWebUrl(
container.getContext(), container.getContext(),
Uri.parse("https://commons.wikimedia.org/wiki/Help:Contents") Uri.parse("https://commons.wikimedia.org/wiki/Help:Contents")
)); ));

View file

@ -36,8 +36,8 @@ import fr.free.nrw.commons.utils.AbstractTextWatcher
import fr.free.nrw.commons.utils.ActivityUtils.startActivityWithFlags import fr.free.nrw.commons.utils.ActivityUtils.startActivityWithFlags
import fr.free.nrw.commons.utils.ConfigUtils.isBetaFlavour import fr.free.nrw.commons.utils.ConfigUtils.isBetaFlavour
import fr.free.nrw.commons.utils.SystemThemeUtils import fr.free.nrw.commons.utils.SystemThemeUtils
import fr.free.nrw.commons.utils.UrlUtils
import fr.free.nrw.commons.utils.ViewUtil.hideKeyboard import fr.free.nrw.commons.utils.ViewUtil.hideKeyboard
import fr.free.nrw.commons.utils.handleWebUrl
import io.reactivex.disposables.CompositeDisposable import io.reactivex.disposables.CompositeDisposable
import timber.log.Timber import timber.log.Timber
import java.util.Locale import java.util.Locale
@ -254,10 +254,10 @@ class LoginActivity : AccountAuthenticatorActivity() {
} }
private fun forgotPassword() = private fun forgotPassword() =
UrlUtils.handleWebUrl(this, Uri.parse(BuildConfig.FORGOT_PASSWORD_URL)) handleWebUrl(this, Uri.parse(BuildConfig.FORGOT_PASSWORD_URL))
private fun onPrivacyPolicyClicked() = private fun onPrivacyPolicyClicked() =
UrlUtils.handleWebUrl(this, Uri.parse(BuildConfig.PRIVACY_POLICY_URL)) handleWebUrl(this, Uri.parse(BuildConfig.PRIVACY_POLICY_URL))
private fun signUp() = private fun signUp() =
startActivity(Intent(this, SignupActivity::class.java)) startActivity(Intent(this, SignupActivity::class.java))

View file

@ -14,8 +14,8 @@ import fr.free.nrw.commons.theme.BaseActivity
import fr.free.nrw.commons.utils.CommonsDateUtil.getIso8601DateFormatShort import fr.free.nrw.commons.utils.CommonsDateUtil.getIso8601DateFormatShort
import fr.free.nrw.commons.utils.DateUtil.getExtraShortDateString import fr.free.nrw.commons.utils.DateUtil.getExtraShortDateString
import fr.free.nrw.commons.utils.SwipableCardView import fr.free.nrw.commons.utils.SwipableCardView
import fr.free.nrw.commons.utils.UrlUtils
import fr.free.nrw.commons.utils.ViewUtil.showLongToast import fr.free.nrw.commons.utils.ViewUtil.showLongToast
import fr.free.nrw.commons.utils.handleWebUrl
import timber.log.Timber import timber.log.Timber
import java.text.ParseException import java.text.ParseException
@ -74,7 +74,7 @@ class CampaignView : SwipableCardView {
if (it.isWLMCampaign) { if (it.isWLMCampaign) {
((context) as MainActivity).showNearby() ((context) as MainActivity).showNearby()
} else { } else {
UrlUtils.handleWebUrl(context, Uri.parse(it.link)) handleWebUrl(context, Uri.parse(it.link))
} }
} }
} }

View file

@ -23,7 +23,7 @@ import fr.free.nrw.commons.explore.categories.parent.ParentCategoriesFragment
import fr.free.nrw.commons.explore.categories.sub.SubCategoriesFragment import fr.free.nrw.commons.explore.categories.sub.SubCategoriesFragment
import fr.free.nrw.commons.media.MediaDetailPagerFragment import fr.free.nrw.commons.media.MediaDetailPagerFragment
import fr.free.nrw.commons.theme.BaseActivity import fr.free.nrw.commons.theme.BaseActivity
import fr.free.nrw.commons.utils.UrlUtils import fr.free.nrw.commons.utils.handleWebUrl
import fr.free.nrw.commons.wikidata.model.WikiSite import fr.free.nrw.commons.wikidata.model.WikiSite
import fr.free.nrw.commons.wikidata.model.page.PageTitle import fr.free.nrw.commons.wikidata.model.page.PageTitle
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -204,7 +204,7 @@ class CategoryDetailsActivity : BaseActivity(),
R.id.menu_browser_current_category -> { R.id.menu_browser_current_category -> {
val title = PageTitle(CATEGORY_PREFIX + categoryName, WikiSite(COMMONS_URL)) val title = PageTitle(CATEGORY_PREFIX + categoryName, WikiSite(COMMONS_URL))
UrlUtils.handleWebUrl(this, Uri.parse(title.canonicalUri)) handleWebUrl(this, Uri.parse(title.canonicalUri))
true true
} }

View file

@ -39,9 +39,9 @@ import fr.free.nrw.commons.media.MediaClient
import fr.free.nrw.commons.profile.ProfileActivity import fr.free.nrw.commons.profile.ProfileActivity
import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog
import fr.free.nrw.commons.utils.SystemThemeUtils import fr.free.nrw.commons.utils.SystemThemeUtils
import fr.free.nrw.commons.utils.UrlUtils
import fr.free.nrw.commons.utils.ViewUtil.showShortToast import fr.free.nrw.commons.utils.ViewUtil.showShortToast
import fr.free.nrw.commons.utils.copyToClipboard import fr.free.nrw.commons.utils.copyToClipboard
import fr.free.nrw.commons.utils.handleWebUrl
import fr.free.nrw.commons.wikidata.model.WikiSite import fr.free.nrw.commons.wikidata.model.WikiSite
import org.apache.commons.lang3.StringUtils import org.apache.commons.lang3.StringUtils
import javax.inject.Inject import javax.inject.Inject
@ -534,7 +534,7 @@ class ContributionsListFragment : CommonsDaggerSupportFragment(), ContributionsL
val url = val url =
languageWikipediaSite!!.mobileUrl() + "/wiki/" + (contribution!!.wikidataPlace languageWikipediaSite!!.mobileUrl() + "/wiki/" + (contribution!!.wikidataPlace
?.getWikipediaPageTitle()) ?.getWikipediaPageTitle())
UrlUtils.handleWebUrl(requireContext(), Uri.parse(url)) handleWebUrl(requireContext(), Uri.parse(url))
} }
fun getContributionStateAt(position: Int): Int { fun getContributionStateAt(position: Int): Int {

View file

@ -1,5 +1,7 @@
package fr.free.nrw.commons.explore.depictions; package fr.free.nrw.commons.explore.depictions;
import static fr.free.nrw.commons.utils.UrlUtilsKt.handleWebUrl;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
@ -13,7 +15,6 @@ import androidx.fragment.app.FragmentManager;
import com.google.android.material.snackbar.Snackbar; import com.google.android.material.snackbar.Snackbar;
import fr.free.nrw.commons.Media; import fr.free.nrw.commons.Media;
import fr.free.nrw.commons.R; import fr.free.nrw.commons.R;
import fr.free.nrw.commons.utils.UrlUtils;
import fr.free.nrw.commons.ViewPagerAdapter; import fr.free.nrw.commons.ViewPagerAdapter;
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao; import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao;
import fr.free.nrw.commons.category.CategoryImagesCallback; import fr.free.nrw.commons.category.CategoryImagesCallback;
@ -245,7 +246,7 @@ public class WikidataItemDetailsActivity extends BaseActivity implements MediaDe
case R.id.browser_actions_menu_items: case R.id.browser_actions_menu_items:
String entityId=getIntent().getStringExtra("entityId"); String entityId=getIntent().getStringExtra("entityId");
Uri uri = Uri.parse("https://www.wikidata.org/wiki/" + entityId); Uri uri = Uri.parse("https://www.wikidata.org/wiki/" + entityId);
UrlUtils.handleWebUrl(this, uri); handleWebUrl(this, uri);
return true; return true;
case R.id.menu_bookmark_current_item: case R.id.menu_bookmark_current_item:

View file

@ -4,6 +4,7 @@ import static fr.free.nrw.commons.location.LocationServiceManager.LocationChange
import static fr.free.nrw.commons.location.LocationServiceManager.LocationChangeType.LOCATION_SLIGHTLY_CHANGED; import static fr.free.nrw.commons.location.LocationServiceManager.LocationChangeType.LOCATION_SLIGHTLY_CHANGED;
import static fr.free.nrw.commons.utils.GeoCoordinatesKt.handleGeoCoordinates; import static fr.free.nrw.commons.utils.GeoCoordinatesKt.handleGeoCoordinates;
import static fr.free.nrw.commons.utils.MapUtils.ZOOM_LEVEL; import static fr.free.nrw.commons.utils.MapUtils.ZOOM_LEVEL;
import static fr.free.nrw.commons.utils.UrlUtilsKt.handleWebUrl;
import android.Manifest.permission; import android.Manifest.permission;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
@ -37,7 +38,6 @@ import fr.free.nrw.commons.BaseMarker;
import fr.free.nrw.commons.MapController; import fr.free.nrw.commons.MapController;
import fr.free.nrw.commons.Media; import fr.free.nrw.commons.Media;
import fr.free.nrw.commons.R; import fr.free.nrw.commons.R;
import fr.free.nrw.commons.utils.UrlUtils;
import fr.free.nrw.commons.bookmarks.locations.BookmarkLocationsDao; import fr.free.nrw.commons.bookmarks.locations.BookmarkLocationsDao;
import fr.free.nrw.commons.contributions.MainActivity; import fr.free.nrw.commons.contributions.MainActivity;
import fr.free.nrw.commons.databinding.FragmentExploreMapBinding; import fr.free.nrw.commons.databinding.FragmentExploreMapBinding;
@ -646,7 +646,7 @@ public class ExploreMapFragment extends CommonsDaggerSupportFragment
binding.bottomSheetDetailsBinding.commonsButton.setVisibility( binding.bottomSheetDetailsBinding.commonsButton.setVisibility(
place.hasCommonsLink() ? View.VISIBLE : View.GONE); place.hasCommonsLink() ? View.VISIBLE : View.GONE);
binding.bottomSheetDetailsBinding.commonsButton.setOnClickListener( binding.bottomSheetDetailsBinding.commonsButton.setOnClickListener(
view -> UrlUtils.handleWebUrl(getContext(), place.siteLinks.getCommonsLink())); view -> handleWebUrl(getContext(), place.siteLinks.getCommonsLink()));
int index = 0; int index = 0;
for (Media media : mediaList) { for (Media media : mediaList) {

View file

@ -116,12 +116,12 @@ import fr.free.nrw.commons.utils.LangCodeUtils.getLocalizedResources
import fr.free.nrw.commons.utils.PermissionUtils.PERMISSIONS_STORAGE import fr.free.nrw.commons.utils.PermissionUtils.PERMISSIONS_STORAGE
import fr.free.nrw.commons.utils.PermissionUtils.checkPermissionsAndPerformAction import fr.free.nrw.commons.utils.PermissionUtils.checkPermissionsAndPerformAction
import fr.free.nrw.commons.utils.PermissionUtils.hasPermission import fr.free.nrw.commons.utils.PermissionUtils.hasPermission
import fr.free.nrw.commons.utils.UrlUtils
import fr.free.nrw.commons.utils.ViewUtil import fr.free.nrw.commons.utils.ViewUtil
import fr.free.nrw.commons.utils.ViewUtil.showShortToast import fr.free.nrw.commons.utils.ViewUtil.showShortToast
import fr.free.nrw.commons.utils.ViewUtilWrapper import fr.free.nrw.commons.utils.ViewUtilWrapper
import fr.free.nrw.commons.utils.copyToClipboard import fr.free.nrw.commons.utils.copyToClipboard
import fr.free.nrw.commons.utils.handleGeoCoordinates import fr.free.nrw.commons.utils.handleGeoCoordinates
import fr.free.nrw.commons.utils.handleWebUrl
import fr.free.nrw.commons.utils.setUnderlinedText import fr.free.nrw.commons.utils.setUnderlinedText
import fr.free.nrw.commons.wikidata.mwapi.MwQueryPage.Revision import fr.free.nrw.commons.wikidata.mwapi.MwQueryPage.Revision
import io.reactivex.Observable import io.reactivex.Observable
@ -912,7 +912,7 @@ class MediaDetailFragment : CommonsDaggerSupportFragment(), CategoryEditHelper.C
private fun onMediaDetailLicenceClicked() { private fun onMediaDetailLicenceClicked() {
val url: String? = media!!.licenseUrl val url: String? = media!!.licenseUrl
if (!StringUtils.isBlank(url) && activity != null) { if (!StringUtils.isBlank(url) && activity != null) {
UrlUtils.handleWebUrl(activity, Uri.parse(url)) handleWebUrl(requireContext(), Uri.parse(url))
} else { } else {
viewUtil.showShortToast(requireActivity(), getString(R.string.null_url)) viewUtil.showShortToast(requireActivity(), getString(R.string.null_url))
} }
@ -1768,7 +1768,7 @@ class MediaDetailFragment : CommonsDaggerSupportFragment(), CategoryEditHelper.C
private fun onSeeMoreClicked() { private fun onSeeMoreClicked() {
if (binding.nominatedDeletionBanner.visibility == View.VISIBLE && activity != null) { if (binding.nominatedDeletionBanner.visibility == View.VISIBLE && activity != null) {
UrlUtils.handleWebUrl(activity, Uri.parse(media!!.pageTitle.mobileUri)) handleWebUrl(requireContext(), Uri.parse(media!!.pageTitle.mobileUri))
} }
} }

View file

@ -1,6 +1,6 @@
package fr.free.nrw.commons.media; package fr.free.nrw.commons.media;
import static fr.free.nrw.commons.utils.UrlUtils.handleWebUrl; import static fr.free.nrw.commons.utils.UrlUtilsKt.handleWebUrl;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;

View file

@ -15,8 +15,8 @@ import fr.free.nrw.commons.contributions.ContributionController
import fr.free.nrw.commons.kvstore.JsonKvStore import fr.free.nrw.commons.kvstore.JsonKvStore
import fr.free.nrw.commons.nearby.Place import fr.free.nrw.commons.nearby.Place
import fr.free.nrw.commons.utils.ActivityUtils import fr.free.nrw.commons.utils.ActivityUtils
import fr.free.nrw.commons.utils.UrlUtils
import fr.free.nrw.commons.utils.handleGeoCoordinates import fr.free.nrw.commons.utils.handleGeoCoordinates
import fr.free.nrw.commons.utils.handleWebUrl
import fr.free.nrw.commons.wikidata.WikidataConstants import fr.free.nrw.commons.wikidata.WikidataConstants
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
@ -114,7 +114,7 @@ class CommonPlaceClickActions
} }
private fun openWebView(link: Uri): Boolean { private fun openWebView(link: Uri): Boolean {
UrlUtils.handleWebUrl(activity, link) handleWebUrl(activity, link)
return true return true
} }

View file

@ -101,10 +101,10 @@ import fr.free.nrw.commons.utils.NearbyFABUtils.addAnchorToSmallFABs
import fr.free.nrw.commons.utils.NearbyFABUtils.removeAnchorFromFAB import fr.free.nrw.commons.utils.NearbyFABUtils.removeAnchorFromFAB
import fr.free.nrw.commons.utils.NetworkUtils.isInternetConnectionEstablished import fr.free.nrw.commons.utils.NetworkUtils.isInternetConnectionEstablished
import fr.free.nrw.commons.utils.SystemThemeUtils import fr.free.nrw.commons.utils.SystemThemeUtils
import fr.free.nrw.commons.utils.UrlUtils
import fr.free.nrw.commons.utils.ViewUtil.showLongToast import fr.free.nrw.commons.utils.ViewUtil.showLongToast
import fr.free.nrw.commons.utils.copyToClipboard import fr.free.nrw.commons.utils.copyToClipboard
import fr.free.nrw.commons.utils.handleGeoCoordinates import fr.free.nrw.commons.utils.handleGeoCoordinates
import fr.free.nrw.commons.utils.handleWebUrl
import fr.free.nrw.commons.utils.isMonumentsEnabled import fr.free.nrw.commons.utils.isMonumentsEnabled
import fr.free.nrw.commons.wikidata.WikidataConstants import fr.free.nrw.commons.wikidata.WikidataConstants
import fr.free.nrw.commons.wikidata.WikidataEditListener import fr.free.nrw.commons.wikidata.WikidataEditListener
@ -2860,7 +2860,7 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(),
R.drawable.ic_wikidata_logo_24dp -> { R.drawable.ic_wikidata_logo_24dp -> {
selectedPlace?.siteLinks?.wikidataLink?.let { selectedPlace?.siteLinks?.wikidataLink?.let {
UrlUtils.handleWebUrl(this.context, it) handleWebUrl(requireContext(), it)
} }
} }
@ -2878,13 +2878,13 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(),
R.drawable.ic_wikipedia_logo_24dp -> { R.drawable.ic_wikipedia_logo_24dp -> {
selectedPlace?.siteLinks?.wikipediaLink?.let { selectedPlace?.siteLinks?.wikipediaLink?.let {
UrlUtils.handleWebUrl(this.context, it) handleWebUrl(requireContext(), it)
} }
} }
R.drawable.ic_commons_icon_vector -> { R.drawable.ic_commons_icon_vector -> {
selectedPlace?.siteLinks?.commonsLink?.let { selectedPlace?.siteLinks?.commonsLink?.let {
UrlUtils.handleWebUrl(this.context, it) handleWebUrl(requireContext(), it)
} }
} }

View file

@ -20,8 +20,8 @@ import fr.free.nrw.commons.notification.models.Notification
import fr.free.nrw.commons.notification.models.NotificationType import fr.free.nrw.commons.notification.models.NotificationType
import fr.free.nrw.commons.theme.BaseActivity import fr.free.nrw.commons.theme.BaseActivity
import fr.free.nrw.commons.utils.NetworkUtils import fr.free.nrw.commons.utils.NetworkUtils
import fr.free.nrw.commons.utils.UrlUtils
import fr.free.nrw.commons.utils.ViewUtil import fr.free.nrw.commons.utils.ViewUtil
import fr.free.nrw.commons.utils.handleWebUrl
import io.reactivex.Observable import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
@ -197,7 +197,7 @@ class NotificationActivity : BaseActivity() {
private fun handleUrl(url: String?) { private fun handleUrl(url: String?) {
if (url.isNullOrEmpty()) return if (url.isNullOrEmpty()) return
UrlUtils.handleWebUrl(this, Uri.parse(url)) handleWebUrl(this, Uri.parse(url))
} }
private fun setItems(notificationList: List<Notification>?) { private fun setItems(notificationList: List<Notification>?) {

View file

@ -24,9 +24,9 @@ import fr.free.nrw.commons.profile.ProfileActivity
import fr.free.nrw.commons.profile.achievements.LevelController.LevelInfo.Companion.from import fr.free.nrw.commons.profile.achievements.LevelController.LevelInfo.Companion.from
import fr.free.nrw.commons.utils.ConfigUtils.isBetaFlavour import fr.free.nrw.commons.utils.ConfigUtils.isBetaFlavour
import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog
import fr.free.nrw.commons.utils.UrlUtils
import fr.free.nrw.commons.utils.ViewUtil.showDismissibleSnackBar import fr.free.nrw.commons.utils.ViewUtil.showDismissibleSnackBar
import fr.free.nrw.commons.utils.ViewUtil.showLongToast import fr.free.nrw.commons.utils.ViewUtil.showLongToast
import fr.free.nrw.commons.utils.handleWebUrl
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
import org.apache.commons.lang3.StringUtils import org.apache.commons.lang3.StringUtils
@ -524,7 +524,7 @@ class AchievementsFragment : CommonsDaggerSupportFragment(){
getString(R.string.ok), getString(R.string.ok),
getString(R.string.read_help_link), getString(R.string.read_help_link),
{}, {},
{ UrlUtils.handleWebUrl(requireContext(), Uri.parse(helpLinkUrl)) }, { handleWebUrl(requireContext(), Uri.parse(helpLinkUrl)) },
null null
) )
} }

View file

@ -50,8 +50,8 @@ import fr.free.nrw.commons.upload.LanguagesAdapter
import fr.free.nrw.commons.utils.DialogUtil import fr.free.nrw.commons.utils.DialogUtil
import fr.free.nrw.commons.utils.PermissionUtils import fr.free.nrw.commons.utils.PermissionUtils
import fr.free.nrw.commons.utils.StringUtil import fr.free.nrw.commons.utils.StringUtil
import fr.free.nrw.commons.utils.UrlUtils
import fr.free.nrw.commons.utils.ViewUtil import fr.free.nrw.commons.utils.ViewUtil
import fr.free.nrw.commons.utils.handleWebUrl
import java.util.Locale import java.util.Locale
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Named import javax.inject.Named
@ -238,7 +238,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
val betaTesterPreference: Preference? = findPreference("becomeBetaTester") val betaTesterPreference: Preference? = findPreference("becomeBetaTester")
betaTesterPreference?.setOnPreferenceClickListener { betaTesterPreference?.setOnPreferenceClickListener {
UrlUtils.handleWebUrl( handleWebUrl(
requireActivity(), requireActivity(),
Uri.parse(getString(R.string.beta_opt_in_link)) Uri.parse(getString(R.string.beta_opt_in_link))
) )
@ -298,7 +298,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
getString(R.string.ok), getString(R.string.ok),
getString(R.string.read_help_link), getString(R.string.read_help_link),
{ }, { },
{ UrlUtils.handleWebUrl(requireContext(), Uri.parse(GET_CONTENT_PICKER_HELP_URL)) }, { handleWebUrl(requireContext(), Uri.parse(GET_CONTENT_PICKER_HELP_URL)) },
null null
) )
} }

View file

@ -20,7 +20,7 @@ import fr.free.nrw.commons.databinding.FragmentMediaLicenseBinding
import fr.free.nrw.commons.upload.UploadActivity import fr.free.nrw.commons.upload.UploadActivity
import fr.free.nrw.commons.upload.UploadBaseFragment import fr.free.nrw.commons.upload.UploadBaseFragment
import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog
import fr.free.nrw.commons.utils.UrlUtils import fr.free.nrw.commons.utils.handleWebUrl
import fr.free.nrw.commons.utils.toLicenseName import fr.free.nrw.commons.utils.toLicenseName
import fr.free.nrw.commons.utils.toLicenseUrl import fr.free.nrw.commons.utils.toLicenseUrl
import timber.log.Timber import timber.log.Timber
@ -186,7 +186,7 @@ class MediaLicenseFragment : UploadBaseFragment(), MediaLicenseContract.View {
} }
private fun launchBrowser(hyperLink: String) = private fun launchBrowser(hyperLink: String) =
UrlUtils.handleWebUrl(context, Uri.parse(hyperLink)) handleWebUrl(requireContext(), Uri.parse(hyperLink))
override fun onDestroyView() { override fun onDestroyView() {
presenter.onDetachView() presenter.onDetachView()

View file

@ -1,36 +0,0 @@
package fr.free.nrw.commons.utils;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import androidx.browser.customtabs.CustomTabColorSchemeParams;
import androidx.browser.customtabs.CustomTabsIntent;
import androidx.core.content.ContextCompat;
import fr.free.nrw.commons.R;
import timber.log.Timber;
public final class UrlUtils {
/**
* Opens Custom Tab Activity with in-app browser for the specified URL.
* Launches intent for web URL
* @param context
* @param url
*/
public static void handleWebUrl(Context context, Uri url) {
Timber.d("Launching web url %s", url.toString());
final CustomTabColorSchemeParams color = new CustomTabColorSchemeParams.Builder()
.setToolbarColor(ContextCompat.getColor(context, R.color.primaryColor))
.setSecondaryToolbarColor(ContextCompat.getColor(context, R.color.primaryDarkColor))
.build();
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
builder.setDefaultColorSchemeParams(color);
builder.setExitAnimations(context, android.R.anim.slide_in_left, android.R.anim.slide_out_right);
CustomTabsIntent customTabsIntent = builder.build();
// Clear previous browser tasks, so that back/exit buttons work as intended.
customTabsIntent.intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
customTabsIntent.launchUrl(context, url);
}
}

View file

@ -0,0 +1,33 @@
package fr.free.nrw.commons.utils
import android.content.Context
import android.content.Intent
import android.net.Uri
import androidx.browser.customtabs.CustomTabColorSchemeParams
import androidx.browser.customtabs.CustomTabsIntent
import androidx.core.content.ContextCompat
import fr.free.nrw.commons.R
import timber.log.Timber
/**
* Opens Custom Tab Activity with in-app browser for the specified URL.
* Launches intent for web URL
*/
fun handleWebUrl(context: Context, url: Uri) {
Timber.d("Launching web url %s", url.toString())
val color = CustomTabColorSchemeParams.Builder()
.setToolbarColor(ContextCompat.getColor(context, R.color.primaryColor))
.setSecondaryToolbarColor(ContextCompat.getColor(context, R.color.primaryDarkColor))
.build()
val customTabsIntent = CustomTabsIntent.Builder()
.setDefaultColorSchemeParams(color)
.setExitAnimations(
context, android.R.anim.slide_in_left, android.R.anim.slide_out_right
).build()
// Clear previous browser tasks, so that back/exit buttons work as intended.
customTabsIntent.intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
customTabsIntent.launchUrl(context, url)
}