From 8f8dcc0d52d21179ad48fb6a72b3ac825b01048c Mon Sep 17 00:00:00 2001 From: Kartikay Kaushik <93285364+kartikaykaushik14@users.noreply.github.com> Date: Thu, 30 Mar 2023 20:31:58 -0400 Subject: [PATCH] Fix #5182 Switch From Mapbox to MapLibre (#5184) * Fix #5182 Switch From Mapbox to MapLibre * Fix #5182 Switch From Mapbox to MapLibre - Resolved requestFeature() issue * Fix #5182 Switch From Mapbox to MapLibre - Resolved dark mode issue on two screens * Fix #5182 Switch From Mapbox to MapLibre - Resolved dark mode issue on additional screens * Fix #5182 Switch From Mapbox to MapLibre - Resolved dark mode issue on notification screen * Fix #5182 Switch From Mapbox to MapLibre - Test errors --- app/build.gradle | 10 ++++++---- .../free/nrw/commons/CommonsApplication.java | 17 ++--------------- .../LocationPickerActivity.java | 12 ++++++------ .../CustomSelectorViewModelFactory.kt | 2 +- .../explore/map/ExploreMapFragment.java | 4 +++- .../fragments/NearbyParentFragment.java | 2 +- .../fr/free/nrw/commons/settings/Prefs.java | 1 - .../commons/settings/SettingsFragment.java | 16 ---------------- .../upload/UploadMediaDetailAdapter.java | 4 ++-- .../nrw/commons/upload/worker/UploadWorker.kt | 2 +- app/src/main/res/layout/activity_about.xml | 1 + .../main/res/layout/activity_notification.xml | 3 ++- app/src/main/res/layout/activity_review.xml | 3 ++- app/src/main/res/layout/activity_settings.xml | 1 + .../res/layout/content_location_picker.xml | 2 +- .../res/layout/custom_selector_toolbar.xml | 3 ++- .../main/res/layout/fragment_achievements.xml | 3 ++- .../res/layout/fragment_advance_query.xml | 2 +- .../main/res/layout/fragment_leaderboard.xml | 3 ++- .../res/layout/fragment_media_license.xml | 5 +++-- .../fragment_upload_media_detail_fragment.xml | 5 +++-- .../res/layout/toolbar_location_picker.xml | 2 +- .../res/layout/upload_categories_fragment.xml | 2 +- .../res/layout/upload_depicts_fragment.xml | 2 +- .../LocationPickerActivityUnitTests.kt | 19 ++++++++++++++++--- .../settings/SettingsFragmentUnitTests.kt | 11 ----------- gradle.properties | 3 ++- 27 files changed, 63 insertions(+), 77 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 23044d681..9f11249d9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -38,10 +38,10 @@ dependencies { implementation 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar' implementation 'com.github.chrisbanes:PhotoView:2.0.0' implementation 'com.github.pedrovgs:renderers:3.3.3' - implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:9.2.1' - implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-localization-v9:0.12.0' - implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-scalebar-v9:0.5.0' - implementation 'com.mapbox.mapboxsdk:mapbox-android-telemetry:7.0.0' + implementation "org.maplibre.gl:android-sdk:$MAPLIBRE_VERSION" + implementation 'org.maplibre.gl:android-plugin-scalebar-v9:1.0.0' + + implementation 'com.jakewharton.timber:timber:4.7.1' implementation 'com.github.deano2390:MaterialShowcaseView:1.2.0' implementation 'com.dinuscxj:circleprogressbar:1.1.1' implementation 'com.karumi:dexter:5.0.0' @@ -246,6 +246,8 @@ android { configurations.all { resolutionStrategy.force 'androidx.annotation:annotation:1.1.0' + resolutionStrategy.force 'com.jakewharton.timber:timber:4.7.1' + resolutionStrategy.force 'androidx.fragment:fragment:1.3.6' exclude module: 'okhttp-ws' } flavorDimensions 'tier' diff --git a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java index 5305c6c7c..bce49fd5a 100644 --- a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java +++ b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java @@ -24,6 +24,7 @@ import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.imagepipeline.core.ImagePipeline; import com.facebook.imagepipeline.core.ImagePipelineConfig; import com.mapbox.mapboxsdk.Mapbox; +import com.mapbox.mapboxsdk.WellKnownTileServer; import fr.free.nrw.commons.auth.SessionManager; import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table; import fr.free.nrw.commons.bookmarks.locations.BookmarkLocationsDao; @@ -53,7 +54,6 @@ import java.util.Map; import java.util.Set; import javax.inject.Inject; import javax.inject.Named; -import leakcanary.ObjectWatcher; import org.acra.ACRA; import org.acra.annotation.AcraCore; import org.acra.annotation.AcraDialog; @@ -121,8 +121,6 @@ public class CommonsApplication extends MultiDexApplication { * Constants End */ - private ObjectWatcher objectWatcher; - private static CommonsApplication INSTANCE; public static CommonsApplication getInstance() { @@ -152,7 +150,7 @@ public class CommonsApplication extends MultiDexApplication { INSTANCE = this; ACRA.init(this); - Mapbox.getInstance(this, getString(R.string.mapbox_commons_app_token)); + Mapbox.getInstance(this, getString(R.string.mapbox_commons_app_token), WellKnownTileServer.Mapbox); ApplicationlessInjection .getInstance(this) @@ -268,17 +266,6 @@ public class CommonsApplication extends MultiDexApplication { + " (https://mediawiki.org/wiki/Apps/Commons) Android/" + Build.VERSION.RELEASE; } - /** - * Provides a way to get member objectWatcher - * - * @param context Application context - * @return application member objectWatcher - */ - public static ObjectWatcher getObjectWatcher(Context context) { - CommonsApplication application = (CommonsApplication) context.getApplicationContext(); - return application.objectWatcher; - } - /** * clears data of current application * diff --git a/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerActivity.java b/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerActivity.java index ce08baadf..8e3a928db 100644 --- a/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerActivity.java @@ -31,9 +31,6 @@ import androidx.constraintlayout.widget.ConstraintLayout; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import com.google.android.material.floatingactionbutton.FloatingActionButton; -import com.mapbox.android.core.location.LocationEngineCallback; -import com.mapbox.android.core.location.LocationEngineResult; -import com.mapbox.android.core.permissions.PermissionsManager; import com.mapbox.geojson.Point; import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.camera.CameraPosition.Builder; @@ -41,8 +38,11 @@ import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.location.LocationComponent; import com.mapbox.mapboxsdk.location.LocationComponentActivationOptions; +import com.mapbox.mapboxsdk.location.engine.LocationEngineCallback; +import com.mapbox.mapboxsdk.location.engine.LocationEngineResult; import com.mapbox.mapboxsdk.location.modes.CameraMode; import com.mapbox.mapboxsdk.location.modes.RenderMode; +import com.mapbox.mapboxsdk.location.permissions.PermissionsManager; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraIdleListener; @@ -142,9 +142,9 @@ public class LocationPickerActivity extends BaseActivity implements OnMapReadyCa @Override protected void onCreate(@Nullable final Bundle savedInstanceState) { + getWindow().requestFeature(Window.FEATURE_ACTION_BAR); super.onCreate(savedInstanceState); - getWindow().requestFeature(Window.FEATURE_ACTION_BAR); final ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.hide(); @@ -194,7 +194,7 @@ public class LocationPickerActivity extends BaseActivity implements OnMapReadyCa * Clicking back button destroy locationPickerActivity */ private void addBackButtonListener() { - final ImageView backButton = findViewById(R.id.mapbox_place_picker_toolbar_back_button); + final ImageView backButton = findViewById(R.id.maplibre_place_picker_toolbar_back_button); backButton.setOnClickListener(view -> finish()); } @@ -238,7 +238,7 @@ public class LocationPickerActivity extends BaseActivity implements OnMapReadyCa @Override public void onMapReady(final MapboxMap mapboxMap) { this.mapboxMap = mapboxMap; - mapboxMap.setStyle(Style.MAPBOX_STREETS, this::onStyleLoaded); + mapboxMap.setStyle(Style.getPredefinedStyle("Streets"), this::onStyleLoaded); } /** diff --git a/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/CustomSelectorViewModelFactory.kt b/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/CustomSelectorViewModelFactory.kt index d7a7d42f4..616c5e83f 100644 --- a/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/CustomSelectorViewModelFactory.kt +++ b/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/CustomSelectorViewModelFactory.kt @@ -10,7 +10,7 @@ import javax.inject.Inject */ class CustomSelectorViewModelFactory @Inject constructor(val context: Context,val imageFileLoader: ImageFileLoader) : ViewModelProvider.Factory { - override fun create(modelClass: Class) : CustomSelectorViewModel { + override fun create(modelClass: Class) : CustomSelectorViewModel { return CustomSelectorViewModel(context,imageFileLoader) as CustomSelectorViewModel } diff --git a/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapFragment.java b/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapFragment.java index 83a2d14dd..df3412291 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapFragment.java @@ -81,6 +81,7 @@ import fr.free.nrw.commons.utils.ViewUtil; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; +import java.util.Arrays; import java.util.List; import javax.inject.Inject; import javax.inject.Named; @@ -189,7 +190,8 @@ public class ExploreMapFragment extends CommonsDaggerSupportFragment mapBox = mapBoxMap; initViews(); presenter.setActionListeners(applicationKvStore); - mapBoxMap.setStyle(isDarkTheme? Style.DARK:Style.OUTDOORS, style -> { + mapBoxMap.setStyle(isDarkTheme? Style.getPredefinedStyle("Dark"): + Style.getPredefinedStyle("Outdoors"), style -> { final UiSettings uiSettings = mapBoxMap.getUiSettings(); uiSettings.setCompassGravity(Gravity.BOTTOM | Gravity.LEFT); uiSettings.setCompassMargins(12, 0, 0, 24); diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java index 6fd89a989..a5274fdbc 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java @@ -316,7 +316,7 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment initViews(); presenter.setActionListeners(applicationKvStore); initNearbyFilter(); - mapBoxMap.setStyle(isDarkTheme?Style.DARK:Style.OUTDOORS, style -> { + mapBoxMap.setStyle(isDarkTheme?Style.getPredefinedStyle("Dark"):Style.getPredefinedStyle("Outdoors"), style -> { final UiSettings uiSettings = mapBoxMap.getUiSettings(); uiSettings.setCompassGravity(Gravity.BOTTOM | Gravity.LEFT); uiSettings.setCompassMargins(12, 0, 0, 24); diff --git a/app/src/main/java/fr/free/nrw/commons/settings/Prefs.java b/app/src/main/java/fr/free/nrw/commons/settings/Prefs.java index 0867aebbc..334214347 100644 --- a/app/src/main/java/fr/free/nrw/commons/settings/Prefs.java +++ b/app/src/main/java/fr/free/nrw/commons/settings/Prefs.java @@ -10,7 +10,6 @@ public class Prefs { public static final String DESCRIPTION_LANGUAGE = "languageDescription"; public static final String APP_UI_LANGUAGE = "appUiLanguage"; public static final String KEY_THEME_VALUE = "appThemePref"; - public static final String TELEMETRY_PREFERENCE = "telemetryPref"; public static class Licenses { public static final String CC_BY_SA_3 = "CC BY-SA 3.0"; diff --git a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java index 10ca6a479..3df477f55 100644 --- a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java @@ -31,7 +31,6 @@ import com.karumi.dexter.Dexter; import com.karumi.dexter.listener.PermissionGrantedResponse; import com.karumi.dexter.listener.single.BasePermissionListener; import com.mapbox.mapboxsdk.Mapbox; -import com.mapbox.mapboxsdk.maps.TelemetryDefinition; import fr.free.nrw.commons.R; import fr.free.nrw.commons.Utils; import fr.free.nrw.commons.campaigns.CampaignView; @@ -161,21 +160,6 @@ public class SettingsFragment extends PreferenceFragmentCompat { findPreference(CampaignView.CAMPAIGNS_DEFAULT_PREFERENCE).setEnabled(false); findPreference("managed_exif_tags").setEnabled(false); } - - // Opting out of telemetry due to app's privacy policy - telemetryOptInOut(false); - defaultKvStore.putBoolean(Prefs.TELEMETRY_PREFERENCE,false); - } - - /** - * Opt in or out of MapBox telemetry - * @param shouldOptIn - */ - private void telemetryOptInOut(boolean shouldOptIn){ - TelemetryDefinition telemetry = Mapbox.getTelemetry(); - if (telemetry != null) { - telemetry.setUserTelemetryRequestState(shouldOptIn); - } } @Override diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailAdapter.java b/app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailAdapter.java index 48ee2876b..835187a6f 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailAdapter.java @@ -174,7 +174,7 @@ public class UploadMediaDetailAdapter extends RecyclerView.Adapter callback.showAlert(R.string.media_detail_caption, R.string.caption_info)); Objects.requireNonNull(captionInputLayout.getEditText()).setFilters(new InputFilter[] { @@ -182,7 +182,7 @@ public class UploadMediaDetailAdapter extends RecyclerView.Adapter callback.showAlert(R.string.media_detail_description, R.string.description_info)); 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 738fb2216..6a4497ea1 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 @@ -11,7 +11,7 @@ import androidx.core.app.NotificationManagerCompat import androidx.work.CoroutineWorker import androidx.work.Data import androidx.work.WorkerParameters -import com.mapbox.mapboxsdk.plugins.localization.BuildConfig +import androidx.multidex.BuildConfig import dagger.android.ContributesAndroidInjector import fr.free.nrw.commons.CommonsApplication import fr.free.nrw.commons.Media diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml index c509dad71..b0f34d5a8 100644 --- a/app/src/main/res/layout/activity_about.xml +++ b/app/src/main/res/layout/activity_about.xml @@ -4,6 +4,7 @@ android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="?attr/mainBackground" android:orientation="vertical"> + android:layout_height="match_parent" + android:background="?attr/mainBackground"> + android:layout_height="match_parent" + android:background="?attr/mainBackground"> + app:layout_constraintTop_toTopOf="parent" + android:background="?attr/mainBackground"> + android:layout_height="match_parent" + android:background="?attr/achievementBackground"> diff --git a/app/src/main/res/layout/fragment_leaderboard.xml b/app/src/main/res/layout/fragment_leaderboard.xml index 1e76e21b1..4b8ab700f 100644 --- a/app/src/main/res/layout/fragment_leaderboard.xml +++ b/app/src/main/res/layout/fragment_leaderboard.xml @@ -4,7 +4,8 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="match_parent" + android:background="?attr/achievementBackground"> + android:padding="@dimen/standard_gap" + android:background="?attr/achievementBackground"> + android:src="@drawable/maplibre_info_icon_default"/> + android:layout_height="match_parent" + android:background="?attr/achievementBackground"> + android:src="@drawable/maplibre_info_icon_default"/> + android:src="@drawable/maplibre_info_icon_default" /> + android:src="@drawable/maplibre_info_icon_default" />