diff --git a/Habitica/build.gradle b/Habitica/build.gradle index 1d98ee1b4..9e2de0303 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -43,32 +43,32 @@ repositories { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //Networking - implementation 'com.squareup.okhttp3:okhttp:3.9.1' - implementation 'com.squareup.okhttp3:logging-interceptor:3.9.1' + implementation 'com.squareup.okhttp3:okhttp:3.10.0' + implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0' //REST API handling - implementation('com.squareup.retrofit2:retrofit:2.3.0') { + implementation('com.squareup.retrofit2:retrofit:2.4.0') { exclude module: 'okhttp' } - implementation 'com.squareup.retrofit2:converter-gson:2.3.0' - implementation 'com.squareup.retrofit2:adapter-rxjava:2.3.0' + implementation 'com.squareup.retrofit2:converter-gson:2.4.0' + implementation 'com.squareup.retrofit2:adapter-rxjava:2.4.0' //Crash Logging - releaseImplementation('com.crashlytics.sdk.android:crashlytics:2.8.0@aar') { + releaseImplementation('com.crashlytics.sdk.android:crashlytics:2.9.4@aar') { transitive = true } // View Elements Binding :) implementation 'com.jakewharton:butterknife:8.8.1' kapt 'com.jakewharton:butterknife-compiler:8.8.1' //Dependency Injection - implementation 'com.google.dagger:dagger:2.14.1' - kapt 'com.google.dagger:dagger-compiler:2.14.1' + implementation 'com.google.dagger:dagger:2.16' + kapt 'com.google.dagger:dagger-compiler:2.16' compileOnly 'org.glassfish:javax.annotation:10.0-b28' //App Compatibility and Material Design - implementation 'com.android.support:appcompat-v7:27.0.2' - implementation 'com.android.support:design:27.0.2' - implementation 'com.android.support:recyclerview-v7:27.0.2' - implementation 'com.android.support:preference-v14:27.0.2' + implementation 'com.android.support:appcompat-v7:27.1.1' + implementation 'com.android.support:design:27.1.1' + implementation 'com.android.support:recyclerview-v7:27.1.1' + implementation 'com.android.support:preference-v14:27.1.1' //QR Code - implementation 'com.github.kenglxn.QRGen:android:2.2.0' + implementation 'com.github.kenglxn.QRGen:android:2.5.0' // Emojis implementation 'com.github.viirus:emoji-lib:0.0.5' // Markdown @@ -84,30 +84,30 @@ dependencies { // IAP Handling / Verification implementation 'org.solovyev.android:checkout:1.2.1' //Facebook - implementation('com.facebook.android:facebook-android-sdk:4.30.0') { + implementation('com.facebook.android:facebook-android-sdk:4.34.0') { transitive = true } implementation 'fr.avianey.com.viewpagerindicator:library:2.4.1@aar' // lodash/underscore - implementation 'com.github.javadev:underscore:1.23' + implementation 'com.github.javadev:underscore:1.34' //RxJava implementation 'io.reactivex:rxandroid:1.2.1' - implementation 'io.reactivex:rxjava:1.3.5' + implementation 'io.reactivex:rxjava:1.3.8' //Analytics - implementation 'com.amplitude:android-sdk:2.16.0' + implementation 'com.amplitude:android-sdk:2.18.1' // Fresco Image Management Library - implementation('com.facebook.fresco:fresco:1.8.0') { + implementation('com.facebook.fresco:fresco:1.9.0') { exclude module: 'bolts-android' } - implementation('com.facebook.fresco:animated-gif:1.8.0') { + implementation('com.facebook.fresco:animated-gif:1.9.0') { exclude module: 'bolts-android' } //Tests testImplementation 'junit:junit:4.12' testImplementation 'org.assertj:assertj-core:2.6.0' testImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.3' - testImplementation 'org.robolectric:robolectric:3.3.2' - testImplementation 'org.robolectric:shadows-multidex:3.3.2' + testImplementation 'org.robolectric:robolectric:3.8' + testImplementation 'org.robolectric:shadows-multidex:3.8' testImplementation 'org.robolectric:shadows-support-v4:3.3.2' testImplementation 'org.mockito:mockito-core:2.8.9' testImplementation 'org.powermock:powermock-api-mockito2:1.7.0' @@ -115,20 +115,20 @@ dependencies { testImplementation 'org.powermock:powermock-module-junit4-rule:1.7.0' testImplementation 'org.powermock:powermock-module-junit4:1.7.0' //Leak Detection - debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.3' - releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.3' + debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.4' + releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4' //Push Notifications implementation 'com.google.firebase:firebase-core:11.4.2' implementation 'com.google.firebase:firebase-messaging:11.4.2' implementation 'com.google.android.gms:play-services-auth:11.4.2' implementation 'org.apmem.tools:layouts:1.10@aar' implementation 'com.roughike:bottom-bar:2.3.1' - implementation 'io.realm:android-adapters:2.1.0' + implementation 'io.realm:android-adapters:3.0.0' implementation(project(':seeds-sdk')) { exclude group: 'com.google.android.gms' exclude group: 'com.android.support', module: 'multidex' } - implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" } @@ -176,7 +176,6 @@ android { productFlavors { dev { - minSdkVersion 21 dimension "buildType" } @@ -200,12 +199,12 @@ android { res.srcDirs = ['res'] assets.srcDirs = ['assets'] } - robolectric { + /*robolectric { manifest.srcFile 'AndroidManifestTesting.xml' java.srcDir file('src/test/java/') res.srcDirs = ['res'] - } - instrumentTest.setRoot('tests') + }*/ + //instrumentTest.setRoot('tests') release { java.srcDirs = ['src/release/java'] } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ChallengeRepositoryImpl.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ChallengeRepositoryImpl.java index adeb788da..04860d10b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ChallengeRepositoryImpl.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ChallengeRepositoryImpl.java @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.data.implementation; -import com.github.underscore.$; +import com.github.underscore.U; import com.habitrpg.android.habitica.data.ApiClient; import com.habitrpg.android.habitica.data.ChallengeRepository; import com.habitrpg.android.habitica.data.local.ChallengeLocalRepository; @@ -38,12 +38,12 @@ public class ChallengeRepositoryImpl extends BaseRepositoryImpl taskList) { - Map> stringListMap = $.groupBy(taskList, t -> t.getType()); + Map> stringListMap = U.groupBy(taskList, t -> t.getType()); TasksOrder tasksOrder = new TasksOrder(); for (Map.Entry> entry : stringListMap.entrySet()) { - List taskIdList = $.map(entry.getValue(), t -> t.getId()); + List taskIdList = U.map(entry.getValue(), t -> t.getId()); switch (entry.getKey()) { case Task.TYPE_HABIT: @@ -87,8 +87,8 @@ public class ChallengeRepositoryImpl extends BaseRepositoryImpl updateChallenge(Challenge challenge, List fullTaskList, List addedTaskList, List updatedTaskList, List removedTaskList) { - ArrayList observablesToWait = new ArrayList<>($.map(updatedTaskList, t -> apiClient.updateTask(t.getId(), t))); - observablesToWait.addAll($.map(removedTaskList, apiClient::deleteTask)); + ArrayList observablesToWait = new ArrayList<>(U.map(updatedTaskList, t -> apiClient.updateTask(t.getId(), t))); + observablesToWait.addAll(U.map(removedTaskList, apiClient::deleteTask)); if (addedTaskList.size() != 0) { observablesToWait.add(addChallengeTasks(challenge.id, addedTaskList)); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java index e16546919..7ffa46d11 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java @@ -30,7 +30,7 @@ import android.widget.ImageView; import android.widget.Spinner; import android.widget.TextView; -import com.github.underscore.$; +import com.github.underscore.U; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.ChallengeRepository; @@ -220,7 +220,7 @@ public class CreateChallengeActivity extends BaseActivity { } AlertDialog.Builder builder = new AlertDialog.Builder(this) - .setMessage($.join(errorMessages, "\n")); + .setMessage(U.join(errorMessages, "\n")); AlertDialog alert = builder.create(); alert.show(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/NavigationDrawerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/NavigationDrawerAdapter.kt index c98073d44..89947b9cd 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/NavigationDrawerAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/NavigationDrawerAdapter.kt @@ -64,16 +64,16 @@ class NavigationDrawerAdapter(tintColor: Int, backgroundTintColor: Int): Recycle notifyDataSetChanged() } - override fun onBindViewHolder(holder: RecyclerView.ViewHolder?, position: Int) { + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { val drawerItem = getItem(position) if (getItemViewType(position) == 0) { (holder as DrawerItemViewHolder?)?.tintColor = tintColor - holder?.backgroundTintColor = backgroundTintColor - holder?.bind(drawerItem, drawerItem.identifier == selectedItem) - holder?.itemView?.setOnClickListener { itemSelectedEvents.onNext(drawerItem.identifier) } + holder.backgroundTintColor = backgroundTintColor + holder.bind(drawerItem, drawerItem.identifier == selectedItem) + holder.itemView?.setOnClickListener { itemSelectedEvents.onNext(drawerItem.identifier) } } else { (holder as SectionHeaderViewHolder?)?.backgroundTintColor = backgroundTintColor - holder?.bind(drawerItem) + holder.bind(drawerItem) } } @@ -83,7 +83,7 @@ class NavigationDrawerAdapter(tintColor: Int, backgroundTintColor: Int): Recycle override fun getItemViewType(position: Int): Int = if (getItem(position).isHeader) 1 else 0 - override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): RecyclerView.ViewHolder { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { return if (viewType == 0) { DrawerItemViewHolder(parent?.inflate(R.layout.drawer_main_item)) } else { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengeTasksRecyclerViewAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengeTasksRecyclerViewAdapter.java index ae4a5fd7d..f74ce5bcc 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengeTasksRecyclerViewAdapter.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengeTasksRecyclerViewAdapter.java @@ -7,7 +7,7 @@ import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; -import com.github.underscore.$; +import com.github.underscore.U; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.helpers.TaskFilterHelper; @@ -89,7 +89,7 @@ public class ChallengeTasksRecyclerViewAdapter } public int addTaskUnder(Task taskToAdd, Task taskAbove) { - int position = $.findIndex(this.getContent(), t -> t.getId().equals(taskAbove.getId())); + int position = U.findIndex(this.getContent(), t -> t.getId().equals(taskAbove.getId())); getContent().add(position + 1, taskToAdd); filter(); @@ -127,7 +127,7 @@ public class ChallengeTasksRecyclerViewAdapter } public List getTaskList(){ - return $.map(getContent(), t -> t); + return U.map(getContent(), t -> t); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengesFilterRecyclerViewAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengesFilterRecyclerViewAdapter.java index 895239d80..85231a087 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengesFilterRecyclerViewAdapter.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengesFilterRecyclerViewAdapter.java @@ -6,7 +6,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; -import com.github.underscore.$; +import com.github.underscore.U; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.models.social.Group; @@ -64,7 +64,7 @@ public class ChallengesFilterRecyclerViewAdapter extends RecyclerView.Adapter groupsToCheck){ for (ChallengeViewHolder h : holderList) { - h.checkbox.setChecked($.find(groupsToCheck, g -> h.group.getId().equals(g.getId())).isPresent()); + h.checkbox.setChecked(U.find(groupsToCheck, g -> h.group.getId().equals(g.getId())).isPresent()); } } public List getCheckedEntries(){ diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt index 264ad0368..d61ccd1c1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt @@ -57,14 +57,14 @@ abstract class RealmBaseTasksRecyclerViewAdapter(privat filter() } - override fun onAttachedToRecyclerView(recyclerView: RecyclerView?) { + override fun onAttachedToRecyclerView(recyclerView: RecyclerView) { super.onAttachedToRecyclerView(recyclerView) if (hasAutoUpdates && isDataValid) { addListener(data) } } - override fun onDetachedFromRecyclerView(recyclerView: RecyclerView?) { + override fun onDetachedFromRecyclerView(recyclerView: RecyclerView) { super.onDetachedFromRecyclerView(recyclerView) if (hasAutoUpdates && isDataValid) { diff --git a/build.gradle b/build.gradle index 69ec5a081..9b8092514 100644 --- a/build.gradle +++ b/build.gradle @@ -1,8 +1,8 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.2.30' - ext.build_tools_version = '26.0.2' + ext.kotlin_version = '1.2.50' + ext.build_tools_version = '27.0.3' ext.sdk_version = 27 repositories { @@ -11,9 +11,9 @@ buildscript { maven { url "https://plugins.gradle.org/m2/" } } dependencies { - classpath 'com.android.tools.build:gradle:3.0.1' + classpath 'com.android.tools.build:gradle:3.1.3' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' - classpath 'com.google.gms:google-services:3.1.1' + classpath 'com.google.gms:google-services:4.0.1' classpath "io.realm:realm-gradle-plugin:3.7.2" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2' diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 532a7d093..c229220f4 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Thu Oct 26 13:59:07 CEST 2017 +#Thu Jul 05 12:18:36 CEST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip diff --git a/seeds-sdk/build.gradle b/seeds-sdk/build.gradle index 6140497fe..95c490691 100755 --- a/seeds-sdk/build.gradle +++ b/seeds-sdk/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.novoda:bintray-release:0.5.0' + classpath 'com.novoda:bintray-release:0.8.0' } } @@ -62,10 +62,10 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'org.glassfish:javax.json:1.0.4' implementation 'com.google.android.gms:play-services:11.4.2' - implementation 'com.google.code.gson:gson:2.8.0' - implementation 'com.android.support:multidex:1.0.2' + implementation 'com.google.code.gson:gson:2.8.2' + implementation 'com.android.support:multidex:1.0.3' implementation 'com.loopj.android:android-async-http:1.4.9' - implementation 'org.solovyev.android:checkout:1.0.1@aar' + implementation 'org.solovyev.android:checkout:1.2.1@aar' androidTestImplementation 'org.mockito:mockito-core:2.8.9' androidTestImplementation 'com.google.dexmaker:dexmaker:1.2' androidTestImplementation 'com.google.dexmaker:dexmaker-mockito:1.2'