gnunet-svn
[Top][All Lists]
Advanced

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

[taler-wallet-android] 01/02: Clean up MainActivity and unregister recei


From: gnunet
Subject: [taler-wallet-android] 01/02: Clean up MainActivity and unregister receivers to not leak them
Date: Tue, 03 Mar 2020 21:30:02 +0100

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

torsten-grote pushed a commit to branch master
in repository wallet-android.

commit a9fd9aa024d1cafe50be76eb2ca6a818bce38862
Author: Torsten Grote <address@hidden>
AuthorDate: Tue Mar 3 10:24:56 2020 -0300

    Clean up MainActivity and unregister receivers to not leak them
    
    This also reduces the scope of files that get an automatic copyright
    header.
---
 .idea/codeStyles/Project.xml                       |   3 -
 .idea/copyright/profiles_settings.xml              |   2 +-
 .idea/gradle.xml                                   |   4 +-
 .idea/scopes/Copyright_Files.xml                   |   3 +
 app/build.gradle                                   |   3 +-
 app/src/main/java/net/taler/wallet/MainActivity.kt | 152 +++++++++------------
 app/src/main/java/net/taler/wallet/ShowBalance.kt  |   1 -
 .../main/java/net/taler/wallet/WalletViewModel.kt  |  11 +-
 app/src/main/res/layout/app_bar_main.xml           |  13 +-
 build.gradle                                       |   7 +-
 gradle/wrapper/gradle-wrapper.properties           |  20 +--
 11 files changed, 77 insertions(+), 142 deletions(-)

diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index a705caf..fad1c60 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -1,8 +1,5 @@
 <component name="ProjectCodeStyleConfiguration">
   <code_scheme name="Project" version="173">
-    <AndroidXmlCodeStyleSettings>
-      <option name="ARRANGEMENT_SETTINGS_MIGRATED_TO_191" value="true" />
-    </AndroidXmlCodeStyleSettings>
     <JetCodeStyleSettings>
       <option name="NAME_COUNT_TO_USE_STAR_IMPORT" value="2147483647" />
       <option name="NAME_COUNT_TO_USE_STAR_IMPORT_FOR_MEMBERS" 
value="2147483647" />
diff --git a/.idea/copyright/profiles_settings.xml 
b/.idea/copyright/profiles_settings.xml
index 0040fda..31766eb 100644
--- a/.idea/copyright/profiles_settings.xml
+++ b/.idea/copyright/profiles_settings.xml
@@ -1,7 +1,7 @@
 <component name="CopyrightManager">
   <settings default="Taler">
     <module2copyright>
-      <element module="Project Files" copyright="Taler" />
+      <element module="Copyright Files" copyright="Taler" />
     </module2copyright>
   </settings>
 </component>
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 031c262..69c1925 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -1,8 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
+  <component name="GradleMigrationSettings" migrationVersion="1" />
   <component name="GradleSettings">
     <option name="linkedExternalProjectsSettings">
       <GradleProjectSettings>
+        <option name="delegatedBuild" value="false" />
+        <option name="testRunner" value="PLATFORM" />
         <option name="distributionType" value="DEFAULT_WRAPPED" />
         <option name="externalProjectPath" value="$PROJECT_DIR$" />
         <option name="modules">
@@ -13,7 +16,6 @@
           </set>
         </option>
         <option name="resolveModulePerSourceSet" value="false" />
-        <option name="testRunner" value="PLATFORM" />
       </GradleProjectSettings>
     </option>
   </component>
diff --git a/.idea/scopes/Copyright_Files.xml b/.idea/scopes/Copyright_Files.xml
new file mode 100644
index 0000000..e74c29b
--- /dev/null
+++ b/.idea/scopes/Copyright_Files.xml
@@ -0,0 +1,3 @@
+<component name="DependencyValidationManager">
+  <scope name="Copyright Files" 
pattern="file[app]:src/*/java//*||file[app]:src/main/res/layout/*||file[app]:src/main/res/layout-w550dp/*||file[app]:src/main/res/navigation//*||file[app]:src/main/res/values//*||file[app]:src/main/res/xml//*"
 />
+</component>
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 921bbb1..2c7807e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -16,12 +16,11 @@
 
 apply plugin: 'com.android.application'
 apply plugin: 'kotlin-android'
-apply plugin: 'kotlin-kapt'
 apply plugin: 'kotlin-android-extensions'
 
 android {
     compileSdkVersion 29
-    buildToolsVersion "29.0.2"
+    buildToolsVersion "29.0.3"
     defaultConfig {
         applicationId "net.taler.wallet"
         minSdkVersion 21
diff --git a/app/src/main/java/net/taler/wallet/MainActivity.kt 
b/app/src/main/java/net/taler/wallet/MainActivity.kt
index 29a56da..79c3373 100644
--- a/app/src/main/java/net/taler/wallet/MainActivity.kt
+++ b/app/src/main/java/net/taler/wallet/MainActivity.kt
@@ -19,6 +19,7 @@ package net.taler.wallet
 import android.content.BroadcastReceiver
 import android.content.Context
 import android.content.Intent
+import android.content.Intent.ACTION_VIEW
 import android.content.IntentFilter
 import android.os.Bundle
 import android.util.Log
@@ -27,8 +28,7 @@ import android.view.View.INVISIBLE
 import android.view.View.VISIBLE
 import androidx.activity.viewModels
 import androidx.appcompat.app.AppCompatActivity
-import androidx.core.view.GravityCompat
-import androidx.drawerlayout.widget.DrawerLayout
+import androidx.core.view.GravityCompat.START
 import androidx.lifecycle.Observer
 import androidx.navigation.NavController
 import androidx.navigation.fragment.NavHostFragment
@@ -38,9 +38,13 @@ import 
com.google.android.material.navigation.NavigationView.OnNavigationItemSel
 import com.google.android.material.snackbar.Snackbar
 import com.google.android.material.snackbar.Snackbar.LENGTH_SHORT
 import com.google.zxing.integration.android.IntentIntegrator
-import com.google.zxing.integration.android.IntentResult
+import 
com.google.zxing.integration.android.IntentIntegrator.parseActivityResult
 import kotlinx.android.synthetic.main.activity_main.*
 import kotlinx.android.synthetic.main.app_bar_main.*
+import net.taler.wallet.HostCardEmulatorService.Companion.HTTP_TUNNEL_RESPONSE
+import 
net.taler.wallet.HostCardEmulatorService.Companion.MERCHANT_NFC_CONNECTED
+import 
net.taler.wallet.HostCardEmulatorService.Companion.MERCHANT_NFC_DISCONNECTED
+import 
net.taler.wallet.HostCardEmulatorService.Companion.TRIGGER_PAYMENT_ACTION
 import java.util.Locale.ROOT
 
 class MainActivity : AppCompatActivity(), OnNavigationItemSelectedListener,
@@ -54,13 +58,6 @@ class MainActivity : AppCompatActivity(), 
OnNavigationItemSelectedListener,
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_main)
 
-        fab.setOnClickListener {
-            val integrator = IntentIntegrator(this)
-            integrator.setPrompt("Place merchant's QR Code inside the 
viewfinder rectangle to initiate payment.")
-            integrator.initiateScan(listOf("QR_CODE"))
-        }
-        fab.hide()
-
         val navHostFragment =
             supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as 
NavHostFragment
         nav = navHostFragment.navController
@@ -76,106 +73,52 @@ class MainActivity : AppCompatActivity(), 
OnNavigationItemSelectedListener,
         )
         toolbar.setupWithNavController(nav, appBarConfiguration)
 
-        model.init()
-        model.getBalances()
-
         model.showProgressBar.observe(this, Observer { show ->
             progress_bar.visibility = if (show) VISIBLE else INVISIBLE
         })
 
-        val triggerPaymentFilter = 
IntentFilter(HostCardEmulatorService.TRIGGER_PAYMENT_ACTION)
-        registerReceiver(object : BroadcastReceiver() {
-            override fun onReceive(p0: Context?, p1: Intent?) {
-
-                if (nav.currentDestination?.id == R.id.promptPayment) {
-                    return
-                }
-
-                val url = p1!!.extras!!.get("contractUrl") as String
-
-                nav.navigate(R.id.action_global_promptPayment)
-                model.paymentManager.preparePay(url)
-
-            }
-        }, triggerPaymentFilter)
-
-        val nfcConnectedFilter = 
IntentFilter(HostCardEmulatorService.MERCHANT_NFC_CONNECTED)
-        registerReceiver(object : BroadcastReceiver() {
-            override fun onReceive(p0: Context?, p1: Intent?) {
-                Log.v(TAG, "got MERCHANT_NFC_CONNECTED")
-                //model.startTunnel()
-            }
-        }, nfcConnectedFilter)
-
-        val nfcDisconnectedFilter = 
IntentFilter(HostCardEmulatorService.MERCHANT_NFC_DISCONNECTED)
-        registerReceiver(object : BroadcastReceiver() {
-            override fun onReceive(p0: Context?, p1: Intent?) {
-                Log.v(TAG, "got MERCHANT_NFC_DISCONNECTED")
-                //model.stopTunnel()
-            }
-        }, nfcDisconnectedFilter)
-
-        IntentFilter(HostCardEmulatorService.HTTP_TUNNEL_RESPONSE).also { 
filter ->
-            registerReceiver(object : BroadcastReceiver() {
-                override fun onReceive(p0: Context?, p1: Intent?) {
-                    Log.v("taler-tunnel", "got HTTP_TUNNEL_RESPONSE")
-                    model.tunnelResponse(p1!!.getStringExtra("response"))
-                }
-            }, filter)
-        }
-
-        if (intent.action == Intent.ACTION_VIEW) {
-            val uri = intent.dataString
-            if (uri != null)
-                handleTalerUri(uri, "intent")
+        if (intent.action == ACTION_VIEW) intent.dataString?.let { uri ->
+            handleTalerUri(uri, "intent")
         }
 
         //model.startTunnel()
+
+        registerReceiver(triggerPaymentReceiver, 
IntentFilter(TRIGGER_PAYMENT_ACTION))
+        registerReceiver(nfcConnectedReceiver, 
IntentFilter(MERCHANT_NFC_CONNECTED))
+        registerReceiver(nfcDisconnectedReceiver, 
IntentFilter(MERCHANT_NFC_DISCONNECTED))
+        registerReceiver(tunnelResponseReceiver, 
IntentFilter(HTTP_TUNNEL_RESPONSE))
     }
 
     override fun onBackPressed() {
-        val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
-        if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
-            drawerLayout.closeDrawer(GravityCompat.START)
-        } else {
-            super.onBackPressed()
-        }
+        if (drawer_layout.isDrawerOpen(START)) drawer_layout.closeDrawer(START)
+        else super.onBackPressed()
     }
 
     override fun onNavigationItemSelected(item: MenuItem): Boolean {
-        // Handle navigation view item clicks here.
         when (item.itemId) {
-            R.id.nav_home -> {
-                nav.navigate(R.id.showBalance)
-            }
-            R.id.nav_settings -> {
-                nav.navigate(R.id.settings)
-            }
-            R.id.nav_history -> {
-                nav.navigate(R.id.walletHistory)
-            }
+            R.id.nav_home -> nav.navigate(R.id.showBalance)
+            R.id.nav_settings -> nav.navigate(R.id.settings)
+            R.id.nav_history -> nav.navigate(R.id.walletHistory)
         }
-        val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
-        drawerLayout.closeDrawer(GravityCompat.START)
+        drawer_layout.closeDrawer(START)
         return true
     }
 
     override fun onActivityResult(requestCode: Int, resultCode: Int, data: 
Intent?) {
         super.onActivityResult(requestCode, resultCode, data)
-        if (requestCode != IntentIntegrator.REQUEST_CODE) {
-            return
-        }
-
-        val scanResult: IntentResult? =
-            IntentIntegrator.parseActivityResult(requestCode, resultCode, data)
-
-        if (scanResult == null || scanResult.contents == null) {
-            Snackbar.make(nav_view, "QR Code scan canceled.", 
LENGTH_SHORT).show()
-            return
+        if (requestCode == IntentIntegrator.REQUEST_CODE) {
+            parseActivityResult(requestCode, resultCode, data)?.contents?.let 
{ contents ->
+                handleTalerUri(contents, "QR code")
+            }
         }
+    }
 
-        val url = scanResult.contents!!
-        handleTalerUri(url, "QR code")
+    override fun onDestroy() {
+        unregisterReceiver(triggerPaymentReceiver)
+        unregisterReceiver(nfcConnectedReceiver)
+        unregisterReceiver(nfcDisconnectedReceiver)
+        unregisterReceiver(tunnelResponseReceiver)
+        super.onDestroy()
     }
 
     private fun handleTalerUri(url: String, from: String) {
@@ -204,6 +147,39 @@ class MainActivity : AppCompatActivity(), 
OnNavigationItemSelectedListener,
         }
     }
 
+    private val triggerPaymentReceiver = object : BroadcastReceiver() {
+        override fun onReceive(context: Context, intent: Intent) {
+            if (nav.currentDestination?.id == R.id.promptPayment) return
+            intent.extras?.getString("contractUrl")?.let { url ->
+                nav.navigate(R.id.action_global_promptPayment)
+                model.paymentManager.preparePay(url)
+            }
+        }
+    }
+
+    private val nfcConnectedReceiver = object : BroadcastReceiver() {
+        override fun onReceive(context: Context, intent: Intent) {
+            Log.v(TAG, "got MERCHANT_NFC_CONNECTED")
+            //model.startTunnel()
+        }
+    }
+
+    private val nfcDisconnectedReceiver = object : BroadcastReceiver() {
+        override fun onReceive(context: Context, intent: Intent) {
+            Log.v(TAG, "got MERCHANT_NFC_DISCONNECTED")
+            //model.stopTunnel()
+        }
+    }
+
+    private val tunnelResponseReceiver = object : BroadcastReceiver() {
+        override fun onReceive(context: Context, intent: Intent) {
+            Log.v("taler-tunnel", "got HTTP_TUNNEL_RESPONSE")
+            intent.getStringExtra("response")?.let {
+                model.tunnelResponse(it)
+            }
+        }
+    }
+
     override fun onResetConfirmed() {
         model.dangerouslyReset()
         Snackbar.make(nav_view, "Wallet has been reset", LENGTH_SHORT).show()
diff --git a/app/src/main/java/net/taler/wallet/ShowBalance.kt 
b/app/src/main/java/net/taler/wallet/ShowBalance.kt
index 1238903..26fd050 100644
--- a/app/src/main/java/net/taler/wallet/ShowBalance.kt
+++ b/app/src/main/java/net/taler/wallet/ShowBalance.kt
@@ -202,7 +202,6 @@ class ShowBalance : Fragment(), 
PendingOperationClickListener {
 
     override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
         inflater.inflate(R.menu.balance, menu)
-        Log.e("TEST", "MENU INFLATED!!! ${menu.size()}")
         super.onCreateOptionsMenu(menu, inflater)
     }
 
diff --git a/app/src/main/java/net/taler/wallet/WalletViewModel.kt 
b/app/src/main/java/net/taler/wallet/WalletViewModel.kt
index 2942805..35f59f1 100644
--- a/app/src/main/java/net/taler/wallet/WalletViewModel.kt
+++ b/app/src/main/java/net/taler/wallet/WalletViewModel.kt
@@ -78,7 +78,6 @@ open class PendingOperations(
 
 @Suppress("EXPERIMENTAL_API_USAGE")
 class WalletViewModel(val app: Application) : AndroidViewModel(app) {
-    private var initialized = false
 
     val testWithdrawalInProgress = MutableLiveData<Boolean>().apply {
         value = false
@@ -123,14 +122,7 @@ class WalletViewModel(val app: Application) : 
AndroidViewModel(app) {
 
     val paymentManager = PaymentManager(walletBackendApi, mapper)
 
-    fun init() {
-        if (initialized) {
-            Log.e(TAG, "WalletViewModel already initialized")
-            return
-        }
-
-        this.initialized = true
-
+    init {
         getBalances()
         getPending()
 
@@ -147,7 +139,6 @@ class WalletViewModel(val app: Application) : 
AndroidViewModel(app) {
         }
     }
 
-
     fun getBalances() {
         if (activeGetBalance > 0) {
             return
diff --git a/app/src/main/res/layout/app_bar_main.xml 
b/app/src/main/res/layout/app_bar_main.xml
index f2d8571..834d5ca 100644
--- a/app/src/main/res/layout/app_bar_main.xml
+++ b/app/src/main/res/layout/app_bar_main.xml
@@ -21,7 +21,6 @@
         android:layout_height="match_parent"
         tools:context=".MainActivity">
 
-
     <com.google.android.material.appbar.AppBarLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
@@ -65,14 +64,4 @@
             app:layout_constraintTop_toTopOf="parent"
             app:navGraph="@navigation/nav_graph" />
 
-    <com.google.android.material.floatingactionbutton.FloatingActionButton
-            android:id="@+id/fab"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="bottom|end"
-            android:layout_margin="@dimen/fab_margin"
-            android:scaleType="center"
-            app:fabSize="normal"
-            app:srcCompat="@drawable/ic_scan_qr" />
-
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/build.gradle b/build.gradle
index df21dcd..a9d913c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -14,20 +14,15 @@
  * GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
  */
 
-// Top-level build file where you can add configuration options common to all 
sub-projects/modules.
-
 buildscript {
     ext.kotlin_version = '1.3.61'
     repositories {
         google()
         jcenter()
-        
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.5.3'
+        classpath 'com.android.tools.build:gradle:3.6.1'
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
-        // NOTE: Do not place your application dependencies here; they belong
-        // in the individual module build.gradle files
     }
 }
 
diff --git a/gradle/wrapper/gradle-wrapper.properties 
b/gradle/wrapper/gradle-wrapper.properties
index d432222..75a58ba 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,22 +1,6 @@
-#
-# 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/>
-#
-
-#Wed Aug 14 17:39:00 CEST 2019
+#Tue Mar 03 08:42:04 BRT 2020
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

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