diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 71f9a56..a0f609e 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -28,6 +28,7 @@ -dontobfuscate -verbose + ##--------------- proguard configuration for ITextPDF ---------- -dontwarn com.itextpdf.** @@ -88,6 +89,9 @@ -if interface * { @retrofit2.http.* ; } -keep,allowobfuscation interface <1> +# Additional rules to avoid removing models +-keep public class cy.agorise.bitsybitshareswallet.models.** { *; } + ##--------------- proguard configuration for OkHttp ---------- # JSR 305 annotations are for embedding nullability information. @@ -127,14 +131,27 @@ ##--------------- proguard configuration for Crashlytics ---------- -# source https://stackoverflow.com/a/34751033/5428997 --keep class com.crashlytics.** { *; } --dontwarn com.crashlytics.** --keepattributes SourceFile,LineNumberTable,*Annotation* --keep class com.crashlytics.android.** +# source https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?platform=android +-keepattributes *Annotation* # Keep Crashlytics annotations +-keepattributes SourceFile,LineNumberTable # Keep file names/line numbers +-keep public class * extends java.lang.Exception # Keep custom exceptions (opt) + + +##--------------- proguard configuration for Coroutines ---------- +# ServiceLoader support +-keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {} +-keepnames class kotlinx.coroutines.CoroutineExceptionHandler {} +-keepnames class kotlinx.coroutines.android.AndroidExceptionPreHandler {} +-keepnames class kotlinx.coroutines.android.AndroidDispatcherFactory {} + +# Most of volatile fields are updated with AFU and should not be mangled +-keepclassmembernames class kotlinx.** { + volatile ; +} ##--------------- other ---------- -dontwarn org.slf4j.LoggerFactory -dontwarn org.slf4j.MDC --dontwarn org.slf4j.MarkerFactory \ No newline at end of file +-dontwarn org.slf4j.MarkerFactory +-keep public class cy.agorise.graphenej.** { *; } \ No newline at end of file diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/database/daos/AssetDao.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/database/daos/AssetDao.kt index 6cc90c1..6cf401e 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/database/daos/AssetDao.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/database/daos/AssetDao.kt @@ -15,7 +15,21 @@ interface AssetDao { @Insert(onConflict = OnConflictStrategy.REPLACE) fun insertAll(assets: List) - @Query("SELECT id, symbol, precision, description, issuer FROM assets INNER JOIN balances WHERE assets.id = balances.asset_id AND balances.asset_amount > 0") + @Query(""" + SELECT + id, + symbol, + precision, + description, + issuer + FROM + assets + INNER JOIN + balances + WHERE + assets.id = balances.asset_id AND + balances.asset_amount > 0 + """) fun getAllNonZero(): LiveData> @Query("SELECT * FROM assets WHERE id = :assetId") diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/database/joins/TransferDetailDao.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/database/joins/TransferDetailDao.kt index e02141a..8fc17a5 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/database/joins/TransferDetailDao.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/database/joins/TransferDetailDao.kt @@ -7,9 +7,49 @@ import androidx.room.Query @Dao interface TransferDetailDao { - @Query("SELECT transfers.id, (SELECT name FROM user_accounts WHERE user_accounts.id=transfers.source) AS `from`, (SELECT name FROM user_accounts WHERE user_accounts.id=transfers.destination) AS `to`, (CASE WHEN destination=:userId THEN 1 ELSE 0 END) AS `direction`, transfers.memo AS `memo`, transfers.timestamp AS `date`, transfers.transfer_amount AS `assetAmount`, assets.precision AS `assetPrecision`, assets.symbol AS `assetSymbol`, assets.issuer as `assetIssuer`, (SELECT value FROM equivalent_values WHERE equivalent_values.transfer_id=transfers.id) AS `fiatAmount`, (SELECT symbol FROM equivalent_values WHERE equivalent_values.transfer_id=transfers.id) AS `fiatSymbol` FROM transfers INNER JOIN assets WHERE transfers.id=:transferId AND transfers.transfer_asset_id = assets.id") + @Query(""" + SELECT + transfers.id, + (SELECT name FROM user_accounts WHERE user_accounts.id=transfers.source) AS `from`, + (SELECT name FROM user_accounts WHERE user_accounts.id=transfers.destination) AS `to`, + (CASE WHEN destination=:userId THEN 1 ELSE 0 END) AS `direction`, + transfers.memo AS `memo`, transfers.timestamp AS `date`, + transfers.transfer_amount AS `assetAmount`, + assets.precision AS `assetPrecision`, + assets.symbol AS `assetSymbol`, + assets.issuer as `assetIssuer`, + (SELECT value FROM equivalent_values WHERE equivalent_values.transfer_id=transfers.id) AS `fiatAmount`, + (SELECT symbol FROM equivalent_values WHERE equivalent_values.transfer_id=transfers.id) AS `fiatSymbol` + FROM + transfers + INNER JOIN + assets + WHERE + transfers.id=:transferId AND + transfers.transfer_asset_id = assets.id + """) fun get(userId: String, transferId: String): LiveData - @Query("SELECT transfers.id, (SELECT name FROM user_accounts WHERE user_accounts.id=transfers.source) AS `from`, (SELECT name FROM user_accounts WHERE user_accounts.id=transfers.destination) AS `to`, (CASE WHEN destination=:userId THEN 1 ELSE 0 END) AS `direction`, transfers.memo AS `memo`, transfers.timestamp AS `date`, transfers.transfer_amount AS `assetAmount`, assets.precision AS `assetPrecision`, assets.symbol AS `assetSymbol`, assets.issuer as `assetIssuer`, (SELECT value FROM equivalent_values WHERE equivalent_values.transfer_id=transfers.id) AS `fiatAmount`, (SELECT symbol FROM equivalent_values WHERE equivalent_values.transfer_id=transfers.id) AS `fiatSymbol` FROM transfers INNER JOIN assets WHERE transfers.transfer_asset_id = assets.id") + @Query(""" + SELECT + transfers.id, + (SELECT name FROM user_accounts WHERE user_accounts.id=transfers.source) AS `from`, + (SELECT name FROM user_accounts WHERE user_accounts.id=transfers.destination) AS `to`, + (CASE WHEN destination=:userId THEN 1 ELSE 0 END) AS `direction`, + transfers.memo AS `memo`, + transfers.timestamp AS `date`, + transfers.transfer_amount AS `assetAmount`, + assets.precision AS `assetPrecision`, + assets.symbol AS `assetSymbol`, + assets.issuer as `assetIssuer`, + (SELECT value FROM equivalent_values WHERE equivalent_values.transfer_id=transfers.id) AS `fiatAmount`, + (SELECT symbol FROM equivalent_values WHERE equivalent_values.transfer_id=transfers.id) AS `fiatSymbol` + FROM + transfers + INNER JOIN + assets + WHERE + transfers.transfer_asset_id = assets.id + """) fun getAll(userId: String): LiveData> } \ No newline at end of file diff --git a/build.gradle b/build.gradle index ee081bb..12967f2 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.4.0' + classpath 'com.android.tools.build:gradle:3.5.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" classpath 'com.google.gms:google-services:4.2.0' diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 6a3b921..51a427d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Thu Apr 25 15:01:42 CDT 2019 +#Wed Aug 21 13:23:20 CDT 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip