From 45cd93d40a1308d84e6598ad66ce9ba363f9ffcf Mon Sep 17 00:00:00 2001 From: d954mas Date: Wed, 16 Nov 2016 22:46:46 +0300 Subject: [PATCH 001/233] add proguard rules --- Habitica/build.gradle | 14 +-- Habitica/proguard-project.txt | 20 ---- Habitica/proguard-rules.pro | 97 +++++++++++++++++++ Habitica/res/layout/activity_full_profile.xml | 1 - 4 files changed, 104 insertions(+), 28 deletions(-) delete mode 100644 Habitica/proguard-project.txt create mode 100644 Habitica/proguard-rules.pro diff --git a/Habitica/build.gradle b/Habitica/build.gradle index 94f743cab..09897ad72 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -113,9 +113,7 @@ dependencies { compile('com.facebook.android:facebook-android-sdk:4.11.0') { transitive = true } - - compile 'fr.avianey.com.viewpagerindicator:library:2.4.1@aar' - + compile 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar' //RxJava compile 'io.reactivex:rxandroid:1.2.1' compile 'io.reactivex:rxjava:1.2.0' @@ -170,7 +168,8 @@ android { applicationIdSuffix ".debug" debuggable true multiDexEnabled true - // Disable fabric build ID generation for debug builds + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' ext.enableCrashlytics = false resValue "string", "content_provider", "com.habitrpg.android.habitica.debug.fileprovider" resValue "string", "app_name", "Habitica Debug" @@ -178,8 +177,9 @@ android { release { signingConfig signingConfigs.release debuggable false - multiDexEnabled true - + multiDexEnabled false + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' resValue "string", "content_provider", "com.habitrpg.android.habitica.fileprovider" resValue "string", "app_name", "Habitica" } @@ -208,7 +208,7 @@ android { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } - + dexOptions { preDexLibraries false javaMaxHeapSize "4g" // Use gig increments depending on needs diff --git a/Habitica/proguard-project.txt b/Habitica/proguard-project.txt deleted file mode 100644 index f2fe1559a..000000000 --- a/Habitica/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/Habitica/proguard-rules.pro b/Habitica/proguard-rules.pro new file mode 100644 index 000000000..69d06e55e --- /dev/null +++ b/Habitica/proguard-rules.pro @@ -0,0 +1,97 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} +-keepattributes Signature +-keepattributes *Annotation* +-keepattributes Exceptions +-keep class sun.misc.Unsafe { *; } + +#retrolambda +-dontwarn java.lang.invoke.* +-dontwarn sun.misc.** + +#rxJava +-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* { + long producerIndex; + long consumerIndex; +} + +-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef { + rx.internal.util.atomic.LinkedQueueNode producerNode; +} + +-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef { + rx.internal.util.atomic.LinkedQueueNode consumerNode; +} + +#OkHttp +-keep class okhttp3.** { *; } +-keep,includedescriptorclasses class okio.Source +-keep,includedescriptorclasses class okio.okio.Buffer +-keep interface okhttp3.** { *; } +-dontwarn okhttp3.** + + +#retrofit +-dontwarn retrofit2.** +-keep class retrofit2.** { *; } + +-keepclasseswithmembers class * { + @retrofit2.http.* ; +} + +#dbFlow +-keep class * extends com.raizlabs.android.dbflow.config.DatabaseHolder { *; } +-keep class * extends com.raizlabs.android.dbflow.config.BaseDatabaseDefinition { *; } +-keep class com.raizlabs.android.dbflow.** {*;} + +#gson +# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter) +-keep class * implements com.google.gson.TypeAdapterFactory +-keep class * implements com.google.gson.JsonSerializer +-keep class * implements com.google.gson.JsonDeserializer + +#keep models +-keep class com.magicmicky.habitrpgwrapper.lib.models.** { *; } + +#eventbus +-keepclassmembers class ** { + @org.greenrobot.eventbus.Subscribe ; +} +-keep enum org.greenrobot.eventbus.ThreadMode { *; } + +# Only required if you use AsyncExecutor +-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent { + (java.lang.Throwable); +} + +#crashlytic +-keepattributes SourceFile,LineNumberTable +-keep public class * extends java.lang.Exception +-keep class com.crashlytics.** { *; } +-dontwarn com.crashlytics.** + +#add warnings here, warnings in proguard is normal +-dontwarn javax.annotation.** +-dontwarn com.squareup.picasso.** +-dontwarn okio.** +-dontwarn rx.** +#-ignorewarnings + diff --git a/Habitica/res/layout/activity_full_profile.xml b/Habitica/res/layout/activity_full_profile.xml index 0f16b897a..3ffe67ccd 100644 --- a/Habitica/res/layout/activity_full_profile.xml +++ b/Habitica/res/layout/activity_full_profile.xml @@ -185,7 +185,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" - android:onClick="" android:id="@+id/copy_userid" /> From 63e2e9b35457fd2905342fbfc055d8579543ef31 Mon Sep 17 00:00:00 2001 From: d954mas Date: Wed, 7 Dec 2016 21:05:18 +0300 Subject: [PATCH 002/233] fixed fresko and amplitude --- Habitica/proguard-rules.pro | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/Habitica/proguard-rules.pro b/Habitica/proguard-rules.pro index 69d06e55e..acbab7595 100644 --- a/Habitica/proguard-rules.pro +++ b/Habitica/proguard-rules.pro @@ -88,10 +88,46 @@ -keep class com.crashlytics.** { *; } -dontwarn com.crashlytics.** +#fresko +# Keep our interfaces so they can be used by other ProGuard rules. +# See http://sourceforge.net/p/proguard/bugs/466/ +-keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip + +# Do not strip any method/class that is annotated with @DoNotStrip +-keep @com.facebook.common.internal.DoNotStrip class * +-keepclassmembers class * { + @com.facebook.common.internal.DoNotStrip *; +} + +# Keep native methods +-keepclassmembers class * { + native ; +} +# Keep our interfaces so they can be used by other ProGuard rules. +# See http://sourceforge.net/p/proguard/bugs/466/ +-keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip + +# Do not strip any method/class that is annotated with @DoNotStrip +-keep @com.facebook.common.internal.DoNotStrip class * +-keepclassmembers class * { + @com.facebook.common.internal.DoNotStrip *; +} + +# Keep native methods +-keepclassmembers class * { + native ; +} +#end fresko + +#amplitude +-keep class com.google.android.gms.ads.** { *; } +#end amplitude + #add warnings here, warnings in proguard is normal -dontwarn javax.annotation.** -dontwarn com.squareup.picasso.** -dontwarn okio.** -dontwarn rx.** +-dontwarn com.android.volley.toolbox.** #-ignorewarnings From b59dfd25f22c73c3a52bf98a3ae085a7b1e74b06 Mon Sep 17 00:00:00 2001 From: d954mas Date: Mon, 19 Dec 2016 18:35:52 +0300 Subject: [PATCH 003/233] add proguard rules for playservices and checkout --- Habitica/build.gradle | 3 +-- Habitica/proguard-rules.pro | 35 +++++++++++++++++++++++++++++++++++ build.gradle | 5 +++++ 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/Habitica/build.gradle b/Habitica/build.gradle index 41f37d0db..3a2a0bbcf 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -11,7 +11,6 @@ buildscript { } dependencies { classpath 'io.fabric.tools:gradle:1.21.5' - classpath 'me.tatarka:gradle-retrolambda:3.3.1' classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.6.1' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' } @@ -100,7 +99,7 @@ dependencies { transitive = true } - compile 'fr.avianey.com.viewpagerindicator:library:2.4.1@aar' + compile 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar' //RxJava compile 'io.reactivex:rxandroid:1.2.1' diff --git a/Habitica/proguard-rules.pro b/Habitica/proguard-rules.pro index acbab7595..56e7704b3 100644 --- a/Habitica/proguard-rules.pro +++ b/Habitica/proguard-rules.pro @@ -123,6 +123,41 @@ -keep class com.google.android.gms.ads.** { *; } #end amplitude +#playservices +-keep class * extends java.util.ListResourceBundle { + protected Object[][] getContents(); +} + +-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable { + public static final *** NULL; +} + +-keepnames @com.google.android.gms.common.annotation.KeepName class * +-keepclassmembernames class * { + @com.google.android.gms.common.annotation.KeepName *; +} + +-keepnames class * implements android.os.Parcelable { + public static final ** CREATOR; + } + -keep class com.google.android.gms.** { *; } + -dontwarn com.google.android.gms.** +#end playservices + +#checkout +-keep class com.android.vending.billing.** + +-assumenosideeffects class org.solovyev.android.checkout.Billing { + public static void debug(...); + public static void warning(...); + public static void error(...); +} + +-assumenosideeffects class org.solovyev.android.checkout.Check { + static *; +} +#end chekout + #add warnings here, warnings in proguard is normal -dontwarn javax.annotation.** -dontwarn com.squareup.picasso.** diff --git a/build.gradle b/build.gradle index 56bc166c2..ccbf97b2a 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,12 @@ buildscript { classpath 'com.android.databinding:dataBinder:1.0-rc4' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' classpath 'com.google.gms:google-services:3.0.0' + classpath 'me.tatarka:gradle-retrolambda:3.3.1' + classpath 'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2' } + + // Exclude the version that the android plugin depends on. + configurations.classpath.exclude group: 'com.android.tools.external.lombok' } allprojects { From 529f3f316b34db93127f48bea9dfa810282d6676 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Thu, 20 Apr 2017 10:28:32 +0200 Subject: [PATCH 004/233] Refactor into SocialRepository --- Habitica/res/layout/fragment_chat.xml | 47 +++ .../android/habitica/api/ApiService.java | 25 +- .../android/habitica/data/ApiClient.java | 25 +- .../habitica/data/SocialRepository.java | 51 ++++ .../android/habitica/data/UserRepository.java | 2 + .../data/implementation/ApiClientImpl.java | 4 +- .../implementation/SocialRepositoryImpl.java | 138 +++++++++ .../implementation/UserRepositoryImpl.java | 10 + .../data/local/SocialLocalRepository.java | 4 + .../DbFlowSocialLocalRepository.java | 11 + .../commands/SendNewGroupMessageCommand.java | 8 +- .../commands/SendNewInboxMessageCommand.java | 8 +- .../habitica/modules/RepositoryModule.java | 14 + .../social/ChatRecyclerViewAdapter.java | 273 ++++-------------- .../ui/fragments/social/ChatListFragment.java | 85 ++---- .../social/GroupInformationFragment.java | 2 +- .../ui/fragments/social/GuildFragment.java | 49 ++-- .../social/GuildsOverviewFragment.java | 29 +- .../ui/fragments/social/InboxFragment.java | 20 +- .../social/InboxMessageListFragment.java | 38 +-- .../social/PublicGuildsFragment.java | 20 +- .../ui/fragments/social/TavernFragment.java | 12 +- .../challenges/ChallengeListFragment.java | 2 +- .../ChallengeTasksRecyclerViewFragment.java | 31 +- .../ChallengesOverviewFragment.java | 12 +- .../fragments/social/party/PartyFragment.java | 28 +- .../social/party/PartyMemberListFragment.java | 2 +- .../android/habitica/ui/helpers/UiUtils.java | 2 +- 28 files changed, 538 insertions(+), 414 deletions(-) create mode 100644 Habitica/res/layout/fragment_chat.xml create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/data/SocialRepository.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/SocialRepositoryImpl.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/data/local/SocialLocalRepository.java create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/DbFlowSocialLocalRepository.java diff --git a/Habitica/res/layout/fragment_chat.xml b/Habitica/res/layout/fragment_chat.xml new file mode 100644 index 000000000..d43964202 --- /dev/null +++ b/Habitica/res/layout/fragment_chat.xml @@ -0,0 +1,47 @@ + + + + + + + +