apps-android-commons
apps-android-commons copied to clipboard
Kotlin Android Extensions & Butterknife are deprecated
Summary:
Looking at "The future of Kotlin Android Extensions" from 23 November 2020, (see: https://android-developers.googleblog.com/2020/11/the-future-of-kotlin-android-extensions.html)
The deprecation period starts with Kotlin 1.4.20, released today. android-kotlin-extensions will be removed in a future Kotlin release during or after September 2021. Long term, we will continue to maintain the kotlin-parcelize plugin, and you can continue to file issues on Parcelize in the Android Studio issue tracker.
According to Google (https://developer.android.com/topic/libraries/view-binding/migration)
Kotlin Android Extensions is deprecated, which means that using Kotlin synthetics for view binding is no longer supported. If your app uses Kotlin synthetics for view binding, use this guide to migrate to Jetpack view binding.
In addition, the author of Butternife has stated (https://github.com/JakeWharton/butterknife)
Attention: This tool is now deprecated. Please switch to view binding. Existing versions will continue to work, obviously, but only critical bug fixes for integration with AGP will be considered. Feature development and general bug fixes have stopped.
Would you like to work on the issue?
It looks like a pretty big migration, with a large number of files that will be touched. A search for import butterknife.BindView shows 40 files, and import kotlinx.android.synthetic a further 16 files; probably too big for a single person and something to do in stages. I would be happy to be part of the process.
Welcome back, @psh ! :)
Thanks for bringing this to our attention. It felt like only yesterday that we were making the switch TO Butterknife. :(
I will ping @madhurgupta10 and @ashishkumar468 for input on this, however it makes sense to me that we should start the migration. We definitely want to do it in stages, with modular PRs if possible. Will let you know when it's OK to start.
Using Jetpack ViewBinding and DataBinding seems like a good thing to do, IMO. There might be some code that still uses old findViewById methods, we need to take care of that too.
And yes, this should definitely be done in multiple PRs otherwise would be very difficult to test and merge.
This could also be a beginner-friendly task :)
Sounds good, thanks @madhurgupta10 . Let's do it. :) We can probably split this up by package - 1 PR for files in 1 package?
@misaochan Yes sure, even more than one PR per package would be okay IMO.
I will create a PR with the necessary dependencies and an example so it is easier for first-time contributors to follow up :)
Hi, I'd really like to help out with this migration as my first open-source contribution. Is there a package to which I should start applying the changes outlined in @madhurgupta10's example?
~I've followed the quick start guide for developers (in addition to reading the Contributing Guidelines, Developer workflow and Code Style), and Gradle has built the application successfully. Android Studio is still telling me there are errors, however, and I want to clear those up before I try writing any code, even seemingly straight-forward code like in the example provided by @madhurgupta10.~
~I read at the bottom of the quick start guide that I should open a new issue for trouble with setup, but I don't feel like I have enough experience to determine whether the problems I'm facing deserve their own issue. This probably isn't the right place to say all this either, but I've been stuck for a few days, and I just really want to be able to contribute.~
~Anyway, would somebody please be willing to help me out?~
EDIT: Figured some stuff out.
@ThomasLatham Feel free to open a new issue if you need help, one or more team members will be happy to help you out :)
Thank you @madhurgupta10! I'll see what I can figure out on my own, but I won't hesitate to open a new issue if I get stuck
https://android-developers.googleblog.com/2022/02/discontinuing-kotlin-synthetics-for-views.html?m=1
Google says -
In November 2020, we announced that this plugin has been deprecated in favor of better solutions, and we recommended removing the plugin from your projects. We know many developers still depend on this plugin’s features, and we’ve extended the support timeframe so you have more time to complete your migrations.
We are now setting a deadline for these migrations: the plugin will be removed in Kotlin 1.8, which is expected to be released by the end of 2022. At that time, you won’t be able to update your project to newer Kotlin versions if it still depends on the Kotlin Android Extensions plugin. This means that now is the time to perform the necessary migrations in your projects.
Looking at the code, there are only a few classes using synthetics left. I'll prioritize getting those done.
Hi All @psh @misaochan @madhurgupta10 @ThomasLatham @prtksxna ,
When I search import butterknife.BindView globally in Android Studio, I see multiple classes where its still being used. And out of which, I want to start working for the mentioned change at WelcomeActivity.
I have raised a PR for the same. Am I allowed to do it ?
Hi @nicolas-raoul , Can you review the above PRs kindly?
Hi @madhurgupta10 is this issue is solved. What I understood from all this discussion was, it needs multiple people. So can I work into it?
@bosankus Sorry for the delay, I have started reviewing but not finished yet.
@glitched-sudhanshu If you find other classes that need the same, please list them here and you can start working on them 🙂
Hi @nicolas-raoul , there are other areas to cover too which am yet to push code in future for closing this ticket. Are you sure this issue can be closed now ?
Thanks @bosankus!
You are right, still 10+42 to go 😅 Anyone feel free to join the effort, see the example PR https://github.com/commons-app/apps-android-commons/pull/4681/files 🙂
$ grep -R "import kotlinx.android.synthetic" app/src
app/src/test/kotlin/fr/free/nrw/commons/recentlanguages/RecentLanguagesAdapterUnitTest.kt:import kotlinx.android.synthetic.main.row_item_languages_spinner.view.*
app/src/main/java/fr/free/nrw/commons/nearby/fragments/AdvanceQueryFragment.kt:import kotlinx.android.synthetic.main.fragment_advance_query.*
app/src/main/java/fr/free/nrw/commons/explore/paging/BasePagingFragment.kt:import kotlinx.android.synthetic.main.fragment_search_paginated.*
app/src/main/java/fr/free/nrw/commons/explore/paging/FooterAdapter.kt:import kotlinx.android.synthetic.main.list_item_load_more.*
app/src/main/java/fr/free/nrw/commons/explore/media/PageableMediaFragment.kt:import kotlinx.android.synthetic.main.fragment_search_paginated.*
app/src/main/java/fr/free/nrw/commons/explore/media/PagedMediaAdapter.kt:import kotlinx.android.synthetic.main.layout_category_images.*
app/src/main/java/fr/free/nrw/commons/recentlanguages/RecentLanguagesAdapter.kt:import kotlinx.android.synthetic.main.row_item_languages_spinner.view.*
app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/FolderFragment.kt:import kotlinx.android.synthetic.main.fragment_custom_selector.*
app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/FolderFragment.kt:import kotlinx.android.synthetic.main.fragment_custom_selector.view.*
app/src/main/java/fr/free/nrw/commons/upload/LanguagesAdapter.kt:import kotlinx.android.synthetic.main.row_item_languages_spinner.view.*
$ grep -R "import butterknife.BindView" app/src
app/src/test/kotlin/fr/free/nrw/commons/review/ReviewActivityTest.kt:import butterknife.BindView
app/src/main/java/fr/free/nrw/commons/settings/SettingsActivity.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/contributions/ContributionViewHolder.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/quiz/QuizActivity.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/quiz/QuizResultActivity.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/explore/ExploreListRootFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/explore/ExploreFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/explore/depictions/WikidataItemDetailsActivity.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/explore/ExploreMapRootFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/explore/recentsearches/RecentSearchesFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/explore/SearchActivity.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/bookmarks/pictures/BookmarkPicturesFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/profile/achievements/AchievementsFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/profile/leaderboard/LeaderboardFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/profile/ProfileActivity.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/review/ReviewImageFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/navtab/MoreBottomSheetFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/campaigns/CampaignView.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/upload/license/MediaLicenseFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailAdapter.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/upload/ThumbnailsAdapter.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/upload/SimilarImageDialogFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/upload/categories/UploadCategoriesFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/upload/depicts/DepictsFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java:import butterknife.BindView;
app/src/main/java/fr/free/nrw/commons/media/ZoomableActivity.kt:import butterknife.BindView
If anyone knows a trick to prevent this issue from getting closed every time, please let me know... and thanks Paul for reopening when I forgot to! :-)
Looking at Github documentation and feature requests, it seems you cant disable the auto-closing feature and the suggested quick workaround is to avoid the keywords in PR comments that trigger it. So, avoid saying "Fixes #4664" and maybe say something like "This PR relates to #4664" instead. In theory that will generate a link without this issue being closed when the PR merges.
Just checking in with this issue, with our overall progress and to share an interesting nugget of information from the Google Issue Tracker (from https://issuetracker.google.com/issues/173030256#comment10) where it says -
Databinding is in maintenance mode as well. We don't plan to support KSP nor recommend data binding usage at this stage since compose is our recommended UI solution.
also,
ViewBinding is only a build tool and does not run an annotation processor, hence it is not impacted by KAPT / KSP.
So if you are using Views, ViewBinding will keep working.
Should we remove this section of the Developer Documentation which suggests the use of butterknife? https://github.com/commons-app/commons-app-documentation/blob/master/android/Code-style.md#butterknife
Good call! Yes, that should be removed in favor of saying that the app ought to use Google's view binding; both the kotlin android extensions and the butterknife references should be removed.
2024 update: 6+36 to go 🙂
grep -Rl "import kotlinx.android.synthetic" app/src
app/src/test/kotlin/fr/free/nrw/commons/recentlanguages/RecentLanguagesAdapterUnitTest.kt
app/src/test/kotlin/fr/free/nrw/commons/customselector/ui/selector/CustomSelectorActivityTest.kt
app/src/main/java/fr/free/nrw/commons/explore/paging/BasePagingFragment.kt
app/src/main/java/fr/free/nrw/commons/explore/paging/FooterAdapter.kt
app/src/main/java/fr/free/nrw/commons/explore/media/PagedMediaAdapter.kt
app/src/main/java/fr/free/nrw/commons/edit/EditActivity.kt
$ grep -Rl "import butterknife.BindView" app/src
app/src/test/kotlin/fr/free/nrw/commons/review/ReviewActivityTest.kt
app/src/main/java/fr/free/nrw/commons/settings/SettingsActivity.java
app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java
app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java
app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java
app/src/main/java/fr/free/nrw/commons/contributions/ContributionViewHolder.java
app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java
app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java
app/src/main/java/fr/free/nrw/commons/explore/ExploreListRootFragment.java
app/src/main/java/fr/free/nrw/commons/explore/ExploreFragment.java
app/src/main/java/fr/free/nrw/commons/explore/depictions/WikidataItemDetailsActivity.java
app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapFragment.java
app/src/main/java/fr/free/nrw/commons/explore/ExploreMapRootFragment.java
app/src/main/java/fr/free/nrw/commons/explore/recentsearches/RecentSearchesFragment.java
app/src/main/java/fr/free/nrw/commons/explore/SearchActivity.java
app/src/main/java/fr/free/nrw/commons/bookmarks/pictures/BookmarkPicturesFragment.java
app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkFragment.java
app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java
app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsFragment.java
app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsFragment.java
app/src/main/java/fr/free/nrw/commons/profile/leaderboard/LeaderboardFragment.java
app/src/main/java/fr/free/nrw/commons/profile/ProfileActivity.java
app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java
app/src/main/java/fr/free/nrw/commons/review/ReviewImageFragment.java
app/src/main/java/fr/free/nrw/commons/campaigns/CampaignView.java
app/src/main/java/fr/free/nrw/commons/upload/license/MediaLicenseFragment.java
app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.java
app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailAdapter.java
app/src/main/java/fr/free/nrw/commons/upload/ThumbnailsAdapter.java
app/src/main/java/fr/free/nrw/commons/upload/SimilarImageDialogFragment.java
app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java
app/src/main/java/fr/free/nrw/commons/upload/categories/UploadCategoriesFragment.java
app/src/main/java/fr/free/nrw/commons/upload/depicts/DepictsFragment.java
app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java
app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java
app/src/main/java/fr/free/nrw/commons/media/ZoomableActivity.kt
2024 update: 6+36 to go 🙂
Since this issue is mentioned for GSoC, are we allowed to work on this now, or only the GSoC candidate will work on this later?
@ShashwatKedia Yes, allowed, the Nearby tasks will fill in if this one is done already. 🙂
Hi @nicolas-raoul can anyone work work on this issue (1package = 1Pr) at a time or you need to get assigned to this issue?
Hi @nicolas-raoul , following are covered in the Above PRs (Each PR addresses 1 Package, except the last PR) :
app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java app/src/main/java/fr/free/nrw/commons/settings/SettingsActivity.java
app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java app/src/main/java/fr/free/nrw/commons/contributions/ContributionViewHolder.java
app/src/main/java/fr/free/nrw/commons/explore/ExploreListRootFragment.java app/src/main/java/fr/free/nrw/commons/explore/ExploreFragment.java app/src/main/java/fr/free/nrw/commons/explore/depictions/WikidataItemDetailsActivity.java app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapFragment.java app/src/main/java/fr/free/nrw/commons/explore/ExploreMapRootFragment.java app/src/main/java/fr/free/nrw/commons/explore/recentsearches/RecentSearchesFragment.java app/src/main/java/fr/free/nrw/commons/explore/SearchActivity.java
app/src/main/java/fr/free/nrw/commons/bookmarks/pictures/BookmarkPicturesFragment.java app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkFragment.java app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsFragment.java app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsFragment.java
app/src/main/java/fr/free/nrw/commons/profile/leaderboard/LeaderboardFragment.java app/src/main/java/fr/free/nrw/commons/profile/ProfileActivity.java
app/src/main/java/fr/free/nrw/commons/upload/license/MediaLicenseFragment.java app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.java app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailAdapter.java app/src/main/java/fr/free/nrw/commons/upload/ThumbnailsAdapter.java app/src/main/java/fr/free/nrw/commons/upload/SimilarImageDialogFragment.java app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java app/src/main/java/fr/free/nrw/commons/upload/categories/UploadCategoriesFragment.java app/src/main/java/fr/free/nrw/commons/upload/depicts/DepictsFragment.java
@neeldoshii I have already pushed PRs covering these two, it would be great if you can choose Files that have not been covered yet (also please look at the list I have mentioned as covered above, you can click on each of the PRs to check what files have been covered in each package), working on different PRs will help us complete this task effectively, thanks
Hi @nicolas-raoul , following are covered in the Above PRs (Each PR addresses 1 Package, except the last PR) :
app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java app/src/main/java/fr/free/nrw/commons/settings/SettingsActivity.java
app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java app/src/main/java/fr/free/nrw/commons/contributions/ContributionViewHolder.java
app/src/main/java/fr/free/nrw/commons/explore/ExploreListRootFragment.java app/src/main/java/fr/free/nrw/commons/explore/ExploreFragment.java app/src/main/java/fr/free/nrw/commons/explore/depictions/WikidataItemDetailsActivity.java app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapFragment.java app/src/main/java/fr/free/nrw/commons/explore/ExploreMapRootFragment.java app/src/main/java/fr/free/nrw/commons/explore/recentsearches/RecentSearchesFragment.java app/src/main/java/fr/free/nrw/commons/explore/SearchActivity.java
app/src/main/java/fr/free/nrw/commons/bookmarks/pictures/BookmarkPicturesFragment.java app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkFragment.java app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsFragment.java app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsFragment.java
app/src/main/java/fr/free/nrw/commons/profile/leaderboard/LeaderboardFragment.java app/src/main/java/fr/free/nrw/commons/profile/ProfileActivity.java
app/src/main/java/fr/free/nrw/commons/upload/license/MediaLicenseFragment.java app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.java app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailAdapter.java app/src/main/java/fr/free/nrw/commons/upload/ThumbnailsAdapter.java app/src/main/java/fr/free/nrw/commons/upload/SimilarImageDialogFragment.java app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java app/src/main/java/fr/free/nrw/commons/upload/categories/UploadCategoriesFragment.java app/src/main/java/fr/free/nrw/commons/upload/depicts/DepictsFragment.java
Hi, sorry for not checking it. I was also working towards it, thats why I like getting assigned first to avoid collission between two contributors. Nevermind, I will close the PR will do the code review on your's PR as I have hands on at the code already.
Hi @nicolas-raoul , following are covered in the Above PRs (Each PR addresses 1 Package, except the last PR) : app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java app/src/main/java/fr/free/nrw/commons/settings/SettingsActivity.java app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java app/src/main/java/fr/free/nrw/commons/contributions/ContributionViewHolder.java app/src/main/java/fr/free/nrw/commons/explore/ExploreListRootFragment.java app/src/main/java/fr/free/nrw/commons/explore/ExploreFragment.java app/src/main/java/fr/free/nrw/commons/explore/depictions/WikidataItemDetailsActivity.java app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapFragment.java app/src/main/java/fr/free/nrw/commons/explore/ExploreMapRootFragment.java app/src/main/java/fr/free/nrw/commons/explore/recentsearches/RecentSearchesFragment.java app/src/main/java/fr/free/nrw/commons/explore/SearchActivity.java app/src/main/java/fr/free/nrw/commons/bookmarks/pictures/BookmarkPicturesFragment.java app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkFragment.java app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsFragment.java app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsFragment.java app/src/main/java/fr/free/nrw/commons/profile/leaderboard/LeaderboardFragment.java app/src/main/java/fr/free/nrw/commons/profile/ProfileActivity.java app/src/main/java/fr/free/nrw/commons/upload/license/MediaLicenseFragment.java app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.java app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailAdapter.java app/src/main/java/fr/free/nrw/commons/upload/ThumbnailsAdapter.java app/src/main/java/fr/free/nrw/commons/upload/SimilarImageDialogFragment.java app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java app/src/main/java/fr/free/nrw/commons/upload/categories/UploadCategoriesFragment.java app/src/main/java/fr/free/nrw/commons/upload/depicts/DepictsFragment.java
Hi, sorry for not checking it. I was also working towards it, thats why I like getting assigned first. Nevermind, I will close the PR will do the code review on your's PR as I have hands on at the code already.
No issues, also this issue is of such nature that it can't be assigned to one person (as discussed by mentors above) and Ideal way is to contribute 1 PR per package at our pace. Our goal here is to complete this task as a team, thanks and good luck
Hey @shashankiitbhu, Can I also work on it together ;)
@kanahia1 Sure, I am already working on the media package (almost done with it) so you can start on others that are left like campaigns
Also Review Package in Progress (Made some changes last time in that too so I would like to finish Review Package as well)
@kanahia1 These are still left and you can work on them if you want :
app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java app/src/main/java/fr/free/nrw/commons/campaigns/CampaignView.java
I hope nothing is missed here 🥲