apps-android-commons icon indicating copy to clipboard operation
apps-android-commons copied to clipboard

Kotlin Android Extensions & Butterknife are deprecated

Open psh opened this issue 4 years ago • 43 comments
trafficstars

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.

psh avatar Oct 06 '21 19:10 psh

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.

misaochan avatar Oct 07 '21 08:10 misaochan

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 :)

madhurgupta10 avatar Oct 08 '21 15:10 madhurgupta10

Sounds good, thanks @madhurgupta10 . Let's do it. :) We can probably split this up by package - 1 PR for files in 1 package?

misaochan avatar Oct 12 '21 08:10 misaochan

@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 :)

madhurgupta10 avatar Oct 14 '21 04:10 madhurgupta10

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 avatar Dec 22 '21 21:12 ThomasLatham

@ThomasLatham Feel free to open a new issue if you need help, one or more team members will be happy to help you out :)

madhurgupta10 avatar Dec 23 '21 12:12 madhurgupta10

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

ThomasLatham avatar Jan 13 '22 15:01 ThomasLatham

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.

psh avatar Feb 19 '22 15:02 psh

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 ?

bosankus avatar Oct 03 '22 19:10 bosankus

Hi @nicolas-raoul , Can you review the above PRs kindly?

bosankus avatar Oct 17 '22 07:10 bosankus

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?

glitched-sudhanshu avatar Oct 22 '22 11:10 glitched-sudhanshu

@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 🙂

nicolas-raoul avatar Oct 23 '22 02:10 nicolas-raoul

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 ?

bosankus avatar Oct 29 '22 08:10 bosankus

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

nicolas-raoul avatar Oct 29 '22 09:10 nicolas-raoul

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! :-)

nicolas-raoul avatar Nov 21 '22 14:11 nicolas-raoul

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.

psh avatar Nov 22 '22 20:11 psh

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.

psh avatar Feb 20 '23 16:02 psh

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

nicolas-raoul avatar Oct 17 '23 06:10 nicolas-raoul

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.

psh avatar Oct 20 '23 04:10 psh

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

nicolas-raoul avatar Jan 31 '24 06:01 nicolas-raoul

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 avatar Jan 31 '24 12:01 ShashwatKedia

@ShashwatKedia Yes, allowed, the Nearby tasks will fill in if this one is done already. 🙂

nicolas-raoul avatar Feb 01 '24 13:02 nicolas-raoul

Hi @nicolas-raoul can anyone work work on this issue (1package = 1Pr) at a time or you need to get assigned to this issue?

neeldoshii avatar Feb 29 '24 12:02 neeldoshii

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

shashankiitbhu avatar Mar 02 '24 23:03 shashankiitbhu

@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

shashankiitbhu avatar Mar 03 '24 08:03 shashankiitbhu

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.

neeldoshii avatar Mar 03 '24 08:03 neeldoshii

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

shashankiitbhu avatar Mar 03 '24 08:03 shashankiitbhu

Hey @shashankiitbhu, Can I also work on it together ;)

kanahia1 avatar Mar 04 '24 17:03 kanahia1

@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)

shashankiitbhu avatar Mar 04 '24 18:03 shashankiitbhu

@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 🥲

shashankiitbhu avatar Mar 04 '24 21:03 shashankiitbhu