[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-android] branch master updated: Factor out some cashier cod
From: |
gnunet |
Subject: |
[taler-taler-android] branch master updated: Factor out some cashier code into common library |
Date: |
Wed, 18 Mar 2020 19:55:18 +0100 |
This is an automated email from the git hooks/post-receive script.
torsten-grote pushed a commit to branch master
in repository taler-android.
The following commit(s) were added to refs/heads/master by this push:
new 070fd9b Factor out some cashier code into common library
070fd9b is described below
commit 070fd9b7d3793082e447d7713d1dda932f237c99
Author: Torsten Grote <address@hidden>
AuthorDate: Wed Mar 18 15:54:36 2020 -0300
Factor out some cashier code into common library
---
.idea/gradle.xml | 1 +
build.gradle | 1 +
cashier/build.gradle | 16 ++-----
cashier/src/main/AndroidManifest.xml | 4 --
.../main/java/net/taler/cashier/BalanceFragment.kt | 3 ++
.../main/java/net/taler/cashier/MainViewModel.kt | 3 +-
.../taler/cashier/withdraw/TransactionFragment.kt | 5 +-
.../net/taler/cashier/withdraw/WithdrawManager.kt | 3 +-
gradle.properties | 1 +
settings.gradle | 1 +
taler-kotlin-common/.gitignore | 1 +
{cashier => taler-kotlin-common}/build.gradle | 30 +++---------
taler-kotlin-common/consumer-rules.pro | 0
taler-kotlin-common/proguard-rules.pro | 21 ++++++++
taler-kotlin-common/src/main/AndroidManifest.xml | 24 ++++++++++
.../src/main/java/net/taler/common}/Amount.kt | 2 +-
.../src/main/java/net/taler/common/AndroidUtils.kt | 56 ++++------------------
.../main/java/net/taler/common/ByteArrayUtils.kt | 42 +---------------
.../src/main/java/net/taler/common}/NfcManager.kt | 4 +-
.../main/java/net/taler/common}/QrCodeManager.kt | 2 +-
20 files changed, 86 insertions(+), 134 deletions(-)
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 65dee6e..603ebc0 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -13,6 +13,7 @@
<option value="$PROJECT_DIR$/akono" />
<option value="$PROJECT_DIR$/cashier" />
<option value="$PROJECT_DIR$/merchant-terminal" />
+ <option value="$PROJECT_DIR$/taler-kotlin-common" />
<option value="$PROJECT_DIR$/wallet" />
</set>
</option>
diff --git a/build.gradle b/build.gradle
index f286dfe..4c2476d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,6 +1,7 @@
buildscript {
ext.kotlin_version = '1.3.70'
ext.nav_version = "2.2.1"
+ ext.build_tools_version = "29.0.2"
repositories {
google()
jcenter()
diff --git a/cashier/build.gradle b/cashier/build.gradle
index b77dc30..5fe7e16 100644
--- a/cashier/build.gradle
+++ b/cashier/build.gradle
@@ -21,11 +21,12 @@ apply plugin: 'androidx.navigation.safeargs.kotlin'
android {
compileSdkVersion 29
- buildToolsVersion "29.0.3"
+ //noinspection GradleDependency
+ buildToolsVersion "$build_tools_version"
defaultConfig {
applicationId "net.taler.cashier"
- minSdkVersion 23
+ minSdkVersion 24
targetSdkVersion 29
versionCode 1
versionName "0.1"
@@ -46,9 +47,7 @@ android {
}
dependencies {
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
- implementation 'androidx.appcompat:appcompat:1.1.0'
- implementation 'androidx.core:core-ktx:1.2.0'
+ implementation project(":taler-kotlin-common")
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.security:security-crypto:1.0.0-beta01'
implementation 'com.google.android.material:material:1.1.0'
@@ -56,13 +55,6 @@ dependencies {
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
- // ViewModel and LiveData
- def lifecycle_version = "2.2.0"
- implementation
"androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
-
- // QR codes
- implementation 'com.google.zxing:core:3.4.0'
-
implementation "com.squareup.okhttp3:okhttp:3.12.6"
testImplementation 'junit:junit:4.13'
diff --git a/cashier/src/main/AndroidManifest.xml
b/cashier/src/main/AndroidManifest.xml
index 345c9a1..bdc5ec0 100644
--- a/cashier/src/main/AndroidManifest.xml
+++ b/cashier/src/main/AndroidManifest.xml
@@ -3,10 +3,6 @@
xmlns:tools="http://schemas.android.com/tools"
package="net.taler.cashier">
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- <uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="android.permission.NFC" />
-
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
diff --git a/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt
b/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt
index b3a0221..2178a78 100644
--- a/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt
+++ b/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt
@@ -34,6 +34,9 @@ import kotlinx.android.synthetic.main.fragment_balance.*
import
net.taler.cashier.BalanceFragmentDirections.Companion.actionBalanceFragmentToTransactionFragment
import net.taler.cashier.withdraw.LastTransaction
import net.taler.cashier.withdraw.WithdrawStatus
+import net.taler.common.Amount
+import net.taler.common.fadeIn
+import net.taler.common.fadeOut
sealed class BalanceResult {
object Error : BalanceResult()
diff --git a/cashier/src/main/java/net/taler/cashier/MainViewModel.kt
b/cashier/src/main/java/net/taler/cashier/MainViewModel.kt
index 3874038..6cd12ff 100644
--- a/cashier/src/main/java/net/taler/cashier/MainViewModel.kt
+++ b/cashier/src/main/java/net/taler/cashier/MainViewModel.kt
@@ -32,9 +32,10 @@ import androidx.security.crypto.MasterKeys
import androidx.security.crypto.MasterKeys.AES256_GCM_SPEC
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
-import net.taler.cashier.Amount.Companion.fromStringSigned
import net.taler.cashier.HttpHelper.makeJsonGetRequest
import net.taler.cashier.withdraw.WithdrawManager
+import net.taler.common.Amount.Companion.fromStringSigned
+import net.taler.common.isOnline
private val TAG = MainViewModel::class.java.simpleName
diff --git
a/cashier/src/main/java/net/taler/cashier/withdraw/TransactionFragment.kt
b/cashier/src/main/java/net/taler/cashier/withdraw/TransactionFragment.kt
index 8b782b0..8857bfa 100644
--- a/cashier/src/main/java/net/taler/cashier/withdraw/TransactionFragment.kt
+++ b/cashier/src/main/java/net/taler/cashier/withdraw/TransactionFragment.kt
@@ -30,13 +30,14 @@ import androidx.navigation.fragment.findNavController
import kotlinx.android.synthetic.main.fragment_transaction.*
import net.taler.cashier.MainViewModel
import net.taler.cashier.R
-import net.taler.cashier.fadeIn
-import net.taler.cashier.fadeOut
import
net.taler.cashier.withdraw.TransactionFragmentDirections.Companion.actionTransactionFragmentToBalanceFragment
import
net.taler.cashier.withdraw.TransactionFragmentDirections.Companion.actionTransactionFragmentToErrorFragment
import net.taler.cashier.withdraw.WithdrawResult.Error
import net.taler.cashier.withdraw.WithdrawResult.InsufficientBalance
import net.taler.cashier.withdraw.WithdrawResult.Success
+import net.taler.common.NfcManager
+import net.taler.common.fadeIn
+import net.taler.common.fadeOut
class TransactionFragment : Fragment() {
diff --git
a/cashier/src/main/java/net/taler/cashier/withdraw/WithdrawManager.kt
b/cashier/src/main/java/net/taler/cashier/withdraw/WithdrawManager.kt
index 4c618ac..bfc82ce 100644
--- a/cashier/src/main/java/net/taler/cashier/withdraw/WithdrawManager.kt
+++ b/cashier/src/main/java/net/taler/cashier/withdraw/WithdrawManager.kt
@@ -34,6 +34,7 @@ import net.taler.cashier.HttpJsonResult.Error
import net.taler.cashier.HttpJsonResult.Success
import net.taler.cashier.MainViewModel
import net.taler.cashier.R
+import net.taler.common.QrCodeManager.makeQrCode
import org.json.JSONObject
import java.util.concurrent.TimeUnit.MINUTES
import java.util.concurrent.TimeUnit.SECONDS
@@ -95,7 +96,7 @@ class WithdrawManager(
val withdrawResult = WithdrawResult.Success(
id = result.json.getString("withdrawal_id"),
talerUri = talerUri,
- qrCode = QrCodeManager.makeQrCode(talerUri)
+ qrCode = makeQrCode(talerUri)
)
mWithdrawResult.postValue(withdrawResult)
timer.start()
diff --git a/gradle.properties b/gradle.properties
index 00f6d64..337c38f 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -7,6 +7,7 @@
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m
+org.gradle.configureondemand=true
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
#
http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
diff --git a/settings.gradle b/settings.gradle
index a1882de..f254aa2 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -15,3 +15,4 @@
*/
include ':akono', ':cashier', ':merchant-terminal', ':wallet'
+include ':taler-kotlin-common'
diff --git a/taler-kotlin-common/.gitignore b/taler-kotlin-common/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/taler-kotlin-common/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/cashier/build.gradle b/taler-kotlin-common/build.gradle
similarity index 63%
copy from cashier/build.gradle
copy to taler-kotlin-common/build.gradle
index b77dc30..d7c9362 100644
--- a/cashier/build.gradle
+++ b/taler-kotlin-common/build.gradle
@@ -14,22 +14,23 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-apply plugin: 'com.android.application'
+apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
-apply plugin: 'androidx.navigation.safeargs.kotlin'
android {
compileSdkVersion 29
- buildToolsVersion "29.0.3"
+ //noinspection GradleDependency
+ buildToolsVersion "$build_tools_version"
defaultConfig {
- applicationId "net.taler.cashier"
- minSdkVersion 23
+ minSdkVersion 24
targetSdkVersion 29
versionCode 1
versionName "0.1"
+
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles 'consumer-rules.pro'
}
buildTypes {
@@ -39,34 +40,17 @@ android {
}
}
- kotlinOptions {
- jvmTarget = "1.8"
- }
-
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.2.0'
- implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
- implementation 'androidx.security:security-crypto:1.0.0-beta01'
- implementation 'com.google.android.material:material:1.1.0'
-
- implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
- implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
// ViewModel and LiveData
def lifecycle_version = "2.2.0"
implementation
"androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
// QR codes
- implementation 'com.google.zxing:core:3.4.0'
-
- implementation "com.squareup.okhttp3:okhttp:3.12.6"
-
- testImplementation 'junit:junit:4.13'
-
- androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+ implementation 'com.google.zxing:core:3.4.0' // needs minSdkVersion 24+
}
diff --git a/taler-kotlin-common/consumer-rules.pro
b/taler-kotlin-common/consumer-rules.pro
new file mode 100644
index 0000000..e69de29
diff --git a/taler-kotlin-common/proguard-rules.pro
b/taler-kotlin-common/proguard-rules.pro
new file mode 100644
index 0000000..f1b4245
--- /dev/null
+++ b/taler-kotlin-common/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# 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 *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/taler-kotlin-common/src/main/AndroidManifest.xml
b/taler-kotlin-common/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..902ddc1
--- /dev/null
+++ b/taler-kotlin-common/src/main/AndroidManifest.xml
@@ -0,0 +1,24 @@
+<!--
+ ~ This file is part of GNU Taler
+ ~ (C) 2020 Taler Systems S.A.
+ ~
+ ~ GNU Taler is free software; you can redistribute it and/or modify it under
the
+ ~ terms of the GNU General Public License as published by the Free Software
+ ~ Foundation; either version 3, or (at your option) any later version.
+ ~
+ ~ GNU Taler is distributed in the hope that it will be useful, but WITHOUT
ANY
+ ~ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR
+ ~ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ ~
+ ~ You should have received a copy of the GNU General Public License along
with
+ ~ GNU Taler; see the file COPYING. If not, see
<http://www.gnu.org/licenses/>
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="net.taler.common">
+
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.NFC" />
+
+</manifest>
diff --git a/cashier/src/main/java/net/taler/cashier/Amount.kt
b/taler-kotlin-common/src/main/java/net/taler/common/Amount.kt
similarity index 98%
rename from cashier/src/main/java/net/taler/cashier/Amount.kt
rename to taler-kotlin-common/src/main/java/net/taler/common/Amount.kt
index 2c237c8..428ddef 100644
--- a/cashier/src/main/java/net/taler/cashier/Amount.kt
+++ b/taler-kotlin-common/src/main/java/net/taler/common/Amount.kt
@@ -14,7 +14,7 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.cashier
+package net.taler.common
data class Amount(val currency: String, val amount: String) {
diff --git a/cashier/src/main/java/net/taler/cashier/Utils.kt
b/taler-kotlin-common/src/main/java/net/taler/common/AndroidUtils.kt
similarity index 51%
copy from cashier/src/main/java/net/taler/cashier/Utils.kt
copy to taler-kotlin-common/src/main/java/net/taler/common/AndroidUtils.kt
index 62f7a77..2fafdf2 100644
--- a/cashier/src/main/java/net/taler/cashier/Utils.kt
+++ b/taler-kotlin-common/src/main/java/net/taler/common/AndroidUtils.kt
@@ -14,66 +14,28 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.cashier
+package net.taler.common
import android.content.Context
import android.content.Context.CONNECTIVITY_SERVICE
import android.net.ConnectivityManager
-import android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET
-import android.os.Build.VERSION.SDK_INT
+import android.net.NetworkCapabilities
+import android.os.Build
import android.view.View
-import android.view.View.INVISIBLE
-import android.view.View.VISIBLE
-
-object Utils {
-
- private const val HEX_CHARS = "0123456789ABCDEF"
-
- fun hexStringToByteArray(data: String): ByteArray {
- val result = ByteArray(data.length / 2)
-
- for (i in data.indices step 2) {
- val firstIndex = HEX_CHARS.indexOf(data[i])
- val secondIndex = HEX_CHARS.indexOf(data[i + 1])
-
- val octet = firstIndex.shl(4).or(secondIndex)
- result[i.shr(1)] = octet.toByte()
- }
- return result
- }
-
-
- private val HEX_CHARS_ARRAY = HEX_CHARS.toCharArray()
-
- @Suppress("unused")
- fun toHex(byteArray: ByteArray): String {
- val result = StringBuffer()
-
- byteArray.forEach {
- val octet = it.toInt()
- val firstIndex = (octet and 0xF0).ushr(4)
- val secondIndex = octet and 0x0F
- result.append(HEX_CHARS_ARRAY[firstIndex])
- result.append(HEX_CHARS_ARRAY[secondIndex])
- }
- return result.toString()
- }
-
-}
fun View.fadeIn(endAction: () -> Unit = {}) {
- if (visibility == VISIBLE) return
+ if (visibility == View.VISIBLE) return
alpha = 0f
- visibility = VISIBLE
+ visibility = View.VISIBLE
animate().alpha(1f).withEndAction {
endAction.invoke()
}.start()
}
fun View.fadeOut(endAction: () -> Unit = {}) {
- if (visibility == INVISIBLE) return
+ if (visibility == View.INVISIBLE) return
animate().alpha(0f).withEndAction {
- visibility = INVISIBLE
+ visibility = View.INVISIBLE
alpha = 1f
endAction.invoke()
}.start()
@@ -81,11 +43,11 @@ fun View.fadeOut(endAction: () -> Unit = {}) {
fun Context.isOnline(): Boolean {
val cm = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager
- return if (SDK_INT < 29) {
+ return if (Build.VERSION.SDK_INT < 29) {
@Suppress("DEPRECATION")
cm.activeNetworkInfo?.isConnected == true
} else {
val capabilities = cm.getNetworkCapabilities(cm.activeNetwork) ?:
return false
- capabilities.hasCapability(NET_CAPABILITY_INTERNET)
+ capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
}
}
diff --git a/cashier/src/main/java/net/taler/cashier/Utils.kt
b/taler-kotlin-common/src/main/java/net/taler/common/ByteArrayUtils.kt
similarity index 58%
rename from cashier/src/main/java/net/taler/cashier/Utils.kt
rename to taler-kotlin-common/src/main/java/net/taler/common/ByteArrayUtils.kt
index 62f7a77..fba0d07 100644
--- a/cashier/src/main/java/net/taler/cashier/Utils.kt
+++ b/taler-kotlin-common/src/main/java/net/taler/common/ByteArrayUtils.kt
@@ -14,18 +14,9 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.cashier
+package net.taler.common
-import android.content.Context
-import android.content.Context.CONNECTIVITY_SERVICE
-import android.net.ConnectivityManager
-import android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET
-import android.os.Build.VERSION.SDK_INT
-import android.view.View
-import android.view.View.INVISIBLE
-import android.view.View.VISIBLE
-
-object Utils {
+object ByteArrayUtils {
private const val HEX_CHARS = "0123456789ABCDEF"
@@ -60,32 +51,3 @@ object Utils {
}
}
-
-fun View.fadeIn(endAction: () -> Unit = {}) {
- if (visibility == VISIBLE) return
- alpha = 0f
- visibility = VISIBLE
- animate().alpha(1f).withEndAction {
- endAction.invoke()
- }.start()
-}
-
-fun View.fadeOut(endAction: () -> Unit = {}) {
- if (visibility == INVISIBLE) return
- animate().alpha(0f).withEndAction {
- visibility = INVISIBLE
- alpha = 1f
- endAction.invoke()
- }.start()
-}
-
-fun Context.isOnline(): Boolean {
- val cm = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager
- return if (SDK_INT < 29) {
- @Suppress("DEPRECATION")
- cm.activeNetworkInfo?.isConnected == true
- } else {
- val capabilities = cm.getNetworkCapabilities(cm.activeNetwork) ?:
return false
- capabilities.hasCapability(NET_CAPABILITY_INTERNET)
- }
-}
diff --git a/cashier/src/main/java/net/taler/cashier/withdraw/NfcManager.kt
b/taler-kotlin-common/src/main/java/net/taler/common/NfcManager.kt
similarity index 98%
rename from cashier/src/main/java/net/taler/cashier/withdraw/NfcManager.kt
rename to taler-kotlin-common/src/main/java/net/taler/common/NfcManager.kt
index a487b5f..11e1e1e 100644
--- a/cashier/src/main/java/net/taler/cashier/withdraw/NfcManager.kt
+++ b/taler-kotlin-common/src/main/java/net/taler/common/NfcManager.kt
@@ -14,7 +14,7 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.cashier.withdraw
+package net.taler.common
import android.app.Activity
import android.content.Context
@@ -25,7 +25,7 @@ import android.nfc.NfcAdapter.getDefaultAdapter
import android.nfc.Tag
import android.nfc.tech.IsoDep
import android.util.Log
-import net.taler.cashier.Utils.hexStringToByteArray
+import net.taler.common.ByteArrayUtils.hexStringToByteArray
import org.json.JSONObject
import java.io.ByteArrayOutputStream
import java.net.URL
diff --git a/cashier/src/main/java/net/taler/cashier/withdraw/QrCodeManager.kt
b/taler-kotlin-common/src/main/java/net/taler/common/QrCodeManager.kt
similarity index 97%
rename from cashier/src/main/java/net/taler/cashier/withdraw/QrCodeManager.kt
rename to taler-kotlin-common/src/main/java/net/taler/common/QrCodeManager.kt
index e3ffa92..e2a9a55 100644
--- a/cashier/src/main/java/net/taler/cashier/withdraw/QrCodeManager.kt
+++ b/taler-kotlin-common/src/main/java/net/taler/common/QrCodeManager.kt
@@ -14,7 +14,7 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.cashier.withdraw
+package net.taler.common
import android.graphics.Bitmap
import android.graphics.Bitmap.Config.RGB_565
--
To stop receiving notification emails like this one, please contact
address@hidden.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-taler-android] branch master updated: Factor out some cashier code into common library,
gnunet <=