mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 20:33:53 +01:00
Resolve conflicts and attach the commons.db with common_room.db during the migration to persist the data
This commit is contained in:
parent
55fc6352f8
commit
17043a1064
6 changed files with 64 additions and 2447 deletions
|
|
@ -95,17 +95,17 @@ class BookmarkLocationsFragment : DaggerFragment() {
|
||||||
val areAllGranted = result.values.all { it }
|
val areAllGranted = result.values.all { it }
|
||||||
|
|
||||||
if (areAllGranted) {
|
if (areAllGranted) {
|
||||||
contributionController.locationPermissionCallback.onLocationPermissionGranted()
|
contributionController.locationPermissionCallback?.onLocationPermissionGranted()
|
||||||
} else {
|
} else {
|
||||||
if (shouldShowRequestPermissionRationale(permission.ACCESS_FINE_LOCATION)) {
|
if (shouldShowRequestPermissionRationale(permission.ACCESS_FINE_LOCATION)) {
|
||||||
contributionController.handleShowRationaleFlowCameraLocation(
|
contributionController.handleShowRationaleFlowCameraLocation(
|
||||||
activity,
|
requireActivity(),
|
||||||
inAppCameraLocationPermissionLauncher,
|
inAppCameraLocationPermissionLauncher,
|
||||||
cameraPickLauncherForResult
|
cameraPickLauncherForResult
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
contributionController.locationPermissionCallback
|
contributionController.locationPermissionCallback
|
||||||
.onLocationPermissionDenied(
|
?.onLocationPermissionDenied(
|
||||||
getString(R.string.in_app_camera_location_permission_denied)
|
getString(R.string.in_app_camera_location_permission_denied)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ import fr.free.nrw.commons.wikidata.WikidataEditListenerImpl
|
||||||
import io.reactivex.Scheduler
|
import io.reactivex.Scheduler
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.schedulers.Schedulers
|
import io.reactivex.schedulers.Schedulers
|
||||||
|
import timber.log.Timber
|
||||||
import java.util.Objects
|
import java.util.Objects
|
||||||
import javax.inject.Named
|
import javax.inject.Named
|
||||||
import javax.inject.Singleton
|
import javax.inject.Singleton
|
||||||
|
|
@ -272,6 +273,8 @@ open class CommonsApplicationModule(private val applicationContext: Context) {
|
||||||
)
|
)
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
|
db.execSQL("ATTACH DATABASE '/data/user/0/fr.free.nrw.commons.beta/databases/commons.db' AS oldDb")
|
||||||
db.execSQL("""
|
db.execSQL("""
|
||||||
INSERT INTO bookmarks_locations (
|
INSERT INTO bookmarks_locations (
|
||||||
location_name, location_language, location_description, location_category,
|
location_name, location_language, location_description, location_category,
|
||||||
|
|
@ -284,10 +287,11 @@ open class CommonsApplicationModule(private val applicationContext: Context) {
|
||||||
location_label_text, location_label_icon, location_lat, location_long,
|
location_label_text, location_label_icon, location_lat, location_long,
|
||||||
location_image_url, location_wikipedia_link, location_wikidata_link,
|
location_image_url, location_wikipedia_link, location_wikidata_link,
|
||||||
location_commons_link, location_pic, location_exists
|
location_commons_link, location_pic, location_exists
|
||||||
FROM bookmarksLocations
|
FROM oldDb.bookmarksLocations
|
||||||
""")
|
""")
|
||||||
|
|
||||||
db.execSQL("DROP TABLE IF EXISTS bookmarkLocations")
|
db.execSQL("DROP TABLE IF EXISTS bookmarkLocations")
|
||||||
|
db.execSQL("DETACH DATABASE oldDb")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import androidx.lifecycle.LifecycleCoroutineScope
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.bookmarks.locations.BookmarkLocationsDao
|
import fr.free.nrw.commons.bookmarks.locations.BookmarkLocationsDao
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import timber.log.Timber
|
||||||
|
|
||||||
object NearbyUtil {
|
object NearbyUtil {
|
||||||
|
|
||||||
|
|
@ -16,7 +17,7 @@ object NearbyUtil {
|
||||||
) {
|
) {
|
||||||
scope?.launch {
|
scope?.launch {
|
||||||
val isBookmarked = bookmarksLocationsDao.findBookmarkLocation(name)
|
val isBookmarked = bookmarksLocationsDao.findBookmarkLocation(name)
|
||||||
Log.d("isBookmarked", isBookmarked.toString())
|
Timber.i("isBookmarked: $isBookmarked")
|
||||||
if (isBookmarked) {
|
if (isBookmarked) {
|
||||||
bottomSheetAdapter.updateBookmarkIcon(R.drawable.ic_round_star_filled_24px)
|
bottomSheetAdapter.updateBookmarkIcon(R.drawable.ic_round_star_filled_24px)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -75,6 +75,7 @@ import fr.free.nrw.commons.nearby.MarkerPlaceGroup
|
||||||
import fr.free.nrw.commons.nearby.NearbyController
|
import fr.free.nrw.commons.nearby.NearbyController
|
||||||
import fr.free.nrw.commons.nearby.NearbyFilterSearchRecyclerViewAdapter
|
import fr.free.nrw.commons.nearby.NearbyFilterSearchRecyclerViewAdapter
|
||||||
import fr.free.nrw.commons.nearby.NearbyFilterState
|
import fr.free.nrw.commons.nearby.NearbyFilterState
|
||||||
|
import fr.free.nrw.commons.nearby.NearbyUtil
|
||||||
import fr.free.nrw.commons.nearby.Place
|
import fr.free.nrw.commons.nearby.Place
|
||||||
import fr.free.nrw.commons.nearby.PlacesRepository
|
import fr.free.nrw.commons.nearby.PlacesRepository
|
||||||
import fr.free.nrw.commons.nearby.WikidataFeedback
|
import fr.free.nrw.commons.nearby.WikidataFeedback
|
||||||
|
|
@ -638,21 +639,23 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), NearbyParentFragmen
|
||||||
private fun initRvNearbyList() {
|
private fun initRvNearbyList() {
|
||||||
binding!!.bottomSheetNearby.rvNearbyList.layoutManager = LinearLayoutManager(context)
|
binding!!.bottomSheetNearby.rvNearbyList.layoutManager = LinearLayoutManager(context)
|
||||||
adapter = PlaceAdapter(
|
adapter = PlaceAdapter(
|
||||||
bookmarkLocationDao!!,
|
bookmarkLocationsDao = bookmarkLocationDao,
|
||||||
{ place: Place ->
|
scope = scope,
|
||||||
|
onPlaceClicked = { place: Place ->
|
||||||
moveCameraToPosition(
|
moveCameraToPosition(
|
||||||
GeoPoint(place.location.latitude, place.location.longitude)
|
GeoPoint(
|
||||||
|
place.location.latitude,
|
||||||
|
place.location.longitude
|
||||||
|
)
|
||||||
)
|
)
|
||||||
Unit
|
|
||||||
},
|
},
|
||||||
{ place: Place?, isBookmarked: Boolean? ->
|
onBookmarkClicked = { place: Place?, _: Boolean? ->
|
||||||
presenter!!.toggleBookmarkedStatus(place)
|
presenter!!.toggleBookmarkedStatus(place, scope)
|
||||||
Unit
|
|
||||||
},
|
},
|
||||||
commonPlaceClickActions!!,
|
commonPlaceClickActions = commonPlaceClickActions,
|
||||||
inAppCameraLocationPermissionLauncher,
|
inAppCameraLocationPermissionLauncher = inAppCameraLocationPermissionLauncher,
|
||||||
galleryPickLauncherForResult,
|
galleryPickLauncherForResult = galleryPickLauncherForResult,
|
||||||
cameraPickLauncherForResult
|
cameraPickLauncherForResult = cameraPickLauncherForResult
|
||||||
)
|
)
|
||||||
binding!!.bottomSheetNearby.rvNearbyList.adapter = adapter
|
binding!!.bottomSheetNearby.rvNearbyList.adapter = adapter
|
||||||
}
|
}
|
||||||
|
|
@ -2249,34 +2252,34 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), NearbyParentFragmen
|
||||||
// TODO: Decide button text for fitting in the screen
|
// TODO: Decide button text for fitting in the screen
|
||||||
(dataList as ArrayList<BottomSheetItem>).add(
|
(dataList as ArrayList<BottomSheetItem>).add(
|
||||||
BottomSheetItem(
|
BottomSheetItem(
|
||||||
fr.free.nrw.commons.R.drawable.ic_round_star_border_24px,
|
R.drawable.ic_round_star_border_24px,
|
||||||
""
|
""
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(dataList as ArrayList<BottomSheetItem>).add(
|
(dataList as ArrayList<BottomSheetItem>).add(
|
||||||
BottomSheetItem(
|
BottomSheetItem(
|
||||||
fr.free.nrw.commons.R.drawable.ic_directions_black_24dp,
|
R.drawable.ic_directions_black_24dp,
|
||||||
resources.getString(fr.free.nrw.commons.R.string.nearby_directions)
|
resources.getString(fr.free.nrw.commons.R.string.nearby_directions)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
if (place.hasWikidataLink()) {
|
if (place.hasWikidataLink()) {
|
||||||
(dataList as ArrayList<BottomSheetItem>).add(
|
(dataList as ArrayList<BottomSheetItem>).add(
|
||||||
BottomSheetItem(
|
BottomSheetItem(
|
||||||
fr.free.nrw.commons.R.drawable.ic_wikidata_logo_24dp,
|
R.drawable.ic_wikidata_logo_24dp,
|
||||||
resources.getString(fr.free.nrw.commons.R.string.nearby_wikidata)
|
resources.getString(fr.free.nrw.commons.R.string.nearby_wikidata)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
(dataList as ArrayList<BottomSheetItem>).add(
|
(dataList as ArrayList<BottomSheetItem>).add(
|
||||||
BottomSheetItem(
|
BottomSheetItem(
|
||||||
fr.free.nrw.commons.R.drawable.ic_feedback_black_24dp,
|
R.drawable.ic_feedback_black_24dp,
|
||||||
resources.getString(fr.free.nrw.commons.R.string.nearby_wikitalk)
|
resources.getString(fr.free.nrw.commons.R.string.nearby_wikitalk)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
if (place.hasWikipediaLink()) {
|
if (place.hasWikipediaLink()) {
|
||||||
(dataList as ArrayList<BottomSheetItem>).add(
|
(dataList as ArrayList<BottomSheetItem>).add(
|
||||||
BottomSheetItem(
|
BottomSheetItem(
|
||||||
fr.free.nrw.commons.R.drawable.ic_wikipedia_logo_24dp,
|
R.drawable.ic_wikipedia_logo_24dp,
|
||||||
resources.getString(fr.free.nrw.commons.R.string.nearby_wikipedia)
|
resources.getString(fr.free.nrw.commons.R.string.nearby_wikipedia)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
@ -2284,7 +2287,7 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), NearbyParentFragmen
|
||||||
if (selectedPlace!!.hasCommonsLink()) {
|
if (selectedPlace!!.hasCommonsLink()) {
|
||||||
(dataList as ArrayList<BottomSheetItem>).add(
|
(dataList as ArrayList<BottomSheetItem>).add(
|
||||||
BottomSheetItem(
|
BottomSheetItem(
|
||||||
fr.free.nrw.commons.R.drawable.ic_commons_icon_vector,
|
R.drawable.ic_commons_icon_vector,
|
||||||
resources.getString(fr.free.nrw.commons.R.string.nearby_commons)
|
resources.getString(fr.free.nrw.commons.R.string.nearby_commons)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
@ -2363,12 +2366,16 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), NearbyParentFragmen
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateBookmarkButtonImage(place: Place) {
|
private fun updateBookmarkButtonImage(place: Place) {
|
||||||
val bookmarkIcon = if (bookmarkLocationDao!!.findBookmarkLocation(place)) {
|
NearbyUtil.getBookmarkLocationExists(
|
||||||
fr.free.nrw.commons.R.drawable.ic_round_star_filled_24px
|
bookmarkLocationDao,
|
||||||
} else {
|
place.getName(),
|
||||||
fr.free.nrw.commons.R.drawable.ic_round_star_border_24px
|
scope,
|
||||||
}
|
bottomSheetAdapter!!
|
||||||
bottomSheetAdapter!!.updateBookmarkIcon(bookmarkIcon)
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun toggleBookmarkButtonImage() {
|
||||||
|
bottomSheetAdapter?.toggleBookmarkIcon()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onAttach(context: Context) {
|
override fun onAttach(context: Context) {
|
||||||
|
|
@ -2546,26 +2553,31 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), NearbyParentFragmen
|
||||||
override fun onBottomSheetItemClick(view: View?, position: Int) {
|
override fun onBottomSheetItemClick(view: View?, position: Int) {
|
||||||
val item = dataList?.get(position) ?: return // Null check for dataList
|
val item = dataList?.get(position) ?: return // Null check for dataList
|
||||||
when (item.imageResourceId) {
|
when (item.imageResourceId) {
|
||||||
fr.free.nrw.commons.R.drawable.ic_round_star_border_24px,
|
R.drawable.ic_round_star_border_24px -> {
|
||||||
fr.free.nrw.commons.R.drawable.ic_round_star_filled_24px -> {
|
presenter?.toggleBookmarkedStatus(selectedPlace, scope)
|
||||||
presenter?.toggleBookmarkedStatus(selectedPlace)
|
toggleBookmarkButtonImage()
|
||||||
|
}
|
||||||
|
|
||||||
|
R.drawable.ic_round_star_filled_24px -> {
|
||||||
|
presenter?.toggleBookmarkedStatus(selectedPlace, scope)
|
||||||
|
toggleBookmarkButtonImage()
|
||||||
selectedPlace?.let { updateBookmarkButtonImage(it) }
|
selectedPlace?.let { updateBookmarkButtonImage(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fr.free.nrw.commons.R.drawable.ic_directions_black_24dp -> {
|
R.drawable.ic_directions_black_24dp -> {
|
||||||
selectedPlace?.let {
|
selectedPlace?.let {
|
||||||
Utils.handleGeoCoordinates(this.context, it.getLocation())
|
Utils.handleGeoCoordinates(this.context, it.getLocation())
|
||||||
binding?.map?.zoomLevelDouble ?: 0.0
|
binding?.map?.zoomLevelDouble ?: 0.0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fr.free.nrw.commons.R.drawable.ic_wikidata_logo_24dp -> {
|
R.drawable.ic_wikidata_logo_24dp -> {
|
||||||
selectedPlace?.siteLinks?.wikidataLink?.let {
|
selectedPlace?.siteLinks?.wikidataLink?.let {
|
||||||
Utils.handleWebUrl(this.context, it)
|
Utils.handleWebUrl(this.context, it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fr.free.nrw.commons.R.drawable.ic_feedback_black_24dp -> {
|
R.drawable.ic_feedback_black_24dp -> {
|
||||||
selectedPlace?.let {
|
selectedPlace?.let {
|
||||||
val intent = Intent(this.context, WikidataFeedback::class.java).apply {
|
val intent = Intent(this.context, WikidataFeedback::class.java).apply {
|
||||||
putExtra("lat", it.location.latitude)
|
putExtra("lat", it.location.latitude)
|
||||||
|
|
@ -2577,13 +2589,13 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), NearbyParentFragmen
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fr.free.nrw.commons.R.drawable.ic_wikipedia_logo_24dp -> {
|
R.drawable.ic_wikipedia_logo_24dp -> {
|
||||||
selectedPlace?.siteLinks?.wikipediaLink?.let {
|
selectedPlace?.siteLinks?.wikipediaLink?.let {
|
||||||
Utils.handleWebUrl(this.context, it)
|
Utils.handleWebUrl(this.context, it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fr.free.nrw.commons.R.drawable.ic_commons_icon_vector -> {
|
R.drawable.ic_commons_icon_vector -> {
|
||||||
selectedPlace?.siteLinks?.commonsLink?.let {
|
selectedPlace?.siteLinks?.commonsLink?.let {
|
||||||
Utils.handleWebUrl(this.context, it)
|
Utils.handleWebUrl(this.context, it)
|
||||||
}
|
}
|
||||||
|
|
@ -2597,13 +2609,13 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), NearbyParentFragmen
|
||||||
override fun onBottomSheetItemLongClick(view: View?, position: Int) {
|
override fun onBottomSheetItemLongClick(view: View?, position: Int) {
|
||||||
val item = dataList!![position]
|
val item = dataList!![position]
|
||||||
val message = when (item.imageResourceId) {
|
val message = when (item.imageResourceId) {
|
||||||
fr.free.nrw.commons.R.drawable.ic_round_star_border_24px -> getString(fr.free.nrw.commons.R.string.menu_bookmark)
|
R.drawable.ic_round_star_border_24px -> getString(fr.free.nrw.commons.R.string.menu_bookmark)
|
||||||
fr.free.nrw.commons.R.drawable.ic_round_star_filled_24px -> getString(fr.free.nrw.commons.R.string.menu_bookmark)
|
R.drawable.ic_round_star_filled_24px -> getString(fr.free.nrw.commons.R.string.menu_bookmark)
|
||||||
fr.free.nrw.commons.R.drawable.ic_directions_black_24dp -> getString(fr.free.nrw.commons.R.string.nearby_directions)
|
R.drawable.ic_directions_black_24dp -> getString(fr.free.nrw.commons.R.string.nearby_directions)
|
||||||
fr.free.nrw.commons.R.drawable.ic_wikidata_logo_24dp -> getString(fr.free.nrw.commons.R.string.nearby_wikidata)
|
R.drawable.ic_wikidata_logo_24dp -> getString(fr.free.nrw.commons.R.string.nearby_wikidata)
|
||||||
fr.free.nrw.commons.R.drawable.ic_feedback_black_24dp -> getString(fr.free.nrw.commons.R.string.nearby_wikitalk)
|
R.drawable.ic_feedback_black_24dp -> getString(fr.free.nrw.commons.R.string.nearby_wikitalk)
|
||||||
fr.free.nrw.commons.R.drawable.ic_wikipedia_logo_24dp -> getString(fr.free.nrw.commons.R.string.nearby_wikipedia)
|
R.drawable.ic_wikipedia_logo_24dp -> getString(fr.free.nrw.commons.R.string.nearby_wikipedia)
|
||||||
fr.free.nrw.commons.R.drawable.ic_commons_icon_vector -> getString(fr.free.nrw.commons.R.string.nearby_commons)
|
R.drawable.ic_commons_icon_vector -> getString(fr.free.nrw.commons.R.string.nearby_commons)
|
||||||
else -> "Long click"
|
else -> "Long click"
|
||||||
}
|
}
|
||||||
Toast.makeText(this.context, message, Toast.LENGTH_SHORT).show()
|
Toast.makeText(this.context, message, Toast.LENGTH_SHORT).show()
|
||||||
|
|
|
||||||
|
|
@ -400,7 +400,10 @@ class NearbyParentFragmentPresenter
|
||||||
|
|
||||||
onePlaceBatch.add(Pair(i, MarkerPlaceGroup(
|
onePlaceBatch.add(Pair(i, MarkerPlaceGroup(
|
||||||
bookmarkLocationDao.findBookmarkLocation(
|
bookmarkLocationDao.findBookmarkLocation(
|
||||||
fetchedPlace[0]),fetchedPlace[0])))
|
fetchedPlace[0].name
|
||||||
|
),
|
||||||
|
fetchedPlace[0]
|
||||||
|
)))
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Timber.tag("NearbyPinDetails").e(e)
|
Timber.tag("NearbyPinDetails").e(e)
|
||||||
onePlaceBatch.add(Pair(i, updatedGroups[i]))
|
onePlaceBatch.add(Pair(i, updatedGroups[i]))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue