gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-taler-android] 04/05: [wallet] Pending operations are no more!


From: gnunet
Subject: [taler-taler-android] 04/05: [wallet] Pending operations are no more!
Date: Tue, 27 Feb 2024 21:19:04 +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.

commit fec49163d1580677291f4971590a0d449ede2902
Author: Iván Ávalos <avalos@disroot.org>
AuthorDate: Mon Feb 26 16:49:44 2024 -0600

    [wallet] Pending operations are no more!
    
    bug 0008508
---
 .../src/main/java/net/taler/wallet/MainActivity.kt |   6 +-
 .../main/java/net/taler/wallet/MainViewModel.kt    |   7 -
 .../wallet/pending/PendingOperationsFragment.kt    | 152 ---------------------
 .../wallet/pending/PendingOperationsManager.kt     |  68 ---------
 .../res/layout/fragment_pending_operations.xml     |  34 -----
 .../res/layout/list_item_pending_operation.xml     |  41 ------
 wallet/src/main/res/menu/activity_main_drawer.xml  |   5 +-
 wallet/src/main/res/menu/pending_operations.xml    |  24 ----
 wallet/src/main/res/navigation/nav_graph.xml       |   9 --
 9 files changed, 4 insertions(+), 342 deletions(-)

diff --git a/wallet/src/main/java/net/taler/wallet/MainActivity.kt 
b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
index 631897a..ffc6c88 100644
--- a/wallet/src/main/java/net/taler/wallet/MainActivity.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
@@ -101,7 +101,7 @@ class MainActivity : AppCompatActivity(), 
OnNavigationItemSelectedListener,
 
         setSupportActionBar(ui.content.toolbar)
         val appBarConfiguration = AppBarConfiguration(
-            setOf(R.id.nav_main, R.id.nav_settings, 
R.id.nav_pending_operations),
+            setOf(R.id.nav_main, R.id.nav_settings),
             ui.drawerLayout
         )
         ui.content.toolbar.setupWithNavController(nav, appBarConfiguration)
@@ -112,7 +112,8 @@ class MainActivity : AppCompatActivity(), 
OnNavigationItemSelectedListener,
 
         val versionView: TextView = 
ui.navView.getHeaderView(0).findViewById(R.id.versionView)
         model.devMode.observe(this) { enabled ->
-            ui.navView.menu.findItem(R.id.nav_dev).isVisible = enabled
+            // Uncomment if any dev options are added in the future
+            // ui.navView.menu.findItem(R.id.nav_dev).isVisible = enabled
             if (enabled) {
                 @SuppressLint("SetTextI18n")
                 versionView.text = "$VERSION_NAME ($VERSION_CODE)"
@@ -164,7 +165,6 @@ class MainActivity : AppCompatActivity(), 
OnNavigationItemSelectedListener,
         when (item.itemId) {
             R.id.nav_home -> nav.navigate(R.id.nav_main)
             R.id.nav_settings -> nav.navigate(R.id.nav_settings)
-            R.id.nav_pending_operations -> 
nav.navigate(R.id.nav_pending_operations)
         }
         ui.drawerLayout.closeDrawer(START)
         return true
diff --git a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt 
b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
index b58636e..c2b04ca 100644
--- a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
@@ -40,7 +40,6 @@ import net.taler.wallet.deposit.DepositManager
 import net.taler.wallet.exchanges.ExchangeManager
 import net.taler.wallet.payment.PaymentManager
 import net.taler.wallet.peer.PeerManager
-import net.taler.wallet.pending.PendingOperationsManager
 import net.taler.wallet.refund.RefundManager
 import net.taler.wallet.settings.SettingsManager
 import net.taler.wallet.transactions.TransactionManager
@@ -73,8 +72,6 @@ class MainViewModel(
     val networkManager = NetworkManager(app.applicationContext)
     val withdrawManager = WithdrawManager(api, viewModelScope)
     val paymentManager = PaymentManager(api, viewModelScope)
-    val pendingOperationsManager: PendingOperationsManager =
-        PendingOperationsManager(api, viewModelScope)
     val transactionManager: TransactionManager = TransactionManager(api, 
viewModelScope)
     val refundManager = RefundManager(api, viewModelScope)
     val balanceManager = BalanceManager(api, viewModelScope)
@@ -111,10 +108,6 @@ class MainViewModel(
             // update currently selected transaction list
             transactionManager.loadTransactions()
         }
-        // refresh pending ops and history with each notification
-        if (devMode.value == true) {
-            pendingOperationsManager.getPending()
-        }
     }
 
     /**
diff --git 
a/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsFragment.kt 
b/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsFragment.kt
deleted file mode 100644
index a76a7d1..0000000
--- a/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsFragment.kt
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * 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/>
- */
-
-package net.taler.wallet.pending
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.Menu
-import android.view.MenuInflater
-import android.view.MenuItem
-import android.view.View
-import android.view.ViewGroup
-import android.widget.LinearLayout
-import android.widget.TextView
-import androidx.fragment.app.Fragment
-import androidx.fragment.app.activityViewModels
-import androidx.recyclerview.widget.DividerItemDecoration
-import androidx.recyclerview.widget.LinearLayoutManager
-import androidx.recyclerview.widget.RecyclerView
-import net.taler.common.showError
-import net.taler.wallet.MainViewModel
-import net.taler.wallet.R
-import net.taler.wallet.databinding.FragmentPendingOperationsBinding
-import org.json.JSONObject
-
-interface PendingOperationClickListener {
-    fun onPendingOperationClick(type: String, detail: JSONObject)
-}
-
-class PendingOperationsFragment : Fragment(), PendingOperationClickListener {
-
-    private val model: MainViewModel by activityViewModels()
-    private val pendingOperationsManager by lazy { 
model.pendingOperationsManager }
-
-    private lateinit var ui: FragmentPendingOperationsBinding
-    private val pendingAdapter = PendingOperationsAdapter(emptyList(), this)
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        setHasOptionsMenu(true)
-    }
-
-    override fun onCreateView(
-        inflater: LayoutInflater,
-        container: ViewGroup?,
-        savedInstanceState: Bundle?
-    ): View {
-        ui = FragmentPendingOperationsBinding.inflate(inflater, container, 
false)
-        return ui.root
-    }
-
-    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
-        super.onViewCreated(view, savedInstanceState)
-
-        ui.listPending.apply {
-            val myLayoutManager = LinearLayoutManager(requireContext())
-            val myItemDecoration =
-                DividerItemDecoration(requireContext(), 
myLayoutManager.orientation)
-            layoutManager = myLayoutManager
-            adapter = pendingAdapter
-            addItemDecoration(myItemDecoration)
-        }
-
-        pendingOperationsManager.pendingOperations.observe(viewLifecycleOwner) 
{
-            updatePending(it)
-        }
-    }
-
-    override fun onStart() {
-        super.onStart()
-        pendingOperationsManager.getPending()
-    }
-
-    @Deprecated("Deprecated in Java")
-    override fun onOptionsItemSelected(item: MenuItem): Boolean {
-        return when (item.itemId) {
-            R.id.retry_pending -> {
-                pendingOperationsManager.retryPendingNow()
-                true
-            }
-            else -> super.onOptionsItemSelected(item)
-        }
-    }
-
-    @Deprecated("Deprecated in Java")
-    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
-        inflater.inflate(R.menu.pending_operations, menu)
-        super.onCreateOptionsMenu(menu, inflater)
-    }
-
-    private fun updatePending(pendingOperations: List<PendingOperationInfo>) {
-        pendingAdapter.update(pendingOperations)
-    }
-
-    override fun onPendingOperationClick(type: String, detail: JSONObject) {
-        requireActivity().showError("No detail view for $type implemented 
yet.")
-    }
-}
-
-class PendingOperationsAdapter(
-    private var items: List<PendingOperationInfo>,
-    private val listener: PendingOperationClickListener
-) :
-    RecyclerView.Adapter<PendingOperationsAdapter.MyViewHolder>() {
-
-    init {
-        setHasStableIds(false)
-    }
-
-    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): 
MyViewHolder {
-        val rowView =
-            
LayoutInflater.from(parent.context).inflate(R.layout.list_item_pending_operation,
 parent, false)
-        return MyViewHolder(rowView)
-    }
-
-    override fun getItemCount(): Int {
-        return items.size
-    }
-
-    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
-        val p = items[position]
-        val pendingContainer = 
holder.rowView.findViewById<LinearLayout>(R.id.pending_container)
-        pendingContainer.setOnClickListener {
-            listener.onPendingOperationClick(p.type, p.detail)
-        }
-        val textView = holder.rowView.findViewById<TextView>(R.id.pending_text)
-        val subTextView = 
holder.rowView.findViewById<TextView>(R.id.pending_subtext)
-        subTextView.text = p.detail.toString(1)
-        textView.text = p.type
-    }
-
-    fun update(items: List<PendingOperationInfo>) {
-        this.items = items
-        this.notifyDataSetChanged()
-    }
-
-    class MyViewHolder(val rowView: View) : RecyclerView.ViewHolder(rowView)
-
-}
diff --git 
a/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsManager.kt 
b/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsManager.kt
deleted file mode 100644
index f5079f6..0000000
--- a/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsManager.kt
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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/>
- */
-
-package net.taler.wallet.pending
-
-import android.util.Log
-import androidx.lifecycle.MutableLiveData
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.launch
-import kotlinx.serialization.json.jsonArray
-import net.taler.wallet.TAG
-import net.taler.wallet.backend.ApiResponse
-import net.taler.wallet.backend.WalletBackendApi
-import org.json.JSONObject
-
-open class PendingOperationInfo(
-    val type: String,
-    val detail: JSONObject,
-)
-
-class PendingOperationsManager(
-    private val walletBackendApi: WalletBackendApi,
-    private val scope: CoroutineScope,
-) {
-
-    val pendingOperations = MutableLiveData<List<PendingOperationInfo>>()
-
-    internal fun getPending() {
-        scope.launch {
-            val response = walletBackendApi.sendRequest("getPendingOperations")
-            if (response is ApiResponse.Error) {
-                Log.i(TAG, "got getPending error result: ${response.error}")
-                return@launch
-            } else if (response is ApiResponse.Response) {
-                Log.i(TAG, "got getPending result")
-                val pendingList = mutableListOf<PendingOperationInfo>()
-                val pendingJson = 
response.result["pendingOperations"]?.jsonArray ?: return@launch
-                for (i in 0 until pendingJson.size) {
-                    val p = JSONObject(pendingJson[i].toString())
-                    val type = p.getString("type")
-                    pendingList.add(PendingOperationInfo(type, p))
-                }
-                Log.i(TAG, "Got ${pendingList.size} pending operations")
-                pendingOperations.postValue((pendingList))
-            }
-        }
-    }
-
-    fun retryPendingNow() {
-        scope.launch {
-            walletBackendApi.sendRequest("retryPendingNow")
-        }
-    }
-
-}
diff --git a/wallet/src/main/res/layout/fragment_pending_operations.xml 
b/wallet/src/main/res/layout/fragment_pending_operations.xml
deleted file mode 100644
index 5030234..0000000
--- a/wallet/src/main/res/layout/fragment_pending_operations.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ 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/>
-  -->
-
-<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android";
-    xmlns:app="http://schemas.android.com/apk/res-auto";
-    xmlns:tools="http://schemas.android.com/tools";
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/list_pending"
-        android:layout_width="0dp"
-        android:layout_height="0dp"
-        android:scrollbars="vertical"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        tools:listitem="@layout/list_item_pending_operation" />
-
-</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/wallet/src/main/res/layout/list_item_pending_operation.xml 
b/wallet/src/main/res/layout/list_item_pending_operation.xml
deleted file mode 100644
index 210715c..0000000
--- a/wallet/src/main/res/layout/list_item_pending_operation.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ 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/>
-  -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
-    xmlns:tools="http://schemas.android.com/tools";
-    android:id="@+id/pending_container"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:layout_margin="3dp"
-    android:background="@drawable/pending_border"
-    android:orientation="vertical"
-    android:padding="3dp">
-
-    <TextView
-        android:id="@+id/pending_text"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textSize="24sp"
-        tools:text="My Pending Operation" />
-
-    <TextView
-        android:id="@+id/pending_subtext"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textSize="14sp"
-        tools:text="My further details" />
-
-</LinearLayout>
\ No newline at end of file
diff --git a/wallet/src/main/res/menu/activity_main_drawer.xml 
b/wallet/src/main/res/menu/activity_main_drawer.xml
index d1cc462..42e4311 100644
--- a/wallet/src/main/res/menu/activity_main_drawer.xml
+++ b/wallet/src/main/res/menu/activity_main_drawer.xml
@@ -39,10 +39,7 @@
             <group
                 android:id="@+id/nav_group_dev"
                 android:checkableBehavior="single">
-                <item
-                    android:id="@+id/nav_pending_operations"
-                    android:icon="@drawable/ic_sync"
-                    android:title="@string/pending_operations_title" />
+                <!-- Future dev options go here -->
             </group>
         </menu>
     </item>
diff --git a/wallet/src/main/res/menu/pending_operations.xml 
b/wallet/src/main/res/menu/pending_operations.xml
deleted file mode 100644
index b632021..0000000
--- a/wallet/src/main/res/menu/pending_operations.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ 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/>
-  -->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android";
-    xmlns:app="http://schemas.android.com/apk/res-auto";>
-    <item
-        android:id="@+id/retry_pending"
-        android:orderInCategory="100"
-        android:title="@string/menu_retry_pending_operations"
-        app:showAsAction="never" />
-</menu>
diff --git a/wallet/src/main/res/navigation/nav_graph.xml 
b/wallet/src/main/res/navigation/nav_graph.xml
index 3ea02fc..38e2c26 100644
--- a/wallet/src/main/res/navigation/nav_graph.xml
+++ b/wallet/src/main/res/navigation/nav_graph.xml
@@ -310,11 +310,6 @@
             app:destination="@id/promptWithdraw"
             app:popUpTo="@id/nav_main" />
     </fragment>
-    <fragment
-        android:id="@+id/nav_pending_operations"
-        android:name="net.taler.wallet.pending.PendingOperationsFragment"
-        android:label="@string/pending_operations_title"
-        tools:layout="@layout/fragment_pending_operations" />
 
     <fragment
         android:id="@+id/nav_uri_input"
@@ -360,10 +355,6 @@
         android:id="@+id/action_global_prompt_pay_template"
         app:destination="@id/promptPayTemplate" />
 
-    <action
-        android:id="@+id/action_global_pending_operations"
-        app:destination="@id/nav_pending_operations" />
-
     <action
         android:id="@+id/action_nav_transactions_detail_withdrawal"
         app:destination="@id/nav_transactions_detail_withdrawal" />

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]