* Update gradle version.
Also update jacoco plugin to work with latest gradle.
* Update target sdk to 28.
* Update other dependencies to latest versions.
* Remove totally unused(?) local jar file.
* Remove dependency on nineoldandroids.
The functions it provides are no longer necessary.
This also removes a homemade "evaluate" function, which is readily
available in the Support library.
* Remove dependency on Traceur.
This library has not been updated in two years (may no longer be maintained?), and no longer works with
the latest RxJava.
* Enable test coverage only when performing CI.
Running test coverage on every single build while developing in the IDE is quite a waste of time.
* Suppress gradle Notes and Warnings from reflection-using packages.
The build output was getting extremely long, and was actually causing
the build to fail because of the sheer size of the log.
* Suppress gradle Note messages during tests and CI.
Stop CI messages from exploding to 10k+ lines.
* Temporarily remove instrumented test(s).
The project's instrumented tests consist of a single test which sets a
SharedPreference, then verified that the SharedPreference was set.
I humbly submit that this is not worth the trouble of having the CI
server download the system image, spin up an emulator, load the APK, and
run it just for this purpose.
Once the instrumented tests are ready for prime time, we can reinstate
instrumented tests in CI.
* replaced icafe with metadata extractor
* replaced icafe with metadata extractor
* removed icafe from gradle
* removed icafe from gradle
* Revert: travis commented code
* Use original content URI
* merged pr
* commit after merge
* modified unit tests
* Use easy image for image picker
* Do not use harcoded mime type
* Use uploadable file for image uploads
* Add picker files in filepicker module
* Remove redundant checks for file
* Make usage of file extensions consistent
* Add javadocs
* Fix tests
* Enable image upload using bookmark activity
* Fix multiple uploads
* Fix external image uploads
* Fix chooser intents
* Fix image quality checks
* Segregate internal and external upload intents
* Invoke all error messages from one place
* Minor changes
* Fix tests
* Add image processing service tests
* Use image picker to pick images for upload
* Consolidate storage permissions in Upload activity
* With proper request codes for image upload
* Use constants for upload limits
* Check for request code while handling requests
* Let fragment initiate the camera/gallery instead of activity
* Delete unused external storage utils
* Encrypt keystore
* Modify build.gradle to add signing configs for env vars
* Fixed keystore name
* Remove encrypted file that is causing build errors
* Add encrypted keystore again
* Remove failed keystore again...
* Add keystore encrypted by Nicolas
* Modify env var names for key and iv
* Added new upload activity that receives shared files from the gallery. Cards show and hide, plus titles are correct. Displayed thumbnails for the shared images
* Better handling of the view paging plus error handling for required fields.
* Code cleanup to make things more readable.
* Extracted a model from the category search fragment that can possibly be shared with the new upload activity.
* Added category selection to the combined upload screen.
* Cleanup before the home-stretch on the GUI.
* Adding license selection.
* Fixed build warnings + cleanup
* Start to support the dark theme.
* Work in progress to add quality checking.
* Fixing merge.
* GPSExtractor: optimized away the EXifInterface object
* Implemented submit functionality, temporarily fixed jacoco crash by disabling DUMMY UploadView object.
* Implemented uploading of categories along with the picture. The category screen now displays GPS and recent categories when nothing is searched.
* Implemented caching of files. Did some work on picture quality detection.
* Implemented too dark picture detection.
* Added a side card for zoom and map buttons along with pretty animations for stuff.
* Added duplicate image on commons checking and fixed files not getting proper file extensions in several places.
* Added support for map button and switched in-app upload buttons to UploadActivity
* Pretty pretty animations!
* Implemented zoom functionality for th background image. Just pinching on the image works instead of requiring buttons.
* Added multi-language descriptions with categories by region.
* Reimplemented the duplicate title checker and implemented a check against putting the same language twice in the description.
* Javadocs for Description and UploadPresenter, plus some general cleanup.
* Small code changes.
* Implemented login checks for the Upload screen.
* Implement receiving data from Nearby.
* Feature/permissions library (#1855)
* Added permission for Dexter, the runtime permission handling library
* [Preparing fir issue #1773] Added a utility function which would take the user to app settings screen where he could manually give us the required permission
* Added an alert dialog with positive and negative callback [Preparing fir issue #1773]
* Improvements in the way External Storage Permission is handled in MultipleShareActivity[Bug fix#1697]
1. Used dexter to handle the external storage permission
2. Behaviour changes : When user tries to share(uppload) images to commons via MultipleShareActivity, following decision tree is followed
a. If the app has permission for external storage, normal upload operation is followed
b. If the app does not has the permission for external storage, dexter is used to ask for the same
c. If the user gives us the required permission, normal upload flow is proceeded
d. If the doesnot gives us the required permission a rationale dialog is shown with the appropriate message to let him know why we need the permission
e. If he presses okay, steps a-c are followed and if he presses cancel, we close the app.
f. If while asking for permission, the user chooses never ask again, then next time he tries to upload an image via MSA, the rational dialog follows the app setting screen where he could manually give us the required permission and the onActivityResult of same is handled
* Added a Constants class to handle request and result codes from one place and other related constants common to the all app elements
* replaced hardcoded strings ok and cancel in DialogUtil to string resources
* init permission rationale dialog in activities onCreate
* Code formatting, updated access modifiers wherever required, added javadocs for new methods created
* *shifted constants to app class
*Added JavaDocs in PermissionUtils
* removed class REQUEST_CODES from CommonsApplication and instead put the enclosing constants in the App class itself
* Made Codacy happy.
* Abstarcted permission acquisition into new class DexterPermissionObtainer
* Fixed Nearby upload detection
* Migrated bad picture detection from AsyncTask to RxJava.
* Removed ShareActivity and related dead code
* Removed dead or duplicate code from FileProcessor
* Added info button to title EditText
* Fixed the add description button not disappearing.
Added "Starting Upload" toast.
Added link to the license on final screen.
Made it so that the map button is hidden when image lacks gps coords.
* Support in app multiple uploads
* Minor changes to fix build
* Changes to fix pending issues with upload flow
* Fix display of similar image fragment
* When uploading several files at once the date is missing #1854 (#2)
* Bug fix issue #1854
* updated ContributionsDao to save create date, which it was not doing currently [it was instead saving current date]
* UploadItem accepts are dateCreated param
* Added a function in UploadModel, getFileCreatedDate which tries to fetched the file creaction date from all possible content providers.
* Fix pending issues in upload flow
* Make multiple uploads work for Google Photos
* Fix default state for upload activity
* Fix keyboard state for license screen
* Fix descriptions for uploads
* wip
* Fix language spinner
* Added new upload activity that receives shared files from the gallery. Cards show and hide, plus titles are correct. Displayed thumbnails for the shared images
* Better handling of the view paging plus error handling for required fields.
* Code cleanup to make things more readable.
* Extracted a model from the category search fragment that can possibly be shared with the new upload activity.
* Added category selection to the combined upload screen.
* Cleanup before the home-stretch on the GUI.
* Adding license selection.
* Fixed build warnings + cleanup
* Start to support the dark theme.
* Work in progress to add quality checking.
* Fixing merge.
* GPSExtractor: optimized away the EXifInterface object
* Implemented submit functionality, temporarily fixed jacoco crash by disabling DUMMY UploadView object.
* Implemented uploading of categories along with the picture. The category screen now displays GPS and recent categories when nothing is searched.
* Implemented caching of files. Did some work on picture quality detection.
* Implemented too dark picture detection.
* Added a side card for zoom and map buttons along with pretty animations for stuff.
* Added duplicate image on commons checking and fixed files not getting proper file extensions in several places.
* Added support for map button and switched in-app upload buttons to UploadActivity
* Pretty pretty animations!
* Implemented zoom functionality for th background image. Just pinching on the image works instead of requiring buttons.
* Added multi-language descriptions with categories by region.
* Reimplemented the duplicate title checker and implemented a check against putting the same language twice in the description.
* Javadocs for Description and UploadPresenter, plus some general cleanup.
* Small code changes.
* Implemented login checks for the Upload screen.
* Implement receiving data from Nearby.
* Feature/permissions library (#1855)
* Added permission for Dexter, the runtime permission handling library
* [Preparing fir issue #1773] Added a utility function which would take the user to app settings screen where he could manually give us the required permission
* Added an alert dialog with positive and negative callback [Preparing fir issue #1773]
* Improvements in the way External Storage Permission is handled in MultipleShareActivity[Bug fix#1697]
1. Used dexter to handle the external storage permission
2. Behaviour changes : When user tries to share(uppload) images to commons via MultipleShareActivity, following decision tree is followed
a. If the app has permission for external storage, normal upload operation is followed
b. If the app does not has the permission for external storage, dexter is used to ask for the same
c. If the user gives us the required permission, normal upload flow is proceeded
d. If the doesnot gives us the required permission a rationale dialog is shown with the appropriate message to let him know why we need the permission
e. If he presses okay, steps a-c are followed and if he presses cancel, we close the app.
f. If while asking for permission, the user chooses never ask again, then next time he tries to upload an image via MSA, the rational dialog follows the app setting screen where he could manually give us the required permission and the onActivityResult of same is handled
* Added a Constants class to handle request and result codes from one place and other related constants common to the all app elements
* replaced hardcoded strings ok and cancel in DialogUtil to string resources
* init permission rationale dialog in activities onCreate
* Code formatting, updated access modifiers wherever required, added javadocs for new methods created
* *shifted constants to app class
*Added JavaDocs in PermissionUtils
* removed class REQUEST_CODES from CommonsApplication and instead put the enclosing constants in the App class itself
* Made Codacy happy.
* Abstarcted permission acquisition into new class DexterPermissionObtainer
* Fixed Nearby upload detection
* Migrated bad picture detection from AsyncTask to RxJava.
* Removed ShareActivity and related dead code
* Removed dead or duplicate code from FileProcessor
* Added info button to title EditText
* Fixed the add description button not disappearing.
Added "Starting Upload" toast.
Added link to the license on final screen.
Made it so that the map button is hidden when image lacks gps coords.
* Support in app multiple uploads
* Minor changes to fix build
* Changes to fix pending issues with upload flow
* Fix display of similar image fragment
* When uploading several files at once the date is missing #1854 (#2)
* Bug fix issue #1854
* updated ContributionsDao to save create date, which it was not doing currently [it was instead saving current date]
* UploadItem accepts are dateCreated param
* Added a function in UploadModel, getFileCreatedDate which tries to fetched the file creaction date from all possible content providers.
* Fix pending issues in upload flow
* Make multiple uploads work for Google Photos
* Fix default state for upload activity
* Fix keyboard state for license screen
* Fix descriptions for uploads
* wip
* Fix language spinner
* Add bookmark star images
* Add bookmark item in navigation menu
* Add Activity for bookmarks
* Implement bookmarks viewpager
* Bookmark object and bookmarkDao
* Implement Bookmark Picture Fragment and Controller
* Implement image detail bookmark menu action UI
* contentProvider + config + dao rework
* Fix Dao and Content Provider crashes
* Link bookmark controllers and dao
* Implement bookmark location fragment, controller
* Add bookmark icon to location items
* Add empty bookmark list behavior and refactoring
* bookmarkLocation dao and contentProvider
* Fix bookmarks location crashes
* Rename and refactor classes
* Implement location list refresh
* Fix picture list update
When user come back from detail picture fragment, it solve the refresh bug.
* full test coverage
* Refactor bookmarks classes
* Fix bookmarks pictures loading
* Fix bookmark locations list display
* Java Documetation
* Fix Code review quality
* Fix DB version update
* Remove forgotten todo
* Update bookmark activity base class
Change from AuthenticatedActivity to BaseNavigationActivity
* Fix log reporting for release builds
* Fix logs for release builds
* wip
* Clean up the branch to exclude unrelated changes
* With java docs
* Uncomment quiz checker
* Check for external storage permissions before sending logs
* With more java docs
* Fix crash while zipping log files
* Do not log token and cookies
* Add instruction to restart app
* Bugfix/upload via share (#1920)
* Bug Fix#1878
* Added a java library to fetch the MIME type from input stream
* Fetch MIME type using this and use the contribution tag only when this fails:
* formatting changes, removed unused commented out line
* Versioning and changelog for v2.8.5 (#1923)
* Versioning for v2.8.5
* Update changelog.md
* Sweeping update of gradle and library versions.
This updates all of the dependencies of the project to their latest
versions. Everyone should please upgrade to the latest version of Android
Studio, update your build tools, and keep your version of Gradle and the
Kotlin plugin up to date.
* Update build tools in travis.
* Remove cruft and fix tests.
* Remove even more stuff.
* Reinstate instrumented tests.
* Update emulator image in travis.
* Localisation updates from https://translatewiki.net.
* Work towards eliminating string literals from code. (#1861)
String literals are being used in many places in the code, instead of
proper string resources which are automatically localized. This PR
replaces many of the string literals with pre-packaged resources, or will
add the appropriate string if necessary.
* Add button on image details to copy wikicode to clipboard (#1849)
* Add button on image details to copy wikicode to clipboard
* Make copy wikicode button width the same as the nominate deletion button width by filling in background
* Build fix
* Enable ProGuard for Debug and Release builds.
This enables ProGuard minification, which significantly shrinks the APK
(for both debug and release configurations) and vastly decreases the
method count.
* Add ProGuard rules for test builds.
* Add Traceur for getting meaningful RxJava stack traces (#1832)
* Hotfix for overwrite issue in 2.8.0 (#1838)
* This solution is an hotfix for overrite issue came back on 2.8.0 version. What I did is checking the extension, and if it is null, adding .jpg suffix. Because commons files always have suffixes, and we should compare file names after adding suffixes. Othervise overrides are possible.
* Check if file title includes an extension already, by checking if is there any dot in it.
* Fix logic error
* Add uncovered tests
* Remove unecessary line breaks
* Make Javadocs more explicit
* Versioning and changelog for v2.8.2 (#1842)
* Versioning for v2.8.2
* Changelog for v2.8.2
* Add logs in wiki data edit and session refresh flow (#1874)
* Fix logout (#1875)
* [WIP] Refactor feedback and quiz to reduce possibility of NPE (#1881)
* Refactor feedback and quiz to reduce possibility of NPE
* Handle throwables in quiz checker
* Minor refactoring
* Set Traceur to only work in DEBUG mode (#1884)
* Bug fix for uploaded images count in achievements activity (#1885)
* Versioning and changelog for v2.8.3 (#1886)
* Update changelog.md
* Versioning for v2.8.3
* Added permission for Dexter, the runtime permission handling library
* [Preparing fir issue #1773] Added a utility function which would take the user to app settings screen where he could manually give us the required permission
* Added an alert dialog with positive and negative callback [Preparing fir issue #1773]
* Improvements in the way External Storage Permission is handled in MultipleShareActivity[Bug fix#1697]
1. Used dexter to handle the external storage permission
2. Behaviour changes : When user tries to share(uppload) images to commons via MultipleShareActivity, following decision tree is followed
a. If the app has permission for external storage, normal upload operation is followed
b. If the app does not has the permission for external storage, dexter is used to ask for the same
c. If the user gives us the required permission, normal upload flow is proceeded
d. If the doesnot gives us the required permission a rationale dialog is shown with the appropriate message to let him know why we need the permission
e. If he presses okay, steps a-c are followed and if he presses cancel, we close the app.
f. If while asking for permission, the user chooses never ask again, then next time he tries to upload an image via MSA, the rational dialog follows the app setting screen where he could manually give us the required permission and the onActivityResult of same is handled
* Added a Constants class to handle request and result codes from one place and other related constants common to the all app elements
* replaced hardcoded strings ok and cancel in DialogUtil to string resources
* init permission rationale dialog in activities onCreate
* Code formatting, updated access modifiers wherever required, added javadocs for new methods created
* *shifted constants to app class
*Added JavaDocs in PermissionUtils
* removed class REQUEST_CODES from CommonsApplication and instead put the enclosing constants in the App class itself
* Eliminate the use of Picasso.
This gets rid of the single use of the Picasso library (which was causing
the whole library to be imported and shipped) and replaces it with Glide.
TODO: replace this and the other instance(s) of Glide usage with Fresco,
or vice versa.
* Remove dependency on Glide.
This removes the dependency on Glide, as well as the SVG rendering
library, whose only purpose was to display a single SVG image in the
Notification activity. Unfortunately Android doesn't support SVG natively,
but Echo notifications have icons that are SVG formatted. Rather than
import a bunch of heavy libraries to support this single case of SVG
rendering, we can simply create a few local drawables that correspond to
the different types of notifications, and use them instead.
* Remove multidex!
Multidex is a killer of performance and should be avoided at all costs.
* Remove further unused bits.
* Remove final vestige of multidex.
* Quiz (#1629)
* Layout inflated
* Layout for mcq added
* Inflated Basic Layout
* Implemented basic flow
* Added the basic implementation pf score
* Added the result layout
* Added the result layout
* Added functionality to set result
* Changed the launcher intent to Quiz Activity for testing purpose
* Explanations of answers added
* Improved the layout of quiz result a bit
* Fixed some minor issues
* Fixed build issues
* Api Added and basic structure for calling implemented
* Added intents
* Added the title
* Fixed image error and improved quality of pr
* Made separate class for checking quiz
* Added counter
* Implemented back and next for quiz result
* Added back functionality to quiz
* Added progressBar
* Fixed bugs
* Improved code quality
* Imporved code Quality
* Updated strings
* Added share screenshot function
* Added checks and improved UI
* Removed unused string
* Removed unused string
* Adding checks and improving code quality
* Changed string
* Improved code quality
* Update strings.xml
* Update MediaWikiApi.java
* Fix build