summaryrefslogtreecommitdiff
path: root/app/src/main/java/net
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/net')
-rw-r--r--app/src/main/java/net/taler/wallet/Amount.kt1
-rw-r--r--app/src/main/java/net/taler/wallet/HostCardEmulatorService.kt10
-rw-r--r--app/src/main/java/net/taler/wallet/MainActivity.kt1
-rw-r--r--app/src/main/java/net/taler/wallet/ReviewExchangeTOS.kt5
-rw-r--r--app/src/main/java/net/taler/wallet/Settings.kt11
-rw-r--r--app/src/main/java/net/taler/wallet/ShowBalance.kt38
-rw-r--r--app/src/main/java/net/taler/wallet/backend/WalletBackendService.kt25
-rw-r--r--app/src/main/java/net/taler/wallet/crypto/Encoding.kt4
-rw-r--r--app/src/main/java/net/taler/wallet/history/HistoryEvent.kt14
-rw-r--r--app/src/main/java/net/taler/wallet/history/WalletHistory.kt12
-rw-r--r--app/src/main/java/net/taler/wallet/history/WalletHistoryAdapter.kt16
11 files changed, 87 insertions, 50 deletions
diff --git a/app/src/main/java/net/taler/wallet/Amount.kt b/app/src/main/java/net/taler/wallet/Amount.kt
index 4954815..a19e9bc 100644
--- a/app/src/main/java/net/taler/wallet/Amount.kt
+++ b/app/src/main/java/net/taler/wallet/Amount.kt
@@ -125,6 +125,7 @@ class ParsedAmount(
return value == 0u && fraction == 0.0
}
+ @Suppress("unused")
fun toJSONString(): String {
return "$currency:${getValueString()}"
}
diff --git a/app/src/main/java/net/taler/wallet/HostCardEmulatorService.kt b/app/src/main/java/net/taler/wallet/HostCardEmulatorService.kt
index c38bc10..93f1d3f 100644
--- a/app/src/main/java/net/taler/wallet/HostCardEmulatorService.kt
+++ b/app/src/main/java/net/taler/wallet/HostCardEmulatorService.kt
@@ -16,14 +16,16 @@
package net.taler.wallet
-import android.content.*
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.content.IntentFilter
import android.net.Uri
import android.nfc.cardemulation.HostApduService
import android.os.Bundle
import android.util.Log
import java.io.ByteArrayInputStream
import java.io.ByteArrayOutputStream
-import java.net.URI
import java.util.concurrent.ConcurrentLinkedDeque
fun makeApduSuccessResponse(payload: ByteArray): ByteArray {
@@ -46,7 +48,7 @@ fun makeApduFailureResponse(): ByteArray {
fun readApduBodySize(stream: ByteArrayInputStream): Int {
val b0 = stream.read()
if (b0 == -1) {
- return 0;
+ return 0
}
if (b0 != 0) {
return b0
@@ -61,7 +63,7 @@ fun readApduBodySize(stream: ByteArrayInputStream): Int {
class HostCardEmulatorService: HostApduService() {
val queuedRequests: ConcurrentLinkedDeque<String> = ConcurrentLinkedDeque()
- lateinit var receiver: BroadcastReceiver
+ private lateinit var receiver: BroadcastReceiver
override fun onCreate() {
super.onCreate()
diff --git a/app/src/main/java/net/taler/wallet/MainActivity.kt b/app/src/main/java/net/taler/wallet/MainActivity.kt
index 299fbfe..29a56da 100644
--- a/app/src/main/java/net/taler/wallet/MainActivity.kt
+++ b/app/src/main/java/net/taler/wallet/MainActivity.kt
@@ -70,6 +70,7 @@ class MainActivity : AppCompatActivity(), OnNavigationItemSelectedListener,
nav_view.menu.getItem(0).isChecked = true
}
+ setSupportActionBar(toolbar)
val appBarConfiguration = AppBarConfiguration(
setOf(R.id.showBalance, R.id.settings, R.id.walletHistory), drawer_layout
)
diff --git a/app/src/main/java/net/taler/wallet/ReviewExchangeTOS.kt b/app/src/main/java/net/taler/wallet/ReviewExchangeTOS.kt
index 662bb8d..4f5db9e 100644
--- a/app/src/main/java/net/taler/wallet/ReviewExchangeTOS.kt
+++ b/app/src/main/java/net/taler/wallet/ReviewExchangeTOS.kt
@@ -18,14 +18,13 @@ package net.taler.wallet
import android.os.Bundle
-import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.CheckBox
-import android.widget.CompoundButton
import android.widget.TextView
+import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProviders
import androidx.navigation.findNavController
@@ -61,7 +60,7 @@ class ReviewExchangeTOS : Fragment() {
model.cancelCurrentWithdraw()
navController.navigateUp()
}
- acceptButton = view.findViewById<Button>(R.id.button_tos_accept)
+ acceptButton = view.findViewById(R.id.button_tos_accept)
acceptButton.setOnClickListener {
model.acceptCurrentTermsOfService()
}
diff --git a/app/src/main/java/net/taler/wallet/Settings.kt b/app/src/main/java/net/taler/wallet/Settings.kt
index 66e6a34..8a91d62 100644
--- a/app/src/main/java/net/taler/wallet/Settings.kt
+++ b/app/src/main/java/net/taler/wallet/Settings.kt
@@ -18,19 +18,17 @@ package net.taler.wallet
import android.app.Dialog
import android.content.Context
-import android.content.DialogInterface
import android.content.Intent
import android.os.Bundle
-import android.provider.DocumentsContract
import android.util.Log
-import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
-import androidx.lifecycle.ViewModelProviders
+import androidx.fragment.app.Fragment
+import kotlinx.android.synthetic.main.fragment_settings.*
interface ResetDialogEventListener {
@@ -40,7 +38,6 @@ interface ResetDialogEventListener {
class ResetDialogFragment : DialogFragment() {
- private lateinit var model: WalletViewModel
private lateinit var listener: ResetDialogEventListener
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
@@ -134,6 +131,10 @@ class Settings : Fragment() {
return view
}
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ textView4.text = BuildConfig.VERSION_NAME
+ }
+
companion object {
private const val TAG = "taler-wallet"
private const val CREATE_FILE = 1
diff --git a/app/src/main/java/net/taler/wallet/ShowBalance.kt b/app/src/main/java/net/taler/wallet/ShowBalance.kt
index b9e52ff..1238903 100644
--- a/app/src/main/java/net/taler/wallet/ShowBalance.kt
+++ b/app/src/main/java/net/taler/wallet/ShowBalance.kt
@@ -17,6 +17,7 @@
package net.taler.wallet
+import android.annotation.SuppressLint
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
@@ -30,7 +31,7 @@ import android.widget.LinearLayout
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
-import androidx.lifecycle.ViewModelProviders
+import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
@@ -40,7 +41,7 @@ import com.google.zxing.integration.android.IntentIntegrator.QR_CODE_TYPES
import me.zhanghai.android.materialprogressbar.MaterialProgressBar
import org.json.JSONObject
-class WalletBalanceAdapter(private var myDataset: WalletBalances, private var model: WalletViewModel) :
+class WalletBalanceAdapter(private var myDataset: WalletBalances) :
RecyclerView.Adapter<WalletBalanceAdapter.MyViewHolder>() {
init {
@@ -72,6 +73,7 @@ class WalletBalanceAdapter(private var myDataset: WalletBalances, private var mo
amountIncomingRow.visibility = View.GONE
} else {
amountIncomingRow.visibility = View.VISIBLE
+ @SuppressLint("SetTextI18n")
amountIncomingView.text = "${amountIncoming.amount} ${amountIncoming.currency}"
}
}
@@ -117,7 +119,7 @@ class PendingOperationsAdapter(private var myDataset: PendingOperations) :
when (p.type) {
"proposal-choice" -> {
val btn1 = holder.rowView.findViewById<TextView>(R.id.button_pending_action_1)
- btn1.text = "Refuse Proposal"
+ btn1.text = btn1.context.getString(R.string.pending_operations_refuse)
btn1.visibility = View.VISIBLE
btn1.setOnClickListener {
this.listener?.onPendingOperationActionClick(p.type, p.detail)
@@ -125,7 +127,7 @@ class PendingOperationsAdapter(private var myDataset: PendingOperations) :
}
else -> {
val btn1 = holder.rowView.findViewById<TextView>(R.id.button_pending_action_1)
- btn1.text = "(no action)"
+ btn1.text = btn1.context.getString(R.string.pending_operations_no_action)
btn1.visibility = View.GONE
btn1.setOnClickListener {}
}
@@ -156,12 +158,12 @@ interface PendingOperationClickListener {
class ShowBalance : Fragment(), PendingOperationClickListener {
private lateinit var pendingOperationsLabel: View
- lateinit var balancesView: RecyclerView
- lateinit var balancesPlaceholderView: TextView
- lateinit var model: WalletViewModel
- lateinit var balancesAdapter: WalletBalanceAdapter
+ private lateinit var balancesView: RecyclerView
+ private lateinit var balancesPlaceholderView: TextView
+ private lateinit var model: WalletViewModel
+ private lateinit var balancesAdapter: WalletBalanceAdapter
- lateinit var pendingAdapter: PendingOperationsAdapter
+ private lateinit var pendingAdapter: PendingOperationsAdapter
private fun triggerLoading() {
val loading: Boolean =
@@ -199,7 +201,9 @@ class ShowBalance : Fragment(), PendingOperationClickListener {
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
- activity?.menuInflater?.inflate(R.menu.balance, menu)
+ inflater.inflate(R.menu.balance, menu)
+ Log.e("TEST", "MENU INFLATED!!! ${menu.size()}")
+ super.onCreateOptionsMenu(menu, inflater)
}
override fun onCreate(savedInstanceState: Bundle?) {
@@ -207,7 +211,7 @@ class ShowBalance : Fragment(), PendingOperationClickListener {
setHasOptionsMenu(true)
model = activity?.run {
- ViewModelProviders.of(this)[WalletViewModel::class.java]
+ ViewModelProvider(this)[WalletViewModel::class.java]
} ?: throw Exception("Invalid Activity")
}
@@ -224,12 +228,12 @@ class ShowBalance : Fragment(), PendingOperationClickListener {
balancesPlaceholderView.visibility = View.GONE
balancesView.visibility = View.VISIBLE
}
- Log.v(TAG, "updating balances ${balances}")
+ Log.v(TAG, "updating balances $balances")
balancesAdapter.update(balances)
}
private fun updatePending(pendingOperations: PendingOperations) {
- if (pendingOperations.pending.size == 0) {
+ if (pendingOperations.pending.isEmpty()) {
pendingOperationsLabel.visibility = View.GONE
} else {
pendingOperationsLabel.visibility = View.VISIBLE
@@ -256,7 +260,7 @@ class ShowBalance : Fragment(), PendingOperationClickListener {
val balances = model.balances.value!!
- balancesAdapter = WalletBalanceAdapter(balances, model)
+ balancesAdapter = WalletBalanceAdapter(balances)
view.findViewById<RecyclerView>(R.id.list_balances).apply {
val myLayoutManager = LinearLayoutManager(context)
@@ -280,7 +284,7 @@ class ShowBalance : Fragment(), PendingOperationClickListener {
}
model.testWithdrawalInProgress.observe(viewLifecycleOwner, Observer { loading ->
- Log.v("taler-wallet", "observing balance loading ${loading} in show balance")
+ Log.v("taler-wallet", "observing balance loading $loading in show balance")
withdrawTestkudosButton.isEnabled = !loading
triggerLoading()
})
@@ -307,11 +311,11 @@ class ShowBalance : Fragment(), PendingOperationClickListener {
override fun onPendingOperationClick(type: String, detail: JSONObject) {
val v = view ?: return
- when (type) {
+ when {
else -> {
val bar = Snackbar.make(
v,
- "No detail view for ${type} implemented yet.",
+ "No detail view for $type implemented yet.",
Snackbar.LENGTH_SHORT
)
bar.show()
diff --git a/app/src/main/java/net/taler/wallet/backend/WalletBackendService.kt b/app/src/main/java/net/taler/wallet/backend/WalletBackendService.kt
index d97ccf2..0b71774 100644
--- a/app/src/main/java/net/taler/wallet/backend/WalletBackendService.kt
+++ b/app/src/main/java/net/taler/wallet/backend/WalletBackendService.kt
@@ -20,7 +20,11 @@ package net.taler.wallet.backend
import akono.AkonoJni
import android.app.Service
import android.content.Intent
-import android.os.*
+import android.os.Handler
+import android.os.IBinder
+import android.os.Message
+import android.os.Messenger
+import android.os.RemoteException
import android.util.Log
import net.taler.wallet.HostCardEmulatorService
import org.json.JSONObject
@@ -96,7 +100,7 @@ class WalletBackendService : Service() {
val svc = serviceWeakRef.get() ?: return
when (msg.what) {
MSG_COMMAND -> {
- val data = msg.getData()
+ val data = msg.data
val serviceRequestID = svc.nextRequestID++
val clientRequestID = data.getInt("requestID", 0)
if (clientRequestID == 0) {
@@ -124,10 +128,7 @@ class WalletBackendService : Service() {
TAG,
"mapping service request ID $serviceRequestID to client request ID $clientRequestID"
)
- svc.requests.put(
- serviceRequestID,
- RequestData(clientRequestID, msg.replyTo)
- )
+ svc.requests[serviceRequestID] = RequestData(clientRequestID, msg.replyTo)
}
MSG_SUBSCRIBE_NOTIFY -> {
Log.i(TAG, "subscribing client")
@@ -165,7 +166,7 @@ class WalletBackendService : Service() {
s.send(m)
} catch (e: RemoteException) {
if (rm == null) {
- rm = LinkedList<Messenger>()
+ rm = LinkedList()
}
rm.add(s)
subscribers.remove(s)
@@ -179,10 +180,9 @@ class WalletBackendService : Service() {
}
private fun handleAkonoMessage(messageStr: String) {
- Log.v(TAG, "got back message: ${messageStr}")
+ Log.v(TAG, "got back message: $messageStr")
val message = JSONObject(messageStr)
- val type = message.getString("type")
- when (type) {
+ when (message.getString("type")) {
"notification" -> {
sendNotify()
}
@@ -195,8 +195,7 @@ class WalletBackendService : Service() {
}
}
"response" -> {
- val operation = message.getString("operation")
- when (operation) {
+ when (val operation = message.getString("operation")) {
"init" -> {
Log.v(TAG, "got response for init operation")
sendNotify()
@@ -207,7 +206,7 @@ class WalletBackendService : Service() {
else -> {
val id = message.getInt("id")
Log.v(TAG, "got response for operation $operation")
- val rd = requests.get(id)
+ val rd = requests[id]
if (rd == null) {
Log.e(TAG, "wallet returned unknown request ID ($id)")
return
diff --git a/app/src/main/java/net/taler/wallet/crypto/Encoding.kt b/app/src/main/java/net/taler/wallet/crypto/Encoding.kt
index 91a4c14..25a59be 100644
--- a/app/src/main/java/net/taler/wallet/crypto/Encoding.kt
+++ b/app/src/main/java/net/taler/wallet/crypto/Encoding.kt
@@ -51,7 +51,7 @@ object Base32Crockford {
sb.append(encTable[v])
numBits -= 5
}
- return sb.toString();
+ return sb.toString()
}
fun decode(encoded: String, out: ByteArrayOutputStream) {
@@ -114,6 +114,7 @@ object Base32Crockford {
* @param dataSize size of the data to encode in bytes
* @return size of the string that would result from encoding
*/
+ @Suppress("unused")
fun calculateEncodedStringLength(dataSize: Int): Int {
return (dataSize * 8 + 4) / 5
}
@@ -125,6 +126,7 @@ object Base32Crockford {
* @param stringSize size of the string to decode
* @return size of the resulting data in bytes
*/
+ @Suppress("unused")
fun calculateDecodedDataLength(stringSize: Int): Int {
return stringSize * 5 / 8
}
diff --git a/app/src/main/java/net/taler/wallet/history/HistoryEvent.kt b/app/src/main/java/net/taler/wallet/history/HistoryEvent.kt
index fbae49c..9e5c99d 100644
--- a/app/src/main/java/net/taler/wallet/history/HistoryEvent.kt
+++ b/app/src/main/java/net/taler/wallet/history/HistoryEvent.kt
@@ -19,11 +19,16 @@ package net.taler.wallet.history
import androidx.annotation.DrawableRes
import androidx.annotation.LayoutRes
import androidx.annotation.StringRes
-import com.fasterxml.jackson.annotation.*
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties
+import com.fasterxml.jackson.annotation.JsonInclude
import com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY
+import com.fasterxml.jackson.annotation.JsonProperty
+import com.fasterxml.jackson.annotation.JsonSubTypes
import com.fasterxml.jackson.annotation.JsonSubTypes.Type
+import com.fasterxml.jackson.annotation.JsonTypeInfo
import com.fasterxml.jackson.annotation.JsonTypeInfo.As.PROPERTY
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME
+import com.fasterxml.jackson.annotation.JsonTypeName
import net.taler.wallet.ParsedAmount.Companion.parseAmount
import net.taler.wallet.R
import org.json.JSONObject
@@ -38,6 +43,7 @@ enum class ReserveType {
* Withdrawn from a bank that has "tight" Taler integration
*/
@JsonProperty("taler-bank-withdraw")
+ @Suppress("unused")
TALER_BANK_WITHDRAW,
}
@@ -46,16 +52,21 @@ class ReserveCreationDetail(val type: ReserveType, val bankUrl: String?)
enum class RefreshReason {
@JsonProperty("manual")
+ @Suppress("unused")
MANUAL,
@JsonProperty("pay")
PAY,
@JsonProperty("refund")
+ @Suppress("unused")
REFUND,
@JsonProperty("abort-pay")
+ @Suppress("unused")
ABORT_PAY,
@JsonProperty("recoup")
+ @Suppress("unused")
RECOUP,
@JsonProperty("backup-restored")
+ @Suppress("unused")
BACKUP_RESTORED
}
@@ -406,6 +417,7 @@ class HistoryRefundedEvent(
)
abstract class WithdrawalSource
+@Suppress("unused")
@JsonTypeName("tip")
class WithdrawalSourceTip(
val tipId: String
diff --git a/app/src/main/java/net/taler/wallet/history/WalletHistory.kt b/app/src/main/java/net/taler/wallet/history/WalletHistory.kt
index a534f24..76b11ea 100644
--- a/app/src/main/java/net/taler/wallet/history/WalletHistory.kt
+++ b/app/src/main/java/net/taler/wallet/history/WalletHistory.kt
@@ -18,9 +18,14 @@ package net.taler.wallet.history
import android.os.Bundle
-import android.view.*
+import android.view.LayoutInflater
+import android.view.Menu
+import android.view.MenuInflater
+import android.view.MenuItem
+import android.view.View
import android.view.View.INVISIBLE
import android.view.View.VISIBLE
+import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
@@ -40,7 +45,7 @@ interface OnEventClickListener {
*/
class WalletHistory : Fragment(), OnEventClickListener {
- lateinit var model: WalletViewModel
+ private lateinit var model: WalletViewModel
private lateinit var showAllItem: MenuItem
private val historyAdapter = WalletHistoryAdapter(this)
@@ -107,7 +112,4 @@ class WalletHistory : Fragment(), OnEventClickListener {
.show(parentFragmentManager, null)
}
- companion object {
- const val TAG = "taler-wallet"
- }
}
diff --git a/app/src/main/java/net/taler/wallet/history/WalletHistoryAdapter.kt b/app/src/main/java/net/taler/wallet/history/WalletHistoryAdapter.kt
index d47c31f..71bdebc 100644
--- a/app/src/main/java/net/taler/wallet/history/WalletHistoryAdapter.kt
+++ b/app/src/main/java/net/taler/wallet/history/WalletHistoryAdapter.kt
@@ -16,8 +16,17 @@
package net.taler.wallet.history
+import android.annotation.SuppressLint
import android.graphics.Paint.STRIKE_THRU_TEXT_FLAG
-import android.text.format.DateUtils.*
+import android.text.format.DateUtils.DAY_IN_MILLIS
+import android.text.format.DateUtils.FORMAT_ABBREV_MONTH
+import android.text.format.DateUtils.FORMAT_ABBREV_RELATIVE
+import android.text.format.DateUtils.FORMAT_NO_YEAR
+import android.text.format.DateUtils.FORMAT_SHOW_DATE
+import android.text.format.DateUtils.FORMAT_SHOW_TIME
+import android.text.format.DateUtils.MINUTE_IN_MILLIS
+import android.text.format.DateUtils.formatDateTime
+import android.text.format.DateUtils.getRelativeTimeSpanString
import android.view.LayoutInflater
import android.view.View
import android.view.View.GONE
@@ -172,12 +181,14 @@ internal class WalletHistoryAdapter(
}
private fun showAmounts(effective: ParsedAmount, raw: ParsedAmount) {
+ @SuppressLint("SetTextI18n")
amountWithdrawn.text = "+$raw"
val calculatedFee = raw - effective
if (calculatedFee.isZero()) {
fee.visibility = GONE
feeLabel.visibility = GONE
} else {
+ @SuppressLint("SetTextI18n")
fee.text = "-$calculatedFee"
fee.visibility = VISIBLE
feeLabel.visibility = VISIBLE
@@ -208,11 +219,13 @@ internal class WalletHistoryAdapter(
private fun bind(event: HistoryPaymentSentEvent) {
title.text = event.orderShortInfo.summary
+ @SuppressLint("SetTextI18n")
amountPaidWithFees.text = "-${parseAmount(event.amountPaidWithFees)}"
}
private fun bind(event: HistoryPaymentAbortedEvent) {
title.text = event.orderShortInfo.summary
+ @SuppressLint("SetTextI18n")
amountPaidWithFees.text = "-${parseAmount(event.amountLost)}"
}
@@ -220,6 +233,7 @@ internal class WalletHistoryAdapter(
title.text = ""
val fee =
parseAmount(event.amountRefreshedRaw) - parseAmount(event.amountRefreshedEffective)
+ @SuppressLint("SetTextI18n")
if (fee.isZero()) amountPaidWithFees.text = null
else amountPaidWithFees.text = "-$fee"
}