# **Improvement on the custom picture selector - Make it easier for contributors to choose pictures for upload on Commons Android app**
**Project Repository:** [https://github.com/commons-app/apps-android-commons](https://github.com/commons-app/apps-android-commons)
**GSoC Idea Link:** [https://github.com/commons-app/apps-android-commons/issues/4764](https://github.com/commons-app/apps-android-commons/issues/4764)
### **Profile:**
**Name:** Ayan Sarkar
**Email:** [ayansarkar1810@gmail.com](mailto:ayansarkar1810@gmail.com)
**Linkedin Profile:** [ayan-sarkar-44728a1a7](https://www.linkedin.com/in/ayan-sarkar-44728a1a7/)
**Github Profile:** [Ayan-10](https://github.com/Ayan-10)
**Other Communication Method:** Google Hangouts, Zulip
**Blogs on GeeksforGeeks:** [Articles](https://auth.geeksforgeeks.org/user/ayansarkar1810/articles)
**Location during GSoC:** West Bengal, India (UTC +5:30)
**Education:** B.TECH In Information Technology at Haldia Institute of Technology
**Typical working hours (include your timezone) during GSoC:** Between IST 5 pm to IST 2 am (UTC +5:30)
== Relevant Skills ==
- Experience in Android Development in Kotlin / Java
- Github Workflow and Git Version Control
- Retrofit and OkHttp
- Android UI design
- Experience in working with MVVM, MVP, MVC architecture
- Experience in working with Android Architecture Components
- Basic Understanding of RxJava, Dagger2
- Unit testing in Android (Robolectric and Mockito)
- Understanding of REST APIs
- Basic knowledge of Wikimedia APIs
## **Synopsis**
The [Wikimedia Commons Android app](https://github.com/commons-app/apps-android-commons) allows users to upload pictures from their Android phone/tablet to [Wikimedia Commons](https://commons.wikimedia.org/wiki/Main_Page). Commons is not only the image repository for Wikipedia but an independent project that seeks to document the world with photos, videos, and recordings.
Github link of the idea: [https://github.com/commons-app/apps-android-commons/issues/4764](https://github.com/commons-app/apps-android-commons/issues/4764)
Commons Android App Repo: [https://github.com/commons-app/apps-android-commons/](https://github.com/commons-app/apps-android-commons/)
The goal of this GSoC project is to make it easier for contributors to choose pictures for upload. The feature will include UI to mark some pictures as "not for upload" (for instance family pictures), hide/unhide marked pictures, minor changes to the selection indicator, gestures, and indicator when previewing a picture full-screen, efficient and fast scrolling.
### **Possible Mentor(s)**
## **Deliverables**
==== To be implemented ====
* **Mark images as not for upload**
Lots of images can be present on a device that is not for uploading in the Commons app like family pictures, personal images, images with copyrights. Users will try to avoid those images while uploading some images to Commons app. It will be beneficial to user if user can manually mark those as not for upload. For that purpose, two buttons will be implemented at the bottom of the custom image picker.
# **Upload button:** to start the Upload Wizard with the selected pictures (replacing the already implemented 鉁旓笍 button currently available at the top-right).
# **Mark as not for upload button:** After marking some images user can tap this button to mark these pictures as not for upload. Not for uploaded images will show with a 馃毇 overlay icon and greyed out. This state will be remembered even after restarting the app. Tapping "Mark as not for upload" when all selected pictures are already marked as "Mark as not for upload" has the opposite effect, which means those images will be shown as normal images.
* **Option for hide/unhide pictures**
Users may not want to see those images which are marked as "Not for upload" or have been uploaded already while uploading images to Commons. A switch will be implemented to hide/unhide pictures that are either marked as "Not for upload" or have been uploaded already. Hiding them allows the contributor to more easily spot pictures they might want to upload. After turning on/off the switch the images will adjust their position, and the transition will be in-place.
* **Marked images numbering** Currently, when selecting 3 pictures, they are numbered "1", "2", "3". Instead, please make all numbers always show the number of selected pictures, for instance, if 3 pictures are selected, they will all have the number "3", and be uploaded in the same order as their thumbnails are shown. Limit on number of images uploaded at once Issue: [[ https://github.com/commons-app/apps-android-commons/issues/3101 | 3101 ]]
* **Add a bubble scroll bar** Bubble scrollbar will be added so that users can easily locate the picture they are scrolling for. The bubble will show the date on which the pictures were taken.
* **Enhanced full-screen mode** For a good user experience full-screen mode will be enhanced such that the user can do all operations while staying in the full-screen mode. It will make the app more convenient for the user. A small overlay will be shown indicating whether the picture is selected or not, showing the number of selected pictures.
- **Gestures**:
- Left/right swipe to go from one picture to another.
- Swipe up to select the picture (the equivalent of tapping it in non-fullscreen mode) and show the next picture (the picture that follows in the folder view, skipping pictures that have either already been uploaded or ignored).
- Swipe down to ignore immediately.
==== How can it be implemented? ====
* **Mark images as not for upload**
Room Database will be used for handling database operations. A new entity class ex. `NotForUploadStatus` will be created for storing "not for upload" marked images which will create a table in the database to store all information about "not for upload" marked images. A new `Dao` ex. `NotForUploadDao` will be created to handle database operations.
Two buttons will be implemented one is for marking images as `not for upload` another one is for uploading those images. After marking some images if user clicks the `Mark as not for upload` button, `CustomSelectorViewModel` will be updated with the new selected images and the database table will be updated with selected images. While showing images on the `ImageFragment` by observing from `viewmodel` each image will be checked with the database if it's present in the not for upload database or not. If the image is present in the database the image will be shown with a 馃毇 overlay icon and greyed out.
**//Adding a flowchart to describe the tentative workflow//**.{F35034556}
* **Option for hide/unhide pictures**
A switch will be implemented to hide/unhide "not for upload" and "already uploaded" images. If user turns on the switch to hide all "not for upload" and "already uploaded" images, those images will be removed from the `ImageAdapter` and only uploadable images will be shown and removed images will be stored in a list with their previous indices. If user turns the switch off those removed images will be added with the adapter in their actual positions. Thus these hide/unhide images transformation will be in-place.
**//Adding a flowchart to describe the tentative workflow//**{F35034693}
* **Marked images numbering**
Unlike the current state of the app where selected images are numbered as their marking index, the images will be numbered as the total number of images selected. Every time a new image will be marked, all previous marked images numbering will be changed with the total number of images selected. So all times will be updated every time after marking/unmarking an image. Adding a limitation on the number of images uploaded at once.
* **Add a bubble scroll bar**
A date object will be added in the `Image` class as a field that will depict when the image was taken. The bubble will show that date in it. The scroll will happen on the basis of dates. I will use some open-source libraries to implement bubble scroll such as
- https://github.com/FutureMind/recycler-fast-scroll
- https://github.com/timusus/RecyclerView-FastScroll
* **Enhanced full-screen mode** To handle the swipe gestures(left, right, up, down) a gesture listener class will be implemented which will extend `SimpleOnGestureListener`, and inside `onFling()` method all swipe gestures will be detected. To act on those detections a new event listener class will be implemented which will implement `OnTouchListener` inside that method `onSwipeLeft()`, `onSwipeRight()`, `onSwipeUp()`, and `onSwipeDown()` will be added which will act on those detections, also the event listener class will be initialized with the gesture detector class. At last the `ZoomableDraweeView` will be edited such that `onSwipeLeft()`, `onSwipeRight()`, `onSwipeUp()`, and `onSwipeDown()` will be overridden in the `ZoomableActivity` like this
```
photo.setOnTouchListener{
fun onSwipeTop() {}
fun onSwipeRight() {}
fun onSwipeLeft() {}
fun onSwipeBottom() {}
}
```
On `onSwipeLeft()` and `onSwipeRight()` it will fetch the next and previous images respectively from `ImageFragment` and `onSwipeUp()` the image will be listed in selected images. After returning to `ImageFragment` the UI will be changed with full-screen mode edits. Also to indicate the full-screen image is selected the number of marked images will be shown in the top left corner.
##Mockups
**Mockup 1 - UI with two buttons and some not for upload images**
{F35034606}
**Mockup 2(A) - UI for Switch is turned off, already uploaded, and not for uploaded images are visible**
{F35034937}
**Mockup 2(B) - UI for Switch is turned on, already uploaded, and not for uploaded images are removed. Only uploadable images are visible, also new UI for numbering of marked images**
{F35034935}
**Mockup 3 - UI for bubble scrollbar with date**
{F35034942}
**Mockup 4 - small overlay on the top left corner of full-screen mode to show the image is selected, it will be removed if the image is not selected**
{F35035201}
## **Timeline**
|||||
|--- |--- |--- |--- |
|**Timeframe**|**Start Date**|**End Date**|**Task**|
|**Community Bonding Period**|**May 20, 2022**|**June 12, 2022**|**Getting involved with organization and mentors, Getting a depth knowledge of Wikimedia APIs, and Brushing up on testing skills. Getting more Familiarized with the project structure, Read Documentation, and Code of Conduct once again.**|
|**Week 1**|**June 13, 2022**|**June 19, 2022**|**Create UI of EditActivity .**|Set up database**|
|(SubTask)|713-June-2021|102|16-June-2021|Disscuss and Complete the EditActivity UI|create Entity and Dao classes|
|(SubTask)|107-June-2021|122|19-June-2021|Add two tabs in EditActivity for crop and blur.|2|Write tests of the classes|
|(SubTask)|13-|**Week 2**|**June-2021|13- 20, 2022**|**June-2021|Link the EditActivity with U 29, 2022**|**Mark as not for uploadActivity via a button.| UI**|
|(SubTask)|1420-June-2021|12|24-June-2021|Test the implementation till now.|2|Discuss and create UI for mark as not for upload|
|**Week 2**|**|(SubTask)|25-June 20, -2022**|**|29-June 29, -2022**|**Implement Crop Feature.**||Phase 1 Evaluation|
|(SubTask)|15-|**Week 3**|**June-2021|19-June-2021|Implementation of crop feature| 30, 2022**|**July 6, 2022**|**Finish mark as not for upload**|
|(SubTask)|230-June-2021|21-June2|3-July-2021|Test crop feature and bug fix.|2|Connect mark as not for upload UI with database|
|**Week 3**|**June 30, |(SubTask)|4-July-2022|6-July-2022**|**July 6, 2022**|**I|Write tests for total implement Blur Feature.**|ation and Bug fix|
|(SubTask)|22-June-2021|26-June-2021|Implementa|**Week 4**|**July 7, 2022**|**July 13, 2022**|**Adding option of blur feafor hide/unhide picture|s**|
|(SubTask)|27-Junely-2021|28-June2|10-July-2021|Test blur effect and bug fix.|2|Implement option for hide/unhide pictures|
|**Week 4**|**|(SubTask)|11-July 7, -2022**|**|13-July 13, -2022**|**Adding created newly edited image in API call, Finishing of Edit feature.**||Write unit tests for this feature and Bug fix|
|(SubTask)|29-June-2021|2-|**Week 5**|**July-2021|Creating new images, replace them into uploadedfiles 14, display them and post API call2022**|**July 20, Finish implementation of the whole Edit|2022**|**Marked images numbering**|
|(SubTask)|314-July-2021|42|17-July-2021|Write Test for this feature|2|Changing the whole structure of selecting images|
|(SubTask)|418-July-2021|52|20-July-2021|Test2|Chage the overall edit feature and bug fix|numbering for selected images|
|**Week 56**|**July 1421, 2022**|**July 207, 2022**|**Fixing Issue Number: [4312](https://github.com/commons-app/apps-android-commons/pull/4312) and [4320](https://github.com/commons-app/apps-android-commons/pull/4320) .Rest work on numbering and Discussion of scroll bar**|
|(SubTask)|621-July-2021|72|22-July-2021|Direct GPS on implementation|2|Limit on number of images uploaded at once|
|(SubTask)|723-July-2021|92|25-July-2021|Add back button, fetch username, and add share feature|2|Write tests for marked images numbering|
|(SubTask)|1026-July-2021|112|27-July-2021|Test2|Disscussion of implementation and bug fix|of bubble srollbar|
|**Week 67**|**July 218, 2022**|**July 27August 3, 2022**|**UIImplementation of Updates**|Bubble scrollbar**|
|(SubTask)|1228-July-2021|16-July2|1-August-2021|First Evaluation|2|Implemention of bubble scrollbar|
|(SubTask)|12-July-2020|16-July-2020|Discuss and Complete UI of all edit screens|
|(SubTask)|17-July-2020|19-July-2020|Test of the implementation and bug fix|
|**Week 7**|**July 28, 2022**|**August 3, 2022**|**Implement Update Depicts.**|
|(SubTask)|20-July-2021|24-July-2020|Implement classes and Adapters for depicts and make the API call with existing post functions|
|(SubTask)|24-July-2021|26-July-2021|Linking the UI with update depicts and display changes2-August-2022|3-August-2022|Write tests for bubble scrollbar|
|**Week 8**|**August 4, 2022**|**August 11, 2022**|**Tests Depicts and other updates**|
|(SubTask)|27-July-2021|29-July-2021|Write Tests for Depicts Update|
|(SubTask)|30-July-2021|31-July-2021|Tests for Depicts and bug fix|
|(SubTask)|1-August-2021|2-August-2021|Started work on other updates UI|
|**Week 9**|**August 12, 2022**|**August 19, 2022**|**Finish All Update Feature**|
|(SubTask)|3-August-2021|6-August-2021|Take the new string from user for title/description, coordinates and replace old data with new one and update by doing the API calls with existing post functions|
|(SubTask)|7-August-2021|8-August-2020|Write tests using JUnit|
|(SubTask)|8-August-2021|9-August-2021|Tests for this implementation and bug fix|
|**Week 10**|**August 20, 2022**|**August 27, 2022**|**Finish all over tasks and bug fixes**|
|(SubTask)|10-August-2021|13-August-2021|Overall Tests|
|(SubTask)|14-August-2021|16-August-2021|Remaining Bug fix and suggestions|
|(SubTask)|16-August-2020|23-August-2020|Final Evaluation|
|**Week 11**|**August 28, 2022**|**September 4, 2022**|**Finish all over tasks and bug fixes**|
|(SubTask)|10-August-2021|13-August-2021|Overall Tests|
|(SubTask)|14-August-2021|16-August-2021|Remaining Bug fix and suggestions|
|(SubTask)|16-August-2020|23-August-2020|Final Evaluation|
|**Week 12 Final**|**September 5, 2022**|**August 12, 2022**|**Finish all over tasks and bug fixes**28-August-2022|31-August-2022|Overall left tests|
|(SubTask)|10-August-September-2021|13-August2|4-September-2021|Overall Tests|2|Remaining Bug fix and suggestions|
|(SubTask)|14-August-2021|16-August-2021|Remaining Bug fix and suggestions|
|(SubTask)|16-August-2020|23-August-2020|Final Evaluation**Week 12 Final**|**September 5, 2022**|**August 12, 2022**|**Final Evaluation**|
## **Contributions For Commons App**
### **Bug fixs:**
[[ https://github.com/commons-app/apps-android-commons/pulls?q=is%3Apr+author%3AAyan-10+ | Here ]] you can see all PRs that I made.
* **Total: 35**
* **Merged: 32**
* **Pending: 1**
* **Not reviewed yet: 2**
|||||
|--- |--- |--- |--- |
|**PR Number**|**About Bug Fix**|**Issue Number**|**Status**|
|[4418](https://github.com/commons-app/apps-android-commons/pull/4418)|Added a feature for editing coordinates (Implemented location picker).|[8](https://github.com/commons-app/apps-android-commons/issues/8)|Merged|
|[4475](https://github.com/commons-app/apps-android-commons/pull/4475)|Added option to show and modify location while uploading.|[8(comment)](https://github.com/commons-app/apps-android-commons/issues/8#issuecomment-844147304)|Merged|
|[4771](https://github.com/commons-app/apps-android-commons/pull/4771)|Nearby tab accessible without GPS.|[3732(comment)](https://github.com/commons-app/apps-android-commons/issues/3732#issuecomment-1019542635)|Merged|
|[4725](https://github.com/commons-app/apps-android-commons/pull/4725)|Option for editing depictions.|[4616](https://github.com/commons-app/apps-android-commons/issues/4616)|Open|
|[4605](https://github.com/commons-app/apps-android-commons/pull/4605)|Displaying Category image and Description.|[3604](https://github.com/commons-app/apps-android-commons/issues/3604) and [4527](https://github.com/commons-app/apps-android-commons/issues/4527)|Merged|
|[4515](https://github.com/commons-app/apps-android-commons/pull/4515)|Added option for bookmarking Wikidata items.|[3700](https://github.com/commons-app/apps-android-commons/issues/3700)|Merged|
|[4672](https://github.com/commons-app/apps-android-commons/pull/4672)|Option for editing caption and description.|[4615](https://github.com/commons-app/apps-android-commons/issues/4615)|Merged|
|[4605](https://github.com/commons-app/apps-android-commons/pull/4605)| Update Nearby list according to chip state.|[4511](https://github.com/commons-app/apps-android-commons/issues/4511)|Merged|
|[4366](https://github.com/commons-app/apps-android-commons/pull/4366)| Made locale non-dependent on phone OS settings, but choosable on app settings.|[1821](https://github.com/commons-app/apps-android-commons/issues/1821)|Merged|
|[4406](https://github.com/commons-app/apps-android-commons/pull/4406)| Added an option to Remove a new language description while uploading.|[2810](https://github.com/commons-app/apps-android-commons/issues/2810)|Merged|
|[4755](https://github.com/commons-app/apps-android-commons/pull/4755)|Option for adding location for those pictures which have no location.|[1848](https://github.com/commons-app/apps-android-commons/issues/1848)|Merged|
|[4746](https://github.com/commons-app/apps-android-commons/pull/4746)|Add bookmarked items to suggested depictions .|[4745](https://github.com/commons-app/apps-android-commons/issues/4745)|Open|
|[4489](https://github.com/commons-app/apps-android-commons/pull/4489)|Added option for sharing achievements and a back button in ProfileActivity.|[4312](https://github.com/commons-app/apps-android-commons/issues/4312)|Merged|
|[4880](https://github.com/commons-app/apps-android-commons/pull/4880)| Show recently used languages in language selection.|[4544](https://github.com/commons-app/apps-android-commons/issues/4544)|Merged|
|[4799](https://github.com/commons-app/apps-android-commons/pull/4799)|When Wikidata has no description showing instance_of's label as a description.|[4539](https://github.com/commons-app/apps-android-commons/issues/4539)|Merged|
|[4803](https://github.com/commons-app/apps-android-commons/pull/4803)|Description and thumbnail is showing for the categories that are associated with Wikidata.|[4762](https://github.com/commons-app/apps-android-commons/issues/4762)|Merged|
|[4754](https://github.com/commons-app/apps-android-commons/pull/4754)|If users already selected their preference about a nearby place while uploading, don't ask again.|[4497](https://github.com/commons-app/apps-android-commons/issues/4497)|Merged|
|[4735](https://github.com/commons-app/apps-android-commons/pull/4735)|Suggest User to turn on camera location.|[4728](https://github.com/commons-app/apps-android-commons/issues/4728)|Merged|
|[4727](https://github.com/commons-app/apps-android-commons/pull/4727)|After uploading by sharing an image from gallery the app should returns to contributions tab.|[4718](https://github.com/commons-app/apps-android-commons/issues/4718)|Merged|
|[4719](https://github.com/commons-app/apps-android-commons/pull/4719)|"Starting uploads" notification is cleaned up when "Finishing uploads" notification pops up.|[4631](https://github.com/commons-app/apps-android-commons/issues/4631)|Merged|
|[4551](https://github.com/commons-app/apps-android-commons/pull/4551)|Wikidata Items media tab is showing media in beta version.|[4532](https://github.com/commons-app/apps-android-commons/issues/4532) and [3135](https://github.com/commons-app/apps-android-commons/issues/3135)|Merged|
|[4481](https://github.com/commons-app/apps-android-commons/pull/4481)|Made media details caption & description copyable.|[4480](https://github.com/commons-app/apps-android-commons/issues/4480)|Merged|
|[4479](https://github.com/commons-app/apps-android-commons/pull/4479)|Tutorial removed from log out state.|[4477](https://github.com/commons-app/apps-android-commons/issues/4477)|Merged|
|[4356](https://github.com/commons-app/apps-android-commons/pull/4356)|READ_EXTERNAL_STORAGE permission is not necessary while picking file from gallery.|[3744](https://github.com/commons-app/apps-android-commons/issues/3744)|Merged|
|[4412](https://github.com/commons-app/apps-android-commons/pull/4412)|New review layout UI for landscape view.|[4343](https://github.com/commons-app/apps-android-commons/issues/4343)|Merged|
|[4705](https://github.com/commons-app/apps-android-commons/pull/4705)|Next button is not clickable while background task is going on.|[4703](https://github.com/commons-app/apps-android-commons/issues/4703)|Merged|
|[4763](https://github.com/commons-app/apps-android-commons/pull/4763)|Clicking the back button in Contribution Tab after uploading an image, exit the app.|[4760](https://github.com/commons-app/apps-android-commons/issues/4760)|Merged|
|[4830](https://github.com/commons-app/apps-android-commons/pull/4830)|Unit Tests for LocationPickerActivity.|Unit Test|Merged|
|[4846](https://github.com/commons-app/apps-android-commons/pull/4846)|Unit Tests for LocationPickerViewModel.|Unit Test|Merged|
|[4416](https://github.com/commons-app/apps-android-commons/pull/4416)|TextView blank issue fixed.|[4415](https://github.com/commons-app/apps-android-commons/issues/4415)|Merged|
|[4382](https://github.com/commons-app/apps-android-commons/pull/4382)|Removed next button in quiz.|[4309 (comment)](https://github.com/commons-app/apps-android-commons/issues/4309#issuecomment-810241656)|Merged|
|[4315](https://github.com/commons-app/apps-android-commons/pull/4315)|In Achievements for each of the help popups, it would be great to have a link that a wiki page that explains things much more deeply. So I added a link to each info button that shows an alert dialogue and there I add a READ ME button from where the user can open the following custom webpage.|[3433](https://github.com/commons-app/apps-android-commons/issues/3433)|Merged|
|[4333](https://github.com/commons-app/apps-android-commons/pull/4333)|Fixed this issue with androidx.appcompat.widget.SearchView and rxBinding3 to show the searchview in lower API devices.|[4327](https://github.com/commons-app/apps-android-commons/issues/4327)|Merged|
|[4341](https://github.com/commons-app/apps-android-commons/pull/4341)|Toggling the info on the fields in the achievement tab is difficult because the icons are so small. So I make the whole label clickable. Now users can anywhere in the label to see the dialog. I don't remove the icon because It will help the user to understand that the label is clickable..|[4318](https://github.com/commons-app/apps-android-commons/issues/4318)|Merged|
|[4323](https://github.com/commons-app/apps-android-commons/pull/4323)|The help icon was getting invisible for small screen devices. After fixing, now the icon is visible for every device cause it's adjusting its lines instead of overlapping.|[3434](https://github.com/commons-app/apps-android-commons/issues/3434)|Merged|
### **Code Reviews:**
||||
|--- |--- |--- |
|**PR Number**|**About Review**|**Issue Number**|
|[4518](https://github.com/commons-app/apps-android-commons/pull/4518)|Recognised a bug in the PR which is not resolving the actual issue. |[4513](https://github.com/commons-app/apps-android-commons/issues/4513)|
|[4306](https://github.com/commons-app/apps-android-commons/pull/4306)|Added before and after merge differences, found some minor code style mistake and java modifier issues |[4299](https://github.com/commons-app/apps-android-commons/issues/4299)|
### **Issues:**
[[ https://github.com/commons-app/apps-android-commons/issues?q=is%3Aissue+author%3AAyan-10 | Here ]] you can see all issues that I created.
||||
|--- |--- |--- |--- |
|**Issue Number**|**About Issue**|**Status**|
|[4759](https://github.com/commons-app/apps-android-commons/pull/4759)|SSLHandshakeException while logging in on devices with API level 19.|Open|
|[4716](https://github.com/commons-app/apps-android-commons/pull/4716)|Tapping notification (Tap to view your upload) is not working at all.|Open|
|[4507](https://github.com/commons-app/apps-android-commons/pull/4507 )|App crashed while deleting recent searches.|Open|
|[4607](https://github.com/commons-app/apps-android-commons/pull/4607 )|Copied description, caption, and language structure is removed after canceling upload of one media |Open|
|[4749](https://github.com/commons-app/apps-android-commons/pull/4749 )|Crash while clicking on the hamburger icon on the bottom sheet|Closed|
|[4415](https://github.com/commons-app/apps-android-commons/pull/4415 )|Statistics TextViews are not showing in Achievements Fragment|Closed|
|[4402](https://github.com/commons-app/apps-android-commons/pull/4402 )|Pause/Resume Button is not available in lower API devices|Open|
|[4532](https://github.com/commons-app/apps-android-commons/pull/4532 )|No images are showing in Items media tab|Closed|
|[4400](https://github.com/commons-app/apps-android-commons/pull/4400 )|{{Creator: Andy Mabbet}} in place of actual author name|Open|
|[4499](https://github.com/commons-app/apps-android-commons/pull/4499 )|Unit tests are breaking because of recent changes in some Activities|Closed|
|[4733](https://github.com/commons-app/apps-android-commons/pull/4733)|Categories should be fetched every time they are updated|Open|
|[4718](https://github.com/commons-app/apps-android-commons/pull/4718)|After uploading by sharing an image from the gallery the app again returns to Upload Activity|Closed|
|[4760](https://github.com/commons-app/apps-android-commons/pull/4760)|Clicking the back button in Contribution Tab after uploading an image, return again to Contribution Tab|Closed|
|[4611](https://github.com/commons-app/apps-android-commons/pull/4611 )|Make custom image selector available from Nearby|Open|
|[4589](https://github.com/commons-app/apps-android-commons/pull/4589)|Empty screen while no images found in custom picture selector|Closed|
|[4590](https://github.com/commons-app/apps-android-commons/pull/4590)|FAB of custom selector is still open after uploading|Closed|
|[4320](https://github.com/commons-app/apps-android-commons/pull/4320)|If GPS is not turned on and user click YES in the Turn on location dialog. It should turn on GPS directly instead of going to Settings like Google Maps.|Open|
|[4312](https://github.com/commons-app/apps-android-commons/pull/4312)|ProfileActivity should have a back button and the title bar should have some content|Closed|
|[4327](https://github.com/commons-app/apps-android-commons/pull/4327)|On Nearby Fragment Place type SearchView is not visible properly in lower API devices|Closed|
|[4335](https://github.com/commons-app/apps-android-commons/pull/4335)|If the location is not available and user clicks to Exists and Needs Photo chip, it does not respond. In that state, if user clicks those chips it should show a Toast saying " Location not available ".|Open|
|[4343](https://github.com/commons-app/apps-android-commons/pull/4343)|Elements of ReviewActivity is not visible to users in the landscape. We should make a landscape layout for it.|Closed|
|[4762](https://github.com/commons-app/apps-android-commons/pull/4762)|Only name of the category is showing for the categories which are linked with depicts|Closed|
## **About Me**
I am a second-year Information Technology undergraduate student at **Haldia Institute of Technology.**
I am passionate about android development and I have been doing it for almost more than 2 years. I am an enthusiast about open source and love to learn and share. Since I get to know about open source I have been contributing to various open-source projects regularly. Thanks to GSOC and Wikimedia that I found this project and I found it very interesting. I think this project will be a great platform for me to learn a lot and I will give my 100% to contribute to this project.
### **Activies**
* **[Microsoft Learn Student Ambassador (MLSA''21):](https://studentambassadors.microsoft.com/en-US/profile/98148)** learn basics of Azure fundamentals, Learn and host a WordPress website in Azure Developing a Web App in using Azure with Java
* **MEMBER OF GOOGLE DEVELOPER CLUB ( KOLKATA )**
## **Past Experience**
### **Work Experience**
* **GIRLSCRIPT SUMMER OF CODE 2021** ( It will be over 31 May before GSOC coding period starts )
* **Study Partner App:** [Fixed Sign in failed state. User did not get any response if sign-in failed for API 10 exception. Responsible for handling that state using StyleableToast.](https://github.com/krayong/Study_Partner/pull/81) ( Merged )
* [Solved many programming problems related to Graph and other DS Algo.](https://github.com/Algo-Phantoms/Algo-Tree/pulls/Ayan-10) ( Not reviewed yet )
* **WINNER OF HACKTOBERFEST 2020**
* Got merged 4 Pull requests. Contributed to various projects mentioned in other contributions ( Merged )
* **OTHER OPEN SOURCE CONTRIBUTIONS**
* **Fossasia Neurolab:** [In an activity Cardviews are hardcoded, I generated the Cardviews with Recyclerview and maintain a header image that the header image can be scrollable with Cardviews.](https://github.com/fossasia/neurolab-android/pull/676) ( Not reviewed yet )
* **Amahi Android:** [Give localization support for the Hindi language.](https://github.com/amahi/android/pull/699) ( Merged )
* **Amahi Android:** [Give localization support for the Bengali language.](https://github.com/amahi/android/pull/675) ( Merged )
* **GEEKSFORGEEKS INTERN ( TECHNICAL CONTENT WRITER )**
* Responsible for writing technical blogs on various technical topics.
### **Personal Projects**
* [Conduit App: Medium Website Clone](https://github.com/Ayan-10/Conduit) - Make a clone of the renowned blog app Medium. To build this project used a backed API called realworld.io. In the app, you can login/sign up and write a blog, and read others' blogs.
* Used Retrofit and Gson for API calls
* Used Junit for tests
* Used LiveData and ViewModel
* Used Navigation Architecture
* [Sun Shine: Weather App](https://github.com/Ayan-10/Sun-Shine) - This app helps you see the weather forecast of your favorite cities.
* API calls using volley library.
* Notification
* Used content provider.
* [Emojify App](https://github.com/Ayan-10/Emojify) - This app can detect your face then classify it. According to your mood, the app can cover an emoji on your face.
* used mobile vision library for face recognization
* [L.O.L: Meme Generator App](https://github.com/Ayan-10/L.O.L-meme-generator-app) - make a meme share app using API and volley and glide library.
### **Availability**
* **Are you eligible for Google Summer of Code?**
Yes, I am eligible for Google Summer of Code.
* **Do you plan to submit any other proposal apart from this one?**
No, I am only submitting this proposal.
* **Do you have any other plans during the period of GSoC?**
No, I don鈥檛 have any other plans during the period of GSoC. I was selected for Girlscript Summer of Code 2021 but It will be over before GSOC starts. I haven't any examinations during the GSoC period and also I am not applying for any other program. Google Summer of Code is the topmost priority for me.
* **How many hours per week can you dedicate to this?**
I will dedicate as much as need. Minimum 20-30 hours each week I will definitely give but I am willing to dedicate more if needed.
* **Have you been accepted to GSoC before?**
No, I have never been accepted to GSOC before.
### **Participation**
* **What is the current state of the App/Project?**
User around the world can upload images and information about images in the app and there is a leaderboard section where people can see their contribution compare to others. But now in this app, there is a little privacy issue before uploading images people can't edit that image which is a privacy concern for users which is very crucial and also there is no way to correct or update wrong or misguiding information about any image.
* **What is your goal for this GSoC Task and how will it benefit Wikimedia projects?**
The goals are to make an **edit screen** for user where user can edit their images before uploading and also **edit any uploaded wrong information for an image** and also make some enhancement in the app. User can get a more satisfying experience from the app after this contribution and the biggest benefit of being able to edit pictures before upload is it will improved image searchability.
### **Involvement**
* **Why you want to contribute to this project?**
After I found the organization I absolutely loved the way this community works. Community members are so helpful and generous to everyone. I am going to learn and gain experience so much from this project and can come up with new ideas. Other than that I found this project very interesting. So I want to mention that I already go through the codebase and project structure in where I want to contribute related to what I want to contribute in this project as you can see in the implementation section in the proposal.
* **What does open-source mean to you?**
Open Source is a platform for learning. People say "learning while doing" is the best way to learn and Open Source is the way to do so. It helps to challenge yourself and helps to get that potential out of you. It gives a lot of exposure to a student. It also helps to build a great community and helps to promote diversity. It's a way to learn and give it back to the community by contributing and helping others.
* **What does GSoC mean to you?**
For me, GSoC is a platform to learn and gain experience and also give something to the community, and also GSoC is not just about selection. It's more than that. It's about staying with the organization even after GSoC ends and give my 100% to complete tasks that I committed to do and also I can get to learn new things so much here.