gnunet-svn
[Top][All Lists]
Advanced

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

[taler-taler-android] branch master updated (26d8690 -> 242bc31)


From: gnunet
Subject: [taler-taler-android] branch master updated (26d8690 -> 242bc31)
Date: Tue, 19 Sep 2023 17:18:31 +0200

This is an automated email from the git hooks/post-receive script.

torsten-grote pushed a change to branch master
in repository taler-android.

    from 26d8690  [merchant-terminal] Refactor backend version to BuildConfig 
and bump to 5:0:1
     new 69a2882  [wallet] Add offline banner
     new 242bc31  [wallet] simplify state exposed by NetworkManager

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../src/main/java/net/taler/wallet/MainActivity.kt |  6 +++
 .../main/java/net/taler/wallet/MainViewModel.kt    |  1 +
 .../main/java/net/taler/wallet/NetworkManager.kt   | 55 ++++++++++++++++++++++
 wallet/src/main/res/layout/app_content_main.xml    | 24 +++++++++-
 wallet/src/main/res/values/strings.xml             |  1 +
 5 files changed, 86 insertions(+), 1 deletion(-)
 create mode 100644 wallet/src/main/java/net/taler/wallet/NetworkManager.kt

diff --git a/wallet/src/main/java/net/taler/wallet/MainActivity.kt 
b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
index e0c2419..a49890e 100644
--- a/wallet/src/main/java/net/taler/wallet/MainActivity.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
@@ -22,6 +22,8 @@ import android.content.Context
 import android.content.Intent
 import android.content.Intent.ACTION_VIEW
 import android.content.IntentFilter
+import android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET
+import android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED
 import android.net.Uri
 import android.os.Bundle
 import android.util.Log
@@ -139,6 +141,10 @@ class MainActivity : AppCompatActivity(), 
OnNavigationItemSelectedListener,
             }
             if (it) barcodeLauncher.launch(scanOptions)
         })
+
+        model.networkManager.networkStatus.observe(this) { online ->
+            ui.content.offlineBanner.visibility = if (online) GONE else VISIBLE
+        }
     }
 
     @Deprecated("Deprecated in Java")
diff --git a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt 
b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
index dbe4261..ea4139b 100644
--- a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
@@ -73,6 +73,7 @@ class MainViewModel(
 
     private val api = WalletBackendApi(app, this, this)
 
+    val networkManager = NetworkManager(app.applicationContext)
     val withdrawManager = WithdrawManager(api, viewModelScope)
     val tipManager = TipManager(api, viewModelScope)
     val paymentManager = PaymentManager(api, viewModelScope)
diff --git a/wallet/src/main/java/net/taler/wallet/NetworkManager.kt 
b/wallet/src/main/java/net/taler/wallet/NetworkManager.kt
new file mode 100644
index 0000000..7d803fc
--- /dev/null
+++ b/wallet/src/main/java/net/taler/wallet/NetworkManager.kt
@@ -0,0 +1,55 @@
+/*
+ * This file is part of GNU Taler
+ * (C) 2023 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
+
+import android.content.Context
+import android.content.Context.CONNECTIVITY_SERVICE
+import android.net.ConnectivityManager
+import android.net.Network
+import android.net.NetworkCapabilities
+import android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET
+import android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED
+import androidx.annotation.UiThread
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+
+class NetworkManager(context: Context) : ConnectivityManager.NetworkCallback() 
{
+    private val connectivityManager: ConnectivityManager
+
+    private val _networkStatus = MutableLiveData(true)
+    val networkStatus: LiveData<Boolean> = _networkStatus
+
+    init {
+        connectivityManager = context.getSystemService(CONNECTIVITY_SERVICE) 
as ConnectivityManager
+        connectivityManager.registerDefaultNetworkCallback(this)
+    }
+
+    @UiThread
+    override fun onCapabilitiesChanged(network: Network, networkCapabilities: 
NetworkCapabilities) {
+        super.onCapabilitiesChanged(network, networkCapabilities)
+        _networkStatus.postValue(networkCapabilities.isOnline())
+    }
+
+    override fun onLost(network: Network) {
+        super.onLost(network)
+        _networkStatus.postValue(null)
+    }
+
+    private fun NetworkCapabilities.isOnline(): Boolean {
+        return hasCapability(NET_CAPABILITY_INTERNET) && 
hasCapability(NET_CAPABILITY_VALIDATED)
+    }
+}
diff --git a/wallet/src/main/res/layout/app_content_main.xml 
b/wallet/src/main/res/layout/app_content_main.xml
index b53717f..71fbcd4 100644
--- a/wallet/src/main/res/layout/app_content_main.xml
+++ b/wallet/src/main/res/layout/app_content_main.xml
@@ -39,8 +39,30 @@
                 android:theme="@style/Widget.Material3.ActionBar.Solid"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="parent"
                 app:layout_constraintTop_toTopOf="parent" />
 
+            <FrameLayout
+                android:id="@+id/offline_banner"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:background="?attr/colorPrimary"
+                app:layout_constraintTop_toBottomOf="@id/toolbar"
+                app:layout_constraintBottom_toTopOf="@id/progress_bar"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                android:animateLayoutChanges="true"
+                android:visibility="gone"
+                tools:visibility="visible">
+                <TextView
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_margin="10dp"
+                    android:textAlignment="center"
+                    android:textColor="?attr/colorOnPrimary"
+                    android:text="@string/offline_banner" />
+            </FrameLayout>
+
             <me.zhanghai.android.materialprogressbar.MaterialProgressBar
                 android:id="@+id/progress_bar"
                 style="@style/Widget.MaterialProgressBar.ProgressBar"
@@ -49,7 +71,7 @@
                 android:elevation="4dp"
                 android:indeterminate="true"
                 android:visibility="invisible"
-                app:layout_constraintBottom_toBottomOf="@+id/toolbar"
+                app:layout_constraintBottom_toBottomOf="@+id/offline_banner"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:mpb_progressStyle="horizontal"
diff --git a/wallet/src/main/res/values/strings.xml 
b/wallet/src/main/res/values/strings.xml
index 9e2b38d..17e4e24 100644
--- a/wallet/src/main/res/values/strings.xml
+++ b/wallet/src/main/res/values/strings.xml
@@ -61,6 +61,7 @@ GNU Taler is immune against many types of fraud, such as 
phishing of credit card
     <string name="char_count">%1$d/%2$d</string>
 
     <string name="offline">Operation requires internet access. Please ensure 
your internet connection works and try again.</string>
+    <string name="offline_banner">No internet access</string>
     <string name="error_unsupported_uri">Error: This Taler URI is not 
supported.</string>
 
     <string name="menu_settings">Settings</string>

-- 
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]