From 6a32454347e97fb4e37ede9332ce41f315a42434 Mon Sep 17 00:00:00 2001 From: Tanmay Gupta <119003089+savsch@users.noreply.github.com> Date: Sun, 22 Dec 2024 05:09:30 +0530 Subject: [PATCH 1/4] Nearby: Fix map moving by itself (#6061) fixes #6046 the OnFocusChangeListener for nearby place list items sometimes gets invoked when new items aer set, even when the list is hidden, if an item had previously been clicked in it. This in turn causes the onItemClick to be called. This commit adds a check to make sure the list is not hidden when onItemClick is invoked this way. --- .../fr/free/nrw/commons/nearby/PlaceAdapterDelegate.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/PlaceAdapterDelegate.kt b/app/src/main/java/fr/free/nrw/commons/nearby/PlaceAdapterDelegate.kt index a4ea3cd5b..cf5595ffc 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/PlaceAdapterDelegate.kt +++ b/app/src/main/java/fr/free/nrw/commons/nearby/PlaceAdapterDelegate.kt @@ -5,10 +5,12 @@ import android.view.View import android.view.View.GONE import android.view.View.INVISIBLE import android.view.View.VISIBLE +import android.widget.RelativeLayout import androidx.activity.result.ActivityResultLauncher import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.transition.TransitionManager +import com.google.android.material.bottomsheet.BottomSheetBehavior import com.hannesdorfmann.adapterdelegates4.dsl.AdapterDelegateViewBindingViewHolder import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding import fr.free.nrw.commons.R @@ -42,7 +44,10 @@ fun placeAdapterDelegate( root.setOnFocusChangeListener { view1: View?, hasFocus: Boolean -> if (!hasFocus && nearbyButtonLayout.buttonLayout.isShown) { nearbyButtonLayout.buttonLayout.visibility = GONE - } else if (hasFocus && !nearbyButtonLayout.buttonLayout.isShown) { + } else if (hasFocus && !nearbyButtonLayout.buttonLayout.isShown && + BottomSheetBehavior.from(root.parent.parent.parent as RelativeLayout).state != + BottomSheetBehavior.STATE_HIDDEN + ) { showOrHideAndScrollToIfLast() onItemClick?.invoke(item) } From d0bde4a3feb3079e2a09555ae3df305392c84084 Mon Sep 17 00:00:00 2001 From: Neel Doshi <60827173+neeldoshii@users.noreply.github.com> Date: Sun, 22 Dec 2024 11:14:57 +0530 Subject: [PATCH 2/4] Replaces Log to Timber (#6062) --- .../nrw/commons/bookmarks/BookmarkListRootFragment.java | 6 +++--- .../free/nrw/commons/contributions/SetWallpaperWorker.java | 4 ---- .../java/fr/free/nrw/commons/logging/FileLoggingTree.kt | 1 - 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java b/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java index 8b66a104a..816ca9474 100644 --- a/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java @@ -2,7 +2,6 @@ package fr.free.nrw.commons.bookmarks; import android.content.Context; import android.os.Bundle; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -26,6 +25,7 @@ import fr.free.nrw.commons.media.MediaDetailPagerFragment; import fr.free.nrw.commons.navtab.NavTab; import java.util.ArrayList; import java.util.Iterator; +import timber.log.Timber; public class BookmarkListRootFragment extends CommonsDaggerSupportFragment implements FragmentManager.OnBackStackChangedListener, @@ -136,7 +136,7 @@ public class BookmarkListRootFragment extends CommonsDaggerSupportFragment imple @Override public void onMediaClicked(int position) { - Log.d("deneme8", "on media clicked"); + Timber.tag("deneme8").d("on media clicked"); /*container.setVisibility(View.VISIBLE); ((BookmarkFragment)getParentFragment()).tabLayout.setVisibility(View.GONE); mediaDetails = new MediaDetailPagerFragment(false, true, position); @@ -244,7 +244,7 @@ public class BookmarkListRootFragment extends CommonsDaggerSupportFragment imple @Override public void onItemClick(AdapterView parent, View view, int position, long id) { - Log.d("deneme8", "on media clicked"); + Timber.tag("deneme8").d("on media clicked"); binding.exploreContainer.setVisibility(View.VISIBLE); ((BookmarkFragment) getParentFragment()).binding.tabLayout.setVisibility(View.GONE); mediaDetails = MediaDetailPagerFragment.newInstance(false, true); diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/SetWallpaperWorker.java b/app/src/main/java/fr/free/nrw/commons/contributions/SetWallpaperWorker.java index c9b55a83c..0f18c300b 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/SetWallpaperWorker.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/SetWallpaperWorker.java @@ -5,14 +5,11 @@ import android.app.NotificationManager; import android.app.WallpaperManager; import android.content.Context; import android.graphics.Bitmap; -import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Build; -import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.app.NotificationCompat; -import androidx.work.Data; import androidx.work.Worker; import androidx.work.WorkerParameters; import com.facebook.common.executors.CallerThreadExecutor; @@ -25,7 +22,6 @@ import com.facebook.imagepipeline.image.CloseableImage; import com.facebook.imagepipeline.request.ImageRequest; import com.facebook.imagepipeline.request.ImageRequestBuilder; import fr.free.nrw.commons.R; -import java.io.IOException; import timber.log.Timber; public class SetWallpaperWorker extends Worker { diff --git a/app/src/main/java/fr/free/nrw/commons/logging/FileLoggingTree.kt b/app/src/main/java/fr/free/nrw/commons/logging/FileLoggingTree.kt index 5c6c55f1a..3cfb92350 100644 --- a/app/src/main/java/fr/free/nrw/commons/logging/FileLoggingTree.kt +++ b/app/src/main/java/fr/free/nrw/commons/logging/FileLoggingTree.kt @@ -5,7 +5,6 @@ import android.util.Log import org.slf4j.Logger import org.slf4j.LoggerFactory -import java.util.Locale import java.util.concurrent.Executor import ch.qos.logback.classic.LoggerContext From f1e8e48769a233f9437d73f8244b5a0104a5e2c9 Mon Sep 17 00:00:00 2001 From: Neel Doshi <60827173+neeldoshii@users.noreply.github.com> Date: Sun, 22 Dec 2024 18:35:25 +0530 Subject: [PATCH 3/4] Removed deneme8 Timber tag (#6065) --- .../free/nrw/commons/bookmarks/BookmarkListRootFragment.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java b/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java index 816ca9474..ca7dd3f3b 100644 --- a/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java @@ -136,7 +136,7 @@ public class BookmarkListRootFragment extends CommonsDaggerSupportFragment imple @Override public void onMediaClicked(int position) { - Timber.tag("deneme8").d("on media clicked"); + Timber.d("on media clicked"); /*container.setVisibility(View.VISIBLE); ((BookmarkFragment)getParentFragment()).tabLayout.setVisibility(View.GONE); mediaDetails = new MediaDetailPagerFragment(false, true, position); @@ -244,7 +244,7 @@ public class BookmarkListRootFragment extends CommonsDaggerSupportFragment imple @Override public void onItemClick(AdapterView parent, View view, int position, long id) { - Timber.tag("deneme8").d("on media clicked"); + Timber.d("on media clicked"); binding.exploreContainer.setVisibility(View.VISIBLE); ((BookmarkFragment) getParentFragment()).binding.tabLayout.setVisibility(View.GONE); mediaDetails = MediaDetailPagerFragment.newInstance(false, true); From b55c61ddb8430c245fef9eef1a138a2d46b80802 Mon Sep 17 00:00:00 2001 From: Sonal Yadav Date: Sun, 22 Dec 2024 19:44:20 +0530 Subject: [PATCH 4/4] Fixed the migrations warning under Kotlin header #13282 (#6060) * Fixed Migration warnings under Kotlin header * suppresses Lint --------- Co-authored-by: Nicolas Raoul --- .../fr/free/nrw/commons/auth/LoginActivity.kt | 2 +- .../ui/selector/CustomSelectorActivity.kt | 2 +- .../description/DescriptionEditActivity.kt | 2 +- .../nrw/commons/mwapi/OkHttpJsonApiClient.kt | 2 +- .../fr/free/nrw/commons/upload/FileProcessor.kt | 2 +- .../fr/free/nrw/commons/upload/UploadResult.kt | 2 +- .../nrw/commons/upload/worker/UploadWorker.kt | 16 ++++++++++------ .../nrw/commons/utils/CustomSelectorUtils.kt | 2 +- .../fr/free/nrw/commons/utils/DownloadUtils.kt | 2 +- .../nrw/commons/wikidata/WikidataEditService.kt | 6 +++++- .../locations/BookmarkLocationControllerTest.kt | 2 +- .../free/nrw/commons/kvstore/JsonKvStoreTest.kt | 4 ++-- .../nearby/NearbyParentFragmentPresenterTest.kt | 4 ++-- 13 files changed, 28 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.kt b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.kt index 9d7353d4f..47ee8588b 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.kt +++ b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.kt @@ -146,7 +146,7 @@ class LoginActivity : AccountAuthenticatorActivity() { loginTwoFactor.removeTextChangedListener(textWatcher) } delegate.onDestroy() - loginClient?.cancel() + loginClient.cancel() binding = null super.onDestroy() } diff --git a/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/CustomSelectorActivity.kt b/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/CustomSelectorActivity.kt index 6c6d7e53f..d6be68ff1 100644 --- a/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/CustomSelectorActivity.kt +++ b/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/CustomSelectorActivity.kt @@ -250,7 +250,7 @@ class CustomSelectorActivity : val selectedImages: ArrayList = result.data!! .getParcelableArrayListExtra(CustomSelectorConstants.NEW_SELECTED_IMAGES)!! - viewModel?.selectedImages?.value = selectedImages + viewModel.selectedImages?.value = selectedImages } } diff --git a/app/src/main/java/fr/free/nrw/commons/description/DescriptionEditActivity.kt b/app/src/main/java/fr/free/nrw/commons/description/DescriptionEditActivity.kt index 32c1e5829..3c6ad8653 100644 --- a/app/src/main/java/fr/free/nrw/commons/description/DescriptionEditActivity.kt +++ b/app/src/main/java/fr/free/nrw/commons/description/DescriptionEditActivity.kt @@ -240,7 +240,7 @@ class DescriptionEditActivity : applicationContext, media, updatedWikiText, - )?.subscribeOn(Schedulers.io()) + ).subscribeOn(Schedulers.io()) ?.observeOn(AndroidSchedulers.mainThread()) ?.subscribe(Consumer { s: Boolean? -> Timber.d("Descriptions are added.") }) ?.let { diff --git a/app/src/main/java/fr/free/nrw/commons/mwapi/OkHttpJsonApiClient.kt b/app/src/main/java/fr/free/nrw/commons/mwapi/OkHttpJsonApiClient.kt index 71ea1d692..415d31671 100644 --- a/app/src/main/java/fr/free/nrw/commons/mwapi/OkHttpJsonApiClient.kt +++ b/app/src/main/java/fr/free/nrw/commons/mwapi/OkHttpJsonApiClient.kt @@ -175,7 +175,7 @@ class OkHttpJsonApiClient @Inject constructor( .build() val response: Response = okHttpClient.newCall(request).execute() if (response.body != null && response.isSuccessful) { - val json: String = response.body!!.string() ?: return@fromCallable null + val json: String = response.body!!.string() try { return@fromCallable gson.fromJson( json, diff --git a/app/src/main/java/fr/free/nrw/commons/upload/FileProcessor.kt b/app/src/main/java/fr/free/nrw/commons/upload/FileProcessor.kt index d51ab1796..6bdcbdda7 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/FileProcessor.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/FileProcessor.kt @@ -86,7 +86,7 @@ class FileProcessor */ fun getExifTagsToRedact(): Set { val prefManageEXIFTags = - defaultKvStore.getStringSet(Prefs.MANAGED_EXIF_TAGS) ?: emptySet() + defaultKvStore.getStringSet(Prefs.MANAGED_EXIF_TAGS) val redactTags: Set = context.resources.getStringArray(R.array.pref_exifTag_values).toSet() return redactTags - prefManageEXIFTags diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadResult.kt b/app/src/main/java/fr/free/nrw/commons/upload/UploadResult.kt index dfd8cc2ea..46a0e9dce 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadResult.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadResult.kt @@ -14,7 +14,7 @@ data class UploadResult( constructor(parcel: Parcel) : this( parcel.readString() ?: "", parcel.readString() ?: "", - parcel.readInt() ?: 0, + parcel.readInt(), parcel.readString() ?: "", ) { } diff --git a/app/src/main/java/fr/free/nrw/commons/upload/worker/UploadWorker.kt b/app/src/main/java/fr/free/nrw/commons/upload/worker/UploadWorker.kt index ae2c461f8..6787f284e 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/worker/UploadWorker.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/worker/UploadWorker.kt @@ -121,6 +121,7 @@ class UploadWorker( private var notificationFinishingTitle: String?, var contribution: Contribution?, ) { + @SuppressLint("MissingPermission") fun onProgress( transferred: Long, total: Long, @@ -175,6 +176,7 @@ class UploadWorker( .setProgress(100, 0, true) .setOngoing(true) + @SuppressLint("MissingPermission") override suspend fun doWork(): Result { try { var totalUploadsStarted = 0 @@ -298,7 +300,7 @@ class UploadWorker( * Upload the contribution * @param contribution */ - @SuppressLint("StringFormatInvalid", "CheckResult") + @SuppressLint("StringFormatInvalid", "CheckResult", "MissingPermission") private suspend fun uploadContribution(contribution: Contribution) { if (contribution.localUri == null || contribution.localUri.path == null) { Timber.e("""upload: ${contribution.media.filename} failed, file path is null""") @@ -439,7 +441,7 @@ class UploadWorker( username, ) CommonsApplication - .instance!! + .instance .clearApplicationData(appContext, logoutListener) } } @@ -581,7 +583,7 @@ class UploadWorker( * Notify that the current upload has succeeded * @param contribution */ - @SuppressLint("StringFormatInvalid") + @SuppressLint("StringFormatInvalid", "MissingPermission") private fun showSuccessNotification(contribution: Contribution) { val displayTitle = contribution.media.displayTitle contribution.state = Contribution.STATE_COMPLETED @@ -606,7 +608,7 @@ class UploadWorker( * Notify that the current upload has failed * @param contribution */ - @SuppressLint("StringFormatInvalid") + @SuppressLint("StringFormatInvalid", "MissingPermission") private fun showFailedNotification(contribution: Contribution) { val displayTitle = contribution.media.displayTitle currentNotification.setContentIntent(getPendingIntent(UploadProgressActivity::class.java)) @@ -626,7 +628,7 @@ class UploadWorker( ) } - @SuppressLint("StringFormatInvalid") + @SuppressLint("StringFormatInvalid", "MissingPermission") private fun showInvalidLoginNotification(contribution: Contribution) { val displayTitle = contribution.media.displayTitle currentNotification @@ -648,7 +650,7 @@ class UploadWorker( /** * Shows a notification for a failed contribution upload. */ - @SuppressLint("StringFormatInvalid") + @SuppressLint("StringFormatInvalid", "MissingPermission") private fun showErrorNotification(contribution: Contribution) { val displayTitle = contribution.media.displayTitle currentNotification @@ -671,6 +673,7 @@ class UploadWorker( * Notify that the current upload is paused * @param contribution */ + @SuppressLint("MissingPermission") private fun showPausedNotification(contribution: Contribution) { val displayTitle = contribution.media.displayTitle @@ -695,6 +698,7 @@ class UploadWorker( * Notify that the current upload is cancelled * @param contribution */ + @SuppressLint("MissingPermission") private fun showCancelledNotification(contribution: Contribution) { val displayTitle = contribution.media.displayTitle currentNotification.setContentIntent(getPendingIntent(UploadProgressActivity::class.java)) diff --git a/app/src/main/java/fr/free/nrw/commons/utils/CustomSelectorUtils.kt b/app/src/main/java/fr/free/nrw/commons/utils/CustomSelectorUtils.kt index 62bd3f1a9..79cf87e53 100644 --- a/app/src/main/java/fr/free/nrw/commons/utils/CustomSelectorUtils.kt +++ b/app/src/main/java/fr/free/nrw/commons/utils/CustomSelectorUtils.kt @@ -55,7 +55,7 @@ class CustomSelectorUtils { val uploadableFile = PickedFiles.pickedExistingPicture(context, image.uri) val exifInterface: ExifInterface? = try { - ExifInterface(uploadableFile.file!!) + ExifInterface(uploadableFile.file) } catch (e: IOException) { Timber.e(e) null diff --git a/app/src/main/java/fr/free/nrw/commons/utils/DownloadUtils.kt b/app/src/main/java/fr/free/nrw/commons/utils/DownloadUtils.kt index 08c030e33..db5df817e 100644 --- a/app/src/main/java/fr/free/nrw/commons/utils/DownloadUtils.kt +++ b/app/src/main/java/fr/free/nrw/commons/utils/DownloadUtils.kt @@ -62,6 +62,6 @@ object DownloadUtils { ) { val systemService = activity.getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager - systemService?.enqueue(req) + systemService.enqueue(req) } } diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.kt b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.kt index 396f92824..0b49c03e9 100644 --- a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.kt +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.kt @@ -2,6 +2,8 @@ package fr.free.nrw.commons.wikidata import android.annotation.SuppressLint import android.content.Context +import android.os.Build +import androidx.annotation.RequiresApi import com.google.gson.Gson import fr.free.nrw.commons.R import fr.free.nrw.commons.contributions.Contribution @@ -111,12 +113,14 @@ class WikidataEditService @Inject constructor( .blockingFirst() } + @SuppressLint("StringFormatInvalid") private fun showSuccessToast(wikiItemName: String) { val successStringTemplate = context.getString(R.string.successful_wikidata_edit) val successMessage = String.format(Locale.getDefault(), successStringTemplate, wikiItemName) showLongToast(context, successMessage) } + @RequiresApi(Build.VERSION_CODES.N) @SuppressLint("CheckResult") private fun addCaption( fileEntityId: Long, languageCode: String, @@ -176,7 +180,7 @@ class WikidataEditService @Inject constructor( SnakPartial( "value", MEDIA_LEGENDS.propertyName, MonoLingualText( - WikiBaseMonolingualTextValue(value!!, key!!) + WikiBaseMonolingualTextValue(value, key) ) ) ) diff --git a/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationControllerTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationControllerTest.kt index d0db8e037..3fd21c25f 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationControllerTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationControllerTest.kt @@ -68,7 +68,7 @@ class BookmarkLocationControllerTest { @Test fun loadBookmarkedLocations() { val bookmarkedLocations = - bookmarkLocationsController!!.loadFavoritesLocations() + bookmarkLocationsController.loadFavoritesLocations() Assert.assertEquals(2, bookmarkedLocations.size.toLong()) } } diff --git a/app/src/test/kotlin/fr/free/nrw/commons/kvstore/JsonKvStoreTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/kvstore/JsonKvStoreTest.kt index 0a0bdfc47..a49905c56 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/kvstore/JsonKvStoreTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/kvstore/JsonKvStoreTest.kt @@ -50,7 +50,7 @@ class JsonKvStoreTest { fun getJson() { whenever(prefs.getString("key", null)).thenReturn(expected) - val result = store.getJson("key", Person::class.java) + val result = store.getJson("key") Assert.assertEquals(testData, result) } @@ -70,7 +70,7 @@ class JsonKvStoreTest { fun getJsonHandlesMalformedJson() { whenever(prefs.getString("key", null)).thenReturn("junk") - val result = store.getJson("key", Person::class.java) + val result = store.getJson("key") Assert.assertNull(result) } diff --git a/app/src/test/kotlin/fr/free/nrw/commons/nearby/NearbyParentFragmentPresenterTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/nearby/NearbyParentFragmentPresenterTest.kt index fd9fdfd55..cfd2a818d 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/nearby/NearbyParentFragmentPresenterTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/nearby/NearbyParentFragmentPresenterTest.kt @@ -305,7 +305,7 @@ class NearbyParentFragmentPresenterTest { whenever(nearbyParentFragmentView.mapFocus).thenReturn(LatLng(2.0, 1.0, 0.0F)) // 111.19 km real distance, return false if 148306.444306 > currentLocationSearchRadius NearbyController.currentLocationSearchRadius = 148306.0 - val isClose = nearbyPresenter?.searchCloseToCurrentLocation() + val isClose = nearbyPresenter.searchCloseToCurrentLocation() assertFalse(isClose!!.equals(false)) } @@ -317,7 +317,7 @@ class NearbyParentFragmentPresenterTest { whenever(nearbyParentFragmentView.getCameraTarget()).thenReturn(LatLng(2.0, 1.0, 0.0F)) // 111.19 km real distance, return false if 148253.333 > currentLocationSearchRadius NearbyController.currentLocationSearchRadius = 148307.0 - val isClose = nearbyPresenter?.searchCloseToCurrentLocation() + val isClose = nearbyPresenter.searchCloseToCurrentLocation() assertTrue(isClose!!) }