mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 12:23:58 +01:00
* Feature/refractor uploads [WIP] (#2887) * Fix duplicate param information (#2515) * Bug fix issue #2476 (#2526) * Added wikidataEntityID in all db versions, handled db.execSql via method runQuery * Versioning and changelog for v2.10.2 (#2531) * Update changelog.md * Versioning for v2.10.2 * Update changelog.md * Bugfix/issue 2580 (#2584) * Corrected string placedholders in certain string files * Corrected string placedholders in certain string files[Bug fix #2580] * Bug Fix #2585 (#2647) * Bug Fix #2585 * Added null checks on view in SearchImageFragment when updating views from external sources * Disposed the disposables in SearchActivity and SearchImageFragment when no longer in active lifecycle * use FragmentUtils to verify fragment active state * Bug Fix issue #2648 (#2678) * Bug Fix issue #2648 * Handled external storage permission before file download * * Removed redudant check for permission in MediaDetailPagerFragment (Dexter already does that) * Removed duplicate code in PermissionUtil$checkPermissionsAndPerformAction, used the existing function with conditional extra parameters * string name typo correction * BugFix issue #2652 (#2706) * Addded null check on bookmark before operating on it * BugFix issue #2711 (#2712) * Added null checks in OkHttpJsonApiClient$searchImages MwQueryResponse * BugFix #2718 (#2719) * Handled null auth cookies * Fix #2791: NPE when nominating for deletion and leaving screen (#2792) * Bug Fix issue #2789 (#2790) * Handled Illegal State Exception for non existent appropriate view parents in ViewUtils$showShortSnackbar * BugFix #2720 (#2831) BugFix deprecated licenes #2720 * ui fixes, wip, upload * *Issue #2886, BugFix #2832[wip] * updated UploadActivity code * modified ui * Updated UploadPresenterTest * * updated interfaces names to follow names suffixed with Contract * added test cases * card view elevation * view pager disabled swipe * bug fix, duplicate image * used existing non-swipable view pager * Avoid image view resize with keyboard, added adjustPan and stateVisible as softinputMode for UploadActivity * retain UploadBaseFragment instances on orientation changes * * Added test cases for UploadMediaPresenter * Injected io and main thread schedulers * categories presenter test cased wip * Added CategoriesPresenter test * * Added the logic to show open map (with to be uploaded image's coordinates while uploading image) * codacy suggested changes * added java docs * Added travis_wait fot android-wait-for-emulator * ranamed interface onResponseCallback to Callback * * Added api to delete picture in UploadModel * cleanUp in UploadModel. once upload has been initiated * Removed unused methods from UploadModel and the corresponding test class * * Added tests for UploadPresenter * Travis suggested changes * Addded copy previous title and description * * Made the upload add descriptions visible when keyboard visible * add description request focus only when user manually requests it * Added JavaDocs, review suggested changes * Fix dagger injection * use DialogUtil to show info in descriptions * use activity context for DialogUtil * Minor changes * Bug fix, reduced the add description edit text clickable bound (#2973) * Bugfix/uploads (#3000) * merged with master * BugFix IllegalStateException * setRetainState(true), not required with FragmentStatePagerAdapter * Increase the ViewPager's Offscreen Limit, we want all the fragments to be active * BugFix, clear selected categoris for previous upload session * Clear Selected Categories * Addded JavaDocs for CategoriesModel * Code Formatting in app/src/main/java/fr/free/nrw/commons/upload/UploadModel.java * Added class level JavaDoc UploadRemoteDataSource * Added class level JavaDoc for UploadRepository * Added JavaDocs for ThumbnailsAdapter * Added JavaDocs for MediaLicensePresenter, CategoriesPresenter * Removed null check on category query * Show default catgeories based on image title and gps location when category text empty * Allow search for empty category search * Attached image scale listener to upload media image * Bug fix, reduced the add description edit text clickable bound * Fix memory leak (#3001) * Bugfix/uploads (#3002) * merged with master * BugFix IllegalStateException * setRetainState(true), not required with FragmentStatePagerAdapter * Increase the ViewPager's Offscreen Limit, we want all the fragments to be active * BugFix, clear selected categoris for previous upload session * Clear Selected Categories * Addded JavaDocs for CategoriesModel * Code Formatting in app/src/main/java/fr/free/nrw/commons/upload/UploadModel.java * Added class level JavaDoc UploadRemoteDataSource * Added class level JavaDoc for UploadRepository * Added JavaDocs for ThumbnailsAdapter * Added JavaDocs for MediaLicensePresenter, CategoriesPresenter * Removed null check on category query * Show default catgeories based on image title and gps location when category text empty * Allow search for empty category search * Attached image scale listener to upload media image * Bug fix, reduced the add description edit text clickable bound * Added tooltip in Title in UploadMediaFragment * BugFix recent categories * Updated test methods * Bugfix/uploads (#3011) * merged with master * BugFix IllegalStateException * setRetainState(true), not required with FragmentStatePagerAdapter * Increase the ViewPager's Offscreen Limit, we want all the fragments to be active * BugFix, clear selected categoris for previous upload session * Clear Selected Categories * Addded JavaDocs for CategoriesModel * Code Formatting in app/src/main/java/fr/free/nrw/commons/upload/UploadModel.java * Added class level JavaDoc UploadRemoteDataSource * Added class level JavaDoc for UploadRepository * Added JavaDocs for ThumbnailsAdapter * Added JavaDocs for MediaLicensePresenter, CategoriesPresenter * Removed null check on category query * Show default catgeories based on image title and gps location when category text empty * Allow search for empty category search * Attached image scale listener to upload media image * Bug fix, reduced the add description edit text clickable bound * Added tooltip in Title in UploadMediaFragment * BugFix recent categories * Updated test methods * Avoid memory leak, free the adpater in MediaLicenseFragment.onDestroyView * bugfix/uploads (#3012) * merged with master * BugFix IllegalStateException * setRetainState(true), not required with FragmentStatePagerAdapter * Increase the ViewPager's Offscreen Limit, we want all the fragments to be active * BugFix, clear selected categoris for previous upload session * Clear Selected Categories * Addded JavaDocs for CategoriesModel * Code Formatting in app/src/main/java/fr/free/nrw/commons/upload/UploadModel.java * Added class level JavaDoc UploadRemoteDataSource * Added class level JavaDoc for UploadRepository * Added JavaDocs for ThumbnailsAdapter * Added JavaDocs for MediaLicensePresenter, CategoriesPresenter * Removed null check on category query * Show default catgeories based on image title and gps location when category text empty * Allow search for empty category search * Attached image scale listener to upload media image * Bug fix, reduced the add description edit text clickable bound * Added tooltip in Title in UploadMediaFragment * BugFix recent categories * Updated test methods * Avoid memory leak, free the adpater in MediaLicenseFragment.onDestroyView * BugFix Illegal State Exception in ViewpPagerAdapter * Remove irrelevant comment * merge conflict with strings (#3016)
271 lines
14 KiB
Groovy
271 lines
14 KiB
Groovy
apply from: '../gitutils.gradle'
|
|
apply plugin: 'com.android.application'
|
|
apply plugin: 'kotlin-android'
|
|
apply plugin: 'kotlin-kapt'
|
|
apply plugin: 'jacoco-android'
|
|
apply from: 'quality.gradle'
|
|
|
|
def isRunningOnTravisAndIsNotPRBuild = System.getenv("CI") == "true" && file('../play.p12').exists()
|
|
|
|
if(isRunningOnTravisAndIsNotPRBuild) {
|
|
apply plugin: 'com.github.triplet.play'
|
|
}
|
|
|
|
dependencies {
|
|
|
|
// Utils
|
|
implementation 'com.github.nicolas-raoul:Quadtree:ac16ea8035bf07'
|
|
implementation 'com.google.code.gson:gson:2.8.5'
|
|
implementation 'in.yuvi:http.fluent:1.3'
|
|
implementation 'com.squareup.okhttp3:okhttp:3.12.1'
|
|
implementation 'com.squareup.okio:okio:1.15.0'
|
|
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
|
|
implementation 'io.reactivex.rxjava2:rxjava:2.2.3'
|
|
implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
|
|
implementation 'com.jakewharton.rxbinding2:rxbinding-support-v4:2.1.1'
|
|
implementation 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7:2.1.1'
|
|
implementation 'com.jakewharton.rxbinding2:rxbinding-design:2.1.1'
|
|
implementation 'com.facebook.fresco:fresco:1.13.0'
|
|
implementation 'com.drewnoakes:metadata-extractor:2.11.0'
|
|
implementation 'com.dmitrybrant:wikimedia-android-data-client:0.0.18'
|
|
implementation 'org.apache.commons:commons-lang3:3.8.1'
|
|
|
|
// UI
|
|
implementation 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar'
|
|
implementation 'com.github.chrisbanes:PhotoView:2.0.0'
|
|
implementation 'com.github.pedrovgs:renderers:3.3.3'
|
|
implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:6.8.0'
|
|
implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-localization:0.6.0'
|
|
implementation 'com.github.deano2390:MaterialShowcaseView:1.2.0'
|
|
implementation 'com.dinuscxj:circleprogressbar:1.1.1'
|
|
implementation 'com.karumi:dexter:5.0.0'
|
|
implementation "com.jakewharton:butterknife:$BUTTERKNIFE_VERSION"
|
|
kapt "com.jakewharton:butterknife-compiler:$BUTTERKNIFE_VERSION"
|
|
|
|
// Logging
|
|
implementation 'ch.acra:acra-dialog:5.3.0'
|
|
implementation 'ch.acra:acra-mail:5.3.0'
|
|
implementation 'com.jakewharton.timber:timber:4.7.1'
|
|
implementation 'org.slf4j:slf4j-api:1.7.25'
|
|
api('com.github.tony19:logback-android-classic:1.1.1-6') {
|
|
exclude group: 'com.google.android', module: 'android'
|
|
}
|
|
|
|
// Dependency injector
|
|
implementation "com.google.dagger:dagger:$DAGGER_VERSION"
|
|
implementation "com.google.dagger:dagger-android-support:$DAGGER_VERSION"
|
|
kapt "com.google.dagger:dagger-android-processor:$DAGGER_VERSION"
|
|
kapt "com.google.dagger:dagger-compiler:$DAGGER_VERSION"
|
|
|
|
// Unit testing
|
|
testImplementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$KOTLIN_VERSION"
|
|
testImplementation "org.jetbrains.kotlin:kotlin-reflect:$KOTLIN_VERSION"
|
|
testImplementation 'junit:junit:4.12'
|
|
testImplementation 'org.robolectric:robolectric:4.3'
|
|
testImplementation 'androidx.test:core:1.2.0'
|
|
testImplementation 'com.nhaarman:mockito-kotlin:1.5.0'
|
|
testImplementation 'com.squareup.okhttp3:mockwebserver:3.10.0'
|
|
testImplementation "org.powermock:powermock-module-junit4:2.0.0-beta.5"
|
|
testImplementation "org.powermock:powermock-api-mockito2:2.0.0-beta.5"
|
|
|
|
// Android testing
|
|
androidTestImplementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$KOTLIN_VERSION"
|
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
|
|
androidTestImplementation 'androidx.test.espresso:espresso-intents:3.1.1'
|
|
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.1.1'
|
|
androidTestImplementation 'androidx.test:runner:1.1.1'
|
|
androidTestImplementation 'androidx.test:rules:1.1.1'
|
|
androidTestImplementation 'androidx.annotation:annotation:1.0.2'
|
|
androidTestImplementation 'com.squareup.okhttp3:mockwebserver:3.10.0'
|
|
androidTestImplementation 'org.mockito:mockito-core:2.10.0'
|
|
androidTestUtil 'androidx.test:orchestrator:1.1.1'
|
|
|
|
// Debugging
|
|
debugImplementation "com.squareup.leakcanary:leakcanary-android:$LEAK_CANARY_VERSION"
|
|
releaseImplementation "com.squareup.leakcanary:leakcanary-android-no-op:$LEAK_CANARY_VERSION"
|
|
testImplementation "com.squareup.leakcanary:leakcanary-android-no-op:$LEAK_CANARY_VERSION"
|
|
|
|
// Support libraries
|
|
implementation "com.google.android.material:material:1.1.0-alpha04"
|
|
implementation "androidx.browser:browser:1.0.0"
|
|
implementation "androidx.cardview:cardview:1.0.0"
|
|
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
|
|
implementation "androidx.exifinterface:exifinterface:1.0.0"
|
|
|
|
//swipe_layout
|
|
implementation 'com.daimajia.swipelayout:library:1.2.0@aar'
|
|
//metadata extractor
|
|
implementation 'com.drewnoakes:metadata-extractor:2.11.0'
|
|
}
|
|
|
|
android {
|
|
compileSdkVersion 28
|
|
buildToolsVersion "28.0.3"
|
|
|
|
defaultConfig {
|
|
applicationId 'fr.free.nrw.commons'
|
|
versionCode 243
|
|
versionName '2.10.2'
|
|
setProperty("archivesBaseName", "app-commons-v$versionName-" + getBranchName())
|
|
|
|
minSdkVersion 19
|
|
targetSdkVersion 28
|
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
testInstrumentationRunnerArguments clearPackageData: 'true'
|
|
|
|
testOptions {
|
|
execution 'ANDROIDX_TEST_ORCHESTRATOR'
|
|
}
|
|
|
|
vectorDrawables.useSupportLibrary = true
|
|
}
|
|
|
|
packagingOptions {
|
|
exclude 'META-INF/androidx.*'
|
|
exclude 'META-INF/proguard/androidx-annotations.pro'
|
|
}
|
|
|
|
testOptions {
|
|
unitTests.returnDefaultValues = true
|
|
unitTests.includeAndroidResources = true
|
|
|
|
unitTests.all {
|
|
jvmArgs '-noverify'
|
|
}
|
|
}
|
|
|
|
sourceSets {
|
|
// use kotlin only in tests (for now)
|
|
test.java.srcDirs += 'src/test/kotlin'
|
|
|
|
// use main assets and resources in test
|
|
test.assets.srcDirs += 'src/main/assets'
|
|
test.resources.srcDirs += 'src/main/resoures'
|
|
}
|
|
|
|
signingConfigs {
|
|
release
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
minifyEnabled true
|
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
|
|
testProguardFile 'test-proguard-rules.txt'
|
|
if(isRunningOnTravisAndIsNotPRBuild) {
|
|
signingConfig signingConfigs.release
|
|
}
|
|
}
|
|
debug {
|
|
minifyEnabled true
|
|
testCoverageEnabled project.hasProperty('coverage')
|
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
|
|
testProguardFile 'test-proguard-rules.txt'
|
|
versionNameSuffix "-debug-" + getBranchName()
|
|
}
|
|
}
|
|
|
|
if (isRunningOnTravisAndIsNotPRBuild) {
|
|
// configure keystore based on env vars in Travis for automated alpha builds
|
|
signingConfigs.release.storeFile = file("../nr-commons.keystore")
|
|
signingConfigs.release.storePassword = System.getenv("keystore_password")
|
|
signingConfigs.release.keyAlias = System.getenv("key_alias")
|
|
signingConfigs.release.keyPassword = System.getenv("key_password")
|
|
}
|
|
|
|
configurations.all {
|
|
resolutionStrategy.force 'androidx.annotation:annotation:1.0.2'
|
|
}
|
|
|
|
flavorDimensions 'tier'
|
|
productFlavors {
|
|
prod {
|
|
|
|
applicationId 'fr.free.nrw.commons'
|
|
|
|
buildConfigField "String", "WIKIMEDIA_API_POTD", "\"https://commons.wikimedia.org/w/api.php?action=featuredfeed&feed=potd&feedformat=rss&language=en\""
|
|
buildConfigField "String", "WIKIMEDIA_API_HOST", "\"https://commons.wikimedia.org/w/api.php\""
|
|
buildConfigField "String", "WIKIDATA_API_HOST", "\"https://www.wikidata.org/w/api.php\""
|
|
buildConfigField "String", "WIKIMEDIA_FORGE_API_HOST", "\"https://tools.wmflabs.org/\""
|
|
buildConfigField "String", "WIKIMEDIA_CAMPAIGNS_URL", "\"https://raw.githubusercontent.com/commons-app/campaigns/master/campaigns.json\""
|
|
buildConfigField "String", "IMAGE_URL_BASE", "\"https://upload.wikimedia.org/wikipedia/commons\""
|
|
buildConfigField "String", "HOME_URL", "\"https://commons.wikimedia.org/wiki/\""
|
|
buildConfigField "String", "COMMONS_URL", "\"https://commons.wikimedia.org\""
|
|
buildConfigField "String", "MOBILE_HOME_URL", "\"https://commons.m.wikimedia.org/wiki/\""
|
|
buildConfigField "String", "SIGNUP_LANDING_URL", "\"https://commons.m.wikimedia.org/w/index.php?title=Special:CreateAccount&returnto=Main+Page&returntoquery=welcome%3Dyes\""
|
|
buildConfigField "String", "SIGNUP_SUCCESS_REDIRECTION_URL", "\"https://commons.m.wikimedia.org/w/index.php?title=Main_Page&welcome=yes\""
|
|
buildConfigField "String", "FORGOT_PASSWORD_URL", "\"https://commons.wikimedia.org/wiki/Special:PasswordReset\""
|
|
buildConfigField "String", "PRIVACY_POLICY_URL", "\"https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\""
|
|
buildConfigField "String", "ACCOUNT_TYPE", "\"fr.free.nrw.commons\""
|
|
buildConfigField "String", "CONTRIBUTION_AUTHORITY", "\"fr.free.nrw.commons.contributions.contentprovider\""
|
|
buildConfigField "String", "MODIFICATION_AUTHORITY", "\"fr.free.nrw.commons.modifications.contentprovider\""
|
|
buildConfigField "String", "CATEGORY_AUTHORITY", "\"fr.free.nrw.commons.categories.contentprovider\""
|
|
buildConfigField "String", "RECENT_SEARCH_AUTHORITY", "\"fr.free.nrw.commons.explore.recentsearches.contentprovider\""
|
|
buildConfigField "String", "BOOKMARK_AUTHORITY", "\"fr.free.nrw.commons.bookmarks.contentprovider\""
|
|
buildConfigField "String", "BOOKMARK_LOCATIONS_AUTHORITY", "\"fr.free.nrw.commons.bookmarks.locations.contentprovider\""
|
|
buildConfigField "String", "COMMIT_SHA", "\"" + getBuildVersion().toString() + "\""
|
|
buildConfigField "String", "TEST_USERNAME", "\"" + System.getenv("test_user_name") + "\""
|
|
buildConfigField "String", "TEST_PASSWORD", "\"" + System.getenv("test_user_password") + "\""
|
|
|
|
dimension 'tier'
|
|
}
|
|
|
|
beta {
|
|
applicationId 'fr.free.nrw.commons.beta'
|
|
|
|
// What values do we need to hit the BETA versions of the site / api ?
|
|
buildConfigField "String", "WIKIMEDIA_API_POTD", "\"https://commons.wikimedia.org/w/api.php?action=featuredfeed&feed=potd&feedformat=rss&language=en\""
|
|
buildConfigField "String", "WIKIMEDIA_API_HOST", "\"https://commons.wikimedia.beta.wmflabs.org/w/api.php\""
|
|
buildConfigField "String", "WIKIDATA_API_HOST", "\"https://www.wikidata.org/w/api.php\""
|
|
buildConfigField "String", "WIKIMEDIA_FORGE_API_HOST", "\"https://tools.wmflabs.org/\""
|
|
buildConfigField "String", "WIKIMEDIA_CAMPAIGNS_URL", "\"https://raw.githubusercontent.com/commons-app/campaigns/master/campaigns_beta_active.json\""
|
|
buildConfigField "String", "IMAGE_URL_BASE", "\"https://upload.beta.wmflabs.org/wikipedia/commons\""
|
|
buildConfigField "String", "HOME_URL", "\"https://commons.wikimedia.beta.wmflabs.org/wiki/\""
|
|
buildConfigField "String", "COMMONS_URL", "\"https://commons.wikimedia.beta.wmflabs.org\""
|
|
buildConfigField "String", "MOBILE_HOME_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/wiki/\""
|
|
buildConfigField "String", "SIGNUP_LANDING_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/w/index.php?title=Special:CreateAccount&returnto=Main+Page&returntoquery=welcome%3Dyes\""
|
|
buildConfigField "String", "SIGNUP_SUCCESS_REDIRECTION_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/w/index.php?title=Main_Page&welcome=yes\""
|
|
buildConfigField "String", "FORGOT_PASSWORD_URL", "\"https://commons.wikimedia.beta.wmflabs.org/wiki/Special:PasswordReset\""
|
|
buildConfigField "String", "PRIVACY_POLICY_URL", "\"https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\""
|
|
buildConfigField "String", "ACCOUNT_TYPE", "\"fr.free.nrw.commons.beta\""
|
|
buildConfigField "String", "CONTRIBUTION_AUTHORITY", "\"fr.free.nrw.commons.beta.contributions.contentprovider\""
|
|
buildConfigField "String", "MODIFICATION_AUTHORITY", "\"fr.free.nrw.commons.beta.modifications.contentprovider\""
|
|
buildConfigField "String", "CATEGORY_AUTHORITY", "\"fr.free.nrw.commons.beta.categories.contentprovider\""
|
|
buildConfigField "String", "RECENT_SEARCH_AUTHORITY", "\"fr.free.nrw.commons.beta.explore.recentsearches.contentprovider\""
|
|
buildConfigField "String", "BOOKMARK_AUTHORITY", "\"fr.free.nrw.commons.beta.bookmarks.contentprovider\""
|
|
buildConfigField "String", "BOOKMARK_LOCATIONS_AUTHORITY", "\"fr.free.nrw.commons.beta.bookmarks.locations.contentprovider\""
|
|
buildConfigField "String", "COMMIT_SHA", "\"" + getBuildVersion().toString() + "\""
|
|
buildConfigField "String", "TEST_USERNAME", "\"" + System.getenv("test_user_name") + "\""
|
|
buildConfigField "String", "TEST_PASSWORD", "\"" + System.getenv("test_user_password") + "\""
|
|
|
|
dimension 'tier'
|
|
}
|
|
}
|
|
|
|
lintOptions {
|
|
disable 'MissingTranslation'
|
|
disable 'ExtraTranslation'
|
|
abortOnError false
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility JavaVersion.VERSION_1_8
|
|
targetCompatibility JavaVersion.VERSION_1_8
|
|
}
|
|
|
|
buildToolsVersion buildToolsVersion
|
|
}
|
|
|
|
if(isRunningOnTravisAndIsNotPRBuild) {
|
|
play {
|
|
track = "alpha"
|
|
userFraction = 1
|
|
serviceAccountEmail = System.getenv("SERVICE_ACCOUNT_NAME")
|
|
serviceAccountCredentials = file("../play.p12")
|
|
|
|
resolutionStrategy = "auto"
|
|
outputProcessor { // this: ApkVariantOutput
|
|
versionNameOverride = "$versionNameOverride.$versionCode"
|
|
}
|
|
}
|
|
}
|