This commit migrates the bookmark locations functionality from a custom content provider to Room database.
Key changes:
* **Removal of `BookmarkLocationsContentProvider`:** This class, which previously handled data storage, has been removed.
* **Introduction of `BookmarksLocations`:** This data class now represents a bookmarked location, serving as the Room entity.
* **Creation of `BookmarkLocationsDao`:** This Room DAO handles database interactions for bookmark locations, including:
* Adding, deleting, and querying bookmarked locations.
* Checking if a location is already bookmarked.
* Updating the bookmark status of a location.
* Retrieving all bookmarked locations as `Place` objects.
* **`BookmarkLocationsViewModel`:** Added to manage the data layer for bookmark locations
* **`NearbyUtil`:** Created a Util class for Nearby to manage the bookmark locations.
* **Updates in `PlaceAdapter` and `PlaceAdapterDelegate`:** These classes have been modified to work with the new Room-based data layer.
* **Updates in `AppDatabase`:** The database now includes `BookmarksLocations` as an entity and exposes the `bookmarkLocationsDao`.
* **Updates in `FragmentBuilderModule` and `CommonsApplicationModule`**: for DI
* **Removal of `DBOpenHelper` upgrade for locations**: as it is no longer needed
* **Updates in `NearbyParentFragmentPresenter`**: refactored the logic to use the dao functions
* **Updates in `NearbyParentFragment`**: refactored the logic to use the util and dao functions
* **Update in `BookmarkLocationsController`**: removed as its no longer needed
* **Add `toPlace` and `toBookmarksLocations`**: extension functions to map between data class and entities
* **Update in `CommonsApplication`**: to remove old db table.
This commit migrates the bookmark location logic to Kotlin, enhancing code maintainability and readability.
- Removes the `BookmarkLocationsContentProvider`, `BookmarkLocationsController`, and `BookmarkLocationsDao` Java classes.
- Creates `BookmarkLocationsDao.kt` and `BookmarkLocationsContentProvider.kt` in Kotlin.
- Migrates the logic from `BookmarkLocationsFragment.java` to `BookmarkLocationsFragment.kt`.
- Updates test files to reflect these changes.
- Addresses associated code review comments.
* Fix NPE with UploadMediaDetails.captionText
* Store P18 instead of processed image url in DepictedItem
* Add routes for fetching category info from titles
* Consider depict's P18 when suggesting categories
* Add tests
* Corrected DepictedItem constructor arguments
* Add test for DepictedItem::primaryImage
* MediaDetailFragment.kt: add helper method to retrieve ContributionFragment instance
Before this commit, there was no easy way to check for and retrieve the ContributionFragment instance that
was either the parent or grandparent (parent's parent) fragment. A complicated if check was required to
retrieve it.
After this commit, there is a simple helper method which will retrieve the ContributionFragment instance.
Existing code can now be replaced by calling this method.
* MediaDetailFragment.kt: replace code that is meant to hide nearby card
Before this commit, code would attempt to find and hide the nearby card that would appear
when the user was looking at media details. However, this code did not work.
After this commit, the old code has been replaced with code that correctly hides the
nearby card. Also, this new code uses a helper method call and is overall easier to read.
---------
Co-authored-by: Nicolas Raoul <nicolas.raoul@gmail.com>
* Rename Constants to Follow Kotlin Naming Conventions
>This PR refactors constant names in the project to adhere to Kotlin's UPPERCASE_SNAKE_CASE naming convention, improving code readability and maintaining consistency across the codebase.
>Renamed the following constants in LoginActivity:
>saveProgressDialog → SAVE_PROGRESS_DIALOG
>saveErrorMessage → SAVE_ERROR_MESSAGE
>saveUsername → SAVE_USERNAME
>savePassword → SAVE_PASSWORD
>Updated all references to these constants throughout the project.
* Update Project_Default.xml
* Refactor variable names to adhere to naming conventions
Renamed variables to use camel case:
-UPLOAD_COUNT_THRESHOLD → uploadCountThreshold
-REVERT_PERCENTAGE_FOR_MESSAGE → revertPercentageForMessage
-REVERT_SHARED_PREFERENCE → revertSharedPreference
-UPLOAD_SHARED_PREFERENCE → uploadSharedPreference
Renamed variables with uppercase initials to lowercase for alignment with Kotlin conventions:
-Latitude → latitude
-Longitude → longitude
-Accuracy → accuracy
Refactored the following variable names:
-NUMBER_OF_QUESTIONS → numberOfQuestions
-MULTIPLIER_TO_GET_PERCENTAGE → multiplierToGetPercentage
* Refactor Dialog View Initialization with Null-Safe Calls
This PR refactors the dialog setup code in CustomSelectorActivity to improve safety and readability by replacing explicit casts with null-safe generic calls for findViewById.
>Replaced explicit casting (as Button and as TextView) with the generic findViewById<T>() method for improved type safety.
>Added null-safety (?.) to avoid potential crashes if a view is not found in the dialog layout.
why changed:-
>Prevents runtime crashes caused by NullPointerException when a view is missing in the layout.
* Rename Constants to Follow Kotlin Naming Conventions
>This PR refactors constant names in the project to adhere to Kotlin's UPPERCASE_SNAKE_CASE naming convention, improving code readability and maintaining consistency across the codebase.
>Renamed the following constants in LoginActivity:
>saveProgressDialog → SAVE_PROGRESS_DIALOG
>saveErrorMessage → SAVE_ERROR_MESSAGE
>saveUsername → SAVE_USERNAME
>savePassword → SAVE_PASSWORD
>Updated all references to these constants throughout the project.
* Update Project_Default.xml
* Refactor variable names to adhere to naming conventions
Renamed variables to use camel case:
-UPLOAD_COUNT_THRESHOLD → uploadCountThreshold
-REVERT_PERCENTAGE_FOR_MESSAGE → revertPercentageForMessage
-REVERT_SHARED_PREFERENCE → revertSharedPreference
-UPLOAD_SHARED_PREFERENCE → uploadSharedPreference
Renamed variables with uppercase initials to lowercase for alignment with Kotlin conventions:
-Latitude → latitude
-Longitude → longitude
-Accuracy → accuracy
Refactored the following variable names:
-NUMBER_OF_QUESTIONS → numberOfQuestions
-MULTIPLIER_TO_GET_PERCENTAGE → multiplierToGetPercentage
* feat: Long-pressing a row in "Uploads" copies the caption to clipboard, and displays a snack saying "Caption copied to clipboard
* refactor: using string resources for the text instead of hard coded values
* Rename Constants to Follow Kotlin Naming Conventions
>This PR refactors constant names in the project to adhere to Kotlin's UPPERCASE_SNAKE_CASE naming convention, improving code readability and maintaining consistency across the codebase.
>Renamed the following constants in LoginActivity:
>saveProgressDialog → SAVE_PROGRESS_DIALOG
>saveErrorMessage → SAVE_ERROR_MESSAGE
>saveUsername → SAVE_USERNAME
>savePassword → SAVE_PASSWORD
>Updated all references to these constants throughout the project.
* Update Project_Default.xml
- Removed unused constants which were there in `Pref`
- Removed unused parameter requireActivity from `Setting Fragment`
Revert "chore : lint fix"
This reverts commit 599203343f4c3c050b45e4ccf53fd23097818cc4.
* Convert UploadCategoriesFragment to kotlin
* Convert DepictsFragment to kotlin
* Convert MediaLicensePresenter to kotlin
* Convert MediaLicenseFragment to kotlin
* Converted SimilarImageDialogFragment to kotlin
* Convert ThumbnailsAdapter to kotlin
* Convert UploadPresenter to kotlin
* Convert UploadBaseFragment to kotlin
* Convert UploadMediaDetailInputFilter to kotlin
* Convert UploadItem to kotlin
* Convert UploadController to kotlin
* Fix nullability of the UploadItem
* Nearby: Search for actual map center
* Add query syntax and methods
* Nearby: Added binary search for loading pins
* Add NearbyQueryParams and refactor
* Add unit tests and complete implementation
* Nearby: Increase max radius from 100km to 300km
* Nearby: Centermost pins now appear on top
* getNearbyItemCount: Added javadoc
---------
Co-authored-by: Nicolas Raoul <nicolas.raoul@gmail.com>
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.
* temporary fixes part one
* temporary fixes part two
* temporary fixes part three
* temporary fixes part four
* temporary fixes part five
* reformatting
* remove code no longer in use
* Migrate NearbyParentFragmentPresenter to Kotlin
* Partially replace temporary experimental fixes
* Replace temporary experimental fixes part 2
* Replace temporary experimental fixes part 3
* Replace temporary fixes completely
* Fix caching and loading places in Nearby list
* Add place bookmarking logic, Remove all old code
* Nearby Presenter: Close channel properly
* Nearby pins now load starting from the center
Fixes#6049
* Add comments and javadoc for Nearby Presenter
* Fix warnings, Fix formatting, Add javadoc
* Pass unit tests
Fixes issue 5842 by correcting the implementation of onUserConfirmedUploadIsOfPlace in UploadMediaDetailsContract's UserActionListener
Co-authored-by: Nicolas Raoul <nicolas.raoul@gmail.com>
* Add a "copy link" button next to the share button. Add relative English and Simplified Chinese text in strings.xml.
* Change the icon from copy to link
* Fixed typo
* Fixed case
---------
Co-authored-by: Justweng <justweng19@gmail.com>
Co-authored-by: Nicolas Raoul <nicolas.raoul@gmail.com>
Changed the commons.filepicker.UploadableFile's hasLocation method to use the existing ImageCoordinates class for detecting the presence of geolocation in an image's exif
* Convert upload dagger module to kotlin
* Code cleanup and convert the upload contract to kotlin
* Code cleanup and convert CategoriesContract to kotlin
* Code cleanup and convert MediaLicenseContract to kotlin
* Code cleanup and convert UploadMediaDetailsContract to kotlin
* Code cleanup, fixed nullability and converted DepictsContract to kotlin
* Removed unused class
* Convert FileMetadataUtils to kotlin
* Convert EXIFReader to kotlin
* Convert FileUtils to kotlin
* Convert FileUtilsWrapper to kotlin
* Convert ImageProcessingService to kotlin
* Convert PageContentsCreator to kotlin
* Convert PendingUploadsPresenter and contract to Kotlin with some code-cleanup
* Convert ReadFBMD to kotlin
* Convert SimilarImageInterface to kotlin
* Removed unused classes
* Fix merge/rebase issue
---------
Co-authored-by: Nicolas Raoul <nicolas.raoul@gmail.com>
* fix issue6020: prevent unintentional deletion of subfolders and non-images by custom selector
Co-authored-by: Nicolas Raoul <nicolas.raoul@gmail.com>